ExileData
Contents

File map

Path of Exile 2#

Patch 0.5.5.442 files and folders69 links61 resolve for every value

Field holds the target’s keySame key in both filesText markup or value matchSome values do not resolve
ItemsMods and statsSkillsPassive treeWorldLookup tablesRead by value. No field points into them.active_skill_typesascendanciesattack_damage_scalingaudioaugmentsbase_itemsbuff_visualsbuffscharacter_constantscharacterscost_typesdamage_calculation_typesdefault_monster_statsendgame_mapsessencesflavourgame_constantsgem_tagsitem_classesjewel_slotskeywordslevel_scalingliquid_emotionsminion_statsmodsmods_by_basemonstersskill_gemsskillsstat_value_handlersstatsstats_by_filetag_detailstagstimeless_jewelsunique_detailsuniquesworld_areasbase_items/normalized/base_itemspassive_skill_trees/stat_translations/
Each arrow runs from the file that holds a field to the file whose key that field matches. Select a file to list its links.

Item

Wicked Warpick of the Bear · magic One Hand Mace · example rolls 8, 72, 14
  1. Wicked Warpick of the Bear
  2. One Hand Mace
  3. Physical Damage: 31-41
  4. Critical Hit Chance: 7.00%
  5. Attacks per Second: 1.45
  6. Requires: Level 22, 41 Str
  7. +8% to Critical Damage Bonus
  8. 72% increased Physical Damage
  9. +14 to Strength
  1. mods[prefix].name · base_items[id].name · mods[suffix].name"Wicked" · "Warpick" · "of the Bear"

    A magic item’s name is prefix name, base name, suffix name.

    41
  2. item_classes["One Hand Mace"].category"[Mace|One Hand Mace]"

    Markup: show the text after the bar.

    2
  3. base_items[id].properties.physical_damage_min / _max18 / 24

    Scaled by the 72% roll, then rounded: 18 × 1.72 = 31, 24 × 1.72 = 41. The roll changes this line because stats["local_physical_damage_+%"].is_local is true.

    15
  4. base_items[id].properties.critical_strike_chance700

    Hundredths of a percent.

    1
  5. base_items[id].properties.attack_time690

    Milliseconds per attack: 1000 ÷ 690.

    1
  6. base_items[id].requirements{ level: 22, strength: 41 }1
  7. base_items[id].implicits[0]"MaceImplicitCriticalMultiplier1"

    Its stat local_critical_strike_multiplier_+ rolls 5 to 10. The text entry gives "{0}% to [CriticalDamageBonus|Critical Damage Bonus]" with format "+#".

    1467
  8. mods["LocalIncreasedPhysicalDamagePercent3"]prefix · 65–84 · level 16

    Its stat local_physical_damage_+% rolls 65 to 84. The text entry has 5 variants; the one whose condition fits the roll gives "{0}% increased [Physical] Damage".

    346
  9. mods["Strength3"]suffix · 13–16 · level 22

    Its stat additional_strength rolls 13 to 16. The text entry gives "{0} to [Strength|Strength]" with format "+#".

    346

Join order

  1. 1
    base_items[id]

    Look up the base by item path, here Metadata/Items/Weapons/OneHandWeapons/OneHandMaces/FourOneHandMace5. It holds the name, class, properties, requirements, tags and implicit mod ids.

  2. 2
    item_classes[base.item_class]

    Gives the class line and the plural name, “One Hand Maces”, which step 3 needs.

  3. 3
    mods_by_base[class.name][base.tags.join(",")]

    The mod pool for this base, grouped by generation type and mod type. Each value is the mod’s required level. All 5,496 bases resolve this way.

  4. 4
    mods[id]

    For the implicit and each rolled mod: affix name, generation type, required level and stats[] with min and max.

  5. 5
    stats[stat.id]

    Flags such as is_local. A local stat changes the item’s own lines instead of the character.

  6. 6
    stat_translations/stat_descriptions

    Find the entry whose ids[] holds the stat. Pick the English[] variant whose condition fits the value, then apply format and index_handlers from stat_value_handlers.

  7. 7
    keywords[Id]

    Text like [Strength|Strength] shows the part after the bar. The id before it gives the hover definition.

JavaScript
const base  = base_items[id];
const cls   = item_classes[base.item_class];
const pool  = mods_by_base[cls.name][base.tags.join(",")];
const mod   = mods["Strength3"];
const entry = stat_descriptions.find(e => e.ids.includes(mod.stats[0].id));
// then pick entry.English[] by condition and fill {0}

