Skip to content
Work in progress. These docs describe Spawnite at launch, and some parts are still being built.

Holdfast: guns, cards and career

This page describes the guns a warden fights with in Holdfast, the co-op wave survival, and the coins, elements, cards and career that make a warden stronger.

A warden holds one gun from the fire’s rack, the blaster until they buy another, and holds the trigger to fire it at their rate through the crosshair. The room judges each shot as a ray from the gun’s muzzle, or from the middle of the warden’s body when a target or cover is closer than the barrel, against where the monsters stood on their screen, stopped by the stones, the hearth, the rack, rocks, trees and the ground. A shot passes through the other wardens. Every page draws each warden’s shots in their colour.

Gun What it fires Damage Shots a second Range Price
Blaster Rapid bolts, one monster at a time 10 6 45 m 20
Scattergun A wide cone of 5 pellets, level with the ground, for close work 14 each 1 16 m 80
Rail One heavy shot through a line, 4 monsters past the first 55 1 70 m 80

A gun owns its shape: its pellets and how many monsters it passes through are its own, raised only by its tiers. The cards make any gun stronger: Heavy Rounds and Hair Trigger raise each of the three. A warden holds their gun and no other, so the room refuses a shot from any gun they do not hold; the scene’s Player hands every warden the blaster as the room spawns them, before any of the game’s own systems run.

Upgrades. Each gun has three tiers, and each changes how it shoots, never only its damage. A tier costs 40, 80 and then 140 coins.

Gun Tier I Tier II Tier III
Blaster Hot Barrel: fires a quarter faster Twin Bolts: two bolts a shot, each 30% weaker Drill Bolts: through two more monsters
Scattergun Buckshot: two more pellets a shot Ricochet: a pellet that hits bounces to the nearest monster within 6 m Wild Ricochet: each pellet bounces twice
Rail Long Rail: through four more monsters Deep Rail: through eight more, a whole line Deadeye: weak spots on its line take triple

The room judges each monster on a rail’s line at its own zone, so Deadeye makes a line of heads the rail’s biggest blow: each head takes three times the rail’s damage, and each body the rail’s damage. A bounce deals half the damage of the hit before it and lays no element, so the scattergun keeps its element to a fifth of a dose a pellet. The blaster’s Hot Barrel fires faster, and so lays more of its element a second, as Hair Trigger does. A new gun keeps the warden’s tier less one: a warden with a tier-III scattergun who buys the rail holds a tier-II rail. Buying the blaster back costs 25.

A warden who takes the Lance card fires the lance with the right button, beside their gun: an instant beam the room judges as it judges the guns, 40 damage at 0.75 shots a second, through up to 13 monsters in a line, 60 m long. The card also puts the lance among the weapons they hold. Its own damage and rate are nothing: the warden’s lance stats, which the card fills, make them. Heavy Rounds and Hair Trigger raise the lance too; the gun tiers never do.

Everyone earns every coin. As a monster dies, its coins go to every warden in the room, each share the drop over the crowd factor 1 + 0.6(n − 1), where n counts every warden the room keeps, so each earns about what a solo player would. A warden who is down, sheltered or whose connection dropped earns their share too, and a late joiner earns from their arrival. The share falling short of a whole coin carries to the next, and Midas Touch raises the holder’s own share alone. An elite’s coins are three times its kind’s. Every page draws each warden’s share as gold coins, 0.3 m across, that pop out of the monster, hang a moment, then streak to that warden wherever they run and burst as they land; a warden’s own coins chime a step higher each and count into their purse as they land.

