Combat
Every roll happens on the server. The client only sends “I want to attack this monster”; the server decides what happened.
Hit resolution
Section titled “Hit resolution”Attacks roll an exploding d20:
roll total + attack bonus > target Guard → hitroll total + attack bonus ≤ target Guard → missNote it’s strictly greater. Rolling exactly the target’s Guard is a miss.
Attack bonus:
- Player =
floor(level / 2)+ your STR modifier + weapon enchant+N - Monster = level (not halved) — steeper than the player curve, because
player Guard climbs from gear rather than level. A CSV
attackBonusinmonsters.csvoverrides the default, and the place attack bonus below stacks on top of whichever value applies.
Place attack bonus
Section titled “Place attack bonus”Player Guard has no ceiling — gear and enchants can push it arbitrarily high — but monster attack bonus is capped at level 20, and a 28-point gap can’t fit inside a single d20’s window. So difficulty isn’t scaled through the monster itself, it’s scaled through where you fight:
Dungeons: bonus = max(0, depth − 5) × 3Surface: bonus = max(0, distance from town − 300m) / 20m- Monster level, HP, damage, and XP are all untouched — only the attack bonus changes.
- Safe zones keep their existing difficulty: Old Crypt’s first 5 floors and the 300m ring around town both sit at bonus 0.
- Deep dungeon floors and remote wilderness get noticeably harder as a result — enchant scrolls (see Enchanting) go from a nice extra to the price of admission out there.
Exploding d20
Section titled “Exploding d20”Roll a d20. On a 20, roll again and add it. If that roll is also 20, add again (up to 5 extra rolls — a total of 120 already beats any Guard).
Roll 13 → total 13Roll 20, 10 → total 30Roll 20, 20, 4 → total 44Why. A flat “natural 20 always hits” rule floors hit chance at exactly 5% — an artifact of the die having 20 faces, not a balance choice: a kobold would land a hit on a fully plate-armored player once every twenty swings no matter how much Guard you stack. The exploding die instead shrinks the odds the further short you are, without ever flooring at zero: every time the gap crosses another 20 points, the chance is cut by another 1/20. A kobold (+1) hits Guard 40 just 0.25% of the time — about once every 400 swings, or 13 minutes at its 1.9s attack cooldown. A natural 1 gets no special treatment.
Hit chance
Section titled “Hit chance”Columns are the target’s Guard, rows are your total attack bonus.
| Attack bonus | Guard 8 | Guard 9 | Guard 10 | Guard 11 | Guard 13 | Guard 15 |
|---|---|---|---|---|---|---|
| +0 | 60% | 55% | 50% | 45% | 35% | 25% |
| +1 | 65% | 60% | 55% | 50% | 40% | 30% |
| +2 | 70% | 65% | 60% | 55% | 45% | 35% |
| +3 | 75% | 70% | 65% | 60% | 50% | 40% |
| +4 | 80% | 75% | 70% | 65% | 55% | 45% |
| +5 | 85% | 80% | 75% | 70% | 60% | 50% |
| +6 | 90% | 85% | 80% | 75% | 65% | 55% |
| +7 | 95% | 90% | 85% | 80% | 70% | 60% |
| +8 | 100% | 95% | 90% | 85% | 75% | 65% |
| +9 | 100% | 100% | 95% | 90% | 80% | 70% |
| +10 | 100% | 100% | 100% | 95% | 85% | 75% |
Hitting each monster
Section titled “Hitting each monster”Look up your total attack bonus (half your level, plus your STR modifier):
| Monster | Guard | +0 | +2 | +4 | +6 | +8 |
|---|---|---|---|---|---|---|
| Kobold | 8 | 60% | 70% | 80% | 90% | 100% |
| Goblin | 9 | 55% | 65% | 75% | 85% | 95% |
| Stalker | 10 | 50% | 60% | 70% | 80% | 90% |
| Female Orc | 10 | 50% | 60% | 70% | 80% | 90% |
| Orc | 11 | 45% | 55% | 65% | 75% | 85% |
| Goblin Chief | 11 | 45% | 55% | 65% | 75% | 85% |
| Hobgoblin | 12 | 40% | 50% | 60% | 70% | 80% |
| Gnoll | 13 | 35% | 45% | 55% | 65% | 75% |
| Orc Warlord | 13 | 35% | 45% | 55% | 65% | 75% |
| Bugbear | 14 | 30% | 40% | 50% | 60% | 70% |
| Forgotten Dead | 14 | 30% | 40% | 50% | 60% | 70% |
| Ogre | 15 | 25% | 35% | 45% | 55% | 65% |
| Lizardfolk | 15 | 25% | 35% | 45% | 55% | 65% |
| Troll | 16 | 20% | 30% | 40% | 50% | 60% |
| Stone Golem | 17 | 15% | 25% | 35% | 45% | 55% |
| Ogre Warlord | 17 | 15% | 25% | 35% | 45% | 55% |
| Cyclop | 20 | 5% | 10% | 20% | 30% | 40% |
| Skeleton | 20 | 5% | 10% | 20% | 30% | 40% |
| Skeleton Warrior | 24 | 4% | 5% | 5% | 10% | 20% |
| Skeleton Knight | 32 | 2% | 3% | 3% | 3% | 4% |
Monsters hitting you
Section titled “Monsters hitting you”The other direction, by your Guard (DEX base plus equipment):
| Monster | To-hit | Your Guard 10 | Your Guard 14 | Your Guard 18 | Your Guard 22 | Damage on hit |
|---|---|---|---|---|---|---|
| Kobold | +1 | 55% | 35% | 15% | 5% | 1d4 |
| Goblin | +2 | 60% | 40% | 20% | 5% | 1d4 |
| Stalker | +3 | 65% | 45% | 25% | 5% | 1d6 |
| Orc | +4 | 70% | 50% | 30% | 10% | 1d6 |
| Female Orc | +4 | 70% | 50% | 30% | 10% | 1d6 |
| Hobgoblin | +5 | 75% | 55% | 35% | 15% | 1d8 |
| Goblin Chief | +5 | 75% | 55% | 35% | 15% | 1d8 |
| Gnoll | +6 | 80% | 60% | 40% | 20% | 2d6 |
| Bugbear | +7 | 85% | 65% | 45% | 25% | 2d6 |
| Ogre | +8 | 90% | 70% | 50% | 30% | 2d8 |
| Forgotten Dead | +8 | 90% | 70% | 50% | 30% | 3d6 |
| Troll | +9 | 95% | 75% | 55% | 35% | 2d10 |
| Stone Golem | +10 | 100% | 80% | 60% | 40% | 2d10 |
| Orc Warlord | +10 | 100% | 80% | 60% | 40% | 2d8 |
| Ogre Warlord | +10 | 100% | 80% | 60% | 40% | 2d8 |
| Lizardfolk | +13 | 100% | 95% | 75% | 55% | 3d6 |
| Cyclop | +15 | 100% | 100% | 85% | 65% | 3d8 |
| Skeleton | +20 | 100% | 100% | 100% | 90% | 6d8 |
| Skeleton Warrior | +20 | 100% | 100% | 100% | 90% | 6d8 |
| Skeleton Knight | +25 | 100% | 100% | 100% | 100% | 6d12 |
Stacking Guard pays off very directly — within the attacker’s plain d20 range, each +1 costs them 5% hit chance. Past that range the exploding die takes over, and the odds drop much faster than 5% per point since each extra 20-point band costs another 1/20. A full plate set (19 Guard total) plus an armor enchant scroll makes you nearly unhittable by low-level monsters, but deep-dungeon monsters keep pace better since their attack bonus tracks their level directly.
Damage
Section titled “Damage”Damage is only rolled on a hit. Dice notation is {count}d{sides}:
2d6 → roll two six-sided dice and sum (2–12)Player melee adds your STR modifier.
Weapon damage
Section titled “Weapon damage”| Weapon | Damage | Min | Avg | Max | Weight |
|---|---|---|---|---|---|
| Great Sword | 2d8 | 2 | 9.0 | 16 | 6 kg |
| Steel Longsword | 1d10 | 1 | 5.5 | 10 | 4 kg |
| Iron Sword | 1d8 | 1 | 4.5 | 8 | 3 kg |
| Notched Iron Sword | 1d8 | 1 | 4.5 | 8 | 3 kg |
| Morningstar | 1d8 | 1 | 4.5 | 8 | 5 kg |
| Greatclub | 1d8 | 1 | 4.5 | 8 | 10 kg |
| Worn Iron Sword | 1d6 | 1 | 3.5 | 6 | 3 kg |
| Spear | 1d6 | 1 | 3.5 | 6 | 4 kg |
| Dagger | 1d4 | 1 | 2.5 | 4 | 1 kg |
| Goblin Sword | 1d4 | 1 | 2.5 | 4 | 2 kg |
| Small Sword | 1d4 | 1 | 2.5 | 4 | 1.5 kg |
| Torch | 1d4 | 1 | 2.5 | 4 | 1 kg |
| Worn Torch | 1d4 | 1 | 2.5 | 4 | 1 kg |
| Bow | 1d1 | 1 | 1.0 | 1 | 2 kg |
The STR modifier applies to every hit, so it lifts low-damage weapons proportionally more: STR 18 (+4) with a Dagger (1d4, average 2.5) actually averages 6.5 — 2.6× the base.
Ranged weapons (protocol v53)
Section titled “Ranged weapons (protocol v53)”A weapon can declare three extra fields: range (meters; absent means melee,
using the server’s fixed 2m reach), rangedAbility (which ability replaces
STR for the hit and damage bonus), and hands (how many hands it occupies —
2 seals the off-hand too). The Bow is the first weapon to use any of
them: two-handed, 10m range, hit and damage driven by DEX.
- Range is gated on
max(melee reach, weapon range)— walls, closed doors, and furniture block a shot the same way they block a swing. Fences don’t block a shot — an arrow flies straight over one (protocol v69), though fences still block movement and melee attacks. An attack beyond range but within the 10m provoke distance only wakes the target; it deals no damage. - Chasing a target stops at the weapon’s own range and fires from there — there’s no kiting room.
- A landed shot shows a visible arrow in flight (a fixed 30 m/s, re-aiming every frame to guarantee it reaches the target’s current position). A miss keeps its original heading and flies 3m past before vanishing.
The bow’s own die is a token (1d1) — the real damage comes from the arrow,
and the two dice roll together, the same path a monster takes when it adds
its own die to a wielded weapon’s:
| Item | Dice | Average | Note |
|---|---|---|---|
| Bow | 1d1 | 1.0 | The bow itself — sets range and ability only |
| Iron Arrow | 1d6 | 3.5 | Combined average 4.5, close to Iron Sword (1d8) |
| Steel Arrow | 1d8 | 4.5 | Combined average 5.5, close to Steel Longsword (1d10) |
The bow needs arrows to fire: items.csv’s ammoKind pairs bow and arrow by
sharing the same name (arrow); a weapon without ammoKind costs nothing to
fire, so melee weapons are untouched. Arrows stack in your bag, don’t take an
equip slot, and can’t be enchanted.
- Equipping a bow with no valid selection yet auto-picks the strongest stack in your bag.
- Manually picking a cheaper arrow is never overridden just because you pick up a better one.
- Running the chosen stack dry auto-drops to the next-strongest arrow; an
empty bag rejects the attack (
OutOfAmmo) and stops auto-attack too, so it doesn’t spam a rejection every cooldown.
Equipping a hands: 2 weapon (only the bow, for now) unequips your off-hand
item to your bag and refuses any off-hand equip while worn.
The Guard scale
Section titled “The Guard scale”Guard is NetHack’s AC inverted — higher is better.
| Guard | Meaning |
|---|---|
| 0–7 | Barely defended |
| 8–9 | Light defence |
| 10 | Ordinary |
| 11–13 | Solid |
| 14+ | Heavy armor and up |
Against NetHack: Guard = 10 − AC.
Experience
Section titled “Experience”XP per kill
Section titled “XP per kill”XP = 1 + level² + max(Guard - 10, 0) × 2Guard above 10 earns a bonus — harder monsters pay more.
| Monster | Level | Guard | XP | Health | XP / health |
|---|---|---|---|---|---|
| Kobold | 1 | 8 | 2 | 5 | 0.40 |
| Goblin | 2 | 9 | 5 | 9 | 0.56 |
| Stalker | 3 | 10 | 10 | 14 | 0.71 |
| Female Orc | 4 | 10 | 17 | 18 | 0.94 |
| Orc | 4 | 11 | 19 | 18 | 1.06 |
| Goblin Chief | 5 | 11 | 28 | 23 | 1.22 |
| Hobgoblin | 5 | 12 | 30 | 23 | 1.30 |
| Gnoll | 6 | 13 | 43 | 27 | 1.59 |
| Bugbear | 7 | 14 | 58 | 32 | 1.81 |
| Forgotten Dead | 8 | 14 | 73 | 40 | 1.82 |
| Ogre | 8 | 15 | 75 | 36 | 2.08 |
| Troll | 9 | 16 | 94 | 41 | 2.29 |
| Orc Warlord | 10 | 13 | 107 | 120 | 0.89 |
| Stone Golem | 10 | 17 | 115 | 45 | 2.56 |
| Ogre Warlord | 10 | 17 | 115 | 140 | 0.82 |
| Lizardfolk | 13 | 15 | 180 | 59 | 3.05 |
| Cyclop | 15 | 20 | 246 | 68 | 3.62 |
| Skeleton | 16 | 20 | 277 | 72 | 3.85 |
| Skeleton Warrior | 20 | 24 | 429 | 90 | 4.77 |
| Skeleton Knight | 25 | 32 | 670 | 350 | 1.91 |
XP / health is the efficiency column — higher means more XP per point of health you have to chew through. The Orc Warlord gives the most XP but takes 120 health to get there, so it isn’t the most efficient.
XP to level
Section titled “XP to level”Levels 2–50 now follow a table paced by in-game play time (see the updates log, protocol v39) instead of a pure exponential; doubling only resumes past level 50:
XP(n) = XP(50) × 2^(n-50) (n > 50)The table is tuned around a standard player putting in 4 hours a day: 5 to 22 minutes per level from 2–10 (2 hours cumulative), 22 minutes to 5.5 hours per level from 10–30 (roughly once a day), 5.5 to 8 hours per level from 30–50 (about once every two days late), for a total of roughly 199.5 hours (50 days) to reach level 50.
| Level | Cumulative XP | This level costs | Orcs, roughly |
|---|---|---|---|
| 1 | 0 | — | — |
| 2 | 17 | 17 | 1 |
| 3 | 76 | 59 | 4 |
| 4 | 226 | 150 | 8 |
| 5 | 586 | 360 | 19 |
| 6 | 1,256 | 670 | 36 |
| 7 | 2,356 | 1,100 | 58 |
| 8 | 4,056 | 1,700 | 90 |
| 9 | 6,556 | 2,500 | 132 |
| 10 | 9,956 | 3,400 | 179 |
| 11 | 17,156 | 7,200 | 379 |
| 12 | 29,156 | 12,000 | 632 |
| 13 | 48,156 | 19,000 | 1,000 |
| 14 | 74,156 | 26,000 | 1,369 |
| 15 | 110,156 | 36,000 | 1,895 |
| 16 | 158,156 | 48,000 | 2,527 |
| 17 | 219,156 | 61,000 | 3,211 |
| 18 | 296,156 | 77,000 | 4,053 |
| 19 | 391,156 | 95,000 | 5,000 |
| 20 | 511,156 | 120,000 | 6,316 |
| 21 | 651,156 | 140,000 | 7,369 |
| 22 | 811,156 | 160,000 | 8,422 |
| 23 | 1,001,156 | 190,000 | 10,000 |
| 24 | 1,231,156 | 230,000 | 12,106 |
| 25 | 1,491,156 | 260,000 | 13,685 |
| 26 | 1,791,156 | 300,000 | 15,790 |
| 27 | 2,131,156 | 340,000 | 17,895 |
| 28 | 2,521,156 | 390,000 | 20,527 |
| 29 | 2,961,156 | 440,000 | 23,158 |
| 30 | 3,451,156 | 490,000 | 25,790 |
| 31 | 3,991,156 | 540,000 | 28,422 |
| 32 | 4,581,156 | 590,000 | 31,053 |
| 33 | 5,221,156 | 640,000 | 33,685 |
| 34 | 5,911,156 | 690,000 | 36,316 |
| 35 | 6,661,156 | 750,000 | 39,474 |
| 36 | 7,471,156 | 810,000 | 42,632 |
| 37 | 8,341,156 | 870,000 | 45,790 |
| 38 | 9,271,156 | 930,000 | 48,948 |
| 39 | 10,271,156 | 1,000,000 | 52,632 |
| 40 | 11,371,156 | 1,100,000 | 57,895 |
| 41 | 12,571,156 | 1,200,000 | 63,158 |
| 42 | 13,771,156 | 1,200,000 | 63,158 |
| 43 | 15,071,156 | 1,300,000 | 68,422 |
| 44 | 16,471,156 | 1,400,000 | 73,685 |
| 45 | 17,971,156 | 1,500,000 | 78,948 |
| 46 | 19,571,156 | 1,600,000 | 84,211 |
| 47 | 21,271,156 | 1,700,000 | 89,474 |
| 48 | 23,071,156 | 1,800,000 | 94,737 |
| 49 | 24,971,156 | 1,900,000 | 100,000 |
| 50 | 26,971,156 | 2,000,000 | 105,264 |
The last column converts to Orcs (level 4, Guard 11, 19 XP each). The outdoor roster currently tops out at the level-15 Cyclops, and dungeon depth scaling stalls at depth 20, so real pacing tracks the table only up to roughly levels 15–20 — past that there’s nothing tougher to fight, so it runs well behind the table.
The death penalty
Section titled “The death penalty”Dying costs no equipment but does cost XP:
level band = XP(L+1) - XP(L)penalty = max(1, floor(band × 0.15))That’s 15% of your progress through the current level.
Losing a level
Section titled “Losing a level”If the deduction drops you below the level’s starting XP you lose a level. Two protections:
- At most one level per death.
- Level 1 never drops.
After a drop your XP is floored at 30% through the lower band, so you don’t end up stuck just short of relevelling over and over.
| Level | Level band | Lost on death | Orcs to recover |
|---|---|---|---|
| 2 | 59 | 8 | 1 |
| 3 | 150 | 22 | 2 |
| 4 | 360 | 54 | 3 |
| 5 | 670 | 100 | 6 |
| 6 | 1,100 | 165 | 9 |
| 7 | 1,700 | 255 | 14 |
| 8 | 2,500 | 375 | 20 |
| 9 | 3,400 | 510 | 27 |
| 10 | 7,200 | 1,080 | 57 |
| 11 | 12,000 | 1,800 | 95 |
| 12 | 19,000 | 2,850 | 150 |
| 13 | 26,000 | 3,900 | 206 |
Losing a level costs health too
Section titled “Losing a level costs health too”So that repeatedly levelling up and down can’t be farmed for health, the distribution of health lost on a level-down is identical to the health gained on a level-up:
roll the hit die, guarantee at least half, add the CON modifierThe long-run expectation is therefore zero — no statistical gain from cycling. Health also never drops below your level 1 value.
| Hit die | Classes | Expected gain / loss |
|---|---|---|
| d10 | Barbarian, Caveman, Knight, Valkyrie | 6.50 |
| d8 | Ranger, Samurai, Monk, Priest | 5.25 |
| d6 | Archaeologist, Healer, Rogue, Wizard, Bard | 4.00 |
| d4 | Tourist | 2.75 |
If you didn’t lose a level, you don’t lose health.
Respawning
Section titled “Respawning”Request a respawn and the server confirms your health is 0, refills it and
returns you to the origin (0, 0, 0). Satiation resets to 300 — the bottom of
the Well-Fed band — so you don’t respawn starving and immediately go Weak.
Phoenix Talisman: revive where you fell
Section titled “Phoenix Talisman: revive where you fell”Carry a phoenix talisman and the death dialog offers a “Use Phoenix Talisman” button. Using it revives you in place, on the same floor, restoring 70% of max HP and spending one talisman; the death XP penalty already applied is unaffected. Unlike a normal respawn, reviving in place does not reset satiation, and there’s no invulnerability window afterward. Using it while alive is refused and the talisman is kept. Sold by Rica for 5,000c, and also a 0.2% world drop.
Monster AI
Section titled “Monster AI”Monster AI runs on the client, but attack resolution always goes to the server.
| State | Meaning |
|---|---|
idle | Waiting (30% chance to wander) |
walk | Moving |
run | Chasing a player (within chase range) |
attack | Attacking (within attack range) |
hit | Stagger from being hit (~800 ms) |
dead | Dead |
A dead monster is removed after 30 seconds. Per-monster chase ranges and attack intervals are in Monster index.
Both “attacks on sight” and “fights back only” monsters engage the moment a player gets within 5m, no provocation needed — “fights back only” is no longer a safe distance to walk past at.
Debuffs
Section titled “Debuffs”Some monster attacks and foods attach a debuff. The same debuff never stacks — retriggering it just refreshes the duration — but different debuffs can be active at once, and their multipliers multiply together.
| Debuff | Chance | Duration | DPS | Move speed | Attack speed | Max carry | Armor weight (wet) | Satiation drain | HP regen |
|---|---|---|---|---|---|---|---|---|---|
| Food Poisoning | 70% | 5 min | — | ×0.6 | ×0.6 | ×0.6 | — | ×4 | Stops |
| Bleeding | 35% | 8s | 1 | — | — | — | — | — | Stops |
| Wet | 100% | 7.5 min | — | ×0.83 | — | — | ×1.5 | — | — |
| Tipsy | 100% | 5 min | — | ×1.1 | ×1.1 | — | — | — | — |
| Drunk | 100% | 5 min | — | ×0.85 | ×0.85 | ×0.85 | — | — | — |
| Wasted | 100% | 5 min | — | ×0.6 | ×0.6 | ×0.6 | — | — | — |
Bleeding — rolled on a hit from a gnoll’s claws. Its damage die was lowered from 2d8 to 2d6 to make room for the new effect. Bleeding can kill outright; the death is handled the same way as a monster kill, with no credited killer.
Food Poisoning — the risk of eating raw fish; see Food and satiation.
Wet — triggers when you wade into a river or the sea, lasting 450 seconds (one in-game hour). Move speed drops to ×0.83 (running falls from 4.5 to 3.75, between walking’s 3.0 and running’s 4.5), and armor worn or carried in your bag gets heavier from soaking up water (armor weight ×1.5) — the more armor you’re carrying, the bigger the bite out of your usable carry capacity. Walking through water keeps refreshing the timer; the countdown only starts once you step out. Standing near a lit campfire (within 3m) dries you faster — 45 seconds to go from soaked to dry. Crossing a bridge doesn’t count as wading. As of protocol v78, standing in the rain long enough triggers the same Wet debuff — see Weather for the details.
Skills and mana (protocol v71–v79)
Section titled “Skills and mana (protocol v71–v79)”A blue MP bar now sits under the HP bar over your character’s head, for every class — even if you don’t have any ability that spends MP yet. Max MP is calculated from your class, WIS, and level, and regenerates naturally every 16 real seconds; it won’t start regenerating until 10 real seconds after your last spend. Existing characters were topped up to their max MP the first time they logged in after this shipped, and the max recalculates on level-up.
The character panel’s ABILITIES tab lists your available skills as icons — drag one onto the existing 1–0 quickslots to use it, sharing the same drag-and-tooltip code as your inventory.
| Ability | Granted to | Requires | Effect | Cooldown |
|---|---|---|---|---|
| Double Slash | Rogue, by default | Dagger in main hand | Your next basic attack becomes two independent hits, each at 100% damage | 10s |
| Guardian Ward | Knight, by default | Sword or Mace in main hand + Shield off-hand | +10% Guard for yourself and party members within 20m on the same floor, for 60s | 45s, costs 2 MP |
Guardian Ward used to cost satiation; as of protocol v79 it costs 2 MP instead. You can’t cast it below 2 MP, and a failed cast doesn’t spend MP or start the cooldown. Recasting just refreshes the duration back to 60s — it doesn’t stack.
The server’s ability list also defines Radiance (a self-only toggled light) and True Aim (a bow skill that guarantees a hit on the marked target), fully implemented and protocol-supported — but they’re deliberately hidden from the skill list and quickslots for now, so players can’t use them yet.
Shields now have their own armorType: shield classification (currently
just the Wooden Shield and Raven Shield) — an off-hand torch doesn’t count
as one. The Goblin Sword and Small Sword were folded into the Sword weapon
type; Dagger and Great Sword remain their own types.