Skill gem

Spark · level 1
  1. Spark
  2. Spell, Projectile, Lightning, Duration, Repeatable
  3. Level: 1
  4. Cost: 5 Mana
  5. Cast Time: 0.70 sec
  6. Critical Hit Chance: 9.00%
  7. Requires: Level 1, 4 Int
  8. Launch a spray of sparking Projectiles that travel erratically along the ground until they hit an enemy or expire. Consumes a Cold Infusion if possible to fire many sparks in a circle.
  9. Fires 4 Projectiles Deals 1 to 10 Lightning Damage
  10. Projectile duration is 2 seconds Projectiles fired at the same time can Hit the same target no more than once every 0.66 seconds
  1. skill_gems[id].base_item.display_name"Spark"1
  2. skill_gems[id].tags[] → gem_tags[tag]"[Spell]", "[Projectile]", "[Lightning]", …

    intelligence and grants_active_skill have no gem_tags entry, so they stay hidden.

    13
  3. skill_gems[id].requirementskeys "1" to "20"

    One entry per gem level. max_level is 20.

    1
  4. skills["SparkPlayer"].per_level["1"].costs{ Mana: 5 }

    cost_types["Mana"].format_text is "{0} Mana".

    45
  5. skills["SparkPlayer"].cast_time700

    Milliseconds.

    4
  6. skills["SparkPlayer"].stat_sets[0].static.crit_chance900

    Hundredths of a percent.

    4
  7. skill_gems[id].requirements["1"]{ intelligence: 4, level: 1 }1
  8. skills["SparkPlayer"].active_skill.description

    Holds markup such as [Projectile|…].

    48
  9. skills["SparkPlayer"].stat_sets[0].per_level["1"].stat_text

    Already rendered for each level. The raw values are in stats[]; the text rules are in stat_translations/specific_skill_stat_descriptions/spark/statset_0.json.

    47
  10. skills["SparkPlayer"].stat_sets[0].static.stat_text

    Lines that do not change with level.

    4

Join order

  1. 1
    skill_gems[…]

    Keyed by item path. Holds tags, requirements per level and grants_skills.

  2. 2
    base_items[gem.base_item.id]

    Gives the item class, “Active Skill Gem”, and the socket limit.

  3. 3
    gem_tags[tag]

    Display text for each tag. A tag with no entry is hidden.

  4. 4
    skills[gem.grants_skills[0]]

    "SparkPlayer": name, description, skill types, cast time, costs per level and stat sets.

  5. 5
    cost_types[key]

    Format text and the stat behind each cost. Per-minute costs divide by divisor.

  6. 6
    active_skill_types

    The skill’s types[]. A support fits when its support_gem.allowed_types match them.

  7. 7
    stat_translations/{translation_file}

    Each stat set names its own text file. 558 different files are used.

  8. 8
    keywords[Id]

    Hover text for the markup in the description.

Passive

Heavy Buffer · notable in the Default tree
  1. Heavy Buffer
  2. 40% increased maximum Energy Shield
  3. 5% of Damage taken bypasses Energy Shield
  4. Group 705 · orbit 4 · slot 24 of 72
  5. Linked to Energy Shield Mastery, 2 Energy Shield nodes
  6. Gathering Winds Deadeye ascendancy · Ranger
  1. passive_skill_trees/Default.json → passives["27491"].nameis_notable: true1
  2. passives["27491"].stats{ "maximum_energy_shield_+%": 40 }13
  3. passives["27491"].stats{ "base_all_damage_bypass_energy_shield_%": 5 }

    stat_text holds these lines pre-rendered.

    13
  4. groups[705]x -1909, y -6476 · radius 4 · position_clockwise 24

    The group whose passives[] holds hash 27491. orbit_radii[4] is 493 and skills_per_orbit[4] is 72.

    2
  5. groups[705].passives[].connections[3471]

    Each link is stored on one end only. 2 of these nodes list 27491 in its own connections.

    2
  6. passives["30"].ascendancy"Ranger1"

    A second node, for the ascendancy chain: ascendancies["Ranger1"].name is Deadeye, and its character, Metadata/Characters/Dex/DexFour, is the Ranger in characters.

    4

