spaceship/vfx/EnemyExplosionVFX.gd
Loïc Wisniewski 7489528e60 #155, #152: shots reach further and sooner, and the other explosions catch up
#155 - the projectile flew at 850, which took 1.1 seconds to cross the gun's
own range: long enough that a shot read as leaving the ship rather than as
hitting something. 1400 now, and the interceptor's range goes 950 to 1200,
so it crosses in 0.86s and comfortably outranges the 620 the standoff
enemies hold at. A projectile's lifetime is derived from its range and
speed, so faster does not mean falling short - the test pins that
arithmetic rather than trusting it.

#152 asked for VFX on three events, and the finding is worth recording: all
three already existed and were already wired. What had happened is that #130
gave a lost VESSEL thirty particles and a shockwave, which left everything
else in the game visibly smaller than it - an enemy kill, the thing the
player is being rewarded for, and a broken rock, the thing they do more than
anything else, were both still on or near the base class's twelve-particle
default with no shockwave at all.

So this is about PROPORTION rather than about adding anything, and
proportion is what the test checks: a lost vessel outweighs a kill,
a kill outweighs a rock, and nothing sits on the base defaults. Numbers get
rebalanced; an ordering that says a rock outweighs a battleship is a bug.
Particles now run 38 > 32 > 24 against a default of 12.
2026-08-29 14:39:35 +02:00

26 lines
944 B
GDScript

class_name EnemyExplosionVFX
extends LightBurstVFX
func _init() -> void:
# #87: more of everything, and a shockwave behind it. A kill used to read
# as a small red puff that was easy to miss in a fight - the moment the
# player is being rewarded for should be the loudest thing on screen for
# an instant.
# #152: and again. #130 gave a lost VESSEL 30 particles and a 120-unit
# shockwave, which left a kill - the thing the player is being rewarded
# for - visibly the smaller event of the two. Back in proportion: still
# below a vessel's own death, but no longer a puff beside it.
color = Color(1.0, 0.25, 0.18)
particle_count = 32
lifetime = 0.75
min_speed = 170.0
max_speed = 620.0
shockwave_radius = 130.0
shockwave_color = Color(1.0, 0.6, 0.32)
static func spawn(parent: Node, world_position: Vector2) -> void:
var vfx: EnemyExplosionVFX = EnemyExplosionVFX.new()
vfx.position = world_position
parent.add_child(vfx)