Combat
Combat is triggered by movement through the world and resolved through a turn-based system. Each turn ends as soon as every standing player has submitted, or after 10 seconds, whichever comes first — the timer is a limit on how long one player can hold up a fight, not the pace of it.
Encounter Triggers
Each move through the world has a 6% base chance to trigger an encounter — roughly one fight every seventeen steps. Encounters only trigger while your stamina is above 0.
When one triggers:
- Monsters are chosen to suit the biome you are in and how far out you are
- The fight is opened, and everyone standing on the tile is in it
- Anybody else in the sector is told there is a fight there
- The turn opens, with a 10-second limit on it
Turn Resolution
Each turn follows this flow:
- Action submission - Players have 10 seconds to submit. Once every standing player has submitted, the deadline is brought forward to a quarter of a second and announced again, so nobody is told a turn ended while their screen still showed time on it. Monsters are never waited for — theirs are chosen at the moment the turn resolves, which is why resolving early takes nothing away from them
- Idle fallback - Actors who didn't submit get an
idleaction - Sort by effective reflex - Actions are ordered by reflex minus reflex debt, with submission time breaking a tie
- Resolve sequentially - Each action is processed in order; dead actors are skipped
Actions
| Action | Description |
|---|---|
| Attack | Physical attack using a technique. Requires a technique and target. |
| Magic | Magical attack using a technique. Costs mana. Requires a technique and target. |
| Run | Escape attempt. Reflex roll vs highest enemy reflex roll. |
| Items | Use an item in combat. The user acts last in the turn regardless of reflex. |
| Idle | No action submitted (automatic fallback). |
Using an item
The cost of using an item is the turn order: an item action goes to the back, so every other actor resolves first however slow they are. The item is consumed when you submit, not when the turn resolves.
Charging reflex debt for it was tried and rejected. Debt never fades on its own — the only thing that pays it down is attacking with a kinetic technique — so a flat charge cost two turns of attacking to clear, and a magic or density build had no cheap way to clear it at all. A one-turn cost that every build can pay beats a lingering one that some cannot.
An item that should cost more than the turn order carries that cost itself, and can tell whether you are in a fight — so a thing that is cheap to use while walking can be dear to use mid-fight. Reflex debt is the exception: it exists only inside a fight, so nothing an item does can reach it. Health, mana and stamina it can.
Hit Resolution (Physical)
Physical attacks use a D12 die roll system:
- Hit chance =
0.70 + (effectiveReflex - defenderReflex) x 0.02, clamped to[0, 1], whereeffectiveReflex = attackerReflex + kinetic/10 - density/10. Below0.30the blow is a guaranteed miss - A random roll lands the blow when it comes in at or under that chance
- Base damage =
weight x (1 + strength/100), whereweight = |caloric| + kinetic + |density| + cohesion— the bipolar axes are priced by magnitude, so a cold or diffuse attack costs what its hot or dense mirror does. Strength scales the technique, it does not multiply it: the weight is the damage, and strength adds a percent per point - Critical hits need a hit chance above
0.95; the excess above that is the crit chance, and a crit applies a 1.5x multiplier - Mitigation applies based on elemental properties vs defender resistances, modified by attacker intelligence/strength and defender fortitude/intelligence
Equipment Contribution
Socketed affinities reach combat through the slot holding them:
| Slot | Contribution |
|---|---|
WEAPON |
damageMultiplier x= 1 + 0.05 x (sum of all four affinities) |
ARMS |
damageMultiplier x= 1 + 0.02 x density |
HEAD, TORSO, LEGS |
Resistances, 0.02 per point of the matching affinity |
SHOULDERS, FEET |
reflexBonus += kinetic, raw |
The damage multiplier floors at zero, so a strongly diffuse shard in ARMS cannot invert the attack.
Hit Resolution (Magic)
Magical attacks bypass the hit roll entirely but cost mana:
- Mana cost =
calculateMagicMpCost(techniqueWeight)(scales with technique weight) - If the caster lacks mana, the spell fails
- Base damage = formula based on
techniqueWeight * intelligence - Mitigation applies similar to physical but weighted toward intelligence stats
Reflex Debt
Physical attacks accumulate reflex debt on the attacker:
reflexDebt = (density / 2) - (kinetic / 4)
- High density techniques are heavier, slowing the attacker on subsequent turns
- High kinetic techniques are lighter, partially offsetting the penalty
- Burden multipliers further increase debt
This creates a tactical trade-off: heavy techniques hit harder but make you slower.
Run Attempts
To escape combat:
- The runner rolls
reflex - limp + desperation + D12 - Each alive enemy rolls
reflex + D12 - Escape succeeds if the runner's total exceeds the highest enemy total
Ties lose: the runner must be strictly higher.
Desperation
Consecutive failed attempts make the next one likelier:
desperation = min(8, consecutive failed escapes x 2)
Two points per failure, and it stops at eight — so leaving is never a certainty however many times you have tried.
Without it the roll is memoryless: reflex 0 against reflex 4 escapes 19.4% of the time, which can leave a character failing to escape for a dozen turns running. The count resets on a successful escape, and on any other action — desperation is consecutive, so an actor that attacked, used an item or idled in between starts again from zero.
A player pays for it in stamina, point for point. The charge lands on the attempt, not on getting away, because the roll used the bonus either way. A player can only be as desperate as it can afford: with 3 stamina left the bonus is 3 however many times it has already failed, and the balance is never driven below zero. Monsters have no stamina and get the bonus unpriced — the limp penalty is what works against them.
Limp
A monster's escape roll is penalised in proportion to the health it has lost:
limp = round(fractionOfMaxHpLost * MONSTER_LIMP_ESCAPE_PENALTY)
The penalty reaches 6 at death's door. A healthy monster leaves as easily as before; a nearly dead one rarely gets away, so winning a long fight is not rewarded with watching the kill walk off. Players are not slowed — whether to leave is their decision, and their own injuries are their business.
Giving up
A monster that has dealt no damage for five consecutive turns tries to leave, rolling the same escape a player rolls. A monster that escapes still pays experience for the damage done to it, but drops nothing — it left with what it was carrying.
Escaping is resolved in turn order
A unit that gets away earlier in a turn can neither act nor be struck for the rest of it. Escape beats a blow that lands after it, so nothing can both escape and die in the same turn, and the reward pool never pays for both.
Escaping moves you
A character that gets away is pushed one tile in a random direction from where the fight was. Anything that depended on the tile it was standing on — resting in a Meditation Sanctum, above all — needs walking back to.
XP Calculation
After combat, XP is distributed to surviving players:
base xp = (120 x enemy levels x sector multiplier x speed bonus) / (your level x 20)
Where:
- enemy levels — the summed levels of everything that died
- sector multiplier —
max(|sector x|, |sector y|), so further out pays more - speed bonus —
max(20, 40 - turns): 39 at one turn, floored at 20 by turn 20 - your level — taken at the fight's start, and it divides
XP is then split proportionally by damage contribution. The player who lands the killing blow receives an additional 5% bonus, calculated on the base rather than on that player's share.
The enemy levels count everything that died or escaped — a monster that gives up still pays for the damage done to it, though it takes its drops with it. A unit must never appear in both lists: one that escaped and was killed in the same turn would be paid for twice, so anything that escapes is kept out of every later action in that turn.
What the formula does not contain
A monster's HP is not a term. It appears only as the divisor of the damage share, which is 1.0 for a solo fight — so two monsters of equal level pay equally whether one has 70 HP and the other 100. Extra HP only lengthens the fight, which reduces the payout through the speed bonus. A tanky low-level monster is strictly worse value than a small one.
Two consequences worth stating plainly, because nothing in the client surfaces them and three kills are enough to draw the wrong conclusion from:
- Your level divides. The same monster pays half at level 2 what it paid at level 1. This is the pressure to move outward, and it is arithmetic rather than difficulty.
- The speed bonus floors at 20 turns.
max(20, 40 - turns)ranges from 39 down to 20, so a one-turn kill is worth nearly double a twenty-turn one, and past turn 20 there is nothing further to lose.
Worked example — three level 1 kills in sector 0:0, all solo, all with the killing blow:
| Monster | HP | Turns | Player level | base | Payout |
|---|---|---|---|---|---|
| Rootbound Giant | 100 | 22 | 1 | 120 | 126 |
| Thorn Sprinter | 70 | 22 | 2 | 60 | 63 |
The Sprinter paid half the Giant despite being the smaller monster, entirely because the player had levelled in between.
Death
When a player's HP reaches 0:
- The player is marked as DEAD
- Death messages are broadcast to other players
- The character cannot be played further
Death is permanent.