Join order

  1. 1
    passive_skill_trees/Default.json → passives[hash]

    Name, icon, flags such as is_notable and is_keystone, stats and stat_text. The folder holds 5 trees.

  2. 2
    groups[] in the same file

    The group that lists the hash gives its x and y, the orbit (radius), the slot (position_clockwise) and the node’s outgoing connections.

  3. 3
    stats + stat_translations

    In the Default tree, 5,549 of 5,957 stat references find their text in stat_descriptions and 408 in passive_skill_stat_descriptions.

  4. 4
    ascendancies[passive.ascendancy] → characters

    669 nodes belong to an ascendancy. character matches characters[].metadata_id.

  5. 5
    skill_gems, buffs, jewel_slots

    54 nodes grant a skill through granted_skill, an item path in skill_gems. 3 carry buff_definitions. jewel_slots names socket nodes by id.

Monster

The Riverbank and its boss
  1. The Riverbank
  2. Act 1 · area level 1
  3. Leads to Clearfell Encampment
  4. The Bloated Miller
  5. Life 15 × 105% · Damage 9.16 × 190%
  6. Uses Shield Charge, Basic Attack, Table Charge
  7. Packs: Drowned (1–2), Porcupine Crab (1–2), Drowned (2–5)
  1. world_areas["G1_1"]name, act, area_level1
  2. world_areas["G1_1"].area_level1

    Also the key into default_monster_stats, “1”.

    13
  3. world_areas["G1_1"].connections["G1_town"]

    Each id is another world_areas key.

    1
  4. world_areas["G1_1"].bosses[0] → monsters[path].name"Metadata/Monsters/SwollenMiller/SwollenMillerBoss"12
  5. default_monster_stats["1"] × monsters[path].life_multiplier, damage_multiplierlife 15, physical_damage 9.16 · 105, 190

    The level baseline, picked by area_level, scaled by the monster’s multipliers. Rarity and boss scaling come on top.

    23
  6. monsters[path].granted_effects[] → skills[id]19 skills

    Only 3 have a display_name. The others are helper skills.

    4
  7. world_areas["G1_1"].packs[].monsters.*.monster_varietyweights 45, 25, 20, 10 in the first pack

    Each pack has min_count, max_count and weighted monster paths.

    12

Join order

  1. 1
    world_areas[id]

    Name, act, level, waypoint, connections, bosses, packs and area_mods.

  2. 2
    monsters[path]

    Name, tags, multipliers, resistances, weapon class and granted_effects.

  3. 3
    default_monster_stats[String(area_level)]

    A value join: the key is the monster level, “1” to “100”.

  4. 4
    skills[id]

    The same skills file that player gems use.

  5. 5
    mods[id]

    monsters.mods and special_mods. This boss has none; 774 monsters do.

  6. 6
    endgame_maps[id]

    Map areas share the world_areas key. native_packs match packs[].id in world_areas.

What does not join

Uniques have no mods or base type
uniques and unique_details give the name, class, art and flavour text of 449 uniques. No file says which base or which mods a unique has. 10,447 mods have generation_type: "unique", and mods_by_base lists them per class and tag set, not per unique.
inherits_from points at files that are not exported
5,495 bases and 761 monsters name an abstract parent such as …/AbstractOneHandMace. Use it as a group label.
Two spellings of item class
Most files use the class id, such as “One Hand Mace”. mods_by_base uses the plural name, such as “One Hand Maces”. 50 of 449 uniques use loose names such as Focii or Mace.
Two gem path spellings
Gem ids start with Metadata/Items/Gem/ (595) or Metadata/Items/Gems/ (594). Match the exact string. Do not normalise it.
Hidden stats
3,976 of 26,082 stat references in mods have no text in any stat_translations file, for example local_weapon_implicit_hidden_%_base_damage_is_fire. The game does not show them.
mods_by_base values are levels
Each number is the mod’s required_level (86,660 of 86,660 agree). spawn_weights are only 0 or 1 in this game: a tag allows a mod or blocks it.
Some jewel slots point nowhere
12 of 31 jewel_slots name a passive that is in no exported tree.
Text is often already rendered
mods.text, base_items.implicit_text, skill stat_text and passive stat_text hold finished lines with ranges. You need stat_translations only to render a rolled value.

Path of Exile 1#

Patch 3.29.3.342 files and folders71 links63 resolve for every value

