Compare commits

...

3 Commits

Author SHA1 Message Date
John Cooper McDonald
8474bc3c19 Properly implement the Hammer item (#599)
* Properly implement the Hammer item

* Update Boo.gd

* Update LongFirebar.tscn
2025-10-15 18:14:19 +01:00
CST1229
651988bf5e Fix resource packs enabled in 1.0.1 being permanently enabled (#602)
* Fix resource packs enabled in 1.0.1 being permanently enabled

* Also add an explanatory comment
2025-10-15 18:13:42 +01:00
JHDev2006
6b598e717d added a quick updating thing to resource extraction + fixed a bug where the timer warnings would play, upon death 2025-10-15 14:37:05 +01:00
55 changed files with 167 additions and 24 deletions

Binary file not shown.

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://dmgokar32otvr"
path="res://.godot/imported/HammerHit.wav-e7d35f1a3d3022177d665d6f2eb69a9d.sample"
[deps]
source_file="res://Assets/Audio/SFX/HammerHit.wav"
dest_files=["res://.godot/imported/HammerHit.wav-e7d35f1a3d3022177d665d6f2eb69a9d.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

Binary file not shown.

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://clpebkune16oc"
path="res://.godot/imported/HammerPoint.wav-d08385bab6f27e27d308496f733770b5.sample"
[deps]
source_file="res://Assets/Audio/SFX/HammerPoint.wav"
dest_files=["res://.godot/imported/HammerPoint.wav-d08385bab6f27e27d308496f733770b5.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

View File

@@ -47,6 +47,7 @@ grow_horizontal = 2
grow_vertical = 0 grow_vertical = 0
text = "EXTRACTING ASSETS..." text = "EXTRACTING ASSETS..."
horizontal_alignment = 1 horizontal_alignment = 1
uppercase = true
[node name="Error" type="Label" parent="MarginContainer"] [node name="Error" type="Label" parent="MarginContainer"]
unique_name_in_owner = true unique_name_in_owner = true

View File

@@ -113,8 +113,10 @@ metadata/_custom_type_script = "uid://cmg61722ktg2m"
script = ExtResource("12_d7wml") script = ExtResource("12_d7wml")
hitbox = NodePath("../Hitbox") hitbox = NodePath("../Hitbox")
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]] [connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="destroy" unbinds=1] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="destroy" unbinds=1]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]
[connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="damage_player"]
[connection signal="explosion_entered" from="ExplosionDetection" to="." method="die_from_object"] [connection signal="explosion_entered" from="ExplosionDetection" to="." method="die_from_object"]

View File

@@ -103,6 +103,8 @@ hitbox = NodePath("../Hitbox")
metadata/_custom_type_script = "uid://ba18grqjixded" metadata/_custom_type_script = "uid://ba18grqjixded"
[connection signal="killed" from="." to="GibSpawner" method="summon_gib"] [connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]

View File

@@ -191,6 +191,8 @@ metadata/_custom_type_script = "uid://ba18grqjixded"
[connection signal="killed" from="." to="GibSpawner" method="summon_gib"] [connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="fireball_hit" from="FireballDetection" to="." method="fireball_hit"] [connection signal="fireball_hit" from="FireballDetection" to="." method="fireball_hit"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]

View File

@@ -403,8 +403,8 @@ hitbox = NodePath("../SpriteScaleJoint/Sprite/Hitbox")
metadata/_custom_type_script = "uid://ba18grqjixded" metadata/_custom_type_script = "uid://ba18grqjixded"
[connection signal="killed" from="." to="GibSpawner" method="summon_gib"] [connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="killed" from="." to="ScoreNoteSpawner" method="spawn_note" binds= [5000]]
[connection signal="killed" from="." to="." method="show_smoke" unbinds=1] [connection signal="killed" from="." to="." method="show_smoke" unbinds=1]
[connection signal="killed" from="." to="ScoreNoteSpawner" method="spawn_note" binds= [5000]]
[connection signal="area_entered" from="SpriteScaleJoint/Sprite/Hitbox" to="." method="on_area_entered"] [connection signal="area_entered" from="SpriteScaleJoint/Sprite/Hitbox" to="." method="on_area_entered"]
[connection signal="timeout" from="JumpTimer" to="." method="jump"] [connection signal="timeout" from="JumpTimer" to="." method="jump"]
[connection signal="timeout" from="HammerTime" to="." method="throw_hammers"] [connection signal="timeout" from="HammerTime" to="." method="throw_hammers"]
@@ -414,6 +414,7 @@ metadata/_custom_type_script = "uid://ba18grqjixded"
[connection signal="attached" from="TrackJoint" to="MoveAnimation" method="play" binds= ["RESET"]] [connection signal="attached" from="TrackJoint" to="MoveAnimation" method="play" binds= ["RESET"]]
[connection signal="moving_shell_entered" from="ShellDetection" to="ShellDetection" method="destroy_shell"] [connection signal="moving_shell_entered" from="ShellDetection" to="ShellDetection" method="destroy_shell"]
[connection signal="moving_shell_entered" from="ShellDetection" to="." method="fireball_hit" unbinds=1] [connection signal="moving_shell_entered" from="ShellDetection" to="." method="fireball_hit" unbinds=1]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]
[connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="damage_player"]