Coins buy five things, each from the room, which checks where the warden stands, the phase and their wallet. The prices are set against 40 coins, what one warden with no Midas Touch earns in an average wave of the first ten in the bot runs:

  1. More cards, on the card screen: after the free card, any other card of the offer at its rarity’s price, 20 coins for a common, 40 for a rare and 80 for an epic, with the card’s key or a click. The pick the room makes for a warden who took none, as the breather closes, is the free card alone and spends nothing.
  2. A reroll of the card offer, with the 4 key or a tap on Reroll in the shop’s bar under the cards, before or after the free card: 10 coins, 10 more for each reroll in the same breather, and 10 again the next. It deals three other cards in place: the old three sweep down and out as the new three deal into the same places, with no travel from the middle and no dim, and the price on Reroll bumps to its next. An element card may come again, since each offer draws it by its own chance, and never rerolls an element’s pick; after the free card, the new three are to buy.
  3. A gun from the rack. Three short stones stand north of the fire, each with its gun turning over it in a shaft of firelight and a tag with its name and price. A warden who walks up to one sees a Use prompt, and buys the gun with E or a tap on the prompt.
  4. An upgrade of the gun in hand, at that gun’s own stand, with E or a tap.
  5. Feeding the fire, beside it, with E or a tap: 10 coins a feed, and E held keeps feeding. Any warden adds to it, and it has no ceiling. The first level takes 30 coins and each level after it 20 more. Each level widens the fire’s ring a metre, from 7 m up to 16 m, and grows the flames. Once fed, the ring heals every warden inside it during waves too: 1.5 health a second for each level, up to 12. Between waves it heals 15 a second at any level.

The rack and the upgrades are open from the first breather, and their prices do the gating: the blaster’s first tier is about one wave’s coins, and a new gun about two. Coins buy at the rack and the fire during a wave as well as between them, and at dawn; cards and rerolls are for the card screen. A stand’s shaft of light burns brighter while a warden’s coins meet its price. A new run takes every coin, gun and level away.

The run’s end, at dawn or on the end screen, names what the team did together, each award for the wardens who earned it, as Left 4 Dead’s and Deep Rock Galactic’s end screens do. An award nobody earned is left out.

Award Who earns it
Best duo The pair of wardens who made the most reactions together
Top reaction The pair, or one warden with their own two elements, who made one reaction most, with its count
Top damage The warden whose hits and elements dealt the most damage
Most revives The warden who got teammates up most often
Last one standing The warden who fought on alone longest, every teammate down, a second at least

Each player keeps a career across runs and rooms: the XP she has earned, the runs she has played and the nights she has won. Her level is worked out from the XP and never kept. During play, a small “LV 4” chip shows it beside her name on her health panel, and beside each warden’s name on the scoreboard, level 1 included, so a team sees one another’s levels; it shows no XP, since XP lands only at a run’s end and at dawn. Both end screens show it in one line under the run’s numbers: her level, “Level up” where the run carried her over one, the XP the run added, and the XP the next level needs. Nothing unlocks with a level yet.

A run gives each warden in it XP from what it already counts:

For XP
Each monster she killed 1
Each wave the circle held while she was in the run 10
Dawn: the night’s fifteenth wave held 100 for the full night

Dawn pays her share of the night: a warden who came with waves already held gets 100 × (15 − waves held before she came) ÷ 15, rounded, so one who came after wave 9 gets 40. A warden who joins while a wave is being fought counts from the wave after it, so one who joins during the fifteenth wave gets nothing for it and no dawn.

Level 2 costs 100 XP, and each level after costs 100 more than the one before: level 3 starts at 300 XP, level 4 at 600 and level 5 at 1,000. A night’s fifteen waves send about 400 monsters for each warden, so a won night gives about 650 XP with its waves and dawn, and takes a new player to level 4.

The room adds the run as it ends, and as dawn breaks, since a player may leave there. A run that goes on into Endless adds only what Endless added at its end. A run counts once she has held a wave of it, and only once: the save keeps the last eight runs counted, so a player who leaves and joins the same run again, even after runs in other rooms, is not counted twice. A night counts as won for a warden whom dawn paid any share. A player who leaves before the end screen keeps what the run had added so far and nothing more. Each time it adds a run, the room asks for a checkpoint, which stores every player’s save within 5 seconds rather than at the next minute’s.

src/save.ts declares the save, which keeps the XP, the runs played, the nights won and the last runs counted from the career trait on her warden, and the scene file re-exports it, as the game page asks of a game with rooms. The room is its only writer: a page draws the career the room streams and changes nothing. The save is the player’s own, so it follows her character into any room of the game. A development room keeps it under the name the page joined with, so open the page with ?name= to keep a career between visits.

Each warden holds an element, and every hit of their guns lays it on the monster it lands on. The element decides what a hit does; the gun decides where it lands. Each has one job and one colour, which its cards, its hits, the marks it builds and its words share.

