Skip to content

Plasma and frontier laser guns - #540

Draft
Jackriip wants to merge 78 commits into
masterfrom
feature/plasma-weapons
Draft

Jackriip wants to merge 78 commits into
masterfrom
feature/plasma-weapons

Conversation

@Jackriip

@Jackriip Jackriip commented Nov 12, 2026 •

Copy link
Copy Markdown
Member

Adds two plasma guns, two frontier laser guns, a refillable plasma flask, and plasma pirates.

Builds on feature/hitscan-lasers. That branch's commits are included here, so merge it first.

Guns

Gun Fires Where it comes from
Kestrel laser pistol 20-damage laser, 20 shots per cell Outfitter, 900 cr
Hornet laser SMG the stock hitscan laser, full auto Black market, 3,500 cr
Cinder plasma pistol 32-burn plasma bolt Outfitter at yellow rep, 2,000 cr
Furnace plasma rifle 45-burn plasma bolt, two-handed Black market, 5,000 cr plus a voucher; red-zone loot
Old Furnace Furnace variant Rare drop from two red-zone pirate bosses only

How plasma works

  • Bolts:
    • fly at 10 tiles/s
    • can't be reflected
    • are stopped by glass, which they damage
    • ignore canisters
  • Burns, not fire: a hit never sets anyone alight. Bolts carry a high wound bonus (pistol 10, rifle 20), so hits cause real tg burn wounds: an unarmoured rifle hit gives at least a moderate burn about three times in four, and repeat hits on one limb reach severe and critical. A bolt still ignites real plasma or other fuel gas it passes through or hits.
  • Limb loss: an arm or leg melts through tg's burn dismemberment (no blood spray, no flying limb) when it was already hurt (10+ damage) before the bolt and is left within 10 (pistol) or 20 (rifle) of its damage cap, or, for the rifle, when it already carries a critical burn. No bolt melts a healthy limb in one hit: it takes two rifle bolts on the same limb, two or three pistol bolts. Heads and chests never melt.
  • Structure damage: bolts break structures and doors faster (pistol x1.5, rifle x2): a shuttle window takes 4 pistol or 2 rifle bolts, an airlock 8 or 4, a table 3 or 2. Grilles and blast doors still shrug them off. Mechs, turrets and other machines take normal damage, and walls take none.
  • Ammo:
    • Guns run on a plasma flask: a plasma sheet adds 20 mol, ore 10, and a full flask holds 60.
    • The flask swaps like a magazine and works with no recharger.
    • The gun's chamber can't be charged by anything except a flask: rechargers, inducers, APCs, cell-charging slimes and plants are all refused.
  • Furnace heat:
    • The rifle heats with each shot and cools from the air around it.
    • In vacuum it overheats: it vents plasma gas and takes damage.
    • Using it in hand vents on purpose.
    • The coil glows in steps as it heats.
  • Turrets: plasma guns can't be put in turrets or emitters.
  • Pirates: yellow- and red-zone pirate crews can carry the Cinder, and red-zone crews the Furnace. Two red-zone bosses carry Furnaces.

Effects

  • Hits on people: a hit bursts into molten green slag. Ordinary hits alternate between a molten splatter and a flash with a spreading ring. A hit that kills or leaves a critical burn plays a burn-through instead, spraying out the far side of the body. Globs stick to the body, move and turn with it, and cool away in about 2.5 s. The flash starts as the bolt reaches the body, with a soft bloom and a small light on the victim.
  • Melting limbs: a melted arm or leg heats up, sags and runs off in drips into a growing pool, then the stump bubbles and cools to a seared stump. The pool sets into slag that stays until it's cleaned (one per tile, 150 at most). The jumpsuit sleeve burns away at a melted arm. There's no blood splatter, though tg's blood loss still happens. Held items and shoes melt with the limb, then fall to the floor beside the feet. If the victim moves mid-melt, the limb goes with them and later drips land under them.
  • Shields: a held shield blocks bolts at its normal chance and takes the damage; the block shows a plasma splash on the shield instead of the yellow block star.
  • Bolts carry a moving green light.
  • Impacts look different on walls, glass and armour.
  • Hit spots on walls and floors glow green, cool to char and leave soot that stays until it's cleaned (soot is capped at 300, glows at 40 per z).
  • A bolt that misses fizzles out at the end of its range.
  • The Furnace vents with a puff.
  • Each gun has its own fire sound, plus a distant version for listeners 18–40 tiles away. Plasma hits on people, burn-throughs and limb melts have their own sounds.

Media

Recorded in a real client at real speed, four facings.

Hits on people (splatter, flash and ring, burn-through):
bursts

Melting limbs (arm with gloves and a held crowbar, leg, lying, walking off mid-melt):
melt arm
melt leg
melt lying
melt walk

Shield block and wall/glass hits in the dark:
shield
wall and glass

Assets