View File

@@ -80,12 +80,14 @@ script = ExtResource("11_myh77")
[connection signal="killed" from="." to="GibSpawner" method="summon_gib"] [connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="screen_entered" from="VisibleOnScreenEnabler2D" to="." method="on_screen_entered"] [connection signal="screen_entered" from="VisibleOnScreenEnabler2D" to="." method="on_screen_entered"]
[connection signal="screen_exited" from="VisibleOnScreenEnabler2D" to="OffScreenDespawner" method="on_screen_exited"] [connection signal="screen_exited" from="VisibleOnScreenEnabler2D" to="OffScreenDespawner" method="on_screen_exited"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]
[connection signal="player_stomped_on" from="EnemyPlayerDetection" to="GibSpawner" method="stomp_die"] [connection signal="player_stomped_on" from="EnemyPlayerDetection" to="GibSpawner" method="stomp_die"]
[connection signal="moving_shell_entered" from="ShellDetection" to="." method="die_from_object"] [connection signal="moving_shell_entered" from="ShellDetection" to="." method="die_from_object"]
[connection signal="level_start" from="LevelEditorToggleDetection" to="." method="on_screen_entered"]
[connection signal="level_start" from="LevelEditorToggleDetection" to="." method="_ready"] [connection signal="level_start" from="LevelEditorToggleDetection" to="." method="_ready"]
[connection signal="level_start" from="LevelEditorToggleDetection" to="." method="on_screen_entered"]
[connection signal="explosion_entered" from="ExplosionDetection" to="." method="die_from_object"] [connection signal="explosion_entered" from="ExplosionDetection" to="." method="die_from_object"]
[connection signal="explosion_entered" from="ExplosionDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]] [connection signal="explosion_entered" from="ExplosionDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]

View File

@@ -164,12 +164,14 @@ movement_node = NodePath("../BasicEnemyMovement")
metadata/_custom_type_script = "uid://d4a7yp6e55u8t" metadata/_custom_type_script = "uid://d4a7yp6e55u8t"
[connection signal="killed" from="." to="GibSpawner" method="summon_gib"] [connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]
[connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="stomped_on"] [connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="stomped_on"]
[connection signal="block_bounced" from="BlockBouncingDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="block_bounced" from="BlockBouncingDetection" to="." method="block_bounced" unbinds=1] [connection signal="block_bounced" from="BlockBouncingDetection" to="." method="block_bounced" unbinds=1]
[connection signal="block_bounced" from="BlockBouncingDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="moving_shell_entered" from="ShellDetection" to="." method="die_from_object"] [connection signal="moving_shell_entered" from="ShellDetection" to="." method="die_from_object"]
[connection signal="icicle_detected" from="IcicleDetection" to="." method="die_from_object"] [connection signal="icicle_detected" from="IcicleDetection" to="." method="die_from_object"]
[connection signal="explosion_entered" from="ExplosionDetection" to="." method="die_from_object"] [connection signal="explosion_entered" from="ExplosionDetection" to="." method="die_from_object"]

View File

@@ -205,6 +205,8 @@ hitbox = NodePath("../Hitbox")
metadata/_custom_type_script = "uid://ba18grqjixded" metadata/_custom_type_script = "uid://ba18grqjixded"
[connection signal="killed" from="." to="." method="summon_particle" unbinds=1] [connection signal="killed" from="." to="." method="summon_particle" unbinds=1]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]

View File

@@ -191,6 +191,8 @@ hitbox = NodePath("../Hitbox")
metadata/_custom_type_script = "uid://ba18grqjixded" metadata/_custom_type_script = "uid://ba18grqjixded"
[connection signal="killed" from="." to="GibSpawner" method="summon_gib"] [connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [100]]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [100]] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [100]]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]

View File

@@ -164,6 +164,8 @@ metadata/_custom_type_script = "uid://maqpreddu5kg"
[connection signal="killed" from="." to="GibSpawner" method="summon_gib"] [connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="killed" from="." to="LevelPersistance" method="set_as_active" unbinds=1] [connection signal="killed" from="." to="LevelPersistance" method="set_as_active" unbinds=1]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [100]] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [100]]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]

View File

