Template:SkillLevelDef
From Heroes of Might and Magic: Olden Era Official Wiki
One row per (skill, level) pair. ~342 rows in 2026-05-05 across 102 skills. Most production / arena / campaign skills have 3 levels (Basic / Advanced / Expert mastery); pseudo skills typically have 1.
Each level carries optional name / desc / icon overrides (rare — most levels inherit the parent skill's display fields), the list of sub-skills that become offered at that level, and the bonuses that take effect when the player reaches that level. Per-level bonuses are emitted as {{BonusDef | parent_type=skill_level | parent_id=<skill_id>_L<level> | …}} rows.
Schema
This template defines the table "SkillLevel". View table.
{{SkillLevelDef
| skill_id = String
| level = Integer <!-- 1-based; 1..max_level -->
| name_sid = String <!-- nullable; per-level override only -->
| desc_sid = String <!-- nullable; per-level override only -->
| icon = String <!-- nullable; per-level override only -->
| offered_sub_skills = List (,) of String <!-- sub-skill ids unlocked at this level -->
}}
Field notes
- Primary key is
(skill_id, level). name_sid/desc_sid/iconare sparse — populated only when the level overrides the parent skill's defaults. Most levels leave these null and inherit from the parentSkill. When a level does override, its resolved text for every language (English included) lives in the Translation table astype='skill_level'rows keyed bytarget_id=<skill_id>+variant=<level>.offered_sub_skillsis a CargoList (,) of String— the sub-skill ids the player can pick from when reaching this level.HOLDS-friendly:WHERE offered_sub_skills HOLDS 'sub_skill_offense'to find every (skill, level) that offers a given perk. Empty for skills whose levels don't offer sub-skills (some pseudo skills, some campaign-only mechanics).- No
costcolumn — unlike Law levels, skill levels don't charge a separate spend; they're earned through the hero's general level-up mechanic.
Related tables
- Skill — joined on
skill_id = Skill.id(N:1). - SubSkill — joined on
offered_sub_skills HOLDS SubSkill.id. BonusDef— joined onparent_type='skill_level' AND parent_id = skill_id || '_L' || level.- Translation — per-level name/desc overrides in every language (English included), joined on
skill_id = Translation.target_id AND level = Translation.variant WHERE Translation.type='skill_level'; rows exist only for levels that override the parent skill's display fields.