The gun sprites and the plasma, RCW and laser pistol sounds are from Mojave Sun (CC BY-NC-SA 3.0). The bolt, effect, burst and melt sprites, and the plasma hit, burn-through and melt sounds, are new. Each file's source and licence is listed in voidcrew/modules/plasma_weapons/icons/attributions.txt and sound/attributions.txt. There's a new player wiki page at wiki/content/plasma-and-laser-guns.md.

Also in this PR

__byond_var_id_padding.dm (the same file the hyperviolence branches carry) so the CI build stays clear of DM's broken variable id 65535.

Not playtested

It compiles cleanly under the normal and CI define sets, and the plasma unit tests pass. Every effect, burst and melt was recorded in a real client in all four facings. Still needs a human playtest:

  • how dodging bolts feels
  • how fast the Furnace heats up
  • how often limbs melt, and how burn wounds feel to treat
  • whether vented plasma catches fire in room air
  • the near-miss hiss, distant fire, hit, burn-through and melt sounds
  • the short client hitch the first time a client sees a melt

Laser guns, laser NPCs and laser turrets now fire tg's hitscan beam with the
existing laser tracer instead of a travelling bolt. Damage is unchanged.
Disablers, X-ray, pulse, emitters, the ship defense turret, the accelerator
cannon, laser eyes and mech lasers stay bolts.
…types, red-zone Old Furnace roll, laser empty sprites
… body

The splash states are six 0.1 s frames, but the splash lived 0.5 s, so the
last frame (the cooling pane glow on glass, the last droplets on walls) never
showed. Splashes now live 0.6 s.

The flesh splash's steam came from the shared steam pool, whose holder draws
above every mob. A bolt hitting the far side of a body put its steam over the
chest while the splash itself was hidden. The steam now uses its own pool whose
holders take the splash's layer.
tg's range-out hop leaves a projectile a tile less twice its overshoot short
of where it ran out, so the gutter-out appeared up to a tile behind the bolt's
last drawn spot. The gutter now adds that shortfall back along the bolt's path.

The wisp named a state the copied projectile icon does not have, so it never
drew, and the switch to it flashed the bolt's emissive core upright for a
frame. The core, light, icon and transform now change together in one update,
the wisp uses the effects icon, and it fades in its own frames instead of
being faded a second time.
Hits no longer add fire stacks. Bolts carry higher wound bonuses so they
leave real burn wounds, melt a hurt arm or leg (the rifle also one with a
critical burn, never a healthy limb in one hit), and break structures and
doors faster. The pistol bolt goes from 30 to 32 damage to keep its time to
kill without the fire.
The ball now forms and swells in front of the bolt: the bolt shows only
after the swell, starting at the ball, and catches up to the real shot.
A flash lights the hands under the ball, a small green light sits on the
ball (it still shows when the body hides the ball facing north), and the
ball and ring glow in the dark. The ring opens a pixel ahead of the ball
along the shot. Transparent edge pixels carry the ball's colour so no
dark fringe shows on smoothed clients.
# Conflicts:
#	voidcrew/modules/plasma_weapons/icons/attributions.txt
A hit that melts a limb plays the burn-through burst and its sizzle.
Bolts sear 1.6 blood flow so a fresh moderate cut closes.
The ash test uses a slagged plasma critical and checks a tg critical alone no longer melts.
The slag pick test counts the tool's own brute instead of reading the limb.
The slag bead is tinted black and green.
A fresh bolt on a still-hot wound restarts the glow from full heat, so the
glow no longer goes out while the slag is still cooking. Partial slag removal
(shedding, picks) no longer rebuilds the victim's overlays every tick. Wound
sprites only draw on human-shaped limbs, not monkeys. The pick test checks the
slag bead has no materials, grind or juice results, or reagents.
The glow objects are made and animated in the same tick, before the client
has drawn them, so the client began the colour ramp from its last key (deep
green) and brightened instead of cooling. Each track now opens with a
zero-time key holding the starting colour, for the glow and its emissive.
The bolt's copy now sits in the real bolt's vis_contents and queues its
offset with each of the bolt's moves, so it holds at the ball, closes on
the bolt at 1.4x its speed and hands over only after lying on it for two
ticks. The real bolt is hidden by its icon, not its alpha, so a hit fades
both together. Shot north, the bolt shows once its tail clears the head.
The ball and ring draw above the lighting in front of the body, out of
the ambient-occlusion shadow that darkened the floor around them. The
bolt's light grows on the copy from the pinch light's size to its own.
…ep green, fading and pulsing the whole way down
…he molten off as slag

A blocked bolt now bursts flat on the shield's own pixels for the holder's facing and hand: molten coats
the shield, runs down, beads on the lower rim and drips to the floor as cooling slag, gone in about two
seconds. Shots the shield meets in view draw over the holder; shots from behind or with the body in the
way draw under the holder, bolt included. Riot shields, bucklers and energy shields each have their own
look; the coat comes off if the holder turns or lets go of the shield.
…lasma wounds, and sound slots for custom sounds
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant