Stop animations when enemy dies, fix pixel melt issue (was melting all of the elemental damage effects too)

This commit is contained in:
2026-06-16 21:53:53 -07:00
parent 8158156f09
commit f7c0476fa6
17 changed files with 20 additions and 2 deletions
@@ -26,6 +26,7 @@ public partial class EnemyModelView2D : EnemyModelView, IEnemyModelView
[Node] public AnimationPlayer WaterHitAnimation { get; set; } = default!; [Node] public AnimationPlayer WaterHitAnimation { get; set; } = default!;
[Node] public AnimationPlayer CurseHitAnimation { get; set; } = default!; [Node] public AnimationPlayer CurseHitAnimation { get; set; } = default!;
[Node] public AnimationPlayer EarthHitAnimation { get; set; } = default!; [Node] public AnimationPlayer EarthHitAnimation { get; set; } = default!;
[Node] public Node2D VFXSprites { get; set; } = default!;
[ExportGroup("Enemy Model Properties")] [ExportGroup("Enemy Model Properties")]
[Export(PropertyHint.Range, "0.0, 1.0")] [Export(PropertyHint.Range, "0.0, 1.0")]
@@ -60,7 +61,9 @@ public partial class EnemyModelView2D : EnemyModelView, IEnemyModelView
public override void PlayDeathAnimation() public override void PlayDeathAnimation()
{ {
_stateMachine.Stop();
AnimationPlayer.Stop(); AnimationPlayer.Stop();
VFXSprites.Hide();
LoadShader("res://src/vfx/shaders/PixelMelt.gdshader"); LoadShader("res://src/vfx/shaders/PixelMelt.gdshader");
var tweener = GetTree().CreateTween(); var tweener = GetTree().CreateTween();
tweener.TweenMethod(Callable.From((float x) => SetShaderValue(x)), 0.0f, 0.1f, 0.8f); tweener.TweenMethod(Callable.From((float x) => SetShaderValue(x)), 0.0f, 0.1f, 0.8f);
@@ -3884,6 +3884,7 @@ sprite_frames = SubResource("SpriteFrames_6drt6")
animation = &"idle_left_walk" animation = &"idle_left_walk"
[node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] [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"] [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"]
texture_filter = 1 texture_filter = 1
@@ -4389,6 +4389,7 @@ animation = &"idle_front_walk"
offset = Vector2(400, 400) offset = Vector2(400, 400)
[node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] [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"] [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"]
texture_filter = 1 texture_filter = 1
@@ -5888,6 +5888,7 @@ sprite_frames = SubResource("SpriteFrames_673a4")
animation = &"idle_back_walk" animation = &"idle_back_walk"
[node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] [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"] [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"]
texture_filter = 1 texture_filter = 1
@@ -5028,6 +5028,7 @@ sprite_frames = SubResource("SpriteFrames_sobol")
animation = &"idle_front" animation = &"idle_front"
[node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] [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"] [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"]
texture_filter = 1 texture_filter = 1
@@ -4732,6 +4732,7 @@ animation = &"idle_front_walk"
offset = Vector2(400, 400) offset = Vector2(400, 400)
[node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] [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"] [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"]
texture_filter = 1 texture_filter = 1
@@ -5936,6 +5936,7 @@ animation = &"Idle FRONT"
offset = Vector2(402.745, 400) offset = Vector2(402.745, 400)
[node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] [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"] [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"]
texture_filter = 1 texture_filter = 1
@@ -6698,6 +6698,7 @@ animation = &"idle_front_walk"
offset = Vector2(500, 500) offset = Vector2(500, 500)
[node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] [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"] [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"]
texture_filter = 1 texture_filter = 1
@@ -5282,6 +5282,7 @@ sprite_frames = SubResource("SpriteFrames_6drt6")
animation = &"idle_front" animation = &"idle_front"
[node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] [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"] [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"]
texture_filter = 1 texture_filter = 1
@@ -5258,6 +5258,7 @@ sprite_frames = SubResource("SpriteFrames_6drt6")
animation = &"idle_front" animation = &"idle_front"
[node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] [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"] [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"]
texture_filter = 1 texture_filter = 1
@@ -5371,6 +5371,7 @@ sprite_frames = SubResource("SpriteFrames_6drt6")
animation = &"idle_front" animation = &"idle_front"
[node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] [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"] [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"]
texture_filter = 1 texture_filter = 1
@@ -5331,6 +5331,7 @@ autoplay = "default"
offset = Vector2(400, 375) offset = Vector2(400, 375)
[node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] [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"] [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"]
texture_filter = 1 texture_filter = 1
@@ -5505,6 +5505,7 @@ sprite_frames = SubResource("SpriteFrames_sobol")
animation = &"idle_front" animation = &"idle_front"
[node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] [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"] [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"]
texture_filter = 1 texture_filter = 1
@@ -6637,6 +6637,7 @@ animation = &"idle_front"
offset = Vector2(200, 200) offset = Vector2(200, 200)
[node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] [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"] [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"]
texture_filter = 1 texture_filter = 1
@@ -3796,6 +3796,7 @@ sprite_frames = SubResource("SpriteFrames_hypby")
animation = &"idle_left_walk" animation = &"idle_left_walk"
[node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] [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"] [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"]
texture_filter = 1 texture_filter = 1
@@ -5304,6 +5304,7 @@ autoplay = "default"
offset = Vector2(400, 375) offset = Vector2(400, 375)
[node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"] [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"] [node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"]
position = Vector2(378.935, 478.985) position = Vector2(378.935, 478.985)
@@ -8,7 +8,7 @@ uniform float meltiness: hint_range(0.0, 16.0) = 1.0;
uniform bool reverse = false; 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); return mod(x * 2048103.0 + cos(x * 1912.0), 1.0);
} }
@@ -22,7 +22,7 @@ void fragment() {
uv.y -= progress / UV.y; uv.y -= progress / UV.y;
// Created jagged edges for each pixel on the x-axis // 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); COLOR = texture(TEXTURE, uv);