Burn them to ashes, and give the burst back its bar
A burnt body does not burst. Fire kills by cooking, so there is nothing left to spray: a body that dies alight -- flamethrower or flame ball -- leaves dark grey ash instead of blood. Same decal, mound and particles, recoloured and smaller, with a puff of smoke and a dull thud instead of the wet splat and the headshot crack. The flame BALL has to mark itself, because that kill lands before the body ever catches. The flamethrower is a lighter, not a gun: no impact damage at all, it pierces, and it only IGNITES -- the burn does the killing, so a lit crowd walks a few steps and goes down together. 26 m of reach against a 22.8 m court, so it crosses to the far baseline. The guard matters: hp -= 0 fell straight through to killZombie, which made the cone delete the crowd on contact. Every burst weapon had no progress bar and the cause was the spend. Arming spent the tin at once, so the rack entry vanished -- and the bar draws on the slot holding G.gunId, which no longer existed. The tin is spent when the burst ENDS now, so icon, count and bar are all there while it runs, and every path that ends a burst routes through endBurst or it would hand out free ammo. Auto-fire movement again: the previous fix read moving as mx||mz||assist, and finger-steering zeroes mx/mz, so sliding left and right still counted as standing still. And the oval on his back was the mg racket -- its head projected almost exactly onto the sprite; offset by facing it reads as held out beside him. The laser's far edge is pinned in SCREEN space to the middle of the ad strip rather than running out to beamLen on the ground, which landed on their top line. beamLen goes back to being the kill range instead of a number tuned to one camera. Beacon thumps, rocket swooshes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
91053b4c35
commit
6e88fd5bb9
6 files changed
+128
-30
No files matched your search
+39
@@ -358,6 +358,45 @@ trail only says where it has been.
|
||||
`jet`/`trailR` were added to the WEAPONS rows without being added to that list — so the rocket flew
|
||||
with no plume at all and nothing errored. **Any new pellet field has to be added in both places.**
|
||||
|
||||
## Session log: fire, ash, and the third laser pass (2026-08-03)
|
||||
|
||||
**A BURNT BODY DOES NOT BURST.** Fire kills by cooking, so there is nothing left to spray: a body
|
||||
that dies while alight — flamethrower or flame ball — leaves **dark grey ash** instead of blood. Same
|
||||
decal, same mound, same particles, all recoloured and a little smaller, plus a puff of smoke and a
|
||||
dull thud instead of the wet splat and the headshot crack. `killZombie` reads `zb.burnT > 0 ||
|
||||
zb.ashes`; **the flame BALL has to set `zb.ashes` itself**, because that kill happens before the body
|
||||
ever catches. `gore`/`piles`/`parts` all carry an `ash` flag and render off `ASH_COLS`.
|
||||
|
||||
**The flamethrower is a lighter, not a gun.** `dmg: 0, hp: 0, pierce: true` — it does NO impact
|
||||
damage at all and only IGNITES; the burn does the killing, so a lit crowd walks a few steps and goes
|
||||
down together. Reach `life` 1.15 s x `speed` 23 = **26 m against a 22.8 m court**, so it crosses to
|
||||
the far baseline. Watch the guard in the pellet loop: `hp -= 0` fell straight through to
|
||||
`killZombie`, which made the flame cone delete the crowd on contact — a machine gun that happens to
|
||||
be orange.
|
||||
|
||||
**Every burst weapon had no progress bar, and the cause was the spend.** Arming spent the tin
|
||||
immediately, so the rack entry vanished — and the countdown bar draws on the slot holding `G.gunId`,
|
||||
which no longer existed. The tin is spent when the burst ENDS now (`endBurst`), so the icon, the
|
||||
count and the bar are all there while it runs. **Every path that ends a burst must route through
|
||||
`endBurst`** — the duel, the boss fight and death all force `G.mgT = 0` on their own, and any one of
|
||||
them missed would hand out free ammo. The soak asserts `gunId` is never set with `mgT` at zero.
|
||||
|
||||
**Auto-fire movement, again.** The previous fix set the pose from `moving`, but `moving` was
|
||||
`mx || mz || assist`, and finger-steering zeroes `mx`/`mz` — so a player sliding left and right under
|
||||
auto-fire still counted as standing still and never ran. `mgMoving` is in that expression now.
|
||||
|
||||
**The oval on his back was the mg racket.** `drawMgRacket` put its head at `(P.x, 0.95, P.z - 1.35)`,
|
||||
which at this camera projects almost exactly onto the player sprite. Offset by `P.facing` it reads as
|
||||
a racket held out beside him.
|
||||
|
||||
**The laser's far edge is pinned in SCREEN space.** Running out to `beamLen` on the ground landed it
|
||||
on the ads' TOP line; it should die at their middle. `c3.y = c4.y = proj(0,0,-6).y - AD_H / 2` — the
|
||||
x's keep their perspective, the y is pinned. That holds in both orientations and leaves `beamLen`
|
||||
free to be the KILL range instead of a number tuned to one camera.
|
||||
|
||||
**Weapon sounds** are a `sfx` field on the WEAPONS row: `thump` (beacon, `boom`), `swoosh` (rocket,
|
||||
`whoosh`), otherwise the gun's every-other-round tick.
|
||||
|
||||
## TEST MODE — triple-tap the scoreboard
|
||||
|
||||
A sandbox for trying new content without playing twenty games to reach it. Three taps on the
|
||||
|
||||
Reference in new issue
Block a user