Base
Damage
+
Flat
Damage
×
Elemental
Modifiers
×
Generic
Mods
×
Reflex
Mods
×
Fickle
Flame
×
Ymir
Reduction
×
Damage
Modifier
×
Crit
Multiplier
=
Final
Damage

How Stolen Realm actually works under the hood — every value verified against the game's runtime data (Steam build 20244830), not guides or tooltips. Where the community wiki or our own earlier notes disagreed with the game, the game won; see About This Data at the bottom.


Character Stats

Attributes → Derived Stats

Each point in an attribute gives (runtime values from GS 1.asset):

StatEffectFormulaConstant
MightAbility Power+1% per pointAbilityPwrPerMight = 1
MightArmor / Magic Armor+1% per pointArmorPercPerMight = 1
MightSummon Damage+1% per pointAbilityPwrPerMightSummon = 1
DexterityCrit DamageBaseCritDamage + (Dex − 8) × 1.5CritDamagePerDex = 1.5
DexterityCrit Rating+1 per pointCritRatingPerDex = 1
DexterityMovement Pointsmin(3, floor(Dex / 25)) bonus MPinterval 25
VitalityMax Health(Vit − 8) × 5 flat + (Vit − 8) × 1%5 / 1%
IntelligenceMax Mana(Int − 8) × 5 flat + (Int − 8) × 1%5 / 1%
IntelligenceSummon Health+1% per pointSummonLifePerInt = 1
IntelligenceRangemin(3, floor(Int / 25)) bonus rangeinterval 25
ReflexDodge Rating+1 per pointDodgeRatingPerReflex = 1 (summons 0.5)
ReflexDodge Counter Chance(Ref − 8) × 1%1
ReflexOpportunity Attack Damage(Ref − 8) × 1% bonus1
ReflexExtra Counter Attacks1 + min(5, floor(Ref / 25))interval 25
RecoveryHealth RegenRecovery × 0.5% Max Health per turn0.5
RecoveryMana RegenRecovery × 0.5% Max Mana per turn0.5

Monk passives (Strength/Speed ×1.33) modify the attribute values themselves, not these per-point constants. The (stat − 8) offset applies to players only — AI gets 0.

Base Values

BaseCritChance = 2%, BaseCritDamage = 50%, BaseDexterity = 5, BaseReflex = 5, BaseRecovery = 0, NumStatsPerNewLevel = 5 attribute points per level-up.

Health & Mana

BaseHealth = ceil(100 + (Level−1) × 15)      // 100 base, +15% of base per level
BaseMana   = ceil(100 + (Level−1) × 15)

MaxHealth  = (BaseHealth + 5×(Vit−8) + items) × (1 + (Vit−8)×0.01)
MaxMana    = (BaseMana   + 5×(Int−8) + items) × (1 + (Int−8)×0.01)

Level 1 at 8 Vit = 100 HP; level 30 at 8 Vit = 535 HP before gear.

Crit Chance from Crit Rating

CritChance = 2% + curve(floor(CritRating)), linear between curve points:

Crit Rating0150300900
Bonus crit %0430100300

Examples: rating 1 (9 Dex) → 6% | rating 52 → ≈33% | rating 300 → guaranteed crits. Stealth grants 100% crit chance on the next attack.

Dodge

DodgeChance = curve(floor(DodgeRating)), linear between points, hard-capped at 75%:

Dodge Rating01100300
Dodge %046092 (capped at 75)

A dodged attack deals no damage and applies no effects. Dodge Counter Chance rolls a counter-attack after a successful dodge.

Recovery & Downtime

Experience (Levels 1–30)

XP(level) = 1000 × 1.2^(level−2) cumulative — ExperienceBasePerLevel = 1000, exponent 1.2, MaxLevel = 30:

LvXP NeededXP TotalLvXP NeededXP Total
21,0001,0001715,40887,450
31,2002,2001818,489105,939
41,4403,6401922,187128,126
51,7295,3692026,624154,750
62,0747,4432131,949186,699
72,4899,9322238,338225,037
82,98612,9182346,006271,043
93,58416,5022455,207326,250
104,30020,8022566,248392,498
115,16025,9622679,497471,995
126,19232,1542795,397567,392
137,43139,58528114,476681,868
148,91748,50229137,371819,239
1510,70059,20230164,845984,084
1612,84072,042

Combat

Damage Pipeline

Damage = (BaseDamage + FlatDamage) × ElementalMods × Multiplier1 × Multiplier2
         × Multiplier3 × Multiplier4 × DamageModifier × CritMultiplier

Order verified in code — flat damage is added before any multipliers:

  1. Base Damage — the action's damage expression per element (e.g. Source.SpellPower("Fire") × 1.1); see each skill's expressions on the Skills pages
  2. Flat DamageDamageFlat{Type} bonuses, added per element first
  3. Elemental Modifier — each element × (1 + DamageMod{Type}/100)
  4. Multiplier 1 — generic mods (additive within the group, then /100): DamageMod + DamageModBasic (basic/opportunity/counter attacks only) + ManaPowerMod (mana-costing skills) + Opportunity/Counter attack mods + Ambush (target has no allies within 3 hexes) + Call of the Grave (+20% vs targets below 50% HP) + Marked Prey (+20% per stack) + per-hex range bonuses
  5. Multiplier 2 — Reflex-driven opportunity/counter bonuses
  6. Multiplier 3 — Fickle Flame (random −50%…+50%)
  7. Multiplier 4 — Strength of the Ymir weapon-damage reduction
  8. Damage Modifier — the action's own flat multiplier
  9. Crit Multiplier — last (see below)

Critical Hits

Damage Reduction

Applied in order: General Reduction → Resistances → Armor.

General reduction (one additive group): × (1 − (DamageReduction + Resilience + TakeCover) / 100) — Take Cover adds 35 when the attacker is more than 2 hexes away.

Resistances: × (1 − Resist{Type}/100) for Fire/Cold/Lightning/Physical; Shadow and Holy both use ResistDivine. Resist cap is 75% base, raisable by effects to a hard 95% (MaxResist attribute).

Armor (last):

Physical: max(damage × 0.10, damage − Armor / 10)
Magic:    max(damage × 0.10, damage − MagicArmor / 10)

10 armor absorbs 1 damage; armor can block at most 90% of a hit (maxArmorReductionPercent = 90). Shadow damage ignores Armor and Magic Armor entirely.

Shapeshift Forms

How it works under the hood: the shapeshift skill applies a status whose ModelChangeCharacter points to a hidden player-form character, and that form's own skill list replaces your skill bar while active. All forms are dispellable, and every shapeshifter gets a free Dismiss Shapeshift skill. Nine forms exist:

FormSourceLastsSkill bar while shiftedExtras
WerewolfNature tier 33 turnsMelee Attack (hits 2×, Bleeding per hit) · Blood Howl · Cursed Bite+10% Max Health
Dire WerewolfNature tier 5 (replaces Werewolf)3 turnsMelee Attack (hits 3×, Bleeding per hit) · Dire Howl · Dire Bite+20% Max Health
Red DragonkinNature tier 5 — Shapeshift Dragonkin grants all three; pick one per cast3 turnsFlame Slash · Fire Breath (cone) · Sun Fire (AoE + Heat)Armor + fire resistance; basic attack deals Fire
Blue Dragonkin(same skill)3 turnsIce Slash · Frost Breath (cold DoT) · Frozen Orb (AoE + 5 Chill)Armor + cold resistance; basic attack deals Cold
Green Dragonkin(same skill)3 turnsThunder Slash · Lightning Breath (cone) · Thunder Blast (AoE)Armor + lightning resistance; basic attack deals Lightning
Black DragonkinDragonkin Black fortune (Taste for Blood — Samara path)3 turnsShadow Claw · Shadow Breath (cone) · Abyssal Night (shadow AoE)Armor + Damage Reduction; basic attack deals Shadow
White DragonkinDragonkin White fortune3 turnsHoly Slash (damages enemies, heals allies) · Breath of Life (cone, damage + heal) · Celestial Light (holy AoE + Blind)Armor + Damage Reduction
Vampire BatVampirism fortune1 turnMana Steal+4 free movement points; immune to attacks of opportunity
BoxJack in the Box encounter (enemy-applied!)1 turnnoneRooted + Silenced + takes double damage — a polymorph debuff wearing the shapeshift system as a costume