@@ -200,6 +200,7 @@ hitbox = NodePath("../Sprite/Hitbox")
metadata/_custom_type_script = "uid://ba18grqjixded" metadata/_custom_type_script = "uid://ba18grqjixded"
[connection signal="killed" from="." to="GibSpawner" method="summon_gib"] [connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]
[connection signal="player_stomped_on" from="EnemyPlayerDetection" to="GibSpawner" method="stomp_die"] [connection signal="player_stomped_on" from="EnemyPlayerDetection" to="GibSpawner" method="stomp_die"]

View File

@@ -184,6 +184,8 @@ metadata/_custom_type_script = "uid://maqpreddu5kg"
[connection signal="killed" from="." to="GibSpawner" method="summon_gib"] [connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="killed" from="." to="LevelPersistance" method="set_as_active" unbinds=1] [connection signal="killed" from="." to="LevelPersistance" method="set_as_active" unbinds=1]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]
@@ -191,8 +193,8 @@ metadata/_custom_type_script = "uid://maqpreddu5kg"
[connection signal="player_stomped_on" from="EnemyPlayerDetection" to="LevelPersistance" method="set_as_active" unbinds=1] [connection signal="player_stomped_on" from="EnemyPlayerDetection" to="LevelPersistance" method="set_as_active" unbinds=1]
[connection signal="fireball_hit" from="FireballDetection" to="." method="die_from_object"] [connection signal="fireball_hit" from="FireballDetection" to="." method="die_from_object"]
[connection signal="fireball_hit" from="FireballDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]] [connection signal="fireball_hit" from="FireballDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="block_bounced" from="BlockBouncingDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="block_bounced" from="BlockBouncingDetection" to="." method="block_bounced" unbinds=1] [connection signal="block_bounced" from="BlockBouncingDetection" to="." method="block_bounced" unbinds=1]
[connection signal="block_bounced" from="BlockBouncingDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="moving_shell_entered" from="ShellDetection" to="." method="die_from_object"] [connection signal="moving_shell_entered" from="ShellDetection" to="." method="die_from_object"]
[connection signal="icicle_detected" from="IcicleDetection" to="." method="die_from_object"] [connection signal="icicle_detected" from="IcicleDetection" to="." method="die_from_object"]
[connection signal="explosion_entered" from="ExplosionDetection" to="." method="die_from_object"] [connection signal="explosion_entered" from="ExplosionDetection" to="." method="die_from_object"]

View File

@@ -17,3 +17,5 @@ points = PackedVector2Array(0, 0, -96, 0)
width = 1.0 width = 1.0
texture = ExtResource("3_kfyly") texture = ExtResource("3_kfyly")
texture_mode = 1 texture_mode = 1
[connection signal="block_bounced" from="BlockBouncingDetection" to="." method="block_bounced" unbinds=1]

View File

@@ -313,6 +313,8 @@ metadata/_custom_type_script = "uid://d4a7yp6e55u8t"
[connection signal="killed" from="." to="GibSpawner" method="summon_gib"] [connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="timeout" from="JumpTimer" to="." method="jump" binds= [false]] [connection signal="timeout" from="JumpTimer" to="." method="jump" binds= [false]]
[connection signal="timeout" from="HammerTimer" to="." method="do_hammer_throw"] [connection signal="timeout" from="HammerTimer" to="." method="do_hammer_throw"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [1000]]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [1000]] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [1000]]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]

View File

@@ -181,6 +181,8 @@ metadata/_custom_type_script = "uid://ba18grqjixded"
[connection signal="killed" from="." to="." method="summon_cloud_particle" unbinds=1] [connection signal="killed" from="." to="." method="summon_cloud_particle" unbinds=1]
[connection signal="screen_entered" from="VisibleOnScreenEnabler2D" to="." method="on_screen_entered"] [connection signal="screen_entered" from="VisibleOnScreenEnabler2D" to="." method="on_screen_entered"]
[connection signal="timeout" from="ThrowTimer" to="." method="on_timeout"] [connection signal="timeout" from="ThrowTimer" to="." method="on_timeout"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" flags=3 binds= [200]] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" flags=3 binds= [200]]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]

View File

@@ -105,6 +105,7 @@ hitbox = NodePath("../Hitbox")
metadata/_custom_type_script = "uid://ba18grqjixded" metadata/_custom_type_script = "uid://ba18grqjixded"
[connection signal="killed" from="." to="GibSpawner" method="summon_gib"] [connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]
[connection signal="player_stomped_on" from="EnemyPlayerDetection" to="GibSpawner" method="stomp_die"] [connection signal="player_stomped_on" from="EnemyPlayerDetection" to="GibSpawner" method="stomp_die"]

View File

@@ -184,6 +184,8 @@ hitbox = NodePath("../Hitbox")
metadata/_custom_type_script = "uid://ba18grqjixded" metadata/_custom_type_script = "uid://ba18grqjixded"
[connection signal="killed" from="." to="GibSpawner" method="summon_gib"] [connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]

