Back to Devlog
    v0.9.1
    WeaponsFebruary 17, 2026Release notes

    Eight Weapons, Off By About Twenty-Four Bits

    All eight Warsow weapons with ammo entities and projectiles, a two-slot inventory, and a KTX1 decoder whose bit offsets were wrong.

    The Roster

    All eight Warsow weapons as EntityRegistry definitions — gunblade, machinegun, riotgun, grenade launcher, rocket launcher, electrobolt, lasergun, instagun — plus ammo entities and the grenade, rocket and gunblade-blast projectiles.

    InventoryManager.MAX_WEAPONS = 2. Two slots, Quake-style, and the game has to decide every time you walk over a weapon whether picking it up is a swap or a refusal.

    Pickup UX

    text
    PRESS [F] TO PICKUP <name>
    PRESS [F] TO SWAP TO <name>

    Drop and swap, 0.8s pickup immunity on dropped weapons, scroll wheel cycles slots 0 and 1. Pickups auto-collect ammo and health on touch.

    The Wire

    weapon_state per player in snapshots, local weapon_fire prediction skipped, spawn weapons aligned to the gunblade rather than the plasmagun, and server projectile spawn height corrected +20 to +24. giveWeapon() returns { acquired, dropped }.

    The Decoder

    text
    diffBit/flipBit extracted from wrong bit positions (off by ~24 bits)

    Also tableIdx0/tableIdx1 off by about 16 bits, modifier indices 0 and 1 swapped, and pixel index ordering row-major instead of column-major. KTX row-flip added after the software decode.

    Every compressed texture on every map was rendering as noise, and the bug report would have been "textures look wrong".

    Known Issues: LightGrid dimension mismatch warnings on some FBSP maps.