From f7c0476fa6b391903e149278a6498aef544d5892 Mon Sep 17 00:00:00 2001 From: Zenny Date: Tue, 16 Jun 2026 21:53:53 -0700 Subject: [PATCH] Stop animations when enemy dies, fix pixel melt issue (was melting all of the elemental damage effects too) --- Zennysoft.Game.Ma/src/enemy/EnemyModelView2D.cs | 3 +++ .../src/enemy/enemy_types/01. sproingy/SproingyModelView.tscn | 1 + .../src/enemy/enemy_types/02. michael/MichaelModelView.tscn | 1 + .../enemy_types/03. filth_eater/FilthEaterModelView.tscn | 1 + .../src/enemy/enemy_types/04. sara/SaraModelView.tscn | 1 + .../src/enemy/enemy_types/05. ballos/BallosModelView.tscn | 1 + .../src/enemy/enemy_types/06. Planter/PlanterModelView.tscn | 1 + .../src/enemy/enemy_types/07. chinthe/ChintheModelView.tscn | 1 + .../enemy_types/08a. Ambassador/AmbassadorModelView.tscn | 1 + .../08b. Ambassador (red)/AmbassadorSmallModelView.tscn | 1 + .../08c. Ambassador (steel)/AmbassadorSteelModelView.tscn | 1 + .../src/enemy/enemy_types/09. Agni/AgniDemonModelView.tscn | 1 + .../src/enemy/enemy_types/11. Palan/PalanModelView.tscn | 1 + .../enemy_types/12. Shield of Heaven/ShieldModelView.tscn | 1 + .../enemy_types/13. gold sproingy/GoldSproingyModelView.tscn | 1 + .../enemy/enemy_types/9b. Aqueos Demon/AqueosModelView.tscn | 1 + Zennysoft.Game.Ma/src/vfx/shaders/PixelMelt.gdshader | 4 ++-- 17 files changed, 20 insertions(+), 2 deletions(-) diff --git a/Zennysoft.Game.Ma/src/enemy/EnemyModelView2D.cs b/Zennysoft.Game.Ma/src/enemy/EnemyModelView2D.cs index 762cc1e9..6dd5b617 100644 --- a/Zennysoft.Game.Ma/src/enemy/EnemyModelView2D.cs +++ b/Zennysoft.Game.Ma/src/enemy/EnemyModelView2D.cs @@ -26,6 +26,7 @@ public partial class EnemyModelView2D : EnemyModelView, IEnemyModelView [Node] public AnimationPlayer WaterHitAnimation { get; set; } = default!; [Node] public AnimationPlayer CurseHitAnimation { get; set; } = default!; [Node] public AnimationPlayer EarthHitAnimation { get; set; } = default!; + [Node] public Node2D VFXSprites { get; set; } = default!; [ExportGroup("Enemy Model Properties")] [Export(PropertyHint.Range, "0.0, 1.0")] @@ -60,7 +61,9 @@ public partial class EnemyModelView2D : EnemyModelView, IEnemyModelView public override void PlayDeathAnimation() { + _stateMachine.Stop(); AnimationPlayer.Stop(); + VFXSprites.Hide(); LoadShader("res://src/vfx/shaders/PixelMelt.gdshader"); var tweener = GetTree().CreateTween(); tweener.TweenMethod(Callable.From((float x) => SetShaderValue(x)), 0.0f, 0.1f, 0.8f); diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/01. sproingy/SproingyModelView.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/01. sproingy/SproingyModelView.tscn index 22675439..02330bae 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/01. sproingy/SproingyModelView.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/01. sproingy/SproingyModelView.tscn @@ -3884,6 +3884,7 @@ sprite_frames = SubResource("SpriteFrames_6drt6") animation = &"idle_left_walk" [node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] +unique_name_in_owner = true [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"] texture_filter = 1 diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/02. michael/MichaelModelView.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/02. michael/MichaelModelView.tscn index e9230e20..96392e6a 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/02. michael/MichaelModelView.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/02. michael/MichaelModelView.tscn @@ -4389,6 +4389,7 @@ animation = &"idle_front_walk" offset = Vector2(400, 400) [node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] +unique_name_in_owner = true [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"] texture_filter = 1 diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/03. filth_eater/FilthEaterModelView.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/03. filth_eater/FilthEaterModelView.tscn index 5a8b6748..3699341b 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/03. filth_eater/FilthEaterModelView.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/03. filth_eater/FilthEaterModelView.tscn @@ -5888,6 +5888,7 @@ sprite_frames = SubResource("SpriteFrames_673a4") animation = &"idle_back_walk" [node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] +unique_name_in_owner = true [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"] texture_filter = 1 diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/04. sara/SaraModelView.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/04. sara/SaraModelView.tscn index 68738a65..1435a0d6 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/04. sara/SaraModelView.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/04. sara/SaraModelView.tscn @@ -5028,6 +5028,7 @@ sprite_frames = SubResource("SpriteFrames_sobol") animation = &"idle_front" [node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] +unique_name_in_owner = true [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"] texture_filter = 1 diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/05. ballos/BallosModelView.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/05. ballos/BallosModelView.tscn index a74173c5..71f2eb5a 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/05. ballos/BallosModelView.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/05. ballos/BallosModelView.tscn @@ -4732,6 +4732,7 @@ animation = &"idle_front_walk" offset = Vector2(400, 400) [node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] +unique_name_in_owner = true [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"] texture_filter = 1 diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/06. Planter/PlanterModelView.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/06. Planter/PlanterModelView.tscn index 2adbce75..42c0360e 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/06. Planter/PlanterModelView.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/06. Planter/PlanterModelView.tscn @@ -5936,6 +5936,7 @@ animation = &"Idle FRONT" offset = Vector2(402.745, 400) [node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] +unique_name_in_owner = true [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"] texture_filter = 1 diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/07. chinthe/ChintheModelView.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/07. chinthe/ChintheModelView.tscn index 4341a489..3960418c 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/07. chinthe/ChintheModelView.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/07. chinthe/ChintheModelView.tscn @@ -6698,6 +6698,7 @@ animation = &"idle_front_walk" offset = Vector2(500, 500) [node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] +unique_name_in_owner = true [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"] texture_filter = 1 diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/08a. Ambassador/AmbassadorModelView.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/08a. Ambassador/AmbassadorModelView.tscn index 4bbcae59..e3e18d9f 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/08a. Ambassador/AmbassadorModelView.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/08a. Ambassador/AmbassadorModelView.tscn @@ -5282,6 +5282,7 @@ sprite_frames = SubResource("SpriteFrames_6drt6") animation = &"idle_front" [node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] +unique_name_in_owner = true [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"] texture_filter = 1 diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/08b. Ambassador (red)/AmbassadorSmallModelView.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/08b. Ambassador (red)/AmbassadorSmallModelView.tscn index d05bb4ac..c7afdb8a 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/08b. Ambassador (red)/AmbassadorSmallModelView.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/08b. Ambassador (red)/AmbassadorSmallModelView.tscn @@ -5258,6 +5258,7 @@ sprite_frames = SubResource("SpriteFrames_6drt6") animation = &"idle_front" [node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] +unique_name_in_owner = true [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"] texture_filter = 1 diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/08c. Ambassador (steel)/AmbassadorSteelModelView.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/08c. Ambassador (steel)/AmbassadorSteelModelView.tscn index 7192dbbe..08615452 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/08c. Ambassador (steel)/AmbassadorSteelModelView.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/08c. Ambassador (steel)/AmbassadorSteelModelView.tscn @@ -5371,6 +5371,7 @@ sprite_frames = SubResource("SpriteFrames_6drt6") animation = &"idle_front" [node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] +unique_name_in_owner = true [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"] texture_filter = 1 diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/09. Agni/AgniDemonModelView.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/09. Agni/AgniDemonModelView.tscn index 9664bdd9..16c97ca3 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/09. Agni/AgniDemonModelView.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/09. Agni/AgniDemonModelView.tscn @@ -5331,6 +5331,7 @@ autoplay = "default" offset = Vector2(400, 375) [node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] +unique_name_in_owner = true [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"] texture_filter = 1 diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/11. Palan/PalanModelView.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/11. Palan/PalanModelView.tscn index 9132d228..9f39325d 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/11. Palan/PalanModelView.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/11. Palan/PalanModelView.tscn @@ -5505,6 +5505,7 @@ sprite_frames = SubResource("SpriteFrames_sobol") animation = &"idle_front" [node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] +unique_name_in_owner = true [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"] texture_filter = 1 diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/12. Shield of Heaven/ShieldModelView.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/12. Shield of Heaven/ShieldModelView.tscn index c83a0a99..5e4d4093 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/12. Shield of Heaven/ShieldModelView.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/12. Shield of Heaven/ShieldModelView.tscn @@ -6637,6 +6637,7 @@ animation = &"idle_front" offset = Vector2(200, 200) [node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] +unique_name_in_owner = true [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"] texture_filter = 1 diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/13. gold sproingy/GoldSproingyModelView.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/13. gold sproingy/GoldSproingyModelView.tscn index 19df873b..74da7fee 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/13. gold sproingy/GoldSproingyModelView.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/13. gold sproingy/GoldSproingyModelView.tscn @@ -3796,6 +3796,7 @@ sprite_frames = SubResource("SpriteFrames_hypby") animation = &"idle_left_walk" [node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] +unique_name_in_owner = true [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"] texture_filter = 1 diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/9b. Aqueos Demon/AqueosModelView.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/9b. Aqueos Demon/AqueosModelView.tscn index 2c23215b..6a12748f 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/9b. Aqueos Demon/AqueosModelView.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/9b. Aqueos Demon/AqueosModelView.tscn @@ -5304,6 +5304,7 @@ autoplay = "default" offset = Vector2(400, 375) [node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] +unique_name_in_owner = true [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"] position = Vector2(378.935, 478.985) diff --git a/Zennysoft.Game.Ma/src/vfx/shaders/PixelMelt.gdshader b/Zennysoft.Game.Ma/src/vfx/shaders/PixelMelt.gdshader index 2c123e75..01e5fc53 100644 --- a/Zennysoft.Game.Ma/src/vfx/shaders/PixelMelt.gdshader +++ b/Zennysoft.Game.Ma/src/vfx/shaders/PixelMelt.gdshader @@ -8,7 +8,7 @@ uniform float meltiness: hint_range(0.0, 16.0) = 1.0; uniform bool reverse = false; -float psuedo_rand(float x) { +float pseudo_rand(float x) { return mod(x * 2048103.0 + cos(x * 1912.0), 1.0); } @@ -22,7 +22,7 @@ void fragment() { uv.y -= progress / UV.y; // Created jagged edges for each pixel on the x-axis - uv.y -= progress * meltiness * psuedo_rand(UV.x - mod(UV.x, TEXTURE_PIXEL_SIZE.x)); + uv.y -= progress * meltiness * pseudo_rand(UV.x - mod(UV.x, TEXTURE_PIXEL_SIZE.x)); COLOR = texture(TEXTURE, uv);