View File

@@ -309,6 +309,8 @@ process_mode = 3
script = SubResource("GDScript_ofvpu") script = SubResource("GDScript_ofvpu")
[connection signal="timeout" from="Timer" to="." method="on_timeout"] [connection signal="timeout" from="Timer" to="." method="on_timeout"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]

View File

@@ -81,6 +81,7 @@ metadata/_custom_type_script = "uid://5octqlf4ohel"
[connection signal="killed" from="." to="GibSpawner" method="summon_gib" binds= [0, true]] [connection signal="killed" from="." to="GibSpawner" method="summon_gib" binds= [0, true]]
[connection signal="killed" from="." to="ScoreNoteSpawner" method="spawn_note" binds= [500]] [connection signal="killed" from="." to="ScoreNoteSpawner" method="spawn_note" binds= [500]]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer" unbinds=1]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die" unbinds=1] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die" unbinds=1]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]
[connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="damage_player"]

View File

@@ -377,6 +377,7 @@ script = SubResource("GDScript_30hxr")
[connection signal="killed" from="." to="." method="summon_part_gibs" unbinds=1] [connection signal="killed" from="." to="." method="summon_part_gibs" unbinds=1]
[connection signal="fireball_hit" from="FireballDetection" to="." method="die_from_object"] [connection signal="fireball_hit" from="FireballDetection" to="." method="die_from_object"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]
[connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="damage_player"]

View File

@@ -399,12 +399,13 @@ metadata/_custom_type_script = "uid://cmg61722ktg2m"
[connection signal="killed" from="." to="GibSpawner" method="summon_gib"] [connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="player_stomped_on" from="Sprite/StompHitbox/EnemyPlayerDetection" to="." method="on_player_stomped_on"] [connection signal="player_stomped_on" from="Sprite/StompHitbox/EnemyPlayerDetection" to="." method="on_player_stomped_on"]
[connection signal="hammer_player_hit" from="Sprite/EntityHitbox/EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="invincible_player_hit" from="Sprite/EntityHitbox/EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="Sprite/EntityHitbox/EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="player_hit" from="Sprite/EntityHitbox/EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="Sprite/EntityHitbox/EnemyPlayerDetection" to="." method="damage_player"]
[connection signal="gib_about_to_spawn" from="GibSpawner" to="Sprite/Wrench" method="hide"] [connection signal="gib_about_to_spawn" from="GibSpawner" to="Sprite/Wrench" method="hide"]
[connection signal="gib_about_to_spawn" from="GibSpawner" to="Sprite" method="set_flip_v" binds= [true]]
[connection signal="gib_about_to_spawn" from="GibSpawner" to="Sprite" method="play" binds= ["Dead"]] [connection signal="gib_about_to_spawn" from="GibSpawner" to="Sprite" method="play" binds= ["Dead"]]
[connection signal="gib_about_to_spawn" from="GibSpawner" to="Sprite" method="set_offset" binds= [Vector2(0, -8)]] [connection signal="gib_about_to_spawn" from="GibSpawner" to="Sprite" method="set_offset" binds= [Vector2(0, -8)]]
[connection signal="gib_about_to_spawn" from="GibSpawner" to="Sprite" method="set_flip_v" binds= [true]]
[connection signal="fireball_hit" from="FireballDetection" to="." method="die_from_object"] [connection signal="fireball_hit" from="FireballDetection" to="." method="die_from_object"]
[connection signal="fireball_hit" from="FireballDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [500]] [connection signal="fireball_hit" from="FireballDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [500]]
[connection signal="moving_shell_entered" from="ShellDetection" to="." method="die_from_object"] [connection signal="moving_shell_entered" from="ShellDetection" to="." method="die_from_object"]

View File

@@ -146,6 +146,8 @@ hitbox = NodePath("../Hitbox")
metadata/_custom_type_script = "uid://ba18grqjixded" metadata/_custom_type_script = "uid://ba18grqjixded"
[connection signal="killed" from="." to="GibSpawner" method="summon_gib"] [connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [100]]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [100]] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [100]]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]

View File

@@ -144,6 +144,8 @@ json_file_path = "res://Assets/Sprites/Enemies/Sigebou.json"
metadata/_custom_type_script = "uid://cqif1li7otvpl" metadata/_custom_type_script = "uid://cqif1li7otvpl"
[connection signal="killed" from="." to="GibSpawner" method="summon_gib"] [connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [100]]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [100]] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [100]]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]

View File

@@ -297,6 +297,8 @@ hitbox = NodePath("../Hitbox")
metadata/_custom_type_script = "uid://ba18grqjixded" metadata/_custom_type_script = "uid://ba18grqjixded"
[connection signal="killed" from="." to="GibSpawner" method="summon_gib"] [connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [500]]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [500]] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [500]]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]

