Properly implement the Hammer item (#599)

* Properly implement the Hammer item

* Update Boo.gd

* Update LongFirebar.tscn
This commit is contained in:
John Cooper McDonald
2025-10-15 12:14:19 -05:00
committed by GitHub
parent 651988bf5e
commit 8474bc3c19
48 changed files with 143 additions and 21 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

@@ -113,8 +113,10 @@ metadata/_custom_type_script = "uid://cmg61722ktg2m"
script = ExtResource("12_d7wml")
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="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="player_hit" 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"]

View File

@@ -103,6 +103,8 @@ hitbox = NodePath("../Hitbox")
metadata/_custom_type_script = "uid://ba18grqjixded"
[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="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[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="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="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[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"
[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="ScoreNoteSpawner" method="spawn_note" binds= [5000]]
[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="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="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="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[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_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="screen_entered" from="VisibleOnScreenEnabler2D" to="." method="on_screen_entered"]
[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="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]
[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="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="on_screen_entered"]
[connection signal="explosion_entered" from="ExplosionDetection" to="." method="die_from_object"]
[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"
[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="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]
[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="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[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="explosion_entered" from="ExplosionDetection" to="." method="die_from_object"]

View File

@@ -205,6 +205,8 @@ hitbox = NodePath("../Hitbox")
metadata/_custom_type_script = "uid://ba18grqjixded"
[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="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[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"
[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="ScoreNoteSpawner" method="spawn_note" binds= [100]]
[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="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="ScoreNoteSpawner" method="spawn_note" binds= [100]]
[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"
[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="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]
[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="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="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[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="fireball_hit" from="FireballDetection" to="." method="die_from_object"]
[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="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[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="explosion_entered" from="ExplosionDetection" to="." method="die_from_object"]

View File

@@ -17,3 +17,5 @@ points = PackedVector2Array(0, 0, -96, 0)
width = 1.0
texture = ExtResource("3_kfyly")
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="timeout" from="JumpTimer" to="." method="jump" binds= [false]]
[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="ScoreNoteSpawner" method="spawn_note" binds= [1000]]
[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="screen_entered" from="VisibleOnScreenEnabler2D" to="." method="on_screen_entered"]
[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="ScoreNoteSpawner" method="spawn_note" flags=3 binds= [200]]
[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"
[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="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]
[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"
[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="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]

View File

@@ -309,6 +309,8 @@ process_mode = 3
script = SubResource("GDScript_ofvpu")
[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="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[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="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="player_hit" 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="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="player_hit" 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="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="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" 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="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="ScoreNoteSpawner" method="spawn_note" binds= [500]]
[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"
[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="ScoreNoteSpawner" method="spawn_note" binds= [100]]
[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"
[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="ScoreNoteSpawner" method="spawn_note" binds= [100]]
[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"
[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="ScoreNoteSpawner" method="spawn_note" binds= [500]]
[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"
[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="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[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"
[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="player_hit" 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"
[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="player_hit" 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="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="player_hit" from="EnemyPlayerDetection" to="." method="on_player_hit"]
[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")
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="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]
[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)
func on_area_entered(area: Area2D) -> void:
if area.owner is Player:
if area.owner is Player and area.name != \"HammerHitbox\":
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="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="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[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"
[node name="HammerHitbox" type="Area2D" parent="SpriteScaleJoint/Sprite"]
unique_name_in_owner = true
visible = false
position = Vector2(16, 16)
monitorable = false
collision_layer = 0
collision_mask = 0
[node name="CollisionShape2D" type="CollisionShape2D" parent="SpriteScaleJoint/Sprite/HammerHitbox"]
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="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_exited" from="Hitbox" to="." method="on_area_exited"]
[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_stomped_on(player: Player)
signal invincible_player_hit(player: Player)
signal hammer_player_hit(player: Player)
func _ready() -> void:
hitbox.area_entered.connect(area_entered)
func area_entered(area: Area2D) -> void:
if area.owner is Player:
player_entered(area.owner)
if area.name == "HammerHitbox":
hammer_entered(area.owner)
else:
player_entered(area.owner)
func player_entered(player: Player) -> void:
if player.is_invincible or player.has_hammer:
if player.is_invincible:
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:
player_stomped_on.emit(player)
else:
player_hit.emit(player)
func hammer_entered(player: Player) -> void:
if player.has_hammer:
hammer_player_hit.emit(player)

View File

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

View File

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

View File

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

View File

@@ -53,3 +53,8 @@ func flag_die() -> void:
func die() -> void:
killed.emit()
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
if score_note_adder != null:
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()
func on_area_entered(area: Area2D) -> void:
if area.owner is Player:
if area.owner is Player and area.name != "HammerHitbox":
area.owner.damage()

View File

@@ -14,5 +14,5 @@ func on_body_entered(body: Node2D) -> 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()

View File

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

View File

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

View File

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

View File

@@ -1,5 +1,5 @@
extends Area2D
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)