# WEAPON AUDIT (STYLE-PORT, generated by `python3 _tools/weapon_audit.py`; the rule: _tools/coord/WEAPON_RULE.md)

Every weapon-like drawing in a live kill that does NOT go through the shared game-weapon path (K.drawWeaponAt / E40.drawWeapon / the body's held weapon), from a static scan of each kill's region in its lane file and the helpers it calls.

- **GAME:<id>**: a weapon the game has. Replace the custom drawing with the real one: hold it as the body's weapon (`b.wd = K.WD(id)`, drawn by drawHeld) or draw it with `K.drawWeaponAt(ctx, id, skin, x, y, ang, K.WS * b.k, t)`; a dropped one as a flat58 fx that draws drawWeaponAt.
- **INK**: not a game weapon (a custom blade / club / prop, or a weapon the game retired: bat, bees, blower, boomerang, boxglove, chappal, firewand, lstaff, magnet, marksman, nunchucks, railgun, recoilgun, scroll, sword, timewatch, wingblade). Draw it ink-cast (CASTINK58, THE OFFERED HAND's ink swords).
- **INK-CAST**: already drawn through K.inkCast (the WEAPON check passes it).
- **?**: gun-ish words near drawing code; look before changing (often a muzzle flash or an aim line, which is fine).

Kills scanned: 765 of 812 on the tracker (47 with no region found in the lane files, listed at the end). Kills with findings: 145. Clean: 620.

Findings by class: ? 8, GAME:ar 8, GAME:bouncer 1, GAME:burst 1, GAME:flamer 19, GAME:golden 3, GAME:grenades 5, GAME:hammer 4, GAME:handcannon 4, GAME:ice 1, GAME:knife 22, GAME:minigun 2, GAME:pan 4, GAME:pistol 14, GAME:pump 4, GAME:revolver 8, GAME:rpg 3, GAME:sawedoff 1, GAME:scythe 12, GAME:shrink 1, GAME:smg 6, GAME:sniper 1, GAME:spear 8, GAME:speedsabre 1, GAME:tkglove 2, INK 127, INK-CAST 7.

Helpers that draw weapon-like things off the path (the fixers convert the helper once, every caller follows):

| helper | defined at | class | word |
|---|---|---|---|
| RIFLE | 58k_w_sniper_5.js:27 | GAME:ar | RIFLE |
| arrow | 58k_w_ar.js:4982 | INK | arrow |
| axeAt | 58k_w_beam_cine_e2.js:370 | INK | axe |
| blade | 58k_arrive.js:1001 | ? | blade |
| blade | 58k_w_ice.js:1176 | ? | blade |
| blade | 58k_w_minigun_9.js:1656 | ? | blade |
| bladeAt | 58k_w_minigun_cine_d.js:346 | ? | blade |
| bladeDraw | 58k_w_hammer_cine.js:388 | ? | blade |
| bladeDraw | 58k_w_pistol_cine_n3.js:507 | ? | blade |
| bladeDraw | 58k_w_pistol_cine_n3.js:901 | ? | blade |
| bladeRim | 58k_w_pistol_cine_n3.js:895 | ? | blade |
| bladeShape | 58k_w_minigun_cine_d.js:343 | ? | blade |
| bladeShape | 58k_w_pistol_cine_n3.js:890 | ? | blade |
| bottle | 58k_arrive.js:1101 | INK | bottle |
| buildRifle | 58k_w_sniper_3.js:350 | GAME:ar | Rifle |
| cleaver | 58k_arrive.js:983 | INK | cleaver |
| club | 58k_w_ar.js:5784 | INK | club |
| clubFront | 58k_w_handcannon_skins.js:918 | INK | club |
| drawArrow | 58k_w_rpg_skins.js:970 | INK | Arrow |
| drawAxe | 58k_w_spear_skins.js:1509 | INK | Axe |
| drawBladeAt | 58k_w_pistol_cine_n3.js:898 | ? | Blade |
| drawBottle | 58k_w_ice.js:1866 | INK | Bottle |
| drawBottle | 58k_w_smg_c.js:2306 | INK | Bottle |
| drawBow | 58k_w_tkglove_2.js:17 | INK | Bow |
| drawBow | 58k_w_tkglove_3.js:18 | INK | Bow |
| drawBowP | 58k_w_tkglove_4.js:823 | INK | Bow |
| drawCamoScythe | 58k_w_scythe_7.js:544 | GAME:scythe | Scythe |
| drawGrenade | 58k_w_flamer_s3.js:1102 | GAME:grenades (throwable) | Grenade |
| drawGrenade | 58k_w_spear_mid.js:207 | GAME:grenades (throwable) | Grenade |
| drawHammer | 58k_w_minigun_9.js:2554 | GAME:hammer | Hammer |
| drawHatchet | 58k_w_ice_cine_x5.js:196 | INK | Hatchet |
| drawKnifeBlock | 58k_w_minigun_4.js:2469 | GAME:knife | Knife |
| drawMachete | 58k_w_minigun_cine_n1.js:277 | INK | Machete |
| drawRifle | 58k_w_pump.js:7422 | GAME:ar | Rifle |
| drawScythe3 | 58k_w_scythe.js:122 | GAME:scythe | Scythe |
| drawSickle | 58k_w_ar_cine.js:177 | INK | Sickle |
| drawSpear | 58k_w_hammer.js:955 | GAME:spear | Spear |
| drawSword0 | 58k_w_scythe_s3_x4.js:234 | INK | Sword |
| drawTubeScythe | 58k_w_scythe_8.js:24 | GAME:scythe | Scythe |
| goldKnife | 58k_w_laser_cine_x1.js:393 | GAME:knife | Knife |
| goldPan | 58k_w_golden_2.js:209 | GAME:pan | Pan |
| grenade | 58k_arrive.js:1054 | GAME:grenades (throwable) | grenade |
| grenade | 58k_w_pump.js:5348 | GAME:grenades (throwable) | grenade |
| grenadeOutline | 58k_w_smg_cine_e.js:32 | GAME:grenades (throwable) | grenade |
| grenadePaint | 58k_w_smg_cine_e.js:33 | GAME:grenades (throwable) | grenade |
| gun | 58k_w_flamer_kit.js:98 | ? | gun |
| hammerProp | 58k_w_thammer_cine_x2.js:164 | GAME:hammer | hammer |
| katana | 58k_w_minigun_2.js:1387 | INK | katana |
| knife | 58k_arrive.js:974 | GAME:knife | knife |
| knife | 58k_w_revolver_cine_o.js:23 | GAME:knife | knife |
| knifeAt | 58k_w_minigun_5.js:306 | GAME:knife | knife |
| knifeAt | 58k_w_minigun_cine.js:336 | GAME:knife | knife |
| knifeOutline | 58k_w_smg_cine.js:533 | GAME:knife | knife |
| knifePaint | 58k_w_smg_cine.js:532 | GAME:knife | knife |
| kukriBlade | 58k_w_smg_cine.js:246 | ? | Blade |
| lockedPistol | 58k_w_rpg_mid.js:1007 | GAME:pistol | Pistol |
| machete | 58k_arrive.js:992 | INK | machete |
| machete | 58k_w_revolver_cine_o.js:486 | INK | machete |
| macheteArt | 58k_w_minigun_2.js:42 | INK | machete |
| paintKnife | 58k_anatomy.js:2115 | GAME:knife | Knife |
| pistolAt | 58k_w_minigun_7.js:773 | GAME:pistol | pistol |
| pistolAt | 58k_w_minigun_cine.js:66 | GAME:pistol | pistol |
| pistolAt0 | 58k_w_beam_mid_e2.js:23 | GAME:pistol | pistol |
| pistolShot | 58k_w_rpg_s3.js:961 | GAME:pistol | pistol |
| revolverDraw | 58k_w_revolver_cine_o.js:284 | GAME:revolver | revolver |
| scissors | 58k_arrive.js:999 | INK | scissor |
| scissors | 58k_w_golden_3.js:564 | INK | scissor |
| scissors | 58k_w_smg_b.js:1728 | INK | scissor |
| sickle | 58k_w_sawedoff.js:1859 | INK | sickle |
| slagRifle | 58k_w_thammer_mid.js:678 | GAME:ar | Rifle |
| smgBurst | 58k_w_rpg_s3.js:593 | GAME:smg | smg |
| spearDraw | 58k_w_hammer_cine.js:968 | GAME:spear | spear |
| spearDraw | 58k_w_laser_s3_x1.js:50 | GAME:spear | spear |
| staffDraw | 58k_w_hammer_cine.js:1600 | INK | staff |
| staffGhosts | 58k_w_smg_cine_c.js:226 | INK | staff |
| staffOne | 58k_w_smg_cine_c.js:222 | INK | staff |
| sword | 58k_w_sabre_mid.js:376 | INK | sword |
| swordDraw | 58k_w_hammer_cine.js:868 | INK | sword |
| syringe | 58k_arrive.js:1134 | INK | syringe |
| whip | 58k_w_beam.js:148 | INK | whip |
| whip | 58k_w_laser.js:147 | INK | whip |
| whip | 58k_w_pump.js:461 | INK | whip |
| whip | 58k_w_sawedoff.js:462 | INK | whip |
| whip | 58k_w_shrink.js:149 | INK | whip |
| whip | 58k_w_smg_c.js:437 | INK | whip |
| whip | 58k_w_smg_e.js:148 | INK | whip |

## Batch 1

| weapon | key | name | status | at | drawing | class |
|---|---|---|---|---|---|---|
| beam | beam.mid-tan-lines | SAME LINE | READY | 58k_w_beam_mid_e2.js:68 | inline: s.layer('top', (ctx, t) => { if (!RD.p0 \|\| t < 0.4 \|\| t >= 0.62) return; const d = (t - 0.4) * 170, p = [RD.p0 | GAME:pistol |
| beam | beam.portal | HOT SWAP | READY | 58k_w_beam_cine_e2.js:370 | calls axeAt (58k_w_beam_cine_e2.js:370) | INK |
| flamer | flamer.brazen-bull | PULLED | READY | 58k_w_flamer_s3.js:1140 | calls FL.gun (58k_w_flamer_kit.js:98) | GAME:flamer |
| flamer | flamer.brazen-bull | PULLED | READY | 58k_w_flamer_s3.js:1218 | calls drawGrenade (58k_w_flamer_s3.js:1102) | GAME:grenades (throwable) |
| flamer | flamer.flash-in-the-pan | PILOT LIGHT | READY | 58k_w_flamer_s3.js:227 | calls FL.gun (58k_w_flamer_kit.js:98) | GAME:flamer |
| ice | ice.wipe | BACK TURNED | READY | 58k_w_ice_cine_x5.js:538 | calls drawHatchet (58k_w_ice_cine_x5.js:196) | INK |
| laser | laser.metronome | SEVEN A SECOND | READY | 58k_w_laser_cine_x1.js:309 | inline: s.at(T.cell, () => { const p = gpA(0.12, -0.06); snd(s, s.t, 'shot.dry', { vol: 0.6 }); s.fx.add({ type: 'cust | GAME:ar |
| pan | pan.backhand | BACKHAND | READY | 58k_w_pan_b.js:157 | inline: ctx.fillStyle = INK; ctx.beginPath(); ctx.moveTo(-3.4, 5.6); ctx.quadraticCurveTo(3.4, 4.0, 10.2, 5.0); ctx.qu | GAME:pan |
| pistol | pistol.the-pendulum | NO MORE TRICKS | READY | 58k_w_pistol_cine_n3.js:898 | calls bladeShape (58k_w_pistol_cine_n3.js:890) | INK-CAST |
| pistol | pistol.the-pendulum | NO MORE TRICKS | READY | 58k_w_pistol_cine_n3.js:899 | calls bladeRim (58k_w_pistol_cine_n3.js:895) | ? |
| pistol | pistol.the-pendulum | NO MORE TRICKS | READY | 58k_w_pistol_cine_n3.js:904 | calls drawBladeAt (58k_w_pistol_cine_n3.js:898) | INK-CAST |
| revolver | revolver.bandana | TAILED | READY | 58k_w_revolver_cine_o.js:653 | inline: if (u < 319) { if (s.sparks) s.sparks(e, -Math.PI / 2, 8, '#E8D8B0', 0.8, 0.35); for (let i = 0; i < 6; i++) s | GAME:revolver |
| revolver | revolver.bandana | TAILED | READY | 58k_w_revolver_cine_o.js:666 | calls machete (58k_w_revolver_cine_o.js:486) | INK |
| revolver | revolver.drip | DRIP | READY | 58k_w_revolver_cine_o.js:182 | calls knife (58k_w_revolver_cine_o.js:23) | GAME:knife |
| revolver | revolver.drip | DRIP | READY | 58k_w_revolver_cine_o.js:268 | calls C2.whip (58k_w_beam.js:148) | INK |
| revolver | revolver.drip | DRIP | READY | 58k_w_revolver_cine_o.js:268 | calls C2.whip (58k_w_laser.js:147) | INK |
| revolver | revolver.drip | DRIP | READY | 58k_w_revolver_cine_o.js:268 | calls C2.whip (58k_w_pump.js:461) | INK |
| revolver | revolver.drip | DRIP | READY | 58k_w_revolver_cine_o.js:268 | calls C2.whip (58k_w_sawedoff.js:462) | INK |
| revolver | revolver.drip | DRIP | READY | 58k_w_revolver_cine_o.js:268 | calls C2.whip (58k_w_shrink.js:149) | INK |
| revolver | revolver.drip | DRIP | READY | 58k_w_revolver_cine_o.js:268 | calls C2.whip (58k_w_smg_c.js:437) | INK |
| revolver | revolver.drip | DRIP | READY | 58k_w_revolver_cine_o.js:268 | calls C2.whip (58k_w_smg_e.js:148) | INK |
| revolver | revolver.drip | DRIP | READY | 58k_w_revolver_cine_o.js:284 | calls revolverDraw (58k_w_revolver_cine_o.js:284) | GAME:revolver |
| rpg | rpg.in-the-works | UP AND OVER | READY | 58k_w_rpg_s3.js:721 | inline: s.at(4.5, () => { if (!V.alive) return; const h = V.at('hF'); if (s.sndNow) s.sndNow('gun.mag.out', { vol: 0.7 | GAME:rpg |
| rpg | rpg.in-the-works | UP AND OVER | READY | 58k_w_rpg_s3.js:722 | inline: s.layer('top', (ctx, t) => { if (t < 4.8 \|\| t >= 5.42 \|\| !V.alive \|\| V.look.hide) return; const b = V.at('hB') | GAME:rpg |
| rpg | rpg.in-the-works | UP AND OVER | READY | 58k_w_rpg_s3.js:727 | calls smgBurst (58k_w_rpg_s3.js:593) | GAME:smg |
| rpg | rpg.the-tail | ONE ARM | READY | 58k_w_rpg_s3.js:1057 | calls pistolShot (58k_w_rpg_s3.js:961) | GAME:pistol |
| smg | smg.house | OPEN HOUSE | READY | 58k_w_smg_cine_mg.js:408 | inline: const magShape = (ctx, x, y, a, kk) => { ctx.save(); ctx.translate(x, y); ctx.rotate(a); const L = 0.13 * GS,  | GAME:smg |
| smg | smg.house | OPEN HOUSE | READY | 58k_w_smg_cine_mg.js:529 | inline: if (g >= 2) { ctx.save(); ctx.lineCap = 'round'; ctx.fillStyle = V.color; ctx.strokeStyle = INK; ctx.lineWidth | GAME:revolver |
| smg | smg.house | OPEN HOUSE | READY | 58k_w_smg_cine_mg.js:530 | inline: if (g >= 2 && ST.cap) { const bx = P[0] - Math.cos(ang) * WL * 0.6, by = P[1] - Math.sin(ang) * WL * 0.6; ctx. | GAME:revolver |

## Batch 2

| weapon | key | name | status | at | drawing | class |
|---|---|---|---|---|---|---|
| beam | beam.skin-cartoon | BACKSWING | READY | 58k_w_beam_cine_e2.js:530 | calls axeAt (58k_w_beam_cine_e2.js:370) | INK |
| beam | beam.skin-cartoon | BACKSWING | READY | 58k_w_beam_cine_e2.js:540 | inline: s.layer('top', (ctx, t) => { if (S.notchT == null \|\| t < S.notchT \|\| A.look.hide) return; const h = A.at('hF') | ? |
| beam | beam.skin-neon | THE SIGN YARD | READY | 58k_w_beam_cine.js:754 | inline: ctx.save(); ctx.translate(p1[0], p1[1]); ctx.rotate(a); ctx.fillStyle = '#2A2830'; ctx.strokeStyle = '#121016' | GAME:pistol |
| fists | fists.spineless |  | READY | 58k_w_fists.js:3907 | inline: ctx.fillStyle = '#3A2414'; ctx.fillRect(BX - 50, 470, 110, 5); ctx.strokeStyle = '#1D1B24'; ctx.lineWidth = 1. | INK |
| flamer | flamer.molten-rain | SPARE | READY | 58k_w_flamer_s3.js:690 | calls FL.gun (58k_w_flamer_kit.js:98) | GAME:flamer |
| flamer | flamer.poached | SAFETY ON | READY | 58k_w_flamer_s3.js:930 | calls FL.gun (58k_w_flamer_kit.js:98) | GAME:flamer |
| golden | golden.never-runs-dry | LIGHTHOUSE | READY | 58k_w_golden_cine_n4.js:904 | inline: if (tt >= 1.0 && tt <= 8.8) { const m = A.muzzle(), a = A.worldAng(), L = 430, sp = 0.05; ctx.save(); ctx.glob | GAME:golden |
| golden | golden.skin-camo | ACTIVE CAMO | READY | 58k_w_golden_cine_n4.js:1633 | inline: s.at(4.6, () => { for (let i = 0; i < 10; i++) { const segs = A.segs ? A.segs() : []; const sg = segs[i % Math | GAME:golden |
| golden | golden.the-mimic | THE MIMIC | READY | 58k_w_golden_cine_n4.js:1099 | inline: draw: (ctx) => { const z = 1.7; ctx.save(); ctx.scale(z, z); ctx.lineJoin = 'round'; ctx.fillStyle = INK; ctx. | GAME:golden |
| hammer | hammer.hanger-on | THE NAIL | READY | 58k_w_hammer_cine.js:982 | calls spearDraw (58k_w_hammer_cine.js:968) | GAME:spear |
| ice | ice.brinicle | BRINICLE | READY | 58k_w_ice_deep.js:158 | inline: if (!st.sealed \|\| t < T_SAND) { ctx.fillStyle = 'rgba(240,250,255,.95)'; for (let i = 0; i < 7; i++) { const x | INK |
| minigun | minigun.red-hot | RED HOT | READY | 58k_w_minigun_9.js:214 | inline: s.layer('bg', (ctx, t) => { for (const c of S.empties) { if (t < c.t0) continue; const P = tumble(c.p, c.v, c. | GAME:minigun |
| pistol | pistol.going-down | BOOKENDS | READY | 58k_w_pistol_cine_n3.js:516 | calls bladeDraw (58k_w_pistol_cine_n3.js:507) | ? |
| pistol | pistol.going-down | BOOKENDS | READY | 58k_w_pistol_cine_n3.js:516 | calls bladeDraw (58k_w_pistol_cine_n3.js:901) | ? |
| pistol | pistol.mid-black-round | UNDERNEATH | READY | 58k_w_pistol_cine_i.js:177 | inline: if (o.blood) { const s3 = (o.size \|\| 1) * k / 0.52; ctx.save(); ctx.translate(p[0], p[1]); ctx.rotate(a); ctx. | GAME:knife |
| pistol | pistol.mid-live-wire | SLIDE LOCK | READY | 58k_w_pistol_cine_i.js:473 | inline: const armNear = (ctx) => { const sh = A.at('sh'), e = A.at('eB'), h = A.at('hB'), W = 9.6 * A.k, O = 3.1 * A.k | GAME:pistol |
| revolver | revolver.optogram | THE LATCH | READY | 58k_w_revolver_cine_o.js:408 | calls revolverDraw (58k_w_revolver_cine_o.js:284) | GAME:revolver |
| revolver | revolver.optogram | THE LATCH | READY | 58k_w_revolver_cine_o.js:423 | calls knife (58k_w_revolver_cine_o.js:23) | GAME:knife |
| revolver | revolver.optogram | THE LATCH | READY | 58k_w_revolver_cine_o.js:486 | calls machete (58k_w_revolver_cine_o.js:486) | INK |
| revolver | revolver.skin-camo | LOW CRAWL | READY | 58k_w_revolver_cine_o.js:1027 | calls knife (58k_w_revolver_cine_o.js:23) | GAME:knife |
| revolver | revolver.skin-neon | STROBE | READY | 58k_w_revolver_cine_o.js:1132 | calls machete (58k_w_revolver_cine_o.js:486) | INK |
| rpg | rpg.dead-mans-trigger | DEAD MAN'S TRIGGER | READY | 58k_w_rpg_4.js:1123 | inline: s.layer('mid', (ctx, t) => { const q = st.cap; if (!q \|\| !K.drawHatAt) return; const u = EASE.o(clamp((t - tCl | GAME:smg |
| rpg | rpg.dead-mans-trigger | DEAD MAN'S TRIGGER | READY | 58k_w_rpg_4.js:1135 | inline: s.layer('mid', (ctx, t) => { if (t < 0.01) return; const sh = V.at('sh'); ctx.save(); ctx.fillStyle = g >= 4 ? | GAME:pump |
| scythe | scythe.carousel | THE CAROUSEL | READY | 58k_w_scythe.js:420 | calls drawScythe3 (58k_w_scythe.js:122) | GAME:scythe |
| smg | smg.blind-fire | BLIND FIRE | READY | 58k_w_smg_cine_b.js:288 | calls C2.whip (58k_w_beam.js:148) | INK |
| smg | smg.blind-fire | BLIND FIRE | READY | 58k_w_smg_cine_b.js:288 | calls C2.whip (58k_w_laser.js:147) | INK |
| smg | smg.blind-fire | BLIND FIRE | READY | 58k_w_smg_cine_b.js:288 | calls C2.whip (58k_w_pump.js:461) | INK |
| smg | smg.blind-fire | BLIND FIRE | READY | 58k_w_smg_cine_b.js:288 | calls C2.whip (58k_w_sawedoff.js:462) | INK |
| smg | smg.blind-fire | BLIND FIRE | READY | 58k_w_smg_cine_b.js:288 | calls C2.whip (58k_w_shrink.js:149) | INK |
| smg | smg.blind-fire | BLIND FIRE | READY | 58k_w_smg_cine_b.js:288 | calls C2.whip (58k_w_smg_c.js:437) | INK |
| smg | smg.blind-fire | BLIND FIRE | READY | 58k_w_smg_cine_b.js:288 | calls C2.whip (58k_w_smg_e.js:148) | INK |

## Batch 3

| weapon | key | name | status | at | drawing | class |
|---|---|---|---|---|---|---|
| flamer | flamer.skin-classic | FIGHT FIRE WITH FIRE | READY | 58k_w_flamer_s3.js:459 | calls FL.gun (58k_w_flamer_kit.js:98) | GAME:flamer |
| hammer | hammer.mole-hill | LOW BLOW | READY | 58k_w_hammer_cine.js:1275 | inline: s.layer('top', (ctx, t, oo) => { if (oo && oo.xray) return; if (S.mag) { const q = tumble(S.mag.p, [10, -40],  | ? |
| hammer | hammer.tent-peg | IRON AND GOLD | READY | 58k_w_hammer_cine.js:1611 | calls staffDraw (58k_w_hammer_cine.js:1600) | INK |
| minigun | minigun.skin-camo | SPOKES | READY | 58k_w_minigun_9.js:1656 | inline: const blade = (ctx, a, b, red) => { ctx.save(); ctx.lineCap = 'round'; ctx.strokeStyle = INK; ctx.lineWidth =  | GAME:ar |
| minigun | minigun.skin-camo | SPOKES | READY | 58k_w_minigun_9.js:1659 | calls blade (58k_w_minigun_9.js:1656) | ? |
| pump | pump.banana-peel | BANANA PEEL | FIXABLE | 58k_w_pump.js:7452 | calls drawRifle (58k_w_pump.js:7422) | GAME:ar |
| pump | pump.skid | SKID | READY | 58k_w_pump.js:8223 | inline: if (u > 0.05 && u < 0.98 && Math.floor(s.t * 20) % 2 === 0) { ctx.fillStyle = 'rgba(255,233,168,.6)'; ctx.fill | GAME:pistol |
| revolver | revolver.chambers | CHAMBERS | READY | 58k_w_revolver_2.js:967 | inline: ring(ctx, cx1, cy, R, k, 'THE GUN · 3'); ctx.save(); ctx.beginPath(); ctx.arc(cx1, cy, R, 0, TAU); ctx.clip(); | GAME:revolver |
| rpg | rpg.glow | GLOW | READY | 58k_w_rpg_deep.js:755 | inline: s.at(tHit, () => { s.shake(s.t, 12); s.punch(s.t, 0.1); for (let i = 0; i < 10; i++) { const an = -Math.PI * s | GAME:rpg |
| sawedoff | sawedoff.hot-hulls | HOT HULLS | READY | 58k_w_sawedoff.js:6048 | inline: KC.on(s, 'top', (ctx, t) => { if (HH.knife == null \|\| t < HH.knife \|\| (HH.shot != null && t > HH.shot) \|\| V.lo | GAME:knife |
| sawedoff | sawedoff.hot-hulls | HOT HULLS | READY | 58k_w_sawedoff.js:6085 | inline: const kh = V.at('hB'); s.fx.add({ type: 'custom', x: kh[0], y: kh[1], vx: 140, vy: -260, g: 1200, life: 30, si | GAME:knife |
| sawedoff | sawedoff.hot-hulls | HOT HULLS | READY | 58k_w_sawedoff.js:6110 | calls KC.whip (58k_w_beam.js:148) | INK |
| sawedoff | sawedoff.hot-hulls | HOT HULLS | READY | 58k_w_sawedoff.js:6110 | calls KC.whip (58k_w_laser.js:147) | INK |
| sawedoff | sawedoff.hot-hulls | HOT HULLS | READY | 58k_w_sawedoff.js:6110 | calls KC.whip (58k_w_pump.js:461) | INK |
| sawedoff | sawedoff.hot-hulls | HOT HULLS | READY | 58k_w_sawedoff.js:6110 | calls KC.whip (58k_w_sawedoff.js:462) | INK |
| sawedoff | sawedoff.hot-hulls | HOT HULLS | READY | 58k_w_sawedoff.js:6110 | calls KC.whip (58k_w_shrink.js:149) | INK |
| sawedoff | sawedoff.hot-hulls | HOT HULLS | READY | 58k_w_sawedoff.js:6110 | calls KC.whip (58k_w_smg_c.js:437) | INK |
| sawedoff | sawedoff.hot-hulls | HOT HULLS | READY | 58k_w_sawedoff.js:6110 | calls KC.whip (58k_w_smg_e.js:148) | INK |
| smg | smg.brick | BRICK BY BRICK | READY | 58k_w_smg_c.js:2333 | calls drawBottle (58k_w_smg_c.js:2306) | INK |
| smg | smg.dogpile | DOGPILE | READY | 58k_w_smg_cine_f.js:360 | calls C2.whip (58k_w_beam.js:148) | INK |
| smg | smg.dogpile | DOGPILE | READY | 58k_w_smg_cine_f.js:360 | calls C2.whip (58k_w_laser.js:147) | INK |
| smg | smg.dogpile | DOGPILE | READY | 58k_w_smg_cine_f.js:360 | calls C2.whip (58k_w_pump.js:461) | INK |
| smg | smg.dogpile | DOGPILE | READY | 58k_w_smg_cine_f.js:360 | calls C2.whip (58k_w_sawedoff.js:462) | INK |
| smg | smg.dogpile | DOGPILE | READY | 58k_w_smg_cine_f.js:360 | calls C2.whip (58k_w_shrink.js:149) | INK |
| smg | smg.dogpile | DOGPILE | READY | 58k_w_smg_cine_f.js:360 | calls C2.whip (58k_w_smg_c.js:437) | INK |
| smg | smg.dogpile | DOGPILE | READY | 58k_w_smg_cine_f.js:360 | calls C2.whip (58k_w_smg_e.js:148) | INK |
| speedsabre | speedsabre.mid-chink | CHINK IN THE ARMOUR | READY | 58k_w_sabre_mid.js:427 | calls sword (58k_w_sabre_mid.js:376) | INK |
| tkglove | tkglove.knot | KNOT | READY | 58k_w_tkglove_2.js:762 | calls drawBow (58k_w_tkglove_2.js:17) | INK |
| tpdagger | tpdagger.mid-crossed-blades | CROSSED BLADES | READY | 58k_w_tpdagger_mid.js:196 | inline: s.layer('top', (ctx, t) => { if (C.stuck < 0 \|\| t < C.stuck \|\| !C.kp) return; const e = t - C.stuck, q = Math. | GAME:knife |

## Batch 4

| weapon | key | name | status | at | drawing | class |
|---|---|---|---|---|---|---|
| fists | fists.kidney-stones | KIDNEY STONES | FIXABLE | 58k_w_fists_2.js:1432 | inline: if (g >= 3) s.layer('top', (ctx, t) => { const PTN = [kR, kL, belly, blade]; ctx.save(); ctx.lineCap = 'round' | INK |
| flamer | flamer.air-pocket | AIR POCKET | READY | 58k_w_flamer_1.js:1990 | calls FL.gun (58k_w_flamer_kit.js:98) | GAME:flamer |
| flamer | flamer.air-pocket | AIR POCKET | READY | 58k_w_flamer_1.js:2203 | inline: ctx.beginPath(); ctx.moveTo(-L, -H * 0.6); ctx.quadraticCurveTo(-L * 0.7, H * 0.9, 0, H * 0.75); ctx.quadratic | INK |
| flamer | flamer.backdraft | BACKDRAFT | READY | 58k_w_flamer_1.js:4303 | calls FL.gun (58k_w_flamer_kit.js:98) | GAME:flamer |
| handcannon | handcannon.mid-brake | BRAKE | READY | 58k_w_handcannon_mid.js:91 | inline: KC.slug(s, TL, () => A.muzzle(), chest, { onHit: (pt, ang) => { if (HEADSHOT) K58.STYLE.headPop(s, V, null, {  | GAME:handcannon |
| handcannon | handcannon.mid-vanity | VANITY | READY | 58k_w_handcannon_mid.js:592 | inline: if (GL >= 2) { st.mirror = 0; const m = mirrorAt(); for (let i = 0; i < 12; i++) s.fx.add({ type: 'custom', x: | GAME:handcannon |
| minigun | minigun.together | TOGETHER | READY | 58k_w_minigun_4.js:1249 | inline: if (TS.spray > 0 && g >= 4) { ctx.fillStyle = 'rgba(120,6,18,.9)'; const cx0 = side === 'L' ? xb : xa, dir = s | INK |
| minigun | minigun.together | TOGETHER | READY | 58k_w_minigun_4.js:1319 | inline: const sxm = cx; ctx.strokeStyle = '#F2C64A'; ctx.lineWidth = 1.6; ctx.setLineDash([5, 4]); ctx.beginPath(); ct | INK |
| pump | pump.clean-spot | CLEAN SPOT | FIXABLE | 58k_w_pump.js:2695 | inline: else if (it === 'boot') { ctx.rotate(p.rot); ctx.fillStyle = '#3A2A1E'; ctx.beginPath(); ctx.moveTo(-2, -6); c | GAME:pistol |
| revolver | revolver.high-noon | HIGH NOON | READY | 58k_w_revolver_1.js:137 | inline: if (STRIP.spur) { const u = t - STRIP.spur.t0, x = STRIP.spur.p[0] - V.fc * 50 * Math.min(u, 0.5), y = Math.mi | GAME:revolver |
| rpg | rpg.hailstone | HAILSTONE | READY | 58k_w_rpg_5.js:343 | inline: s.at(tLand + 0.02, () => { for (let i = 0; i < 16; i++) s.fx.add({ type: 'custom', x: BX + s.rng.r(-R, R), y:  | GAME:knife |
| scythe | scythe.mid-the-draw | THE DRAW | READY | 58k_w_scythe_mid.js:683 | inline: if (g >= 2) s.layer('top', (ctx, t) => { if (t < T.out) return; const x = hx(); ctx.save(); ctx.globalComposit | GAME:scythe |
| spear | spear.mid-pointer | POINTER | READY | 58k_w_spear_mid.js:486 | inline: ctx.save(); ctx.translate(X(0.5), Y(0.8)); ctx.rotate(0.35); ctx.fillStyle = INK; ctx.fillRect(-S * 0.1, -S *  | GAME:burst |
| thammer | thammer.mid-slag | SLAG | READY | 58k_w_thammer_mid.js:816 | calls slagRifle (58k_w_thammer_mid.js:678) | GAME:ar |

## Batch 5

| weapon | key | name | status | at | drawing | class |
|---|---|---|---|---|---|---|
| ar | ar.skin-gold | IDOL | READY | 58k_w_ar.js:1456 | inline: else { ctx.fillStyle = '#D9DEE6'; ctx.beginPath(); ctx.moveTo(-8, -1); ctx.lineTo(9, 0); ctx.lineTo(-8, 1.6);  | GAME:knife |
| ar | ar.skin-gold | IDOL | READY | 58k_w_ar.js:4008 | inline: for (let g2 = 2; g2 >= 1; g2--) { const Eg = whipEnd(t - g2 * 0.025); ctx.globalAlpha = 0.18 * (3 - g2); ctx.b | INK |
| ar | ar.skin-gold | IDOL | READY | 58k_w_ar.js:4196 | inline: const FLARE = (ctx, Hh, t) => { ctx.save(); ctx.fillStyle = '#E8642A'; ctx.strokeStyle = INK; ctx.lineWidth =  | GAME:pistol |
| ar | ar.skin-gold | IDOL | READY | 58k_w_ar.js:4982 | inline: const arrow = (ctx, at, t, a, sz = 1) => { if (a <= 0) return; const bob = Math.sin(t * 9) * 2.2, x = at[0], y | INK |
| ar | ar.skin-gold | IDOL | READY | 58k_w_ar.js:4983 | calls arrow (58k_w_ar.js:4982) | INK |
| ar | ar.skin-gold | IDOL | READY | 58k_w_ar.js:5524 | inline: RIF.mid(s, (ctx, t) => { if (t < 1.85 \|\| t > 2.95 \|\| peel > 0) return; const x0 = TX - TW / 2; ctx.save(); ctx | GAME:ar |
| ar | ar.skin-gold | IDOL | READY | 58k_w_ar.js:5788 | inline: const word = (glow) => { ctx.font = '400 30px "Lilita One", sans-serif'; ctx.textAlign = 'center'; ctx.textBas | INK |
| ar | ar.skin-gold | IDOL | READY | 58k_w_ar.js:5848 | inline: RIF.scr(s, (ctx, W, Hh, t) => { if (t < 0.3 \|\| !s.view \|\| t > EXT) return; const p = s.view.toScreen(SX, SY),  | INK |
| beam | beam.skin-classic | SIESTA | READY | 58k_w_beam_cine.js:290 | calls C2.whip (58k_w_beam.js:148) | INK |
| beam | beam.skin-classic | SIESTA | READY | 58k_w_beam_cine.js:290 | calls C2.whip (58k_w_laser.js:147) | INK |
| beam | beam.skin-classic | SIESTA | READY | 58k_w_beam_cine.js:290 | calls C2.whip (58k_w_pump.js:461) | INK |
| beam | beam.skin-classic | SIESTA | READY | 58k_w_beam_cine.js:290 | calls C2.whip (58k_w_sawedoff.js:462) | INK |
| beam | beam.skin-classic | SIESTA | READY | 58k_w_beam_cine.js:290 | calls C2.whip (58k_w_shrink.js:149) | INK |
| beam | beam.skin-classic | SIESTA | READY | 58k_w_beam_cine.js:290 | calls C2.whip (58k_w_smg_c.js:437) | INK |
| beam | beam.skin-classic | SIESTA | READY | 58k_w_beam_cine.js:290 | calls C2.whip (58k_w_smg_e.js:148) | INK |
| flamer | flamer.burning-bridges | BURNING BRIDGES | READY | 58k_w_flamer_1.js:5768 | calls FL.gun (58k_w_flamer_kit.js:98) | GAME:flamer |
| flamer | flamer.cook-off | COOK-OFF | READY | 58k_w_flamer_1.js:3568 | calls FL.gun (58k_w_flamer_kit.js:98) | GAME:flamer |
| flamer | flamer.cook-off | COOK-OFF | READY | 58k_w_flamer_1.js:3626 | inline: for (let k = 0; k < (fizz ? 1 : 4); k++) s.fx.add({ type: 'custom', x, y, vx: Math.cos(dir + k) * (80 + 60 * H | GAME:flamer |
| handcannon | handcannon.on-the-house | ON THE HOUSE | READY | 58k_w_handcannon_1.js:1630 | inline: const b = [n[0], n[1] + 2.4]; ctx.beginPath(); ctx.moveTo(b[0], b[1]); ctx.lineTo(b[0] - 2.4, b[1] - 1.3); ctx | INK |
| ice | ice.hail-mary |  | READY | 58k_w_ice_v8.js:558 | inline: s.layer('top', (ctx, t) => { for (const u of st.up) { const e = t - u.t0; if (e < 0) continue; const y = u.y - | GAME:ice |
| minigun | minigun.skin-gold | THE CHOIR | READY | 58k_w_minigun_3.js:1503 | inline: s.layer('bg', (ctx, t) => { if (!MS.in \|\| MS.out) return; ctx.save(); ctx.strokeStyle = 'rgba(200,196,186,' +  | GAME:knife |
| pump | pump.grand-slam | GRAND SLAM | FIXABLE | 58k_w_pump.js:5397 | calls grenade (58k_w_pump.js:5348) | GAME:grenades (throwable) |
| pump | pump.grand-slam | GRAND SLAM | FIXABLE | 58k_w_pump.js:5461 | inline: const ex = R * 0.3, ey = -R * 0.14; ctx.beginPath(); ctx.ellipse(ex, ey, R * 0.24, R * 0.2, 0, 0, TAU); ctx.fi | GAME:grenades (throwable) |
| pump | pump.lantern | LANTERN | FIXABLE | 58k_w_pump.js:4691 | inline: if (WET) { ctx.strokeStyle = `rgba(255,190,120,${0.5 * clamp(tot / 10, 0, 1)})`; ctx.lineWidth = 0.7; | GAME:pump |
| rpg | rpg.mid-shot-down | SHOT DOWN | READY | 58k_w_rpg_mid.js:1090 | calls lockedPistol (58k_w_rpg_mid.js:1007) | GAME:pistol |
| sawedoff | sawedoff.occupied | OCCUPIED | READY | 58k_w_sawedoff.js:1859 | inline: const sickle = (ctx, hj, ej, alpha) => { const h = V.at(hj), e = V.at(ej), a = Math.atan2(h[1] - e[1], h[0] -  | INK |
| sawedoff | sawedoff.occupied | OCCUPIED | READY | 58k_w_sawedoff.js:1860 | calls sickle (58k_w_sawedoff.js:1859) | INK |
| sawedoff | sawedoff.occupied | OCCUPIED | READY | 58k_w_sawedoff.js:1881 | calls C.whip (58k_w_beam.js:148) | INK |
| sawedoff | sawedoff.occupied | OCCUPIED | READY | 58k_w_sawedoff.js:1881 | calls C.whip (58k_w_laser.js:147) | INK |
| sawedoff | sawedoff.occupied | OCCUPIED | READY | 58k_w_sawedoff.js:1881 | calls C.whip (58k_w_pump.js:461) | INK |
| sawedoff | sawedoff.occupied | OCCUPIED | READY | 58k_w_sawedoff.js:1881 | calls C.whip (58k_w_sawedoff.js:462) | INK |
| sawedoff | sawedoff.occupied | OCCUPIED | READY | 58k_w_sawedoff.js:1881 | calls C.whip (58k_w_shrink.js:149) | INK |
| sawedoff | sawedoff.occupied | OCCUPIED | READY | 58k_w_sawedoff.js:1881 | calls C.whip (58k_w_smg_c.js:437) | INK |
| sawedoff | sawedoff.occupied | OCCUPIED | READY | 58k_w_sawedoff.js:1881 | calls C.whip (58k_w_smg_e.js:148) | INK |
| scythe | scythe.pruned |  | READY | 58k_w_scythe_mid.js:378 | inline: const snip = (t, jn) => s.at(t, () => { for (const n of jn) { const p = V.at(n); for (let i = 0; i < 2; i++) s | GAME:scythe |
| scythe | scythe.reaped | REAPED, remake | READY | 58k_w_scythe_4.js:1159 | inline: if (g === 3) s.layer('mid', (ctx, t) => { if (t < tCrack + 0.3) return; const a = wpt(A, 0.77, 0.15), b = wpt( | GAME:scythe |
| smg | smg.shelf | SHELF LIFE | READY | 58k_w_smg_c.js:2410 | inline: if (GL >= 3 && !STY) KC.on(s, 'top', (ctx, t) => { if (t < 1.05 \|\| !V.P \|\| V.look.hide) return; const m = V.at | INK |
| smg | smg.shelf | SHELF LIFE | READY | 58k_w_smg_c.js:2501 | inline: if (GL >= 5 && !STY) KC.on(s, 'top', (ctx, t) => { if (!V.__dent \|\| !V.P) return; const h = V.at('head'), n =  | INK |
| smg | smg.shelf | SHELF LIFE | READY | 58k_w_smg_c.js:2503 | inline: if (GL === 0) KC.on(s, 'top', (ctx, t) => { if (LUMP.lab == null \|\| !V.P) return; const h = V.at('head'); ctx. | INK |
| smg | smg.stalemate | STALEMATE | READY | 58k_w_smg_cine_e.js:228 | calls grenadePaint (58k_w_smg_cine_e.js:33) | GAME:grenades (throwable) |
| spear | spear.mid-yours-i-think | YOURS, I THINK | READY | 58k_w_spear_mid.js:285 | calls drawGrenade (58k_w_spear_mid.js:207) | GAME:grenades (throwable) |
| spear | spear.mid-yours-i-think | YOURS, I THINK | READY | 58k_w_spear_mid.js:289 | inline: if (ST.boom != null && tt >= ST.boom) { const p = A.blade(1), e = tt - ST.boom; for (let i = 0; i < 4; i++) {  | GAME:spear |

## Batch 6

| weapon | key | name | status | at | drawing | class |
|---|---|---|---|---|---|---|
| flamer | flamer.grassfire | GRASSFIRE · THE KNEE LINE | READY | 58k_w_flamer_1.js:6451 | calls FL.gun (58k_w_flamer_kit.js:98) | GAME:flamer |
| flamer | flamer.napalm | NAPALM | READY | 58k_w_flamer_1.js:6715 | calls FL.gun (58k_w_flamer_kit.js:98) | GAME:flamer |
| golden | golden.mid-the-gold-watch | THE GOLD WATCH | READY | 58k_w_golden_mid.js:616 | inline: else if (GL === 1) { st.watch = 0; for (let i = 0; i < 8; i++) s.fx.add({ type: 'custom', x: wrist()[0], y: wr | GAME:pistol |
| handcannon | handcannon.skin-neon | THE LIST | READY | 58k_w_handcannon_skins.js:981 | calls clubFront (58k_w_handcannon_skins.js:918) | INK |
| handcannon | handcannon.skin-neon | THE LIST | READY | 58k_w_handcannon_skins.js:987 | inline: s.layer('top', (ctx) => { if (V.look.hide) return; ctx.save(); const n = V.at('neck'), h = V.at('hip'); ctx.li | GAME:bouncer |
| pistol | pistol.firing-squad | FIRING SQUAD OF ONE | READY | 58k_w_pistol_2.js:848 | inline: if (soft) { s.at(t, () => { const g = st.ghosts[i]; const mz = g ? g.mz : A.muzzle(); s.flashAt(mz, Math.PI, { | GAME:pistol |
| scythe | scythe.skin-camo | IN PLAIN SIGHT | READY | 58k_w_scythe_7.js:653 | calls drawCamoScythe (58k_w_scythe_7.js:544) | GAME:scythe |
| scythe | scythe.skin-camo | IN PLAIN SIGHT | READY | 58k_w_scythe_7.js:746 | inline: s.layer('mid', (ctx, t) => { if (t < tHaul + 0.15) return; const n = V.at('neck'); ctx.save(); ctx.strokeStyle | GAME:scythe |
| scythe | scythe.skin-camo | IN PLAIN SIGHT | READY | 58k_w_scythe_7.js:760 | inline: if (g >= 3) s.layer('top', (ctx, t) => { if (t < handed \|\| !A.showWeapon) return; ctx.save(); const outs = BL. | GAME:scythe |
| scythe | scythe.skin-gold | SHORN | READY | 58k_w_scythe_8.js:374 | inline: ctx.beginPath(); inn.forEach((p, i) => ctx[i ? 'lineTo' : 'moveTo'](p[0], p[1])); ctx.lineWidth = 1.3; ctx.str | INK |
| smg | smg.the-autograph | THREE MAGS | READY | 58k_w_smg_cine.js:421 | inline: const magOutline = (ctx) => { const L = 6.2 * A.k * 1.9, Wd = 2.2 * A.k * 1.9; ctx.beginPath(); ctx.moveTo(-Wd | GAME:smg |
| smg | smg.the-autograph | THREE MAGS | READY | 58k_w_smg_cine.js:532 | calls knifeOutline (58k_w_smg_cine.js:533) | GAME:knife |
| smg | smg.the-autograph | THREE MAGS | READY | 58k_w_smg_cine.js:547 | calls knifePaint (58k_w_smg_cine.js:532) | GAME:knife |
| smg | smg.the-staff | THE STAFF | READY | 58k_w_smg_cine_c.js:221 | inline: const shaft = (ctx, a, b, w) => { ctx.save(); ctx.lineCap = 'round'; ctx.strokeStyle = INK; ctx.lineWidth = w  | INK |
| smg | smg.the-staff | THE STAFF | READY | 58k_w_smg_cine_c.js:224 | inline: for (const u of [-0.42, 0.42]) { const p = [q.c[0] + q.d[0] * q.L * u, q.c[1] + q.d[1] * q.L * u]; ctx.save(); | INK |
| smg | smg.the-staff | THE STAFF | READY | 58k_w_smg_cine_c.js:237 | calls staffGhosts (58k_w_smg_cine_c.js:226) | INK |
| smg | smg.the-staff | THE STAFF | READY | 58k_w_smg_cine_c.js:237 | calls staffOne (58k_w_smg_cine_c.js:222) | INK |
| smg | smg.the-staff | THE STAFF | READY | 58k_w_smg_cine_c.js:317 | calls C2.whip (58k_w_beam.js:148) | INK |
| smg | smg.the-staff | THE STAFF | READY | 58k_w_smg_cine_c.js:317 | calls C2.whip (58k_w_laser.js:147) | INK |
| smg | smg.the-staff | THE STAFF | READY | 58k_w_smg_cine_c.js:317 | calls C2.whip (58k_w_pump.js:461) | INK |
| smg | smg.the-staff | THE STAFF | READY | 58k_w_smg_cine_c.js:317 | calls C2.whip (58k_w_sawedoff.js:462) | INK |
| smg | smg.the-staff | THE STAFF | READY | 58k_w_smg_cine_c.js:317 | calls C2.whip (58k_w_shrink.js:149) | INK |
| smg | smg.the-staff | THE STAFF | READY | 58k_w_smg_cine_c.js:317 | calls C2.whip (58k_w_smg_c.js:437) | INK |
| smg | smg.the-staff | THE STAFF | READY | 58k_w_smg_cine_c.js:317 | calls C2.whip (58k_w_smg_e.js:148) | INK |
| tkglove | tkglove.sphere | THE SPHERE | READY | 58k_w_tkglove_3.js:594 | calls drawBow (58k_w_tkglove_3.js:18) | INK |

## Batch 7

| weapon | key | name | status | at | drawing | class |
|---|---|---|---|---|---|---|
| flamer | flamer.rollover | ROLLOVER | READY | 58k_w_flamer_1.js:1777 | calls FL.gun (58k_w_flamer_kit.js:98) | GAME:flamer |
| flamer | flamer.rollover | ROLLOVER | READY | 58k_w_flamer_1.js:1820 | inline: ctx.save(); ctx.translate(stX, stY); const w = 74, h = 30; ctx.fillStyle = '#1A1A1E'; ctx.fillRect(-w / 2 - 2, | INK |
| flamer | flamer.stepping-stone | STEPPING STONE | READY | 58k_w_flamer_1.js:3336 | calls FL.gun (58k_w_flamer_kit.js:98) | GAME:flamer |
| hammer | hammer.floorboards |  | READY | 58k_w_hammer.js:969 | calls drawSpear (58k_w_hammer.js:955) | GAME:spear |
| handcannon | handcannon.skin-taped | STRAPPED | READY | 58k_w_handcannon_skins.js:309 | inline: s.fx.add({ type: 'custom', x: pt[0], y: pt[1], life: 0.16, size: 1, fade: 0.1, draw: (c, p, sz, u) => { c.begi | GAME:handcannon |
| handcannon | handcannon.slasher | SLASHER | READY | 58k_w_handcannon_2.js:1107 | hand prop 'machete' (58k_arrive.js HANDPROPS) | INK-CAST |
| handcannon | handcannon.slasher | SLASHER | READY | 58k_w_handcannon_2.js:1171 | hand prop 'machete' (58k_arrive.js HANDPROPS) | INK-CAST |
| minigun | minigun.skin-taped | CRACKED | READY | 58k_w_minigun_5.js:301 | inline: for (const n of ['s-eF', 'eF-hF']) { const sg = V.segs().find((q) => q.n === n); if (!sg) continue; ctx.save() | GAME:knife |
| minigun | minigun.skin-taped | CRACKED | READY | 58k_w_minigun_5.js:306 | inline: const knifeAt = (hx, hy, ang) => { if (K58.drawHandProp) { K58.drawHandProp(ctx, 'knife', hx, hy, ang, 1.25 *  | GAME:knife |
| minigun | minigun.skin-taped | CRACKED | READY | 58k_w_minigun_5.js:307 | calls knifeAt (58k_w_minigun_5.js:306) | GAME:knife |
| pistol | pistol.split-decision | SPLIT DECISION | FIXABLE | 58k_w_pistol_1.js:498 | inline: const kdraw = (ctx, p) => { if (K58.drawHandProp) K58.drawHandProp(ctx, 'knife', 0, 0, 0, 1.25, s.t); else { c | GAME:knife |
| pistol | pistol.split-decision | SPLIT DECISION | FIXABLE | 58k_w_pistol_1.js:548 | inline: const yb = by - hb.y; ctx.beginPath(); ctx.moveTo(-4.6, yb - 0.75); ctx.lineTo(4.4, yb - 0.75); ctx.lineTo(4.4 | GAME:knife |
| scythe | scythe.skin-neon | TUBE | READY | 58k_w_scythe_8.js:178 | calls drawTubeScythe (58k_w_scythe_8.js:24) | GAME:scythe |
| smg | smg.wall-run |  | READY | 58k_w_smg_d.js:2019 | inline: ctx.fillStyle = '#2E1A0E'; ctx.beginPath(); ctx.moveTo(744, F); ctx.quadraticCurveTo(776, F - 30, 814, F); ctx | INK |
| spear | spear.skin-cartoon | THE RAKE | READY | 58k_w_spear_skins.js:737 | inline: for (const q of ST.teeth) { if (tt < q.t0 + q.T) continue; drawTooth(ctx, q.p1, q.rot \|\| 0, 1.1); ctx.fillStyl | GAME:spear |
| thammer | thammer.wrong-hands |  | READY | 58k_w_thammer_mid.js:208 | inline: if (MG.drop < 0 \|\| t < MG.drop) { const m = handMid(), k = sm(MG.t0, MG.t0 + 0.2, t), pr = 26 + 10 * Math.sin( | GAME:hammer |
| tkglove | tkglove.whiplash |  | READY | 58k_w_tkglove_mid.js:754 | inline: s.every(tYank + 0.05, tStop, 0.03, () => { const c = V.center(); s.fx.add({ type: 'custom', layer: 'back', x:  | GAME:tkglove |
| tpdagger | tpdagger.skin-classic | ET TU | READY | 58k_w_tpdagger.js:4196 | hand prop 'bottle' (58k_arrive.js HANDPROPS) | INK-CAST |
| tpdagger | tpdagger.skin-gold | THE GOLDEN RULE | READY | 58k_w_tpdagger.js:5077 | inline: if (s.pullOut) { R.knife = s.pullOut(V, T0 + 0.05, 'knife', { hand: 'F', from: 'belt', keep: false }); R.cloth | GAME:knife |
| tpdagger | tpdagger.skin-gold | THE GOLDEN RULE | READY | 58k_w_tpdagger.js:5145 | inline: try { if (K58.drawHandProp) K58.drawHandProp(ctx, 'knife', R.kx, y, Math.PI / 2 + q, 0.9, t); else throw 0; }  | GAME:knife |

## Batch 8

| weapon | key | name | status | at | drawing | class |
|---|---|---|---|---|---|---|
| fists | fists.hook-hall | HOOK HALL | REWORK | 58k_w_fists.js:2489 | inline: ctx.fillStyle = '#1A0910'; ctx.beginPath(); ctx.moveTo(5.4, 1.6); ctx.quadraticCurveTo(12.4, -0.4, 18.6, 2.2); | INK |
| fists | fists.hook-hall | HOOK HALL | REWORK | 58k_w_fists.js:2490 | inline: ctx.fillStyle = '#ECE4D4'; ctx.fillRect(6.6, 1.6, 10.6, 1.6); ctx.save(); ctx.translate(14.4, 18.2); ctx.rotat | INK |
| gl | gl.special-delivery | SPECIAL DELIVERY | READY | 58k_w_gl_2.js:446 | inline: if (!S.whipped) { ctx.fillStyle = '#F6F4EE'; ctx.beginPath(); ctx.moveTo(TX - TW - 6, TTOP + 22); ctx.lineTo(T | INK |
| ice | ice.safe-passage |  | READY | 58k_w_ice.js:1181 | calls blade (58k_w_ice.js:1176) | ? |
| minigun | minigun.cine-a | SAMPLE A · CLOSE QUARTERS | READY | 58k_w_minigun_cine.js:111 | calls pistolAt (58k_w_minigun_cine.js:66) | GAME:pistol |
| minigun | minigun.cine-a | SAMPLE A · CLOSE QUARTERS | READY | 58k_w_minigun_cine.js:164 | calls C2.whip (58k_w_beam.js:148) | INK |
| minigun | minigun.cine-a | SAMPLE A · CLOSE QUARTERS | READY | 58k_w_minigun_cine.js:164 | calls C2.whip (58k_w_laser.js:147) | INK |
| minigun | minigun.cine-a | SAMPLE A · CLOSE QUARTERS | READY | 58k_w_minigun_cine.js:164 | calls C2.whip (58k_w_pump.js:461) | INK |
| minigun | minigun.cine-a | SAMPLE A · CLOSE QUARTERS | READY | 58k_w_minigun_cine.js:164 | calls C2.whip (58k_w_sawedoff.js:462) | INK |
| minigun | minigun.cine-a | SAMPLE A · CLOSE QUARTERS | READY | 58k_w_minigun_cine.js:164 | calls C2.whip (58k_w_shrink.js:149) | INK |
| minigun | minigun.cine-a | SAMPLE A · CLOSE QUARTERS | READY | 58k_w_minigun_cine.js:164 | calls C2.whip (58k_w_smg_c.js:437) | INK |
| minigun | minigun.cine-a | SAMPLE A · CLOSE QUARTERS | READY | 58k_w_minigun_cine.js:164 | calls C2.whip (58k_w_smg_e.js:148) | INK |
| minigun | minigun.cine-b | SAMPLE B · TAKE A NUMBER | READY | 58k_w_minigun_cine.js:341 | calls pistolAt (58k_w_minigun_cine.js:66) | GAME:pistol |
| minigun | minigun.cine-b | SAMPLE B · TAKE A NUMBER | READY | 58k_w_minigun_cine.js:342 | calls knifeAt (58k_w_minigun_cine.js:336) | GAME:knife |
| minigun | minigun.cine-b | SAMPLE B · TAKE A NUMBER | READY | 58k_w_minigun_cine.js:407 | calls C2.whip (58k_w_beam.js:148) | INK |
| minigun | minigun.cine-b | SAMPLE B · TAKE A NUMBER | READY | 58k_w_minigun_cine.js:407 | calls C2.whip (58k_w_laser.js:147) | INK |
| minigun | minigun.cine-b | SAMPLE B · TAKE A NUMBER | READY | 58k_w_minigun_cine.js:407 | calls C2.whip (58k_w_pump.js:461) | INK |
| minigun | minigun.cine-b | SAMPLE B · TAKE A NUMBER | READY | 58k_w_minigun_cine.js:407 | calls C2.whip (58k_w_sawedoff.js:462) | INK |
| minigun | minigun.cine-b | SAMPLE B · TAKE A NUMBER | READY | 58k_w_minigun_cine.js:407 | calls C2.whip (58k_w_shrink.js:149) | INK |
| minigun | minigun.cine-b | SAMPLE B · TAKE A NUMBER | READY | 58k_w_minigun_cine.js:407 | calls C2.whip (58k_w_smg_c.js:437) | INK |
| minigun | minigun.cine-b | SAMPLE B · TAKE A NUMBER | READY | 58k_w_minigun_cine.js:407 | calls C2.whip (58k_w_smg_e.js:148) | INK |
| minigun | minigun.the-circle | THE CIRCLE | READY | 58k_w_minigun_6.js:1111 | inline: const drawCross = (ctx, t) => { if (!MS.in \|\| MS.out) return; const x = GEO.cx, gone = CS.conv && t > CS.conv  | GAME:ar |
| pan | pan.skin-camo | THE ROCK | READY | 58k_w_pan_skins.js:267 | inline: s.at(2.4, () => { ST.mag = s.t; snd(s, s.t, 'gun.mag.out', { vol: 0.7 }); const h = V.at('hF'); s.fx.add({ typ | ? |
| pan | pan.skin-camo | THE ROCK | READY | 58k_w_pan_skins.js:301 | inline: const camo = (ctx, x, y, w, h, rot) => { ctx.save(); ctx.translate(x, y); ctx.rotate(rot \|\| 0); ctx.beginPath( | GAME:pan |
| pan | pan.skin-camo | THE ROCK | READY | 58k_w_pan_skins.js:332 | inline: if (H && !VH) F.on(s, 'top', (ctx, t) => { if (t < tEnd \|\| !V.J) return; const h = V.J[3]; ctx.save(); ctx.glo | GAME:pan |
| sawedoff | sawedoff.skin-taped | HANGFIRE | READY | 58k_w_sawedoff.js:5157 | inline: if (g === 2) { s.at(tB + 0.04, () => { V.die({ v: [80, -60], spin: -0.4, loose: true }); V.fric = 10; }); if ( | GAME:sawedoff |
| sawedoff | sawedoff.the-pass | THE PASS | READY | 58k_w_sawedoff.js:4773 | inline: ctx.fillStyle = '#4A3A28'; for (let i = 0; i < 6; i++) { const x = 620 + K.hash(i, 3) * 340, y = F - 2; ctx.sa | INK |
| scythe | scythe.uprooted | UPROOTED | READY | 58k_w_scythe_3.js:362 | inline: for (const [yy, w] of [[-66, 1.6], [-60, 1.6], [-14, 2.2], [-9, 1.2]]) { ctx.beginPath(); ctx.moveTo(-50 * s,  | INK |
| sniper | sniper.the-guide-line | THE GUIDE LINE | READY | 58k_w_sniper_2.js:323 | inline: s.at(TS + 0.004, () => { st.hole = s.t; sndNow(s, 'sniper.shot.dull', { vol: 0.8 }); const c = chestW(); for ( | GAME:sniper |
| spear | spear.skin-gold | THE HALL OF THE SLAIN | READY | 58k_w_spear_skins.js:1754 | calls drawAxe (58k_w_spear_skins.js:1509) | INK |
| spear | spear.skin-gold | THE HALL OF THE SLAIN | READY | 58k_w_spear_skins.js:1760 | inline: if (ST.flashDeath && V.J && tt < ST.flashDeath.t0 + 0.16) { const k = ST.flashDeath.kind, m = V.J[1], hd = V.J | GAME:spear |
| spear | spear.skin-gold | THE HALL OF THE SLAIN | READY | 58k_w_spear_skins.js:1784 | inline: { const c = [lerp(J[0][0], J[2][0], 0.62), lerp(J[0][1], J[2][1], 0.62)]; wet((k) => { ctx.beginPath(); ctx.ar | GAME:spear |
| spear | spear.skin-gold | THE HALL OF THE SLAIN | READY | 58k_w_spear_skins.js:1795 | inline: ctx.save(); headFrameOf3(ctx, V); ctx.fillStyle = INK; ctx.beginPath(); ctx.ellipse(11.6, 8.4, 3.6 * e + 1, 4. | INK |
| thammer | thammer.mid-stride | STRIDE | FIXABLE | 58k_w_thammer_mid.js:678 | calls slagRifle (58k_w_thammer_mid.js:678) | GAME:ar |
| thammer | thammer.mid-wrong-hands | WRONG HANDS | FIXABLE | 58k_w_thammer_mid.js:208 | inline: if (MG.drop < 0 \|\| t < MG.drop) { const m = handMid(), k = sm(MG.t0, MG.t0 + 0.2, t), pr = 26 + 10 * Math.sin( | GAME:hammer |

## Batch 9

| weapon | key | name | status | at | drawing | class |
|---|---|---|---|---|---|---|
| fists | fists.knock-the-stuffing-out | RUNDOWN | REWORK | 58k_w_fists_2.js:3417 | calls C2.whip (58k_w_beam.js:148) | INK |
| fists | fists.knock-the-stuffing-out | RUNDOWN | REWORK | 58k_w_fists_2.js:3417 | calls C2.whip (58k_w_laser.js:147) | INK |
| fists | fists.knock-the-stuffing-out | RUNDOWN | REWORK | 58k_w_fists_2.js:3417 | calls C2.whip (58k_w_pump.js:461) | INK |
| fists | fists.knock-the-stuffing-out | RUNDOWN | REWORK | 58k_w_fists_2.js:3417 | calls C2.whip (58k_w_sawedoff.js:462) | INK |
| fists | fists.knock-the-stuffing-out | RUNDOWN | REWORK | 58k_w_fists_2.js:3417 | calls C2.whip (58k_w_shrink.js:149) | INK |
| fists | fists.knock-the-stuffing-out | RUNDOWN | REWORK | 58k_w_fists_2.js:3417 | calls C2.whip (58k_w_smg_c.js:437) | INK |
| fists | fists.knock-the-stuffing-out | RUNDOWN | REWORK | 58k_w_fists_2.js:3417 | calls C2.whip (58k_w_smg_e.js:148) | INK |
| flamer | flamer.the-pugilist | THE PUGILIST | READY | 58k_w_flamer_1.js:502 | calls FL.gun (58k_w_flamer_kit.js:98) | GAME:flamer |
| flamer | flamer.torched | TORCHED | READY | 58k_w_flamer_1.js:5534 | calls FL.gun (58k_w_flamer_kit.js:98) | GAME:flamer |
| hammer | hammer.the-hold | STILL STANDING | READY | 58k_w_hammer_cine.js:388 | inline: const bladeDraw = (ctx, t) => { if (S.bladeOff != null && t >= S.bladeOff) return; const [p, a] = forearm(V, ' | GAME:hammer |
| handcannon | handcannon.proving-ground | THE PROVING GROUND | FIXABLE | 58k_w_handcannon_3.js:1254 | inline: ctx.save(); ctx.fillStyle = '#4A4C50'; ctx.fillRect(RIG - 60, FY - 8, 140, 6); ctx.fillStyle = '#5A5C60'; ctx. | GAME:handcannon |
| laser | laser.lightning-rod | TOURNIQUET | FIXABLE | 58k_w_laser_cine_x1.js:514 | calls goldKnife (58k_w_laser_cine_x1.js:393) | GAME:knife |
| minigun | minigun.cine-c | SAMPLE C · SUPPRESSION | FIXABLE | 58k_w_minigun_cine_n1.js:520 | inline: s.at(2.94, () => { const h = V.at('hB'); s.fx.add({ type: 'custom', x: h[0], y: h[1], vx: 60, vy: -120, g: 120 | GAME:minigun |
| minigun | minigun.iai | IAI | FIXABLE | 58k_w_minigun_2.js:1407 | calls katana (58k_w_minigun_2.js:1387) | INK |
| minigun | minigun.iai | IAI | FIXABLE | 58k_w_minigun_2.js:1440 | inline: s.layer('top', (ctx, t) => { if (t < 2.1) return; ctx.save(); for (const [dx, a] of [[-12, 0.3], [-7, -0.5]])  | INK |
| pistol | pistol.mid-tether | TETHER | FIXABLE | 58k_w_pistol_mid2.js:821 | inline: if (!dropped) { ctx.beginPath(); for (let i = 0; i < 3; i++) ctx.ellipse(w[0] - A.fc * 1.5, w[1] + 1 + i * 0.9 | GAME:pistol |
| pump | pump.shooting-gallery | SHOOTING GALLERY | REWORK | 58k_w_pump.js:4916 | inline: if (A.showWeapon) { const g0 = [CNT + 14, F - 44], h = A.at('hF'); ctx.strokeStyle = '#7A7E88'; ctx.lineWidth  | GAME:pump |
| revolver | revolver.skin-cartoon | PULL STRING | FIXABLE | 58k_w_revolver_skins.js:641 | inline: if (t < TFALL) { const hh = V.at('hF'), ga = Math.atan2(V.at('hF')[1] - V.at('eF')[1], V.at('hF')[0] - V.at('e | GAME:revolver |
| rpg | rpg.the-vacuum | THE VACUUM | READY | 58k_w_rpg.js:163 | inline: else if (q.k === 'bottle') { ctx.fillStyle = 'rgba(70,150,90,.9)'; ctx.beginPath(); ctx.roundRect(-4, -1.6, 6, | INK |
| rpg | rpg.the-vacuum | THE VACUUM | READY | 58k_w_rpg.js:164 | inline: else if (q.k === 'sign') { ctx.fillStyle = '#C89A5A'; ctx.fillRect(-6, -3, 12, 6); ctx.strokeRect(-6, -3, 12,  | INK |
| rpg | rpg.too-close | TOO CLOSE | READY | 58k_w_rpg_4.js:481 | inline: s.layer('top', (ctx, t) => { const e = t - tB; if (e < 0 \|\| e > 0.35) return; ctx.save(); ctx.globalCompositeO | INK |
| scythe | scythe.mid-pruned | PRUNED | FIXABLE | 58k_w_scythe_mid.js:378 | inline: const snip = (t, jn) => s.at(t, () => { for (const n of jn) { const p = V.at(n); for (let i = 0; i < 2; i++) s | GAME:scythe |
| smg | smg.skin-classic | SHAKE HANDS | FIXABLE | 58k_w_smg_skins.js:220 | inline: const pm2 = 0.5 + 0.5 * Math.max(0, Math.sin(t * 8)), x0 = sh[0], y0 = sh[1] - WL * 0.3; ctx.strokeStyle = 'rg | GAME:pump |
| spear | spear.tapped | TAPPED | READY | 58k_w_spear.js:1011 | inline: if (XT) F.on(s, 'top', (ctx, tt) => { const e = tt - 8.2; if (e < 0) return; const n = V.at('neck'), h = V.at( | GAME:spear |

## Batch 10

| weapon | key | name | status | at | drawing | class |
|---|---|---|---|---|---|---|
| flamer | flamer.no-capes | THE KEEP | REWORK | 58k_w_flamer_cine.js:298 | inline: s.layer('top', (ctx, t) => { if (!S.smgDrop \|\| t < S.smgDrop.t) return; const q = C2.tumble(S.smgDrop.p, [-60, | GAME:flamer |
| flamer | flamer.no-capes | THE KEEP | REWORK | 58k_w_flamer_cine.js:307 | inline: ctx.fillStyle = '#26262C'; ctx.strokeStyle = INK; ctx.lineWidth = 0.8; ctx.beginPath(); ctx.rect(L - 2, -3.4,  | GAME:smg |
| flamer | flamer.no-capes | THE KEEP | REWORK | 58k_w_flamer_cine.js:68 | calls FL.gun (58k_w_flamer_kit.js:98) | GAME:flamer |
| flamer | flamer.which-way-is-up | WHICH WAY IS UP | READY | 58k_w_flamer_1.js:2763 | calls FL.gun (58k_w_flamer_kit.js:98) | GAME:flamer |
| golden | golden.the-pearl | THE PEARL | FIXABLE | 58k_w_golden_2.js:209 | calls goldPan (58k_w_golden_2.js:209) | GAME:pan |
| hammer | hammer.mid-plaster-cast | PLASTER CAST | READY | 58k_w_hammer_mid.js:651 | inline: const stakeDraw = (ctx) => { ctx.beginPath(); ctx.moveTo(-2, -14); ctx.lineTo(2, -14); ctx.lineTo(1.8, 6); ctx | GAME:hammer |
| ice | ice.the-still-city |  | READY | 58k_w_ice.js:1879 | calls drawBottle (58k_w_ice.js:1866) | INK |
| minigun | minigun.all-at-once | ALL AT ONCE | REWORK | 58k_w_minigun_1.js:1352 | inline: s.layer('top', (ctx, t) => { if (g < 2 \|\| t < NICK.t \|\| !V3.knife58 \|\| !V3.knife58.tip) return; let p; try { p | GAME:knife |
| minigun | minigun.cine-d | SAMPLE D · CLINCH | FIXABLE | 58k_w_minigun_cine_d.js:346 | calls bladeShape (58k_w_minigun_cine_d.js:343) | INK-CAST |
| minigun | minigun.cine-d | SAMPLE D · CLINCH | FIXABLE | 58k_w_minigun_cine_d.js:347 | calls bladeAt (58k_w_minigun_cine_d.js:346) | INK-CAST |
| minigun | minigun.cine-d | SAMPLE D · CLINCH | FIXABLE | 58k_w_minigun_cine_d.js:639 | calls C2.whip (58k_w_beam.js:148) | INK |
| minigun | minigun.cine-d | SAMPLE D · CLINCH | FIXABLE | 58k_w_minigun_cine_d.js:639 | calls C2.whip (58k_w_laser.js:147) | INK |
| minigun | minigun.cine-d | SAMPLE D · CLINCH | FIXABLE | 58k_w_minigun_cine_d.js:639 | calls C2.whip (58k_w_pump.js:461) | INK |
| minigun | minigun.cine-d | SAMPLE D · CLINCH | FIXABLE | 58k_w_minigun_cine_d.js:639 | calls C2.whip (58k_w_sawedoff.js:462) | INK |
| minigun | minigun.cine-d | SAMPLE D · CLINCH | FIXABLE | 58k_w_minigun_cine_d.js:639 | calls C2.whip (58k_w_shrink.js:149) | INK |
| minigun | minigun.cine-d | SAMPLE D · CLINCH | FIXABLE | 58k_w_minigun_cine_d.js:639 | calls C2.whip (58k_w_smg_c.js:437) | INK |
| minigun | minigun.cine-d | SAMPLE D · CLINCH | FIXABLE | 58k_w_minigun_cine_d.js:639 | calls C2.whip (58k_w_smg_e.js:148) | INK |
| minigun | minigun.reload | RELOAD | REWORK | 58k_w_minigun_2.js:179 | calls macheteArt (58k_w_minigun_2.js:42) | INK |
| pistol | pistol.red-light | RED LIGHT | REWORK | 58k_w_pistol_2.js:105 | inline: if (gR >= 4) s.fx.add({ type: 'custom', x: f[0], y: f[1], vx: -V.fc * 60, vy: -140, g: 900, drag: 0.3, life: 3 | GAME:pistol |
| rpg | rpg.mid-reflex | REFLEX | FIXABLE | 58k_w_rpg_mid.js:726 | inline: if (g >= 4) { ctx.fillStyle = V.color; ctx.strokeStyle = INK; ctx.lineWidth = 0.8; ctx.beginPath(); ctx.arc(-1 | GAME:speedsabre |
| scythe | scythe.skin-taped | STUCK | FIXABLE | 58k_w_scythe_7.js:448 | inline: if (g >= 3) s.layer('top', (ctx, t) => { if (ST.freeT < 0 \|\| t < ST.freeT \|\| t > ST.freeT + 1.6) return; const | GAME:scythe |
| scythe | scythe.skin-taped | STUCK | FIXABLE | 58k_w_scythe_7.js:544 | calls drawCamoScythe (58k_w_scythe_7.js:544) | GAME:scythe |
| scythe | scythe.skin-taped | STUCK | FIXABLE | 58k_w_scythe_7.js:555 | inline: shape(); ctx.fillStyle = pal[1]; ctx.fill(); | GAME:scythe |
| shrink | shrink.skin-classic | THE GIANT'S FOOTSTEPS | READY | 58k_w_shrink_skins.js:188 | inline: function tapeOn(ctx, A, n) { const m = A.muzzle(), h = A.at('hF'), a = Math.atan2(m[1] - h[1], m[0] - h[0]); c | GAME:shrink |
| smg | smg.skin-neon | LAG SPIKE | FIXABLE | 58k_w_smg_skins.js:1412 | inline: ctx.beginPath(); ctx.roundRect(-0.022, -0.065, 0.044, 0.13, 0.012); ctx.fillStyle = tint \|\| '#1C1830'; ctx.fil | GAME:smg |
| sniper | sniper.mascot | THE GLINT | FIXABLE | 58k_w_sniper_cine_b.js:379 | inline: s.layer('top', (ctx, t) => { if (A.look.hide) return; const u = boltU(t), p = boltPt(t), base = gunPt(lerp(BOL | GAME:ar |
| spear | spear.the-door | KEEP-AWAY | NEW-FLAGGED | 58k_w_spear.js:2233 | inline: s.at(t, () => { ST.holes.push({ p: T.p, t0: s.t, sd: T.sd }); s.shake(s.t, 3); snd(s, s.t, 'world.wood', { vol | GAME:spear |
| tkglove | tkglove.mid-whiplash | WHIPLASH | FIXABLE | 58k_w_tkglove_mid.js:754 | inline: s.every(tYank + 0.05, tStop, 0.03, () => { const c = V.center(); s.fx.add({ type: 'custom', layer: 'back', x:  | GAME:tkglove |

## No region found (check by hand)

ar.bathysphere, ar.bottomless, ar.own-pit, ar.runner, beam.death-spiral, beam.no-tell, bouncer.chin-music, bouncer.four-passes, bouncer.gulp, bouncer.higher, bouncer.pachinko, bouncer.rally, bouncer.squash-court, bouncer.the-ball-pit, bouncer.the-break, bouncer.the-trapped-round, bouncer.the-well, burst.fortune, burst.guard-up, burst.last-resort, burst.silt-out, burst.snells-window, burst.the-iron-lungs, burst.the-plague-cart, burst.three-legged-race, burst.three-on-a-match, burst.tiffin, burst.tourniquet, burst.trip, flamer.the-keep, hammer.resonance, knife.behind-you, laser.mid-the-glint, pistol.skin-ice, pistol.skin-taped, pump.the-sound, rpg.small-change, scythe.by-a-thread, scythe.stuck, smg.bank-shot, smg.long-exposure, smg.range-card, smg.tear-along-the-dotted-line, smg.the-x, thammer.bling, thammer.st-elmos-fire, thammer.still-lightning

## Live def not found by the static scan (the live page registers it from this file; check by hand)

- laser.mid-the-glint: 58k_w_laser_s3_x1.js
- pistol.skin-ice: 58k_w_pistol_cine_i.js
- pistol.skin-taped: 58k_w_pistol_cine_i.js

## Shadowed defs (not scanned: the live page registers the key from another file / later; last registration wins, per kill_src58.json)

- ar.rewind: 58k_w_ar.js:1098
- ar.searchlight: 58k_w_ar.js:1062
- ar.skin-cartoon: 58k_w_ar.js:1120
- beam.half-a-second: 58k_w_beam_2.js:1429
- beam.mid-afterimage: 58k_w_beam_mid.js:280
- beam.mid-bleached: 58k_w_beam_mid.js:387
- beam.mid-tan-lines: 58k_w_beam_mid.js:187
- beam.morse: 58k_w_beam_2.js:103
- beam.portal: 58k_w_beam_2.js:397
- beam.skin-camo: 58k_w_beam_skins.js:329
- beam.skin-cartoon: 58k_w_beam_skins.js:572
- beam.skin-classic: 58k_w_beam_skins.js:27
- beam.skin-neon: 58k_w_beam_skins.js:1030
- fists.mid-blown-pupil: 58k_w_fists_mid.js:464
- fists.mid-laid-down: 58k_w_fists_mid.js:630
- fists.re-entry: 58k_w_fists.js:2622
- fists.seven-points: 58k_w_fists.js:3380
- fists.slam-dunk: 58k_w_fists_2.js:2087
- flamer.air-pocket: 58k_w_flamer_plan.js:30
- flamer.backdraft: 58k_w_flamer_plan.js:70
- flamer.brazen-bull: 58k_w_flamer_1.js:1510, 58k_w_flamer_plan.js:20
- flamer.burning-bridges: 58k_w_flamer_plan.js:104
- flamer.cook-off: 58k_w_flamer_plan.js:56
- flamer.flash-in-the-pan: 58k_w_flamer_1.js:6233, 58k_w_flamer_plan.js:90
- flamer.grassfire: 58k_w_flamer_plan.js:82
- flamer.molten-rain: 58k_w_flamer_1.js:2401, 58k_w_flamer_plan.js:38
- flamer.no-capes: 58k_w_flamer_1.js:4989, 58k_w_flamer_plan.js:86
- flamer.poached: 58k_w_flamer_1.js:727
- flamer.rollover: 58k_w_flamer_plan.js:24
- flamer.skin-classic: 58k_w_flamer_1.js:6961, 58k_w_flamer_plan.js:111
- flamer.stepping-stone: 58k_w_flamer_plan.js:52
- flamer.torched: 58k_w_flamer_plan.js:100
- flamer.which-way-is-up: 58k_w_flamer_plan.js:44
- glue.bungee: 58k_w_glue_c.js:195
- glue.concrete-shoes: 58k_w_glue_c.js:31
- glue.hang-time: 58k_w_glue_c.js:461
- glue.immovable-object: 58k_w_glue_c.js:782
- golden.eureka: 58k_w_golden_2.js:218
- golden.mid-the-bite-test: 58k_w_golden_mid.js:660
- golden.mid-the-looter: 58k_w_golden_mid.js:381
- golden.mid-the-tray: 58k_w_golden_mid.js:450
- golden.never-runs-dry: 58k_w_golden_1.js:874
- golden.ribbon-cutting: 58k_w_golden_3.js:534
- golden.skin-camo: 58k_w_golden_skins.js:273
- golden.the-mimic: 58k_w_golden_2.js:362
- golden.the-swap: 58k_w_golden_2.js:481
- hammer.cpr: 58k_w_hammer.js:1250
- hammer.hanger-on: 58k_w_hammer.js:853
- hammer.high-striker: 58k_w_hammer.js:772
- hammer.mid-ketchup: 58k_w_hammer_mid.js:838
- hammer.mole-hill: 58k_w_hammer.js:1104
- hammer.skipping: 58k_w_hammer.js:569
- hammer.tent-peg: 58k_w_hammer.js:206
- handcannon.burial-at-sea: 58k_w_handcannon_3.js:761
- handcannon.left-behind: 58k_w_handcannon_2.js:221
- handcannon.made-to-measure: 58k_w_handcannon_1.js:1369
- handcannon.mid-swallowed: 58k_w_handcannon_mid.js:112
- ice.wipe: 58k_w_ice.js:552
- knife.bear-hug: 58k_w_knife.js:352
- knife.crossed-out: 58k_w_knife.js:546
- knife.flayed: 58k_w_knife.js:1097
- knife.mid-pockets: 58k_w_knife_mid.js:585
- knife.mid-right-through: 58k_w_knife_mid.js:501
- knife.pickpocket: 58k_w_knife.js:1015
- knife.skin-cartoon: 58k_w_knife.js:1965
- knife.skin-gold: 58k_w_knife.js:2179
- knife.skin-taped: 58k_w_knife.js:1806
- knife.splice: 58k_w_knife.js:809
- knife.telefrag: 58k_w_knife.js:965
- laser.lightning-rod: 58k_w_laser.js:2988
- laser.metronome: 58k_w_laser.js:2815
- laser.mid-the-glint: 58k_w_laser_mid.js:572
- laser.scarecrow: 58k_w_laser.js:3194
- laser.strike: 58k_w_laser.js:2320
- minigun.brrrt: 58k_w_minigun_1.js:109
- minigun.hold-still: 58k_w_minigun_9.js:2439
- minigun.locked: 58k_w_minigun_4.js:672
- minigun.mid-wind-down: 58k_w_minigun_5.js:1527
- minigun.quiet: 58k_w_minigun_2.js:612
- minigun.red-hot: 58k_w_minigun_1.js:776
- minigun.sinker: 58k_w_minigun_2.js:372
- minigun.skin-camo: 58k_w_minigun_5.js:523, 58k_w_minigun_7.js:725
- minigun.skin-ice: 58k_w_minigun_5.js:973
- minigun.skin-neon: 58k_w_minigun_5.js:1176, 58k_w_minigun_8.js:348
- minigun.the-circle: 58k_w_minigun_3.js:879
- minigun.the-gap: 58k_w_minigun_4.js:2004
- minigun.the-press: 58k_w_minigun_2.js:1141, 58k_w_minigun_6.js:779
- minigun.window-dressing: 58k_w_minigun_1.js:506, 58k_w_minigun_8.js:107
- pistol.mid-black-round: 58k_w_pistol_mid2.js:249
- pistol.mid-in-amber: 58k_w_pistol_mid2.js:28
- pistol.mid-live-wire: 58k_w_pistol_mid.js:455
- pistol.mid-x-ring: 58k_w_pistol_mid2.js:620
- pistol.skin-ice: 58k_w_pistol_skins.js:701
- pistol.skin-taped: 58k_w_pistol_skins.js:295
- pump.glass-jaw: 58k_w_pump.js:7630
- pump.his-heart: 58k_w_pump.js:3989
- pump.pull: 58k_w_pump.js:7210
- revolver.bandana: 58k_w_revolver_3.js:567
- revolver.drip: 58k_w_revolver_3.js:45
- revolver.mid-film-burn: 58k_w_revolver_mid2.js:28
- revolver.mid-quicksilver: 58k_w_revolver_mid2.js:297
- revolver.optogram: 58k_w_revolver_2.js:774
- revolver.skin-camo: 58k_w_revolver_skins.js:387
- revolver.skin-neon: 58k_w_revolver_skins.js:905
- rpg.half-mast: 58k_w_rpg_3.js:458
- rpg.in-the-works: 58k_w_rpg_2.js:1002
- rpg.the-tail: 58k_w_rpg_4.js:720
- rpg.tilt: 58k_w_rpg_s3.js:1203
- scythe.threshing-floor: 58k_w_scythe_6.js:84
- smg.house: 58k_w_smg_c.js:1321
- smg.lathe: 58k_w_smg_f.js:233
- smg.mid-the-take: 58k_w_smg_mid.js:2039
- smg.mid-tin-star: 58k_w_smg_mid.js:1901
- smg.mid-trampoline: 58k_w_smg_mid.js:1681
- smg.mid-trousers: 58k_w_smg_mid.js:279
- smg.skin-cartoon: 58k_w_smg_skins.js:889
- sniper.mascot: 58k_w_sniper_1.js:769
- sniper.the-long-way-in: 58k_w_sniper_1.js:243
- spear.the-door: 58k_w_spear_cine_x7.js:36
- thammer.obliterated: 58k_w_thammer_cine_x2.js:195