Field holds the target’s keySame key in both filesText markup or value matchSome values do not resolve
ItemsMods and statsSkillsPassive treeWorldLookup tablesRead by value. No field points into them.active_skill_typesascendanciesaudiobase_itemsbuff_visualsbuffscharacter_constantscharacterscluster_jewelscost_typescrafting_bench_optionsdefault_monster_statsenchantmentsessencesflavourgame_constantsgem_tagsitem_classesjewel_slotskeywordslevel_scalingmodsmods_by_basemonsterspantheonsskill_gemsskillsstat_value_handlersstatsstats_by_filetag_detailstagstattoostimeless_jewelsunique_detailsuniquesweapon_passive_skillsworld_areasbase_items/normalized/base_itemspassive_skill_trees/stat_translations/
Each arrow runs from the file that holds a field to the file whose key that field matches. Select a file to list its links.

Item

Wicked War Hammer of the Bear · magic One Hand Mace · example rolls 10, 72, 20
  1. Wicked War Hammer of the Bear
  2. One Hand Mace
  3. Physical Damage: 22-53
  4. Critical Strike Chance: 5.00%
  5. Attacks per Second: 1.45
  6. Weapon Range: 1.1 metres
  7. Requires Level 20, 71 Str
  8. 10% reduced Enemy Stun Threshold
  9. 72% increased Physical Damage
  10. +20 to Strength
  1. mods[prefix].name · base_items[id].name · mods[suffix].name"Wicked" · "War Hammer" · "of the Bear"

    A magic item’s name is prefix name, base name, suffix name.

    41
  2. item_classes["One Hand Mace"].category"One Hand Mace"2
  3. base_items[id].properties.physical_damage_min / _max13 / 31

    Scaled by the 72% roll, then rounded: 13 × 1.72 = 22, 31 × 1.72 = 53. The roll changes this line because stats["local_physical_damage_+%"].is_local is true.

    15
  4. base_items[id].properties.critical_strike_chance500

    Hundredths of a percent.

    1
  5. base_items[id].properties.attack_time690

    Milliseconds per attack: 1000 ÷ 690.

    1
  6. base_items[id].properties.range11

    Tenths of a metre.

    1
  7. base_items[id].requirements{ level: 20, strength: 71 }1
  8. base_items[id].implicits[0]"StunThresholdReductionImplicitMace1"

    Its stat base_stun_threshold_reduction_+% is always 10. The text entry has 2 variants; the one whose condition fits the roll gives "{0}% reduced Enemy Stun Threshold".

    146
  9. mods["LocalIncreasedPhysicalDamagePercent3"]prefix · 65–84 · level 23

    Its stat local_physical_damage_+% rolls 65 to 84. The text entry has 5 variants; the one whose condition fits the roll gives "{0}% increased Physical Damage".

    346
  10. mods["Strength3"]suffix · 18–22 · level 22

    Its stat additional_strength rolls 18 to 22. The text entry gives "{0} to Strength" with format "+#".

    346

Join order

  1. 1
    base_items[id]

    Look up the base by item path, here Metadata/Items/Weapons/OneHandWeapons/OneHandMaces/OneHandMace5. It holds the name, class, properties, requirements, tags and implicit mod ids.

  2. 2
    item_classes[base.item_class]

    Gives the class line and the plural name, “One Hand Maces”, which step 3 needs.

  3. 3
    mods_by_base[class.name][base.tags.join(",")]

    The mod pool for this base, grouped by generation type and mod type. Each value is the mod’s required level. All 5,461 bases resolve this way.

  4. 4
    mods[id]

    For the implicit and each rolled mod: affix name, generation type, required level and stats[] with min and max.

  5. 5
    stats[stat.id]

    Flags such as is_local. A local stat changes the item’s own lines instead of the character.

  6. 6
    stat_translations/stat_descriptions

    Find the entry whose ids[] holds the stat. Pick the English[] variant whose condition fits the value, then apply format and index_handlers from stat_value_handlers.

JavaScript
const base  = base_items[id];
const cls   = item_classes[base.item_class];
const pool  = mods_by_base[cls.name][base.tags.join(",")];
const mod   = mods["Strength3"];
const entry = stat_descriptions.find(e => e.ids.includes(mod.stats[0].id));
// then pick entry.English[] by condition and fill {0}

Skill gem

