The plan for giving every weapon its own effect in the pixel battle (shootout.js). Approved as the plan (Jordan, 30 Sep, reviewed with the design session): the families, the match order, the counts, the leftovers, where it lives and the switches. The gallery went back for a second round; the build starts once Jordan approves the gallery (sub-cards T-458 to T-463, on beta).
Gallery, round 9 plus the fates and melee rows (live, the same link as rounds 1 to 8): https://claude.ai/artifact/7sFr4pH868w6k8pZagNMMg, and a copy in design/weaponfx-preview.html (open it in a browser), which is also the site page https://tacticalreroll.com/lab/effects/ (T-465: copied on every build, noindex, not linked). Our own drawings only: the army figures are figures.js, every effect is our pixels.
Melee choreography (T-488: Jordan picked (a), 30 Sep)
Today the attacker charges right and, fighting back, the defender charges left: a fight reads as two separate charges. The gallery's "Melee: three ways" row plays one fight (Fight back and To the death on, three rounds, after a volley from range) three ways:
- (a) Meet in the middle: both charge to the centre and trade blows there, turn about.
- (b) Charge to contact (recommended): the attacker crosses to the defender, which holds; they stay locked for every round, each striking from where it stands; the killing blow drops the model in place. It matches the game (the charger moves, the target holds), gives one clear reading and removes the run back. With Shoot and Melee both on, the shooting plays from range first, then the charge, then they stay locked.
- (c) Today, for comparison.
Decided (Jordan, 30 Sep): meet in the middle. Both charge to the centre and stay locked for every round; blows alternate in the engine's order; no run back; the killing blow drops the model in place; with Shoot and Melee both on, the shooting plays from range first. Once built, the gallery keeps only this loop.
Built 1 Oct (shootout.js, T-488): with the new charge, a To the death part carries lock. The first charge runs half the gap while the target runs out to meet it (drawV shifts the target by the same fraction); every later part starts locked there and skips the run-up, so the blows come sooner. No bounce or run back, no ghosts left at home; the fallen lie where they fell (the striker's own too); the hit words sit where the fronts meet. The classic charge (✨ Effects, "New charge" off) keeps today's two separate charges. The gallery now plays only this loop. Not done: the compact gate lines over whoever is struck; the battle keeps its funnel behind the fight, which carries the same gates.
In all three, compact gate lines (hit, wound, save, damage) light over whoever is struck, so the funnel stays readable for both sides while they are locked.
Violence (T-485)
A switch in ✨ Effects with two settings, stored in hre.fx.v1: Full (the deaths below once they exist; today's blood specks and pools) and Mild (today's plain fall, no blood or pools, no gore words). Default Full. When set, Mild also governs the static pages' Simulate it boxes and shared GIFs. The deaths depend on it.
Built 30 Sep: violence in hre.fx.v1 ("" Full, "mild" Mild), under Everywhere in ✨ Effects. Mild skips the new charge's deaths (vaporised, splattered, launched) for the plain fall. Shared GIFs and clips are drawn by the same code, so they follow it; the static pages' Simulate it boxes draw no deaths, so there is nothing for Mild to change there yet.
Deaths (T-484, for later)
One killing animation per family on the slain model, in place of today's plain fall: original pixel art, 0.5 to 0.9 s, never longer than the family's volley time.
| Families | Death | Mark left |
|---|---|---|
| Melta and fusion; bio-sprays and acid | melts and sags into a puddle of goo (molten orange, or purple-green), a few bubbles | the puddle |
| Bites and maws | bitten in half at the waist; the upper half drops a beat later | the halves |
| Rail, plasma, dark light, lascannon | vaporised: a flash, then a dozen glowing pixels drift up and out | a scorch |
| Missiles, grenades, cannons, bio-plasmic | blown apart: pixel debris flung on arcs with dust | the settled debris |
| Blades, power weapons, claws, chain, whips | cleaved along the swing's line, the parts slide apart and fall (claws: three lines first) | the parts |
| Psychic and warp, force weapons | husked: a black silhouette that crumbles from the top and blows away as ash | nothing |
| Flamers, burning melee, phosphor | burnt: blackens over three frames, curls and drops as embers rise | soot |
| Gauss, arc and lightning | flayed: stripped band by band from the outside in, flickering | nothing |
| Grav, hammers and fists, hulls | crushed flat to a two-pixel line with a puff of dust | the flattened mark |
| Everything else | today's fall with the family's own particles | a small dark pool |
Rules: readable in silhouette; slain counts and the funnel's timing unchanged; marks fade when the next round begins; several kills in one volley stagger by about 80 ms; monsters and vehicles at their own scale, and vehicles never melt or bleed (a wreck: black smoke and a hulk). Each death lists which of the pixel reactions (T-156) may follow it. Drawn in the gallery when Jordan calls it up.
Fates (T-477: built 30 Sep)
A row at the top of the gallery, "One shot, eight fates": the same bolter round played once per outcome, side by side and looping. Faint gate lines stand between the sides (hit, wound, save, damage), as the battle's funnel does. Each fate differs in shape and place, never only in colour:
| Fate | Where the shot ends | What the model does | Word |
|---|---|---|---|
| 1. Miss (the hit gate) | veers a few pixels off its track at the hit line and fades before the model; melee: the arc passes in front | nothing; the only fate that never touches it | "miss", white, at the hit line, drifting down and fading |
| 2. Failed to wound | tracks all the way, touches, dies flat with a dull grey tink | nothing | "no wound", grey, at the wound line |
| 3. Saved by armour | lands; orange-white sparks skate off | rocks back one pixel and stands | "saved", at the save line |
| 4. Saved by an invulnerable save | bursts on a shield outline that flickers round the model, before touching | nothing | "saved" with a small shield |
| 5. Feel No Pain (the damage gate) | lands | flinches as if hurt; the damage that counts rises red, the shrugged part slides sideways grey and struck through | "urgh", the one sound word |
| 6. Damage | lands | flinches, the number rises red, stands | none |
| 7. Slain | lands, with a longer hit-stop on the killing blow | falls | none |
| 8. Specials (one per loop) | Sustained Hits: two more shots born at the hit line; Lethal Hits: the wound line lights as the shot passes it untested; Devastating Wounds: the save line lights, the model falls and the spill jumps to the next model; Hazardous: the attacker flashes and takes the number | as the fate | "+2" at the hit line for Sustained Hits |
Rules: one "urgh" for Feel No Pain and no other sound words; the words keep the battle's small caption style; every fate must be tellable with colour removed.
Built 30 Sep (shootout.js): behind the switch "Misses fade past the line" in ✨ Effects (fade in hre.fx.v1, on by default; off, or Classic, keeps the stop-dead blink). Each failed shot's fate: a miss (or a shot left over once the unit is gone) veers past its line by up to a quarter of the gap and fades over ~150 ms; failed to wound reaches the model with a grey tink; armour lands, sparks skate off, the model rocks back a pixel; an invulnerable save bursts on a flickering shield ring; Feel No Pain lands and the model flinches. The words ("miss", "no wound", "saved" with a small shield for an invulnerable save, "urgh", "+n" where Sustained Hits are born) sit at the gate line, drift down and fade over ~400 ms, outlined dark in both themes; the flying WHIFF/TINK/CLANG words stay for the stop-dead setting. Lethal Hits light the wound line as they pass it; Devastating Wounds the save line. Not yet: the spill jumping to the next model, and Hazardous (the engine rolls hazards after the attack, not per shot). Melee is unchanged (its blows don't draw words on a fail).
Engine change (sub-card T-478): the save gate picks the better of armour and invulnerable save without recording which. One field on each bullet track, save: "armour" | "invuln", lets the drawing tell fates 3 and 4 apart; the counts stay identical with or without the track (volley.test.js).
Round 9 (Jordan's notes on round 8, 30 Sep)
Approved: the rail ("exactly the right idea") and the warp's direction.
Changed:
- Rail: the pause in the first model is half as long (about half a second); the run is 1.8 s.
- Psychic and warp: the spirit leaving the body is plainer and longer: a full, detailed copy of the model in the odd colours, tethered to the body at first, rises up and back, holds, then dissolves pixel by pixel (each art pixel splits into single pixels that drop out) into nothing. The run is 1.7 s.
Round 8 (Jordan's notes on round 7, 30 Sep)
Approved as is: the whip's first two strokes, sword effects, bites, rockets (with a smaller flash).
Changed:
- Every family ends back at neutral: the last part of each run fades every effect out (residue, smoke, holes, slime), the weapon returns to rest, the target to its own colours. A burning, dripping or crackling weapon keeps its own effect running.
- Rail: a two-pixel line in one colour; the dart sticks in the first model for about a second (the model shaking harder and glowing), then rips through everything; a big molten hole in each model it passed, with drips running down the model only. Its run was 2.2 s (1.8 s from round 9), over the volley's 1.4 s cap: in the battle the pause shortens or the volley waits for it (a call for the build).
- Psychic and warp: a ball of power gathers in the psyker's hands, one big orb and three small ones fly, and on the hit the model's ghost is knocked out of its body, back and up, and comes apart; the body stays grey and lifeless until the run ends.
- Missiles: the white flash stays inside the blast's circle; nothing flashes the whole screen.
- Melee: a spray of white, red, silver and grey specks off the edges of every strike.
- Whips: two quick strokes, then a wind-up for a third, heavy one: further back and further out, a thicker lash, and three hit bursts in quick succession. The run is 1.8 s (the same call as the rail).
- Particle sliders in the gallery (T-474): "Particles, all" from a quarter to double, and one per family on top. They change the loose particles (sparks, droplets, debris, embers); beams, blobs and shapes stay whole. Saved on the device.
Round 7 (Jordan's notes on round 6, 30 Sep)
Approved as is: the whip, sword effects, bites, helfrost, webs, the sniper, the rail (almost).
Changed:
- Melee swing: rest at 30 degrees on a clock face (up and forward), a slower backswing to 315 degrees, then the strike to 120 degrees over one or two frames with a smear, a follow-through and a slow return to 30 degrees.
- Chain teeth run at about a quarter of the speed.
- Bolters: the three rounds come sooner, so the last blast has gone before the loop starts again.
- Artillery: a burst of six shells landing in front of, behind and on top of the target, each throwing debris up and out, and one big dust cloud.
- Missiles: a harder flash on the warhead (a white screen flash, spikes, a shock ring), and the smoke stops short of the impact, leaving a gap.
- Psychic and warp: a charge at the psyker's hand, then a big rift and a burst of four small ones with small eyes, and the target shakes as they open and close.
- Rail: the line burns (white, orange, then a dark scar) and drips molten drops like the melta, and each model it hits throws molten sparks.
- Lasguns: two shots, each held longer.
- Bio-plasmic cannons: purple sludge left all over the model, dripping off it.
- Venom cannons: after the clip the slug passes right through at a visible pace, and the spray lands as green and purple slime on the ground behind.
Asked: a particle slider. Doable at moderate cost, in the build: every drawing takes its counts through one helper (count × the master level × the family's own level), so a master slider (from a quarter to double) and a slider per family can sit in ✨ Effects, saved in hre.fx.v1, with a phone that drops frames turned down on its own. Card T-474.
Round 6 (Jordan's notes on round 5, 30 Sep)
Approved as is: bio-sprays, grub guns, spinefists, spine banks, stranglers, melta, plasma, gauss, shotguns; the melee stutter.
Changed:
- Flamers and bio-plasma: the gout widens as it goes, the biggest blob at the tip, still slanting up.
- Webs: the strangler's grip with more spinning triangles stacked up the model, turning opposite ways, a corkscrew.
- Helfrost: a second set of crystals a split second after the first, then they burst into flying shards and leave the model frosted.
- Venom cannons: a bullet-shaped slug that stutters on the hit, rips out the back in a spray and leaves the model covered in slime.
- Plague: a shower of fine droplets on top, the model soaked.
- Lasguns: one thin solid line of one colour, on then off; the blinking that read as flicker is gone.
- Pulse: the rounds spray an area, up and down, as the rotary guns do.
- Rail: a charge-up at the muzzle; a white-hot dart much faster, with shock waves peeling off at 45 degrees; lightning, then the thunder of the slowly fading line. The sniper is the same, small, with no charge.
- Psychic and warp, a proposal for Jordan to react to: an eye in a rift (runes circle the psyker, a ripple bends the air, the air over the target tears open, an eye opens in the tear and looks, tendrils drag at the target as it twists and shrinks, the rift snaps shut with an implosion; different each time).
- Missiles: the smoke lies in an S along the straight path and only drifts up and out; a much bigger jolt and a flashier strike (a white flash, spikes, a shock ring).
- Melee: a slow wind-up from pointing back to overhead, then a savage downstroke into the blow, a follow-through and a slow return.
- Burning, dripping and crackling weapons keep going all the time, and the gallery holds melee 1.4 s after the blow so it can be seen (in the battle it runs while they march too, T-460).
- Whips: two strokes instead of four, a long wind-up arcing over and far behind the back, a longer lash, and a hold on each hit with the target shaking.
- Fixed: the monster bite (every other loop) now shows; the gallery was flipping the claws instead.
Round 5 (Jordan's notes on round 4, 30 Sep)
- Rail and sniper: the dart is slowed enough to see; it stutters at each model as a melee blow does (the scene holds and the model shakes, then a small aftershock); the holes are smaller and fade; a spray of sparks and grit bursts from each hit; the line lingers longer (both effects lengthened to 1.4 s and 1.2 s).
- Every target that stood still when hit now flinches: a 1-pixel shake as each hit lands and a small tremor while a stream keeps hitting. When contact happens is measured from each family's own drawing, so the flinch matches it; families that already move the target (plasma, bolters, grav, warp, melee and the rest) keep their own.
Round 4 (Jordan's review of round 3, 30 Sep)
Approved as is: melta and fusion, gauss, arc and lightning, helfrost, shotguns (a touch slower), the bolter rounds and the rail's trail.
Changed:
- Flamers: the far end of the gout curls upward, as flames do.
- Spinefists and spine banks: the spikes stay stuck in the target for a split second.
- Shuriken and splinter weapons: the discs and needles stay stuck in the target for a second.
- Bio-plasma: leaves a slime of residue running down whatever it hits.
- Plasma: the bolt stutters for a beat at each model it passes (a fighting game's hit lag) and shakes it.
- Lasguns and las pistols: the lascannon's beam made thinner (a red line with a bright core), on and off with no flicker, nothing at the end.
- Shotguns: slowed a touch so the pellets can be seen.
- Rail and sniper: the line runs through every model and off the screen, stutters at each and leaves a hole (a giant one for the rail); an unfathomably fast dart trails shock cones like a jet at the sound barrier; the line lingers a second longer. The sniper's is the same, thinner.
- Psychic and warp: a cluster of orbs in different colours weaving forward, back, up, down, in and out, some light pulled in and some flung out; the target spins and shrinks as if sucked in, with randomness so no two look alike.
- Missiles: dead straight and much snappier, a thicker smoke trail that waves up and down behind it, and a split-second crunch on the strike with debris flung in every direction and little smoke.
- Rotary and heavy guns: the rounds land spread over an area (nearer, further, left, right, up, down), a spray rather than one point.
- Bolters: the target shakes as each round lands.
- All melee: 1.5 times the size, twice the particles, the target shakes and the blow holds a longer hit-stop (the Monster Hunter feel); swings accelerate into a quick slash rather than drawing an even arc; the hammer's swing is the most aggressive.
- Bites: a bigger jaw and one or two smaller bites right behind it; a monster's (shown on alternate loops) is one massive mouth and a giant crunch that shakes the target.
- Whips: wind-up and snap in rapid succession: the lash stretches out behind the attacker, then cracks forward, slow-fast, slow-fast.
Round 3 (Jordan's review of round 2, 30 Sep)
Approved as is: flamers, grub guns, spine banks, bio-plasma, melta ("nailed it"), lascannons, grav, shuriken, pulse, webs, blades, claws, hammers, power weapons (blue by default, crackling), bites, and the missile's projectile and fireball.
New families: shotguns and scatter guns (the spinefist's blast with an orange muzzle flare; frag cannons and shotpistols included), grenades (split from missiles), bolters (split from the rest of the guns: bolt-named weapons; storm bolters and heavy bolters stay in rotary guns).
Redone:
- Bio-sprays and plague: denser, with real globs, a few large and more small; plague spreads and thins over the ground as it lands.
- Stranglers: the tendrils snap tight much quicker.
- Venom cannons: the shot is much faster; the slop tail still falls at its old speed.
- Bio-plasmic cannons: a faster arc and a big, violent burst on landing (two shock rings, a fireball, debris, lightning, a shake).
- Plasma: faster bolts that go straight through the models and off the screen; each model hit keeps a small burning hole.
- Lasguns: the lascannon's instant red line, one pixel, no flicker, nothing at the end.
- Gauss: one zap that hangs a beat and fades, and the arcs on the target fade with it.
- Rail and sniper: no visible projectile; the whole line appears at once and fades evenly in place (the sniper's is one pixel); the rail's flash and hit-stop stay.
- Helfrost: no snowflake; jagged ice shards erupt on the target in four steps, bigger each step.
- Psychic and warp: a ball of darkness with a violet edge that drags light into itself in spirals, swells over the target, darkens it and collapses.
- Missiles: the trail thins quickly, and after the fireball the smoke drifts up and away.
- Grenades: a tumbling lobbed arc, a punchy blast with a flash, dust and debris, and the target shaken.
- Cannons: the shell lands as five small explosions in a row, with flame and debris.
- Bolters: three slow, heavy rounds, each ending in a small explosion.
- Chain weapons: the teeth run along the blade every frame while it bites.
- Plague blades: green ooze and drips off the blade through the swing, a bigger splash, a puddle.
- Burning melee: fire flickers off the blade itself, not only at the blow.
- Whips: eleven strokes per attack from every angle at long reach, each cracking at its tip.
Readings chosen where the notes were open (the more violent or dense one): frag cannons and shotpistols went to shotguns; grenade launchers went to grenades; the warp ball darkens the target while it drinks it; the cannon's bursts walk across the target's squad rather than landing on one spot.
What changed in round 2 (Jordan's review)
- Stage: 320 × 120 at the battle's own scale with the chosen army's figures (figures.js at the battle's pixel size), one preview per row on a phone; "3 frames" stacks the frames full width.
- Colours: natural by default, "Army colours" as a toggle; where the two differ the card shows both. Bio-weapons stay purple whatever the army.
- No soft glows: every cloud and halo is dithered pixels (an ordered 4 × 4 pattern) or a stepped halo, so nothing blurs against the pixel style.
- Rule fixes, with a test: "fire" no longer catches the Fire Prism (a lascannon); the sonic rule runs before the laser rules, so the Blastmaster is sonic; new families for dark light (Drukhari dark lances and blasters), rail and sniper rifles, lasguns apart from lascannons; melee gains whips and hammers; a crackle modifier keeps lightning claws in the claws family, sparking.
tests/unit/weaponfx.test.jschecks the known cases and prints each family's ten least typical names so a mis-catch shows up in the run. - Tyranids split into grub guns, spinefists, spine banks, stranglers, venom cannons, bio-plasma, bio-plasmic cannons and bio-sprays, each its own switch; purple-led with green and white. The rule stays Tyranid-only (a Cult heavy flamer is a flamer; a Cult's Tyranid allies' bio-weapons follow their parents). Psychic Tyranid attacks are warp, and the bio-electric pulse and shockcannon are lightning (both purple).
- Other families redone to Jordan's notes: melta's drips at the impact point, lasgun blinks, the lascannon's longer blink and heat bloom, the gauss zap, grav's two rings, the rail tracer, the web's snap and squirt, plague spreading on landing.
- General techniques: hit-stop (the whole battle freezes three frames on the heaviest single hits: rail, melta, venom cannon, cannon shell, hammer; its own switch); the impact stays after the path has gone; melee weapons drawn in hand (our sprites: blade, toothed chainsword, claws, hammer, staff; the whip as a rolling line) swinging across the target with the family's effect on top; bites show a jaw with two rows of fangs that snaps shut over the target.
Decisions (Jordan, 30 Sep)
- Colours: natural by default with a faction tint where it reads well; bio purple regardless; "Army colours" as a toggle in ✨ Effects.
- Switches: all of them (44 families), under Shooting and Melee with a master switch each and one master for all. Families with fewer than 10 weapons sit behind a "Show rare" fold, folded by default: Bio-sprays, Spinefists, Spine banks, Stranglers, Venom cannons, Bio-plasma, Bio-plasmic cannons, Dark light, Sonic weapons, Helfrost, Burning melee. Families are never merged.
- Length: the volley lasts as long as the longest effect among the weapons firing, capped at the cannon's 1.4 s; effects are never cut short.
Where it lives (the build)
- Matching:
tools/weaponfx.jsnow (classify({ name, keywords, factions, melee })→{ family, crackle }), moved to docs/ for the build; app.js hands each weapon's family to the battle beside theweapons:list it already sends (each bullet track keeps its weapon, so a mixed volley draws each weapon its own way, and in melee each model swings its own weapon). - Drawing: one drawing per family in shootout.js, pixel-crisp; today's torrent, spray, rapid, blast, precision, melta and laser switches fold into the family switches.
- Switches:
hre.fx.v1gainswfx: { on, shoot, melee, off: [keys], army, stop }. - Performance: particles capped per frame (about 400 on a phone), halved when more than three weapons fire at once; reduced motion keeps still frames.
Coverage
2,356 weapon profiles in build/units.json, each in one family (a profile several units share counts once; "Units" counts every datasheet carrying it). A named one-off no rule catches is drawn as a bolter (shooting) or a blade (melee).
Shooting
| Family | Weapons | Units | Length | Colours | What it does | For example |
|---|---|---|---|---|---|---|
Flamers (flame) | 114 | 741 | 1.1 s | natural, army tint | A roaring gout that widens as it goes, the biggest blob at the tip, slanting upward, and at the far end the flames curl up as fire does; the target keeps burning and embers rise after the gout has gone. | Heavy flamer, Flamer, Twin heavy flamer, Hand flamer, Arcane Fireball |
Bio-sprays (bio-spray) | 5 | 12 | 1.2 s | purple always | Pyrovore acid, drool cannons, flamespurts: a wide spray at a flamer's volume, never a stream, with real globs on top (a few big ones, more small ones). They arc, splat and drip; a lime mist hangs. | Acid spray, Venom bolt, Drool cannon, Flamespurt, Bio-acid spray |
Grub guns (grub) · new | 11 | 49 | 1.0 s | purple always | Devourers, fleshborers, deathspitters, spike rifles: small white and green wriggling grubs at very high speed, each leaving the barrel like a cyst bursting (a wet gore splash, not fire). | Deathspitter, Deathspitters with slimer maggots, Devourer, Devourers with brainleech worms, Fleshborer hive |
Spinefists (spinefist) · new | 5 | 13 | 0.8 s | purple always | One snappy shotgun blast per attack (two attacks, two blasts): a tight cloud of fast fragments, and the spikes stay stuck in the target for a split second. | Spinefists, Spinemaw, Barblauncher, Spinemaws, Termagant spinefist |
Spine banks (spine-bank) · new | 4 | 19 | 0.9 s | purple always | Pairs of needles fired symmetrically, outside-in then inside-out, rapid and very fast; the needles stay embedded in the target for a moment. | Stinger salvoes, Spine banks, Impaler cannon, Shardlauncher |
Stranglers (strangler) · new | 7 | 22 | 1.1 s | purple always | One seed flies like a bullet; on impact tendrils grow fast round the target and snap tight, an organic web in green and purple. | Stranglethorn cannon, Barbed strangler, Twin stranglethorn cannon, Tentaclids, Toxinjecter Harpoon |
Venom cannons (venom) · new | 6 | 28 | 1.1 s | purple always · hit-stop | A bullet-shaped slug that clips on the model for a moment, then passes right through at a visible pace; the spray lands behind as green and purple slime on the ground, and the model stays slimed. | Heavy venom cannon, Venom cannon, Rupture cannon, Dire bio-cannon, Bio-cannon |
Bio-plasma (bio-plasma) · new | 3 | 9 | 1.1 s | purple always | Breath weapons: projectile plasma-flame at a flamer's volume in blue, purple and white, the balls swelling as they reach the end, lightning twisting through it; the target is left slimed. | Bio-plasma, Bio-plasma torrent, Bio-plasmic scream |
Bio-plasmic cannons (bio-plasmic) · new | 2 | 8 | 1.3 s | purple always | A fast arc and a big, violent burst on landing (two shock rings, a fireball, debris, lightning, a shake); purple sludge is left all over the model, dripping off it. | Bio-plasmic cannon, Spore mine launcher |
Plague weapons (plague) | 27 | 87 | 1.3 s | natural, army tint | A spray that showers the target in fine droplets on top of the globs until it is soaked; it spreads and thins over the ground as it lands. | Disgusting sneezes, Plague Wind, Blight launcher, Plague spewer, Plague belcher |
Melta and fusion (melta) | 64 | 451 | 1.3 s | natural · hit-stop | The fat beam fires and fades; then the impact point keeps working: molten drips cascade down from where it touched, slow and heavy. Nothing along the path once the beam has gone. | Multi-melta, Meltagun, Inferno Pistol, Twin multi-melta, Inferno pistol |
Plasma (plasma) | 66 | 750 | 1.0 s | natural, army tint | Fast bolts that go straight through the models and off the screen, stuttering for a beat at each model they pass (a fighting-game hit lag) and shaking it; each keeps a small burning hole. | Plasma pistol, Plasma gun, Plasma cannon, Heavy plasma cannon, Plasma caliver |
Lasguns and pistols (las) | 69 | 260 | 0.8 s | natural, army tint | One thin solid line of one colour, on then off, two longer shots; no flicker and nothing at the end. | Laspistol, Lasgun, Multi-laser, Scatter Laser, Lascarbine |
Lascannons and lances (lascannon) · new | 62 | 442 | 1.0 s | natural, army tint | The same blink, thicker and brighter, held longer; a splashy orange heat bloom only where it touches, never along the beam. | Lascannon, Twin lascannon, Laser destroyer, Quad lascannon, Bright Lance |
Dark light (darklight) · new | 7 | 45 | 0.8 s | natural | Drukhari dark lances and blasters: a bolt of darkness edged in violet, and the target caves in on a shrinking ring. | Blaster, Blast Pistol, Dark Lance, Dark lance, Corsair blaster |
Gauss (gauss) | 44 | 123 | 0.9 s | natural, army tint | One zap barrel to target, a jagged green tendril that hangs a beat and fades like lightning seen in the sky; the arcs on the target fade with it. | Starcannon, Eradication ray, Staff of light, Gauss cannon, Twin tesla destructor |
Arc and lightning (lightning) | 21 | 59 | 0.7 s | natural, army tint | Jagged bolts redrawn every frame; the flicker sells it. | Bio-electric pulse, Arc rifle, Neuro disruptor, Neuro Disruptor, Galvanic rifle |
Grav (grav) | 13 | 67 | 1.0 s | natural, army tint | Two rings at once: the muzzle's snaps open small to large while the target's shrinks large to small, so the squeeze reads as one motion; dust kicks up at its feet, a crunch, then release. | Grav-pistol, Grav-gun, Grav-cannon, Grav-flux bombard, Graviton cannon |
Sonic weapons (sonic) | 8 | 32 | 0.9 s | natural, army tint | Rings of sound rolling out; the target shakes side to side. | Blastmaster, Screamer pistol, Sonic blaster, Transonic cannon, Bellow of endless fury |
Radium and phosphor (rad) | 13 | 36 | 1.0 s | natural | Slow glowing motes; phosphor leaves a stain that flickers like a bad lamp. | Phosphor serpenta, Radium carbine, Twin rad cleanser, Phosphor blast carbine, Phosphor torch |
Shuriken, splinter and needles (crystal) | 37 | 207 | 0.7 s | natural, army tint | A hiss of tiny spinning discs and needles, faster and denser than bolts; they stay stuck in the target for a second. | Shuriken Pistol, Shuriken Cannon, Splinter Pistol, Twin Shuriken Catapult, Shuriken cannon |
Pulse weapons (pulse) | 55 | 161 | 0.8 s | natural, army tint | Glowing pulses that spray an area, up and down, as the rotary guns do. | Twin pulse carbine, Burst cannon, Kustom Shoota, Pulse pistol, Flechette blaster |
Shotguns and scatter guns (shotgun) · new | 19 | 56 | 0.8 s | natural, army tint | Shotguns and scatter guns of every army: the spinefist's blast, a tight cloud of pellets a touch slower so the eye can follow, with an orange muzzle flare. | Combat shotgun, Frag cannon, Arbites combat shotgun, Executioner shotgun, Bolt shotgun |
Rail weapons (rail) · new | 12 | 21 | 1.8 s | natural, army tint · hit-stop | It charges at the muzzle and fires a white-hot dart with shock waves peeling off at 45 degrees; the dart sticks in the first model for half a second, the model shaking harder and glowing, then it rips through everything and off the screen. Each model it passed keeps a big molten hole with drips running down it; the line is one colour and fades. | Rail rifle, Heavy rail rifle, Swiftstrike railgun, Railgun, Magna-rail rifle |
Sniper rifles (sniper) · new | 20 | 53 | 1.2 s | natural, army tint | The railgun, small and with no charge: the same lightning-fast dart and shock waves, a stutter at each model, a tiny fading hole, the lingering line. | Sniper rifle, Cult sniper rifle, Radium jezzail, Long rifle, Long Rifle |
Webs and warp-weaves (web) | 16 | 39 | 1.1 s | natural, army tint | The strangler's grip: strands snap onto the target, then stacked spinning triangles turn opposite ways up the model, a corkscrew that pulls tight. | Webber, Death Spinner, Wraithcannon, Graviton singularity cannon, Voidweaver Haywire Cannon |
Helfrost (frost) | 4 | 16 | 1.2 s | natural | Jagged ice shards erupt on the target in steps, a second set a split second after the first, then the lot bursts into flying shards and leaves the model frosted. | Helfrost pistol, Helfrost cannon, Helfrost destructor, Twin helfrost cannon |
Psychic and warp (warp) | 98 | 328 | 1.7 s | natural, army tint | A ball of power gathers in the psyker's hands in shifting colours, then one big orb and three small ones fly. On the hit the model's spirit is knocked out of its body: a full, detailed ghost of it, tethered to the body at first, rises up and back, holds, then dissolves grain by grain into nothing; the body stays grey and lifeless until the run ends. | Lashes of torment, Smite, Psycannon, Psilencer, Rite of Possession |
Grenades (grenade) · new | 20 | 148 | 1.1 s | natural, army tint | Lobbed in a tumbling arc; a punchier blast than a missile's, dust and debris, and the target shaken. | Grenade launcher, Astartes grenade launcher, Fragstorm grenade launcher, Cultist grenade launcher, Arbites grenade launcher |
Missiles (missile) | 143 | 785 | 1.2 s | natural, army tint | Dead straight and very snappy; the smoke lies in an S along the path, stops short of the target and only drifts up and out; the warhead strikes with a white flash inside its own blast, spikes, a shock ring, debris everywhere and a big jolt. | Hunter-killer missile, Missile launcher, Missile Launcher, Havoc launcher, Cyclone missile launcher |
Cannons and artillery (cannon) | 115 | 309 | 1.4 s | natural, army tint · hit-stop | A burst of shells in quick succession landing in front of, behind and on top of the target, each throwing debris up and out, the dust building into one big cloud; a hit-stop on the first. | Death's heads, Demolisher cannon, Fellblade accelerator cannon, Kratos battlecannon, Kannon |
Rotary and heavy guns (gatling) | 110 | 1118 | 0.9 s | natural, army tint | A hose of tracers spraying an area, each round landing somewhere different (further, nearer, left, right, up, down), brass casings spilling out. | Storm bolter, Heavy bolter, Twin heavy bolter, Heavy stubber, Autocannon |
Bolters (bolter) · new | 68 | 585 | 1.0 s | natural, army tint | Bolters fire three slow, heavy rounds, each ending in a small explosion that shakes the target, all cleared before the next volley: a hand cannon, deliberate, not a hose. | Bolt pistol, Boltgun, Combi-bolter, Heavy Bolt Pistol, Twin boltgun |
Autoguns, stubbers and pistols (bolt) | 162 | 504 | 0.8 s | natural, army tint | Autoguns, stubbers, pistols and the rest: today's bullets with a proper flash and a pop. | Combi-weapon, Autopistol, Mechanicus pistol, Slugga, Autogun |
Melee
| Family | Weapons | Units | Length | Colours | What it does | For example |
|---|---|---|---|---|---|---|
Blades (blade) | 328 | 861 | 0.8 s | natural, army tint | The model's own blade: at rest up and forward, a slower backswing, then a strike over a frame or two with a smear, a crescent across the target and a spray of white, red and grey specks; it returns slowly. | Blade of blood, Hunting lance, Attendant's hellblades, Foul balesword, Tiny balesword |
Claws and talons (claw) | 141 | 404 | 0.8 s | natural, army tint | Claws in hand rake three lines; red droplets. A lightning claw stays a claw and crackles (every other loop here shows the crackle). | Twin lightning claws, Ravaging claws, Massive scything talons, Monstrous scything talons, Hideous mutations |
Chain weapons (chain) | 64 | 366 | 0.9 s | natural, army tint | A chainsword in hand whose teeth run along the blade like a running saw while it bites; a fountain of sparks. | Chainsword, Astartes Chainsword, Chainfist, Reaper chainsword, Astartes chainsword |
Fists, hammers and hulls (hammer) · new | 183 | 1340 | 1.0 s | natural, army tint · hit-stop | A hammer or fist comes down with an accelerating swing: a shockwave ring, dust, the target sinks and shakes, a long hit-stop. The benchmark for every melee effect. | Close combat weapon, Armoured tracks, Power fist, Armoured hull, Thunder Hammer |
Power weapons (arc) | 47 | 290 | 0.8 s | natural, army tint | A power sword: an arc flash round the blade on the blow, crackles, sparks. | Power weapon, Power Weapon, Power sword, Master-crafted Power Weapon, Master-crafted power weapon |
Bites and maws (bite) | 65 | 244 | 0.7 s | natural | No swing: a big jaw with two rows of fangs snaps shut over the target, then one or two smaller bites right behind it. A monster's is one massive mouth and a giant crunch that shakes the target. | Seeker tongues, Lashing tongue, Juggernaut's bladed horn, Screamer bites, Diseased claws and teeth |
Force and daemon weapons (force) | 57 | 304 | 0.9 s | natural, army tint | A staff with a glowing head; a sigil stamps on the target and motes spiral off. | Hellforged weapons, Force weapon, Accursed weapon, Paired accursed weapons, Nemesis force weapon |
Plague blades (m-plague) | 20 | 50 | 0.9 s | natural, army tint | A plague blade oozing green as it swings, drips falling off it, a splash on the blow and a puddle left behind; two flies. | Heavy plague weapon, ’Urty syringe, Plaguesword, Flail of corruption, Plague knife |
Burning melee (m-fire) | 4 | 7 | 0.8 s | natural | Orange fire flickers off the blade itself all through the swing, and flares where the blow lands. | Cuttin’ flames, Burning hands, The Fire Axe, Cuttin’ Flames |
Whips and lashes (whip) · new | 17 | 38 | 1.8 s | natural, army tint | Two quick strokes, then a wind-up for a third, heavy one: further back and further out, a thicker lash, and three hit bursts in quick succession where it lands, the target shaking. | Monstrous bonesword and lash whip, Rapture lash, Lasher tendrils, Neural whips, Lashes of torment (melee) |
Match order
First match wins. Shooting: warp → bio-plasmic → bio-plasma → bio-spray → strangler → venom → spine-bank → spinefist → lightning → grub → plague → melta → flame → frost → warp → sonic → web → darklight → shotgun → rail → sniper → plasma → gatling → missile → grenade → lascannon → las → gauss → lightning → grav → rad → crystal → pulse → missile → gatling → cannon → bolter → bolt. Melee: bite → chain → claw → hammer → arc → m-plague → m-fire → force → whip → blade. The rules themselves are in tools/weaponfx.js.
Someday
- Epic mode (T-498): a full-screen battle on a real battlefield once the effects, fates and deaths are in.
- A mini game (T-499): a small run-and-gun with our own figures and effects, for fun.
Built (T-493, 1 Oct)
Batch (a) is in the battle: flamers and the Tyranid families (bio-spray, grub, spinefist, spine bank, strangler, venom, bio-plasma, bio-plasmic), psychic and warp, and webs. The battle draws the gallery's own code: tools/stamp_assets.js lifts it from this gallery into docs/wfxdraw.js at every build, so a round approved here is what the battle shows. Batches (b) to (e) followed the same evening (T-494 to T-497): every family, shooting and melee, is now in the battle, with hit-stop on the heaviest hits and a switch per family under ✨ Effects › Weapon effects.
Two rules on top of the families (1 Oct): every effect comes from a figure that carries its weapon (T-503: a joined character's from the character, the squad's from as many figures as carry it), and a miss at the Hit roll obeys its fate, not its family (T-504): the shot flies only until it would reach the target, short of it, then veers and fades; no family plays an impact for it. A figure whose blows with a weapon all missed swings short of the target, with no contact effect.