Element Colour Job What a hit does
Storm Yellow Crowds Arcs from the monster through the monsters nearest it
Ember Orange-red Bosses and brutes Adds burn, which stacks on that monster and ticks harder the more it holds
Frost Ice-blue Control Chills and slows it; at full chill it freezes where it stands

Every gun lays its element at the same strength a second. Each pull of a gun carries a dose, shared among its pellets, and one second of any gun’s fire is one whole dose: a blaster pull carries a sixth, a scattergun pellet a fifth, a rail shot a whole one, and the lance’s pull four thirds, since it fires 0.75 times a second. A gun’s tiers that add pellets share the pull’s dose among them rather than adding to it; only the blaster’s faster fire lays more a second. Each target a shot passes through takes its pellet’s whole dose. Heavy Rounds raises what an element does as it raises a gun’s damage, and Hair Trigger lays more doses a second.

  • Storm. A hit arcs at a chance of three times its dose, so about half the blaster’s hits arc, and a hit of more than a third of a dose arcs that much harder. The arc leaps from the monster to the nearest monster within its reach, then from that one to the next, each taking its damage.
  • Ember. A hit adds burn toward full. A husk, a skitter or a spitter catches full burn from one blaster hit, a brute from six and a colossus from twelve. Burn ticks every half second for a flat amount and a share of the monster’s greatest health, so a colossus burns as hard for its size as a brute; half-full burn ticks at about a third of full. Burn starts to fade 2 seconds after the last Ember hit, a sixth of full each second. A burn’s flame grows from one tongue at the monster’s chest to three over its chest and shoulders as it builds, reaching a little over its head and never wider than the monster, a warden’s own burn crackles a little higher with each rise, and every burn shows its ticks as one small orange number a second over the monster, at most six in the air at once.
  • Frost. A hit adds chill toward full, and a chilled monster walks up to half as fast. At full chill it freezes for its freeze time: it neither walks, turns, strikes, spits nor slams, and its chill starts again from nothing. A brute needs 2.5 times the chill of a husk and stays frozen 0.6 times as long, a colossus 10 times and a quarter as long, a skitter 0.8 times. At level 1 one blaster hit freezes a husk, three a brute, and ten a colossus. Chill fades 1.5 seconds after the last Frost hit.

A warden’s element starts at level 1 with an empty line. Element cards fill the line with points: a common 1, a rare 2 and an epic 4. The element reaches level 2 at 4 points and level 3, its capstone, at 10, and a line stops filling at 10. Each element a warden holds has its own line.

The health panel draws a bar for each line she holds, in its element’s colour: ten points with a notch at 4, the level’s name and numeral, and how many points the next level is away, as “Thunderhead in 4”. Two lines stand side by side, each with its points, as “6/10”. A beat after she takes or buys an element card, its line lights and pops the points it added. Each bar is a meter named “Storm line”, “Ember line” or “Frost line”. Between waves, her other cards sit under the lines in one row of chips: each kind’s picture with the times she holds it, the most held first, five kinds at most and a count of the rest, so a night of thirty cards keeps to one row at any screen size. Level 2 is called out under the banner, with the other calls, by its name and what it does, so the middle of the screen keeps to the aim. The capstone is a ceremony of its own: the screen lights in the element’s colour, rays turn behind its badge, its name lands large over what it does, and its sound plays over the dawn chord. Every teammate sees “Ada reached Thunderhead” at the top of the screen.

Level Name, Storm / Ember / Frost Points
1 Storm / Ember / Frost 0
2 Forked Storm / Wildfire / Deep Freeze 4
3 Thunderhead / Meltdown / Shatter 10
Level Storm: leaps, metres, damage each Ember: burn a dose, full burn a second Frost: chill a dose, seconds frozen
1 2, 5 m, 8 100%, 16 and 2.5% of greatest health 600%, 1.5
2 3, 6 m, 10 120%, 22 and 3.5% 720%, 2
3 4, 6.5 m, 12 140%, 28 and 4.5% 840%, 2.5