Fireball · level 1
  1. Fireball
  2. Projectile, Spell, AoE, Fire
  3. Level: 1
  4. Cost: 5 Mana
  5. Cast Time: 0.75 sec
  6. Critical Strike Chance: 5.00%
  7. Effectiveness of Added Damage: 300%
  8. Requires Level 1
  9. Unleashes a ball of fire towards a target which explodes, damaging nearby foes.
  10. Base radius is 1 metre Deals 9 to 14 Fire Damage
  11. 25% chance to Ignite enemies
  1. skill_gems[id].base_item.display_name"Fireball"1
  2. skill_gems[id].tags[] → gem_tags[tag]"Projectile", "Spell", "AoE", …

    intelligence and grants_active_skill have no gem_tags entry, so they stay hidden.

    13
  3. skill_gems[id].requirementskeys "1" to "20"

    One entry per gem level. max_level is 20.

    1
  4. skills["Fireball"].per_level["1"].costs{ Mana: 5 }

    cost_types["Mana"].format_text is "{0} Mana".

    45
  5. skills["Fireball"].cast_time750

    Milliseconds.

    4
  6. skills["Fireball"].stat_sets[0].static.crit_chance500

    Hundredths of a percent.

    4
  7. skills["Fireball"].stat_sets[0].per_level["1"].damage_effectiveness3004
  8. skill_gems[id].requirements["1"]{ level: 1 }

    Only the level is stored. The game works out attribute requirements from requirement_weights, and no file holds that formula.

    1
  9. skills["Fireball"].active_skill.description4
  10. skills["Fireball"].stat_sets[0].per_level["1"].stat_text

    Already rendered for each level. The raw values are in stats[]; the text rules are in stat_translations/skill_stat_descriptions.json.

    47
  11. skills["Fireball"].stat_sets[0].static.stat_text

    Lines that do not change with level.

    4

Join order

  1. 1
    skill_gems[…]

    Keyed by gem id, here "Fireball"; join on base_item.id. Holds tags, requirements per level and grants_skills.

  2. 2
    base_items[gem.base_item.id]

    Gives the item class, “Active Skill Gem”, and the socket limit.

  3. 3
    gem_tags[tag]

    Display text for each tag. A tag with no entry is hidden.

  4. 4
    skills[gem.grants_skills[0]]

    "Fireball": name, description, skill types, cast time, costs per level and stat sets.

  5. 5
    cost_types[key]

    Format text and the stat behind each cost. Per-minute costs divide by divisor.

  6. 6
    active_skill_types

    The skill’s types[]. A support fits when its support_gem.allowed_types match them.

  7. 7
    stat_translations/{translation_file}

    Each stat set names its own text file. 17 different files are used.

Passive

Golem's Blood · notable in the Default tree
  1. Golem's Blood
  2. 10% increased maximum Life
  3. Regenerate 1.6% of Life per second
  4. Group 398 · orbit 2 · slot 12 of 16
  5. Linked to 2 Life nodes, Life Mastery
  6. Focal Point Deadeye ascendancy · Ranger
  1. passive_skill_trees/Default.json → passives["1325"].nameis_notable: true1
  2. passives["1325"].stats{ "maximum_life_+%": 10 }13
  3. passives["1325"].stats{ "life_regeneration_rate_per_minute_%": 96 }

    Handler per_minute_to_per_second_2dp_if_required turns 96 into the shown number. stat_text holds these lines pre-rendered.

    13
  4. groups[398]x -1059, y 6702 · radius 2 · position_clockwise 12

    The group whose passives[] holds hash 1325. orbit_radii[2] is 162 and skills_per_orbit[2] is 16.

    2
  5. groups[398].passives[].connections[31471,62588]

    Each link is stored on one end only. One of these nodes lists 1325 in its own connections.

    2
  6. passives["5443"].ascendancy"Deadeye"

    A second node, for the ascendancy chain: ascendancies["Deadeye"].name is Deadeye, and its character, Metadata/Characters/Dex/Dex, is the Ranger in characters.

    4

Join order

  1. 1
    passive_skill_trees/Default.json → passives[hash]

    Name, icon, flags such as is_notable and is_keystone, stats and stat_text. The folder holds 7 trees.

  2. 2
    groups[] in the same file

    The group that lists the hash gives its x and y, the orbit (radius), the slot (position_clockwise) and the node’s outgoing connections.

  3. 3
    stats + stat_translations

    In the Default tree, 3,679 of 4,187 stat references find their text in stat_descriptions and 508 in passive_skill_stat_descriptions.

  4. 4
    ascendancies[passive.ascendancy] → characters

    792 nodes belong to an ascendancy. character matches characters[].metadata_id.

  5. 5
    skills, buffs, jewel_slots

    58 nodes grant a skill through granted_effect.id, a skills key. 44 carry buff_definitions. jewel_slots names socket nodes by id.