View File

@@ -160,6 +160,8 @@ script = ExtResource("14_878x2")
metadata/_custom_type_script = "uid://33no4mylhh1r" metadata/_custom_type_script = "uid://33no4mylhh1r"
[connection signal="killed" from="." to="GibSpawner" method="summon_gib"] [connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]

View File

@@ -144,6 +144,7 @@ script = ExtResource("11_jkv5r")
metadata/_custom_type_script = "uid://5octqlf4ohel" metadata/_custom_type_script = "uid://5octqlf4ohel"
[connection signal="killed" from="." to="GibSpawner" method="summon_gib"] [connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]
[connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="damage_player"]

View File

@@ -253,6 +253,7 @@ hitbox = NodePath("../Hitbox")
metadata/_custom_type_script = "uid://ba18grqjixded" metadata/_custom_type_script = "uid://ba18grqjixded"
[connection signal="killed" from="." to="GibSpawner" method="summon_gib"] [connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="kick"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="kick"]
[connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="kick"] [connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="kick"]

View File

@@ -95,6 +95,7 @@ position = Vector2(0, -8)
[connection signal="killed" from="." to="GibSpawner" method="summon_gib"] [connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="area_entered" from="Hitbox" to="." method="on_area_entered"] [connection signal="area_entered" from="Hitbox" to="." method="on_area_entered"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="on_player_hit"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="on_player_hit"]
[connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="on_player_stomped_on"] [connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="on_player_stomped_on"]

View File

@@ -52,6 +52,7 @@ metadata/_custom_type_script = "uid://c3gg32ivrlq8n"
script = ExtResource("5_il73j") script = ExtResource("5_il73j")
metadata/_custom_type_script = "uid://5octqlf4ohel" metadata/_custom_type_script = "uid://5octqlf4ohel"
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]
[connection signal="player_stomped_on" from="EnemyPlayerDetection" to="GibSpawner" method="stomp_die"] [connection signal="player_stomped_on" from="EnemyPlayerDetection" to="GibSpawner" method="stomp_die"]

View File

@@ -32,7 +32,7 @@ func _physics_process(delta: float) -> void:
$RotationJoint.global_rotation_degrees = snapped(bar_rotation, 11.25) $RotationJoint.global_rotation_degrees = snapped(bar_rotation, 11.25)
func on_area_entered(area: Area2D) -> void: func on_area_entered(area: Area2D) -> void:
if area.owner is Player: if area.owner is Player and area.name != \"HammerHitbox\":
area.owner.damage() area.owner.damage()
" "

View File

@@ -168,6 +168,8 @@ rect = Rect2(-128, -128, 256, 256)
[connection signal="killed" from="." to="GibSpawner" method="summon_gib"] [connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="area_entered" from="Hitbox" to="." method="on_area_entered"] [connection signal="area_entered" from="Hitbox" to="." method="on_area_entered"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]] [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="on_player_hit"] [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="on_player_hit"]

View File

@@ -540,9 +540,11 @@ resource_json = ExtResource("7_2mfvl")
metadata/_custom_type_script = "uid://cbal8ms2oe1ik" metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
[node name="HammerHitbox" type="Area2D" parent="SpriteScaleJoint/Sprite"] [node name="HammerHitbox" type="Area2D" parent="SpriteScaleJoint/Sprite"]
unique_name_in_owner = true
visible = false visible = false
position = Vector2(16, 16) position = Vector2(16, 16)
monitorable = false collision_layer = 0
collision_mask = 0
[node name="CollisionShape2D" type="CollisionShape2D" parent="SpriteScaleJoint/Sprite/HammerHitbox"] [node name="CollisionShape2D" type="CollisionShape2D" parent="SpriteScaleJoint/Sprite/HammerHitbox"]
position = Vector2(-3.49691e-07, -8) position = Vector2(-3.49691e-07, -8)
@@ -1138,7 +1140,6 @@ anim_speed_max = 1.0
[connection signal="frame_changed" from="SpriteScaleJoint/Sprite" to="SpriteScaleJoint/Sprite" method="on_frame_changed"] [connection signal="frame_changed" from="SpriteScaleJoint/Sprite" to="SpriteScaleJoint/Sprite" method="on_frame_changed"]
[connection signal="sprite_frames_changed" from="SpriteScaleJoint/Sprite" to="SpriteScaleJoint/Sprite" method="on_frame_changed"] [connection signal="sprite_frames_changed" from="SpriteScaleJoint/Sprite" to="SpriteScaleJoint/Sprite" method="on_frame_changed"]
[connection signal="area_entered" from="SpriteScaleJoint/Sprite/HammerHitbox" to="." method="on_hammer_area_entered"]
[connection signal="area_entered" from="Hitbox" to="." method="on_area_entered"] [connection signal="area_entered" from="Hitbox" to="." method="on_area_entered"]
[connection signal="area_exited" from="Hitbox" to="." method="on_area_exited"] [connection signal="area_exited" from="Hitbox" to="." method="on_area_exited"]
[connection signal="body_entered" from="LavaPoisonDetect" to="." method="die" unbinds=1] [connection signal="body_entered" from="LavaPoisonDetect" to="." method="die" unbinds=1]

