Armour layers, height, flanking, cover, falling, the two contests and the surface reaction table. Read out of data/combat/, data/actors/progression.json and data/surfaces/.
Movement is charged against the same pool as everything else. There is no separate move budget, no grid and no free step: a metre walked is a metre not swung. That single decision is what makes position a resource instead of a preamble.
| Gain | When |
|---|---|
| Attribute | on levels ending in 0, 1, 3, 4, 7, 8 |
| Talent | on levels ending in 0, 5 |
| Prepared slots | on levels ending in 0 |
| Ability | on levels ending in 2, 6, 9 |
| Level | Unlocks |
|---|---|
| 15 | Mastery Tier 2 · Mastery tier 2 |
| 20 | Respec Free · first respec is free |
| 35 | Mastery Tier 3 |
| 40 | Second Mastery · second Mastery, at tiers 1-3 only |
| 55 | Mastery Tier 4 · keystones |
| 80 | Mastery Capstone |
| 100 | Ascendant |
A stat block authors five attributes. Everything else — vitality and both armour layers — comes out of this table, which is why the bestiary can print a body from five numbers.
| Stat | Base | Per level | Attribute | Per point | Per point % |
|---|---|---|---|---|---|
| Vitality | 44 | 4 | Resolve | 3 | 1.5% |
| Physical armor | 12 | 1.9 | Might | 2 | 1.5% |
| Ward armor | 12 | 1.9 | Spirit | 2 | 1.5% |
XP to the next level is 8·L² + 30·L + 40, and an award is 34% of the defeated actor's level.
Two armour layers, and they are not two health bars. Physical armour gates the physical crowd control — knockdown, entangle, bleed. Ward armour gates the magical — freeze, stun, fear, charm. Neither reduces damage to the other's school, and neither can be spent to protect against the other. Breaking the right one is what earns you the attempt at the control, not the result.
| Contest | Value |
|---|---|
| Base chance percent | 62 |
| Per attribute point percent | 5 |
| Per level difference percent | 3 |
| Min chance percent | 12 |
| Max chance percent | 92 |
| Physical attribute | Might |
| Ward attribute | Wits |
| Defence attribute | Resolve |
| Prerequisite bonus percent | 22 |
Bleeds, poisons and burns are a softer contest than hard control — they land far more often and are resisted by the defender's resistances rather than by an armour layer.
| Contest | Value |
|---|---|
| Base chance percent | 82 |
| Per attribute point percent | 2.50 |
| Per level difference percent | 1.50 |
| Per resist point percent | 0.60 |
| Min chance percent | 25 |
| Max chance percent | 97 |
| Defence attribute | Resolve |
Going down is not dying. A party member who runs out of vitality drops, and a heal -- or, outside combat, a meal -- puts them back up. Being hit while down is what actually kills, and even then Resolve buys a chance to hold on. The death save is deliberately generous at high Resolve and unforgiving at low: it is the payoff for the defensive attribute, and it is what stops a downed ally from being a formality the enemy mops up for free.
| Rule | Value |
|---|---|
| Death save base percent | 30 |
| Death save per resolve point percent | 2.50 |
| Death save min percent | 5 |
| Death save max percent | 85 |
| Bleed out turns | 3 |
| Stabilise ap cost | 1 |
| Stabilise turns restored | 3 |
| Stabilise reach metres | 2 |
| Revive vitality percent | 20 |
| Resurrect vitality percent | 25 |
Four design rules produce the feel of this game and all four are load-bearing: free-form movement charged against AP, two armour layers gating hard crowd control, surfaces as a separate simulation, and position mattering. This section is the fourth one, in numbers.
Height advantage is normalised to −1…1 and the percent below is what full advantage pays. It is worth three times as much to a bow as to a sword, which is the whole reason the Warden wants the ridge.
| Rule | Value |
|---|---|
| Ranged bonus percent | 30 |
| Melee bonus percent | 10 |
| Ranged threshold metres | 3 |
Casting or shooting with an enemy inside 2.5 metres is a bad idea, and only ranged and magic are punished for it.
| Rule | Value |
|---|---|
| Threshold metres | 2.50 |
| Magic penalty percent | 30 |
| Ranged penalty percent | 25 |
The rear arc is 100 degrees, judged against who the target is currently fighting. A Bulwark gets almost nothing for standing behind someone, because a Bulwark's job was never to be behind them.
| Role | Rear % | Flank % |
|---|---|---|
| Assassin | 70 | 20 |
| Skirmisher | 45 | 15 |
| Stormblade | 35 | 12 |
| Reaver | 30 | 10 |
| Warden | 30 | 10 |
| Bulwark | 8 | 4 |
| Warchanter | 10 | 4 |
| Scrivener | 12 | 5 |
| Wellwright | 12 | 5 |
| Role | Height (ranged) | Height (melee) | Close quarters |
|---|---|---|---|
| Skirmisher | 50 | 15 | -40 |
| Warden | 45 | 12 | -35 |
| Pyromancer | 40 | 10 | -35 |
| Stormcaller | 45 | 10 | -35 |
| Tidecaller | 35 | 10 | -30 |
| Geomancer | 30 | 12 | -25 |
| Necromancer | 35 | 10 | -30 |
| Plaguebearer | 30 | 10 | -25 |
| Druid | 35 | 12 | -30 |
| Riftwalker | 40 | 10 | -20 |
| Inquisitor | 35 | 12 | -25 |
| Bulwark | 10 | 8 | 20 |
| Reaver | 12 | 10 | 25 |
| Stormblade | 18 | 12 | 15 |
| Warchanter | 15 | 10 | 12 |
| Artillery | 55 | 12 | -45 |
| Caster | 35 | 10 | -30 |
| Frontline | 12 | 10 | 20 |
| Bruiser | 12 | 10 | 25 |
| Ranged | 48 | 12 | -38 |
| Controller | 38 | 10 | -32 |
| Support | 28 | 10 | -28 |
| Healer | 25 | 8 | -30 |
| Aggressive | 14 | 12 | 22 |
| Assassin | 35 | 22 | -15 |
| Scrivener | 40 | 8 | -40 |
| Wellwright | 30 | 10 | -25 |
| Rule | Value |
|---|---|
| Safe drop metres | 2.50 |
| Damage per metre | 7 |
| Max damage | 120 |
| Knockdown drop metres | 5 |
Cover is a -35% damage penalty rather than a miss chance. A miss teaches nothing and feels like the game cheating; a smaller number is legible, and it lets the player decide that a poor shot now beats a clean one next turn.
A school is what an ability belongs to; ranks in it are worth 6% each. Nine schools map onto nine damage types.
| School | Damage type | |
|---|---|---|
| Warfare | Physical | ![]() |
| Precision | Piercing | ![]() |
| Fire | Fire | ![]() |
| Tide | Frost | ![]() |
| Storm | Storm | ![]() |
| Stone | Stone | ![]() |
| Venom | Venom | ![]() |
| Arcane | Arcane | ![]() |
| Covenant | Pure | ![]() |
Negatives are the point. A class that is better at everything it touches is a class with no shape, so each of these gives up a school it has no business being good at — and hostiles carry role tags too, so the same table gives an enemy line its character.
| Role | Per school |
|---|---|
| Assassin | Piercing +18%, Venom +12%, Physical -8%, Fire -15%, Stone -15% |
| Skirmisher | Piercing +14%, Physical +6%, Fire -10%, Stone -12% |
| Warden | Piercing +16%, Venom +6%, Physical -6%, Arcane -12% |
| Bulwark | Physical +12%, Stone +6%, Venom -10%, Arcane -12% |
| Reaver | Physical +18%, Piercing +4%, Frost -12%, Arcane -14% |
| Stormblade | Storm +12%, Piercing +8%, Physical +6%, Stone -10% |
| Pyromancer | Fire +18%, Stone +4%, Frost -18%, Physical -12% |
| Tidecaller | Frost +18%, Pure +6%, Fire -18%, Physical -12% |
| Stormcaller | Storm +18%, Frost +6%, Stone -14%, Physical -12% |
| Geomancer | Stone +18%, Fire +6%, Storm -14%, Piercing -10% |
| Plaguebearer | Venom +18%, Frost +4%, Fire -14%, Physical -10% |
| Necromancer | Venom +12%, Arcane +10%, Fire -12%, Physical -10% |
| Riftwalker | Arcane +18%, Storm +6%, Physical -14%, Stone -8% |
| Inquisitor | Pure +16%, Physical +8%, Venom -12%, Storm -8% |
| Warchanter | Pure +12%, Physical +4%, Fire -10%, Venom -10% |
| Druid | Venom +12%, Frost +8%, Fire -14%, Arcane -10% |
| Scrivener | Arcane +16%, Fire +8%, Frost +8%, Storm +8%, Physical -16%, Piercing -16% |
| Wellwright | Arcane +10%, Pure +8%, Stone +6%, Physical -14%, Piercing -14% |
Surfaces are a separate simulation, not a damage-over-time tag on a tile. Water spreads downhill, oil does not evaporate, fire needs something to burn, and every one of them decays on its own clock. 17 surface types, 56 authored reactions between them.
| Surface | Layer | Decay / round | Spreads | Flammable | Standing in it | Leaves behind |
|---|---|---|---|---|---|---|
| Water | Ground | 0.05 | yes | no | Wet | — |
| Blood | Ground | 0.06 | yes | no | Wet | — |
| Oil | Ground | 0.03 | yes | yes | Oiled | — |
| Venom | Ground | 0.07 | yes | yes | Poisoned | — |
| Ash | Ground | 0.10 | no | no | — | — |
| Fire | Ground | 0.22 | no | no | Burning | Ash |
| Ember | Ground | 0.09 | no | no | Burning | Ash |
| Ice | Ground | 0.06 | no | no | Chilled | Water |
| Frost | Ground | 0.12 | no | no | Chilled | — |
| ChargedWater | Ground | 0.09 | yes | no | Wet, Charged | Water |
| ChargedBlood | Ground | 0.10 | yes | no | Wet, Charged | Blood |
| CloudSteam | Air | 0.10 | no | no | Wet, Warm | — |
| CloudSmoke | Air | 0.09 | no | no | — | — |
| CloudVenom | Air | 0.08 | no | yes | Poisoned | — |
| CloudStorm | Air | 0.11 | no | no | Charged | — |
| Bramble | Ground | 0.03 | no | yes | Bleeding | — |
| CloudSpores | Air | 0.12 | no | yes | Poisoned | — |
What happens when one surface meets another. Symmetric rows fire whichever way round the two arrive, which is what stops a combo depending on cast order.
| Standing | Incoming | Order | Ground becomes | Air becomes | Why |
|---|---|---|---|---|---|
| Water | Fire | both ways | cleared | CloudSteam | Fire is quenched, the pool flashes to steam. Order-independent. |
| ChargedWater | Fire | both ways | cleared | CloudStorm | Electrified water flashes off as a live storm cloud. |
| Blood | Fire | both ways | cleared | CloudSteam | Blood boils away; thin steam. |
| ChargedBlood | Fire | both ways | cleared | CloudStorm | |
| Oil | Fire | both ways | Fire | — | Signature ignition: hotter and far longer-lived than open fire. |
| Venom | Fire | both ways | Fire | CloudSmoke | Venom detonates -- fire on the floor, choking smoke overhead. |
| Ice | Fire | both ways | Water | — | Melt. The ice sheet becomes a pool of the same size (conversion retention). |
| Frost | Fire | both ways | Water | — | |
| Ash | Fire | both ways | Ember | — | Ash beds hold heat -- fire dropped on ash becomes long-lived embers. |
| Fire | Fire | one way | Fire | — | |
| Ember | Fire | both ways | Ember | — | |
| CloudVenom | Fire | both ways | Fire | CloudSmoke | Cross-layer: igniting a venom cloud drops burning fallout on the floor. |
| Oil | Water | both ways | Oil | — | Oil floats -- the slick survives, the water does not read as a surface. |
| Ash | Water | both ways | Water | — | Sodden ash -- an ooze. Modelled as Water until an Ooze surface type exists. |
| Venom | Water | both ways | Venom | — | Water only dilutes venom, it does not clean it up. |
| Blood | Water | both ways | Water | — | |
| Ice | Water | both ways | Ice | — | Water poured onto a frozen sheet freezes into it. |
| ChargedWater | Water | both ways | ChargedWater | — | The charge conducts through the new volume -- do not stand downhill. |
| Ember | Water | both ways | Water | CloudSteam | Embers are drowned -- the only reliable way to stop a reignition. |
| Water | Frost | both ways | Ice | — | Freeze a pool into a sheet. Actors already Wet are the intended victims. |
| Blood | Frost | both ways | Ice | — | |
| ChargedWater | Frost | both ways | Ice | — | Freezing insulates -- the charge is lost. |
| ChargedBlood | Frost | both ways | Ice | — | |
| Venom | Frost | both ways | Ice | — | |
| Oil | Frost | both ways | Oil | — | Oil does not freeze. A slick cannot be made safe with frost. |
| Ash | Frost | both ways | Frost | — | |
| Ice | Frost | both ways | Ice | — | |
| CloudSteam | Frost | both ways | Ice | cleared | Cross-layer: steam condenses and freezes, clearing the cloud and glazing the floor. |
| Water | Storm | both ways | ChargedWater | — | The classic. Stunned here is still gated on WardArmor being exactly zero. |
| Blood | Storm | both ways | ChargedBlood | — | |
| CloudSteam | Storm | both ways | — | CloudStorm | Steam conducts -- a storm cloud fills the whole volume. |
| Oil | Storm | both ways | Fire | CloudSmoke | A spark in a slick. Storm is a fire starter, which most players discover late. |
| Venom | Storm | both ways | Fire | CloudSmoke | |
| CloudVenom | Storm | both ways | Fire | CloudSmoke | Cross-layer detonation of a venom cloud. |
| Ice | Storm | both ways | Ice | — | Ice conducts across its whole sheet but is not consumed. |
| CloudSmoke | Storm | both ways | — | CloudStorm | |
| Fire | Storm | both ways | Fire | — | |
| Ember | Venom | both ways | Fire | CloudSmoke | |
| Oil | Ember | both ways | Fire | — | |
| Ice | Oil | both ways | Ice | — | Oil beads off a frozen sheet -- the sheet is what matters underfoot. |
| Ash | Oil | both ways | Oil | — | |
| Ice | Blood | both ways | Ice | — | |
| ChargedWater | Blood | both ways | ChargedWater | — | |
| Fire | Ash | both ways | Fire | — | Ash smothers a fire partially but does not put it out. |
| CloudSmoke | CloudSteam | both ways | — | CloudSteam | |
| CloudStorm | CloudSteam | both ways | — | CloudStorm | |
| CloudVenom | CloudSteam | both ways | — | CloudVenom | |
| Ember | CloudVenom | one way | Fire | CloudSmoke | Cross-layer: a venom cloud drifting over live embers detonates on the round tick. |
| Bramble | Fire | both ways | Fire | — | Deliberately decisive. Persistent living terrain needs a loud, cheap answer or it dominates every encounter that lacks one. |
| Bramble | Water | both ways | Bramble | — | Water feeds it. The one reaction that makes a Tidecaller and a Druid better together than apart. |
| Bramble | Frost | both ways | Frost | — | Frozen over: the thorns stop cutting and become footing instead. |
| Bramble | CloudStorm | both ways | Bramble | — | Wet living matter carries a charge without being consumed. |
| Bramble | Venom | both ways | Bramble | CloudSpores | Venom sours the growth into a spore bloom overhead; the bramble itself survives. |
| CloudSpores | Fire | both ways | Fire | CloudSmoke | Spore detonation: fire on the floor, choking smoke overhead. The Druid's own combo and their worst accident. |
| CloudSpores | CloudStorm | both ways | — | CloudStorm | The storm carries the spores rather than clearing them. |
| CloudSpores | Water | both ways | — | cleared | Rain washes the bloom out of the air. |
| Surface | Move cost × | Gives you |
|---|---|---|
| bare ground | 1 | — |
| Ice | 0.85 | — |
| Frost | 1.15 | — |
| Oil | 1.90 | — |
| Venom | 1.50 | — |
| Water | 1.60 | — |
| ChargedWater | 1.60 | — |
| Blood | 1.25 | — |
| ChargedBlood | 1.25 | — |
| Ash | 1.05 | — |
| Fire | 1.25 | — |
| Ember | 1.25 | — |
| CloudSteam | 1 | — |
| CloudSmoke | 1 | — |
| CloudVenom | 1 | — |
| CloudStorm | 1 | — |
| Bramble | 1.75 | — |
| CloudSpores | 1 | — |


