Monster

The Twilight Strand and its boss
  1. The Twilight Strand
  2. Act 1 · area level 1
  3. Leads to Lioneye's Watch
  4. Hillock
  5. Life 22 × 180% · Damage 4.99 × 101%
  6. Uses Default Attack
  7. Packs: Drowned (1–3), Sand Spitter (1–3)
  1. world_areas["1_1_1"]name, act, area_level1
  2. world_areas["1_1_1"].area_level1

    Also the key into default_monster_stats, “1”.

    13
  3. world_areas["1_1_1"].connections["1_1_town"]

    Each id is another world_areas key.

    1
  4. world_areas["1_1_1"].bosses[0] → monsters[path].name"Metadata/Monsters/ZombieBoss/ZombieBossHillockNormal"12
  5. default_monster_stats["1"] × monsters[path].life_multiplier, damage_multiplierlife 22, physical_damage 4.99 · 180, 101

    The level baseline, picked by area_level, scaled by the monster’s multipliers. Rarity and boss scaling come on top.

    23
  6. monsters[path].granted_effects[] → skills[id]2 skills

    Only one has a display_name. The others are helper skills.

    4
  7. world_areas["1_1_1"].packs[].monsters.*.monster_varietyweights 20, 20, 20, 15, 15, 15 in the first pack

    Each pack has min_count, max_count and weighted monster paths.

    12

Join order

  1. 1
    world_areas[id]

    Name, act, level, waypoint, connections, bosses, packs and area_mods.

  2. 2
    monsters[path]

    Name, tags, multipliers, resistances, weapon class and granted_effects.

  3. 3
    default_monster_stats[String(area_level)]

    A value join: the key is the monster level, “1” to “100”.

  4. 4
    skills[id]

    The same skills file that player gems use.

  5. 5
    mods[id]

    monsters.mods and special_mods. This boss has none; 6,606 monsters do.

What does not join

Uniques have no mods or base type
uniques and unique_details give the name, class, art and flavour text of 1,556 uniques. No file says which base or which mods a unique has. 15,886 mods have generation_type: "unique", and mods_by_base lists them per class and tag set, not per unique.
inherits_from points at files that are not exported
5,459 bases name an abstract parent such as …/AbstractOneHandMace. Use it as a group label.
Two spellings of item class
Most files use the class id, such as “One Hand Mace”. mods_by_base uses the plural name, such as “One Hand Maces”. 244 of 1,556 uniques use loose names such as Axe or Sword.
skill_gems is keyed by gem id
Its keys are gem ids such as Fireball, not item paths. Join it to base_items through base_item.id. vaal_variant holds item paths too.
Gem attribute requirements are not stored
requirements holds only the level for each gem level. The game derives Strength, Dexterity and Intelligence from requirement_weights, and no file holds that formula.
Some skill references use the inner id
stats.active_skills and enchantments.skills hold ids such as fireball. They match skills[].active_skill.id, not the skills key Fireball.
Hidden stats
6,626 of 60,695 stat references in mods have no text in any stat_translations file, for example buff_impl_stat. The game does not show them.
mods_by_base values are levels
Each number is the mod’s required_level (314,800 of 314,800 agree). The real odds are in each mod’s spawn_weights, matched against the base’s tags in order.
Text is often already rendered
mods.text, base_items.implicit_text, skill stat_text and passive stat_text hold finished lines with ranges. You need stat_translations only to render a rolled value.

Raw units#

FieldUnitExample
properties.attack_timeMilliseconds per attack690 → 1.45 attacks per second
properties.critical_strike_chance, static.crit_chanceHundredths of a percent700 → 7.00%
properties.rangeTenths of a metre11 → 1.1 metres
skills.cast_timeMilliseconds700 → 0.70 sec
per_level.costs with a per-minute cost typePer minuteDivide by cost_types[key].divisor, 60
monsters.life_multiplier, damage_multiplierPercent of the level baseline105 → 105% of default_monster_stats[level].life