The capstones:

  • Thunderhead, Storm III. While a warden fires, a bolt falls from the sky every 3 seconds on the monster they last hit with Storm, or, where that hit brought it down, where it fell: 50 damage to every monster within 2.5 m, and a whole Storm dose to the one it strikes, or where it fell to the monster nearest the place, which arcs and reacts as a hit does.
  • Meltdown, Ember III. A monster whose burn a Meltdown warden fills erupts for 3% of its greatest health, each monster within 3 m takes a quarter of that, and its burn starts again from nothing.
  • Shatter, Frost III. A monster frozen by a Shatter warden that dies while frozen bursts: each monster within 3.5 m takes 15 damage and freezes.

Ember and Frost each build a mark on a monster: blazing at full burn, frozen at full chill. A mark settles a quarter of a second after it is built, a second for the warden who built it, and from then the monster glows in its element’s colour, with a ring on the ground at its feet. Only a settled mark reacts, so a reaction answers the glow rather than landing by chance while two wardens fire at one monster. A blazing mark lasts 5 seconds after the monster was last at full burn, and a frozen one as long as the freeze. A monster wears one mark at a time.

A reaction sets off when a different element hits a monster with a settled mark, or when a Storm arc reaches one. It spends the mark: its glow and its reaction go, and its effect stays, so a frozen monster stays frozen and a blazing one keeps burning. The monster then rests for 4 seconds, in which it neither wears a mark nor reacts again. A hit that builds a mark never spends it.

Reaction Elements What it does
Chain Shock Storm on frozen Lightning leaps from the monster through every frozen monster within 7 m of the last, up to ten, 40 damage each, and spends their marks
Blast Storm on blazing An explosion: 60 damage to every monster within 4.5 m, and 8% of its greatest health to the monster
Steam Cloud Ember on frozen, or Frost on blazing A cloud 3.5 m across for 5 seconds: every monster inside walks half as fast and takes 18 damage a second

A Blast spends every blazing mark it reaches, and a Steam Cloud every mark inside it as it rises, so one reaction is one moment however many marks it takes; a Steam Cloud that rises inside one already standing renews it. A reaction’s damage grows with the damage of the warden whose hit set it off. Every page shows its name where it happened, both wardens’ names in their colours, and how many times the pair has made it this run, as “Chain Shock ×12”. A repeat while the word still stands replaces it with the new count. Until the second element, a warden holds one element, so every reaction takes two wardens.

After the wave-10 colossus is held, each warden holding one element picks a second from the two they lack, in place of that breather’s cards; a warden alone picks theirs after the wave-5 colossus. From then on each of their hits lays both, and their own two elements react with each other. No warden holds more than two, Endless included.

A warden’s own arcs, burns and chills draw at full brightness and their teammates’ dimmer. Marks, reactions and capstones always draw at full, since each asks every warden to answer it.

Each breather deals every warden three different cards from the following deck, each with its rarity, which its frame and the word under it show in one of three colours: stone grey for a common, blue for a rare, and violet and gold for an epic. One card is free: she takes it with the 1, 2 or 3 key, or a click when the cursor is free, and each other card then shows its price and is hers to buy the same way. A warden who takes none gets one of her three free when the next wave opens. A card is a modifier on one of her stats, which makes any gun stronger, or points on the line of an element she holds; a gun’s shape is its own. A new run takes every card and every line away. A reroll deals three other cards for coins, as Coins and the fire says.

