- Every attack is now assembled from traits on its definition instead
of per-weapon code: an anchor and path (thrusts, out-and-back, arcs),
shared flight physics (gravity, drag, acceleration, homing, and one
wall response: end, burst, stick, crawl, bounce, stop, pass, return,
latch), and flags like bouncy, drifting, tethered, orbiting, instant
and arming. Melee are projectiles too.
- Shots have a lifetime and a fade (when damage bottoms out). Range is
speed times lifetime. Ricochets and the Vacuum wind lifetime back.
- The Vacuum pulls anyone's shots, and its airblast flips them out
along the aim, claiming enemies' (fading into your colour).
- New trinket: Hourglass, longer projectile lifetime and range. Ropes
and chains lengthen with it and the Accelerator.
- Fashion: 23 items worn on the head, face or torso, chosen in Profile.
- Flamethrower flames hit continuously, the whip coils and sweeps,
bouncing shots roll over ramps, and Ricochet relights grenade fuses.
- Profile tab, colour tooltips, option hints on every setting, an
About tab with credits and links, and the Ithaca font.
- Loadouts lock once readied, tomatoes clear with the match, and the
round-over pause is 4 seconds.
- CC0 license. Tools and CLAUDE.md are no longer tracked, and the web
shell moves to web/.
Sim holds one whole game (tick, snapshots, checksum) and talks to the screen only
through Cues, which the client's Scene plays and the server ignores. All drawing
moved to scene.cpp. Match takes this screen's wishes as request flags instead of
reading the menu, input and settings. The sim library builds without SDL and the
server links it, ready to run games itself.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>