View File

@@ -8,18 +8,26 @@ extends Node
signal player_hit(player: Player) signal player_hit(player: Player)
signal player_stomped_on(player: Player) signal player_stomped_on(player: Player)
signal invincible_player_hit(player: Player) signal invincible_player_hit(player: Player)
signal hammer_player_hit(player: Player)
func _ready() -> void: func _ready() -> void:
hitbox.area_entered.connect(area_entered) hitbox.area_entered.connect(area_entered)
func area_entered(area: Area2D) -> void: func area_entered(area: Area2D) -> void:
if area.owner is Player: if area.owner is Player:
if area.name == "HammerHitbox":
hammer_entered(area.owner)
else:
player_entered(area.owner) player_entered(area.owner)
func player_entered(player: Player) -> void: func player_entered(player: Player) -> void:
if player.is_invincible or player.has_hammer: if player.is_invincible:
invincible_player_hit.emit(player) invincible_player_hit.emit(player)
elif (player.velocity.y >= 15 or (player.global_position.y + height < owner.global_position.y)) and player.in_water == false: elif (player.velocity.y >= 15 or (player.global_position.y + height < owner.global_position.y)) and player.in_water == false:
player_stomped_on.emit(player) player_stomped_on.emit(player)
else: else:
player_hit.emit(player) player_hit.emit(player)
func hammer_entered(player: Player) -> void:
if player.has_hammer:
hammer_player_hit.emit(player)

View File

@@ -26,6 +26,8 @@ func _process(_delta: float) -> void:
get_parent().visible = percent < 1 and Settings.file.visuals.visible_timers get_parent().visible = percent < 1 and Settings.file.visuals.visible_timers
frame = lerp(0, 6, percent) frame = lerp(0, 6, percent)
if percent >= warn_threshold and Settings.file.audio.extra_sfx == 1: if percent >= warn_threshold and Settings.file.audio.extra_sfx == 1:
if node is Timer:
if node.is_stopped(): return
if can_warn: if can_warn:
can_warn = false can_warn = false
AudioManager.play_global_sfx("timer_warning") AudioManager.play_global_sfx("timer_warning")

View File

@@ -15,6 +15,10 @@ func die() -> void:
func die_from_object(_node: Node2D) -> void: func die_from_object(_node: Node2D) -> void:
destroy() destroy()
func die_from_hammer(_node: Node2D) -> void:
AudioManager.play_sfx("hammer_hit", global_position)
destroy()
func summon_particle() -> void: func summon_particle() -> void:
var node = BARREL_DESTRUCTION_PARTICLE.instantiate() var node = BARREL_DESTRUCTION_PARTICLE.instantiate()
node.global_position = global_position - Vector2(0, 8) node.global_position = global_position - Vector2(0, 8)

View File

@@ -33,7 +33,7 @@ func handle_movement(delta: float) -> void:
func on_area_entered(area: Area2D) -> void: func on_area_entered(area: Area2D) -> void:
if area.owner is Player: if area.owner is Player:
if area.owner.is_invincible: if area.owner.is_invincible or area.name == "HammerHitbox":
die() die()
else: else:
area.owner.damage() area.owner.damage()

View File

@@ -11,7 +11,7 @@ func _physics_process(delta: float) -> void:
i.get_node("Sprite").scale.x = sign(get_tree().get_first_node_in_group("Players").global_position.x + 1 - i.global_position.x) i.get_node("Sprite").scale.x = sign(get_tree().get_first_node_in_group("Players").global_position.x + 1 - i.global_position.x)
func on_area_entered(area: Area2D) -> void: func on_area_entered(area: Area2D) -> void:
if area.owner is Player: if area.owner is Player and area.name != "HammerHitbox":
area.owner.damage() area.owner.damage()
func flag_die() -> void: func flag_die() -> void:

View File

@@ -22,7 +22,7 @@ func flag_die() -> void:
queue_free() queue_free()
func on_area_entered(area: Area2D) -> void: func on_area_entered(area: Area2D) -> void:
if area.owner is Player: if area.owner is Player and area.name != "HammerHitbox":
area.owner.damage() area.owner.damage()
func play_sfx() -> void: func play_sfx() -> void:

View File