Notes from the data:


Weapons & Gear

Weapon Damage: Item → Character Sheet

1. ItemBaseDmg   = ceil(BaseDmgPerType × DamageRatio × (1 + (level−1)×0.23) × (1 + rarity×0.10))
2. WeaponDamage  = ItemBaseDmg × (1 + WeaponDamageMod/100) + AdditionalWeaponDamage
3. WeaponDamageAll = ceil(sum of all equipped weapons)
4. AttackPower   = WeaponDamageAll × (1 + AbilityPower/100)     // AbilityPower = Might × 1%
5. Tooltip range = WeaponDamage ± 15%  (min ×0.85, max ×1.15, floored)

SpellPower = AttackPower — Might scales spells and attacks identically.

Example — level 80 Medusa Staff (Legendary, ratio 1.3), 300 Might: ItemBaseDmg = ceil(12 × 1.3 × (1 + 79×0.23) × 1.4) = 419AttackPower = 419 × (1 + 300/100) = 1676

Base Damage by Weapon Type (runtime WeaponDamageBaseByType)

TypeBaseTypeBase
1H Sword / 1H Axe / 1H Mace8Bow / 2H Gun14
2H Sword / 2H Axe / 2H Mace / Polearm16Staff12
1H Gun7Wand / Fist Weapon6

Item Stat Scaling

ItemStatsPerLevel = 0.23, ItemStatsPerRarity = 0.10, ItemArmorPerLevel = 0.23, DamageRangePercent = 0.15. Rarity indexes: Common 0 → Legendary 4.

End Game Tiers (Post-Campaign)

Rare+ items can roll a Tier modifier (MinimumTierRarity = 2):

TierColorEffect (non-weapon)UnlockWorld drop %Shop %Cost
IGreenall stats +50%, +2 attribute ptslv 3010 at 30 → 100 at 60+2 at 30, 10 at 50, 25 at 70+×2
IICyanall stats +100%, +3 attribute ptslv 6010 at 60 → 100 at 80+2 at 60, 10 at 80+×4
IIIRedall stats +150%, +4 attribute ptslv 8010 at 80 → 100 at 1002 at 80+×8

Weapons get the stat boost only (no attribute points). Drop chances interpolate linearly between listed levels. Battle modifiers: 1–6 active, unlock at 30, 5000g reset.


Loot & Rewards

Loot Generation

For each player, every dead enemy rolls loot (highest point value first: Boss 7 > Champion 5 > Elite 3 > Soldier 2 > Fodder 1):

  1. Personal loot — the enemy's own drop table (see Enemies page; e.g. Medusa → Medusa Staff 10%)
  2. Group loot — the enemy faction's shared table
  3. World loot — global pool, filtered by the rarity whitelist below

Drop chance modifier: Difficulty.LootMod × (1 + quest modifiers/100) × character loot modifier, plus each enemy mod's loot bonus. Items are created at min(30, game level). In endgame mode, bosses roll their personal loot twice. Each player receives an independent distribution.

World-Loot Rarity Whitelist

Epic never drops from world loot — for any enemy type. Epics come from personal and group tables, shops, gambling, and crafting only.

Enemy typeWorld loot can be
Fodder, SoldierCommon, Uncommon
Elite+ Rare
Champion+ Legendary (Epic skipped)
Boss+ Mythic (unused — no Mythic items exist)

