Make the arenas' cover actually stop bullets
The player's muzzle was fixed last commit; every enemy and boss emitter has one too, and theirs reach further. A ring sits 46px out, an arc sweep's outer arms sit past 100px, and a wall-gap curtain spans the whole arena -- most of a curtain is nowhere near the thing that fired it. The pool samples geometry once per tick and never sees the jump, so all of those were spawning bullets on the far side of whatever stood between. That matters here more than it sounds, because both boss arenas are authored out of cover. The hall has pillars; the vault has barricades, and its own comment says they are there so that knowing where the Cantor is does not hand you a firing lane to it. A barricade blocks bullets and deliberately does NOT block sight -- so it is exactly the cover this bug cancelled. Measured before fixing: the Warden's curtain put 13 shots through a one-tile wall and its arc sweep 13 more; the Cantor's curtain, 16. Two checks, not one. The path test skips its own starting tile so a shooter in a doorway still resolves, and that skip let a telegraphed burst whose centre and ring sit inside one wall tile through -- born in the wall, announced to every client, dead on the next tick. The destination is now asked separately, so a bullet never exists inside geometry. A telegraphed strike passes its own marker as the source rather than the boss: that burst is born where the player was warned, and a pillar between the boss and the spot has nothing to say about it. A strike marked on cover is now simply a dud, which is cover working; pinned by a test so it stays a known shape. First attempt at this used a turret behind a barricade and proved nothing -- a turret's 24px offset cannot clear its own 16px radius plus a 32px tile, so the test could not have failed. Replaced with the two emitters that can reach, plus both real arenas. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
20715e77cc
commit
7b710471df
3 files changed
+169
-2
No files matched your search
@@ -59,7 +59,10 @@ func _burst(ctx: EmitContext, at: Vector2) -> void:
|
||||
return
|
||||
for i in burst_count:
|
||||
var a := TAU * (float(i) / float(burst_count))
|
||||
emit_shot(ctx, a, at + Vector2.RIGHT.rotated(a) * (blast_radius * 0.25))
|
||||
# From the marker, not from the boss: this burst is born where the
|
||||
# player was warned it would be, and a pillar between the boss and the
|
||||
# spot has nothing to say about it.
|
||||
emit_shot_from(ctx, a, at + Vector2.RIGHT.rotated(a) * (blast_radius * 0.25), at)
|
||||
|
||||
|
||||
## Where volley [param volley]'s strike [param index] lands, inside
|
||||
|
||||
Reference in new issue
Block a user