@@ -53,3 +53,8 @@ func flag_die() -> void:
func die() -> void: func die() -> void:
killed.emit() killed.emit()
queue_free() queue_free()
func die_from_hammer() -> void:
AudioManager.play_sfx("hammer_hit", global_position)
killed.emit()
queue_free()

View File

@@ -37,3 +37,12 @@ func flag_die() -> void:
Global.score += 500 Global.score += 500
if score_note_adder != null: if score_note_adder != null:
score_note_adder.spawn_note(500) score_note_adder.spawn_note(500)
func die_from_hammer(obj: Node2D) -> void:
var dir = sign(global_position.x - obj.global_position.x)
if dir == 0:
dir = [-1, 1].pick_random()
DiscoLevel.combo_amount += 1
AudioManager.play_sfx("hammer_hit", global_position)
killed.emit(dir)
queue_free()

View File

@@ -21,5 +21,5 @@ func flag_die() -> void:
queue_free() queue_free()
func on_area_entered(area: Area2D) -> void: func on_area_entered(area: Area2D) -> void:
if area.owner is Player: if area.owner is Player and area.name != "HammerHitbox":
area.owner.damage() area.owner.damage()

View File

@@ -14,5 +14,5 @@ func on_body_entered(body: Node2D) -> void:
func on_area_entered(area: Area2D) -> void: func on_area_entered(area: Area2D) -> void:
if area.owner is Player: if area.owner is Player and area.name != "HammerHitbox":
area.owner.damage() area.owner.damage()

View File

@@ -43,7 +43,7 @@ func on_area_entered(area: Area2D) -> void:
if area.owner.has_node("ShellDetection"): if area.owner.has_node("ShellDetection"):
area.owner.die_from_object(self) area.owner.die_from_object(self)
elif area.owner is Player: elif area.owner is Player:
if area.owner.is_invincible: if area.owner.is_invincible or area.name == "HammerHitbox":
destroy() destroy()
else: else:
area.owner.damage() area.owner.damage()

View File

@@ -330,6 +330,7 @@ func _process(delta: float) -> void:
if is_invincible: if is_invincible:
DiscoLevel.combo_meter = 100 DiscoLevel.combo_meter = 100
%Hammer.visible = has_hammer %Hammer.visible = has_hammer
%HammerHitbox.collision_layer = has_hammer
func apply_gravity(delta: float) -> void: func apply_gravity(delta: float) -> void:
if in_water or flight_meter > 0: if in_water or flight_meter > 0:
@@ -893,9 +894,6 @@ func hammer_get() -> void:
$HammerTimer.start() $HammerTimer.start()
AudioManager.set_music_override(AudioManager.MUSIC_OVERRIDES.HAMMER, 0, false) AudioManager.set_music_override(AudioManager.MUSIC_OVERRIDES.HAMMER, 0, false)
func on_hammer_area_entered(area: Area2D) -> void:
pass
func wing_get() -> void: func wing_get() -> void:
AudioManager.set_music_override(AudioManager.MUSIC_OVERRIDES.WING, 0, false, false) AudioManager.set_music_override(AudioManager.MUSIC_OVERRIDES.WING, 0, false, false)
flight_meter = 10 flight_meter = 10

View File

