- Readying in a countdown deals any empty slots at random right away,
and the countdown reads "Starting..." once everyone is ready.
- /pvp toggles PvP in the sandbox, offline or in a lobby.
- Rival windows sit at half opacity (half again when knocked out, and
when hovered), show no item tooltips, and drop to small icons past
two full-size rows.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
HUD:
- Hotbars fit a quarter of the screen, dropping to small then tiny slots
(thinner outlines when tiny), with cooldown bars matching their size.
- HUD elements are drawn on their own layer and composited at one
opacity: hotbar slots are see-through until hovered, the rest fade
while hovered.
- Rival windows fit the right column in at most two rows, shrinking
icons then font, then dropping icons for name, health and ping bars.
- Tooltips number equipped items' slots and say Recoil for weapons that
only push back. Previews use arrows, spread uses degrees.
- Crosshair fills in and shakes with charge, and weapons shake after
firing until their cooldown ends. DPS and speed meters off by default.
Gameplay:
- Dual Wield stacks: each copy fires another recently held weapon from
a fanned off-hand, at its own level's cut.
- Flamethrower: no slowing, smaller fireball with some recoil, and an
airblast that knocks others away.
- Iron Weights slam on any landing faster than a plain fall (platforms
too), stacking radius and damage, and speeding fast falls.
- Stuck arrows are one-way ledges until they fade, matching their
(slightly larger) hit size. Attacks now collide with slopes.
- Halved Tesla Coil, Recoil Coil, Diazepam, Shock Absorber, Feather and
screenshake values.
Art and tools:
- Weapon and trinket icons merged into one sheet each (normal, small,
tiny), cells in catalog order. Grimoire wisps stand upright.
- Fonts gain the degree sign and four arrows, decoded from UTF-8.
- Menu fighter preview walks at quarter speed.
- Unequip from either catalog tab by right click or gamepad.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Lobbies hold 16 players and the sandbox 16 fighters, games up to 8. The arena
gets spawns 5-8 (outer ledges and middle platforms) and the race start eight
places. The sandbox adds eight more spawns, each the open spot farthest from
the rest. Rival cards wrap into rows of four, the lobby's player list goes to
two tiny columns when crowded, and the server keeps frame packets to one
datagram. Formatted with clang-format.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Neither does anything with the server running the games. Counting down to play
again moves into the match, so the server and every player agree on it and the
results show it starting again.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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>