Gambling (Ulf's Wager, Act 3)

Gold


Enemies & Difficulty

Enemy Base Stats (runtime EnemyTypeStatSets)

TypeBase HPWeapon DmgSpell PowerManaPoint Value
Fodder137.27.2201
Soldier187.27.2182
Elite368.18.1363
Champion5499545
Boss9710.2510.25877

Each enemy multiplies these by its own stat ratios (see the Enemies page — e.g. Medusa: HP ×2.5 → 242.5 base).

Enemy HP

HP = baseHealth × healthRatio × levelCurve(level) × partyMult(players) × difficulty × bossMult

Level curve (linear between points; roguelike uses its own curve):

Lv136912151821242730
×0.71.83.8818306090132186264

Past 30: 264 × 1.05^(level−30) + 24×(level−30).

Enemy Damage

Damage = baseDmg × dmgCurve(level) × partyMult(players) × skillRatio × difficulty × bossMult
Lv136912151821242730
×0.61.224.27.29.3613.216.822.828.834

Past 30: 34 × 1.025^(level−30) + 2×(level−30).

Party-Size Scaling

Players123456
Enemy HP ×0.81.652.43.153.94.75
Enemy Dmg ×0.71.01.41.82.02.0

(Roguelike HP: 0.8 / 1.55 / 2.3 / 3.0 / 3.75 / 4.5; damage identical.) Player summons use their own curves: HP ×1.5→6.5, damage ×1→25 over levels 1–30.

Difficulty

A global −25% baseline is added to every difficulty's HP/Dmg percent (HealthMod = 1 + (perc − 25)/100), giving effective enemy multipliers:

DifficultyEffective HP×Effective Dmg×GoldLootBoss HP
Casual×0.25×0.25
Adventurer×0.75×0.75−20%
Classic×1.00×1.00+25%+25%−15%
Veteran+higherhighersee odin_extracted/settings/difficulty_settings.json

Other Level Curves

Enemy Spawning

An enemy needs island level ≥ MinLevel to appear (its MaxLevel is ignored by the spawn code — enemies keep appearing and scaling forever). Per-enemy skill tuning (cooldown/mana/damage-multiplier overrides) is on the Enemies page.


Events & World

Event Deck (how event repeats work)

Events use a recency-weighted randomizer — there is no "must exhaust the deck" rule:

Time of Day

Only a handful of events are time-gated (all Night): Brawler's Brew, Petrified Party, Shrine to the Reaper, The Pale Knight, Wrath of the Righteous (plus a few night-flagged chain steps where time doesn't apply). Every other event spawns day or night.

D20 Roll Checks

Events roll a D20 (+ stat bonus if offered, clamped −2…+2; the game picks your best eligible stat) against a RollLimit.

Party scaling (only for events with rollBonusTypes set): smaller parties get easier checks —

Party Size123456
Roll limit modifier−2−2−1−100

Fortune events with scaling (full-party limit shown): Archery Competition 12, Dwarven Tomb 16, Edwin's Demise 12, Sword in the Stone 18 (so solo Sword in the Stone needs 16). Without scaling: Entangled Boar 11, Magic Mirror 18, Strange Crystal victories 16, Taste for Blood 14, Fortune Teller 11, Librarian 10, Mad Mage 3 → 8.

Event Gating & Chains

Event availability is controlled by plain data (no hidden binary conditions): requiredStatusesToSpawn, per-option requiredStatuses / hideIfHasStatuses, and quest statuses that force events (ForcedNextEvent, ForcedEventBeforeBoss). Notable verified chains — full details on the Events page:


About This Data

Everything on this page comes from the game's own runtime data (resources.assets, scene files) and code (decompiled Assembly-CSharp), extracted July 2026 and verified with in-data anchors (Medusa's 10% staff drop, Bottled Anger's ±20/−10 effects, Fireball's 2 AP / range 7 / SpellPower("Fire") × 1.1). Constants come from serialized assets, never from decompiled default values — an earlier version of this document made that mistake and published wrong numbers; on the six stat-scaling values where we "corrected" the community wiki, the wiki was right.

Cut, disabled, and debug content lives on the Cut Content page. Extraction methodology (tools, pitfalls, replication steps): docs/REVERSE_ENGINEERING.md in the repository.