@@ -38,6 +38,7 @@ const DEFAULT_SFX_LIBRARY := {
"firework": "res://Assets/Audio/SFX/Firework.wav", "firework": "res://Assets/Audio/SFX/Firework.wav",
"timer_beep": "res://Assets/Audio/SFX/TimerBeep.wav", "timer_beep": "res://Assets/Audio/SFX/TimerBeep.wav",
"hachisuke": "res://Assets/Audio/SFX/Hachisuke.wav", "hachisuke": "res://Assets/Audio/SFX/Hachisuke.wav",
"hammer_hit": "res://Assets/Audio/SFX/HammerHit.wav",
"burner": "res://Assets/Audio/SFX/Burner.wav", "burner": "res://Assets/Audio/SFX/Burner.wav",
"rank_up_1": "res://Assets/Audio/SFX/RankUpCBA.wav", "rank_up_1": "res://Assets/Audio/SFX/RankUpCBA.wav",
"rank_up_2": "res://Assets/Audio/SFX/RankUpSP.wav", "rank_up_2": "res://Assets/Audio/SFX/RankUpSP.wav",

View File

@@ -34,7 +34,7 @@ var ROM_POINTER_PATH = config_path.path_join("rom_pointer.smb")
var ROM_PATH = config_path.path_join("baserom.nes") var ROM_PATH = config_path.path_join("baserom.nes")
var ROM_ASSETS_PATH = config_path.path_join("resource_packs/BaseAssets") var ROM_ASSETS_PATH = config_path.path_join("resource_packs/BaseAssets")
const ROM_PACK_NAME := "BaseAssets" const ROM_PACK_NAME := "BaseAssets"
const ROM_ASSETS_VERSION := 0 const ROM_ASSETS_VERSION := 1
var server_version := -1 var server_version := -1
var current_version := -1 var current_version := -1
@@ -235,6 +235,7 @@ func check_for_rom() -> void:
if pack_dict.get("version", -1) == ROM_ASSETS_VERSION: if pack_dict.get("version", -1) == ROM_ASSETS_VERSION:
rom_assets_exist = true rom_assets_exist = true
else: else:
ResourceGenerator.updating = true
OS.move_to_trash(ROM_ASSETS_PATH) OS.move_to_trash(ROM_ASSETS_PATH)
func _process(delta: float) -> void: func _process(delta: float) -> void:
@@ -471,3 +472,11 @@ func sanitize_string(string := "") -> String:
if FONT.has_char(string.unicode_at(i)) == false and string[i] != "\n": if FONT.has_char(string.unicode_at(i)) == false and string[i] != "\n":
string = string.replace(string[i], " ") string = string.replace(string[i], " ")
return string return string
func get_base_asset_version() -> int:
var json = JSON.parse_string(FileAccess.open("user://BaseAssets/pack_info.json", FileAccess.READ).get_as_text())
var version = json.version
return get_version_num_int(version)
func get_version_num_int(ver_num := "0.0.0") -> int:
return int(ver_num.replace(".", ""))

View File

@@ -112,6 +112,12 @@ func load_settings() -> void:
for section in cfg_file.get_sections(): for section in cfg_file.get_sections():
for key in cfg_file.get_section_keys(section): for key in cfg_file.get_section_keys(section):
file[section][key] = cfg_file.get_value(section, key) file[section][key] = cfg_file.get_value(section, key)
fix_broken_settings()
func fix_broken_settings() -> void:
# Fix any "permanently-enabled" resource packs from 1.0.2 snapshots after portable mode was added, but before this bug was fixed
for i in range(file.visuals.resource_packs.size()):
file.visuals.resource_packs[i] = str(file.visuals.resource_packs[i]).trim_prefix("/")
func apply_settings() -> void: func apply_settings() -> void:
for i in file.video.keys(): for i in file.video.keys():

View File

@@ -1,5 +1,5 @@
extends Area2D extends Area2D
func area_entered(area: Area2D) -> void: func area_entered(area: Area2D) -> void:
if area.owner is Player and area.owner.state_machine.state.name != "Dead": if area.owner is Player and area.name != "HammerHitbox" and area.owner.state_machine.state.name != "Dead":
area.owner.die(true) area.owner.die(true)

View File

@@ -29,6 +29,7 @@ func _process(_delta: float) -> void:
go_to_menu() go_to_menu()
func go_to_menu() -> void: func go_to_menu() -> void:
ResourceGenerator.updating = true
if Global.rom_path == "": if Global.rom_path == "":
Global.transition_to_scene("res://Scenes/Levels/RomVerifier.tscn") Global.transition_to_scene("res://Scenes/Levels/RomVerifier.tscn")
elif not Global.rom_assets_exist: elif not Global.rom_assets_exist:

View File

@@ -36,7 +36,7 @@ func create_container(resource_pack := "") -> void:
container.icon = ImageTexture.create_from_image(image) container.icon = ImageTexture.create_from_image(image)
elif FileAccess.file_exists(resource_pack + "/icon.gif"): elif FileAccess.file_exists(resource_pack + "/icon.gif"):
container.icon = GifManager.animated_texture_from_file(resource_pack + "/icon.gif") container.icon = GifManager.animated_texture_from_file(resource_pack + "/icon.gif")
container.pack_name = resource_pack.replace(Global.config_path.path_join("resource_packs"), "") container.pack_name = resource_pack.replace(Global.config_path.path_join("resource_packs"), "").trim_prefix("/")
$"../ScrollContainer/VBoxContainer".add_child(container) $"../ScrollContainer/VBoxContainer".add_child(container)
containers.append(container) containers.append(container)
container.add_to_group("Options") container.add_to_group("Options")

View File

@@ -4,9 +4,11 @@ extends AssetRipper
@onready var progress_bar: ProgressBar = %ProgressBar @onready var progress_bar: ProgressBar = %ProgressBar
@onready var error: Label = %Error @onready var error: Label = %Error
static var updating := false
func _ready() -> void: func _ready() -> void:
Global.get_node("GameHUD").hide() Global.get_node("GameHUD").hide()
if updating: $MarginContainer/ProgressBar/Label.text = "UPDATING ASSETS..."
rom = FileAccess.get_file_as_bytes(Global.rom_path) rom = FileAccess.get_file_as_bytes(Global.rom_path)
prg_rom_size = rom[4] * 16384 prg_rom_size = rom[4] * 16384
chr_rom = rom.slice(16 + prg_rom_size) chr_rom = rom.slice(16 + prg_rom_size)