The offer is dealt in the middle of the screen with the world dimmed. The cards fly in face down, then turn one after another in rising rarity, so the best card turns last. A common turns with a flick. A rare glows blue through its back and turns with a ring, sparks and a chime. An epic shakes and gathers light for half a second, then bursts with a flash, gold rays, sparks and a chord, and keeps a moving gold and violet edge. The offer then settles at its full size into the lower third of the screen, lifted off the bottom edge, as one panel: its title, such as “Take a card” or “Buy more”, over the cards, with a small Hide and its C key in the corner, and one framed bar under the cards. The bar holds everything the choice needs, as Brotato keeps its materials, its reroll and its Go button together at the item row: her coins on the left, large, bumping as they change; Reroll in the middle, with its price, its 4 key and, where she is short, how many more coins it needs; and on the right the breather’s clock, “Wave 2 in 17”, red over its last five seconds, beside the Ready button and its R key. A phone held upright deals the hand at the top of the screen instead, under the Menu and microphone buttons and above her health panel: its three cards stand in one row as wide as the screen, without their pictures, the title stands left and Hide right, and the banner and the wardens step aside until she folds it. A phone held landscape stands the hand, the element pick among them, in the space right of her health panel. A short screen, such as a phone held landscape, keeps the panel on the bottom edge, leaves out each card’s why line, and hides the wave banner while the bar shows; a narrow one drops the words Reroll and “Wave 2 in” and keeps their icon, price and count. On a touch screen the keycaps are left out, and Reroll, Ready and Hide stand at least 44 pixels tall. As a breather’s deal lands, “Wave 3 cleared” shows over the title for about three seconds; with company, the count of wardens ready stands beside Ready, such as “1/2 ready”; and as the wave starts, an open hand sweeps down and away, and a card made for her flies out of it. The keys take a card at any point of the deal, and a player who asks the system for less motion gets the hand still and face up. Each card shows its number large with the stat it raises, what it does in a sentence, and, on a rare or an epic, why it is bigger, such as “2.4× a common’s +25%”. Each card’s price sits top right: a glowing Free until she takes her free card, then its coins, in its rarity’s colour where her purse meets them and locked, with the card greyed, where it does not. A card she takes or buys is stamped with a check, the dim lifts so the rack and the fire show, and the hand stays while she shops. Each card she takes or buys, free or for coins, then flies out of the hand to where it lands: an element card to its element’s line, any other card to the chips of her cards on the health panel, which light as it lands with a chime that rises with its rarity. A bought card latches over its coins as it leaves, and its price rises off the shop bar’s coin count, which runs down to what is left over 0.3 seconds; the card it leaves in the hand takes a Bought band, her free card a Taken band, and steps back and greys, so the cards still to buy stand out. A card her coins met a moment before and meet no more shakes once, then greys. An element’s pick flies into her panel in the bottom left. The hand gives way under an end screen. The crosshair gives way while the offer is dealt in the middle of the screen and comes back once the hand settles into its place, so she aims while she shops; the element pick while the wardens gather keeps it throughout.

The hand is a shop she can leave, as Risk of Rain 2’s Command menu stays open to come back to. C folds it to a chip at the bottom of the screen, three card backs beside the key, and C or a tap on the chip opens it again, in its place and without the deal, until the wave starts. Readying folds it. Once her free card is taken, it folds by itself 0.8 seconds after a pick, a purchase or a reroll that leaves her coins short of every card left and of the reroll. Folded, the keys 1 to 4 take nothing. The chip’s top card glows gold while her free card waits, the chip lifts once when coins arrive that buy a card or a reroll, and it never opens by itself. Over the breather’s last five seconds the chip counts them down in red. A warden who takes nothing still gets a card free as the next wave opens. When a teammate is dealt an epic, her row on the scoreboard flashes, and every other page names it under the scoreboard for about two seconds.

A card whose step is an amount is dealt rare about one time in five and epic about one in seventeen, and the rest common. A rare card’s step is 1.6 times a common’s, and an epic’s 2.4 times: a rare Heavy Rounds adds 24% damage, an epic one 36%. A warden who buys a card or two a breather takes thirty or more a night, so each step is small. A room bot plays that warden: after its free card it buys the rarest card it can pay for, an element card first, one a breather and two from wave 5, once its purse holds the price past what it saves for at the rack. The Lance is always common, and Midas Touch always rare.

Card What it does, as a common Most per run
Heavy Rounds +15% damage, her element’s among it 14
Hair Trigger +12% rate of fire 14
Marksman +25% on each of her weak-spot hits 14
Attunement +25% damage of her element alone: arcs, burns and bursts 14
Fleet Foot +7% speed 8
Iron Heart +15 greatest health, and heals 15 14
Midas Touch +25% on her own coins, a rare that pays off over the night 2
Second Wind Heals 1.2 health a second 8
Field Medic Gets a downed warden up 1.6 times as fast 3
Lance The lance, on the right button 1

Each element has its element card, Storm Surge, Ember Surge and Frost Surge, which fills its line by the points its rarity sets, as Levels says. An offer holds the element card of each element a warden holds below its capstone at a chance of 70%, in a slot of its own, and stat cards in the rest, so she never sees the card of an element she lacks. At about a point a breather, a warden who takes the element card whenever it is offered reaches level 2 around wave 5 and the capstone around wave 12, the medians of 301 seeded nights in the lines test.