Template:SkillDef: Difference between revisions
obelisk-bot: uploading initial Cargo templates |
obelisk-bot: uploading initial Cargo templates |
||
| Line 7: | Line 7: | ||
<code>Data:Skill/<id></code> is self-contained — it carries the skill's own row plus every sub-skill referenced by any of its levels: | <code>Data:Skill/<id></code> is self-contained — it carries the skill's own row plus every sub-skill referenced by any of its levels: | ||
# <code>{{SkillDef | id=… | variant=… | skill_type=… | …}}</code> | # <code><nowiki>{{SkillDef | id=… | variant=… | skill_type=… | …}}</nowiki></code> | ||
# <code>{{TranslationDef | type=skill | target_id=<id> | …}}</code> — name + desc shared across all levels | # <code><nowiki>{{TranslationDef | type=skill | target_id=<id> | …}}</nowiki></code> — name + desc shared across all levels | ||
# N × <code>{{SkillLevelDef | skill_id=<id> | level=N | …}}</code> | # N × <code><nowiki>{{SkillLevelDef | skill_id=<id> | level=N | …}}</nowiki></code> | ||
# N × <code>{{SkillLevelTranslationDef | skill_id=<id> | level=N | … }}</code> — only when level overrides a name/desc | # N × <code><nowiki>{{SkillLevelTranslationDef | skill_id=<id> | level=N | … }}</nowiki></code> — only when level overrides a name/desc | ||
# M × <code>{{BonusDef | parent_type=skill_level | parent_id=<id>_L<level> | … }}</code> | # M × <code><nowiki>{{BonusDef | parent_type=skill_level | parent_id=<id>_L<level> | … }}</nowiki></code> | ||
# K × <code>{{SubSkillDef | id=… | parent_skill_id=<id> | …}}</code> — every sub-skill referenced by any level | # K × <code><nowiki>{{SubSkillDef | id=… | parent_skill_id=<id> | …}}</nowiki></code> — every sub-skill referenced by any level | ||
# K × <code>{{TranslationDef | type=sub_skill | target_id=<sub_skill_id> | …}}</code> | # K × <code><nowiki>{{TranslationDef | type=sub_skill | target_id=<sub_skill_id> | …}}</nowiki></code> | ||
# K' × <code>{{BonusDef | parent_type=sub_skill | parent_id=<sub_skill_id> | …}}</code> | # K' × <code><nowiki>{{BonusDef | parent_type=sub_skill | parent_id=<sub_skill_id> | …}}</nowiki></code> | ||
The 77 sub-skills not referenced by any skill (8 test entries + ~69 arena legacy <code>*_old</code> entries) emit onto the catch-all page <code>Data:Skill/_orphan_sub_skills</code> instead. | The 77 sub-skills not referenced by any skill (8 test entries + ~69 arena legacy <code>*_old</code> entries) emit onto the catch-all page <code>Data:Skill/_orphan_sub_skills</code> instead. | ||
| Line 26: | Line 26: | ||
| name = String | | name = String | ||
| name_sid = String | | name_sid = String | ||
| | | description = Wikitext | ||
| desc_sid = String | | desc_sid = String | ||
| max_level = Integer | | max_level = Integer | ||
| Line 40: | Line 40: | ||
| name = String <!-- resolved English --> | | name = String <!-- resolved English --> | ||
| name_sid = String | | name_sid = String | ||
| | | description = Wikitext <!-- resolved English; nullable --> | ||
| desc_sid = String <!-- nullable --> | | desc_sid = String <!-- nullable --> | ||
| max_level = Integer <!-- 1-3, == count(SkillLevel rows) --> | | max_level = Integer <!-- 1-3, == count(SkillLevel rows) --> | ||
| Line 69: | Line 69: | ||
| name = {{{name|}}} | | name = {{{name|}}} | ||
| name_sid = {{{name_sid|}}} | | name_sid = {{{name_sid|}}} | ||
| | | description = {{{description|}}} | ||
| desc_sid = {{{desc_sid|}}} | | desc_sid = {{{desc_sid|}}} | ||
| max_level = {{{max_level|}}} | | max_level = {{{max_level|}}} | ||
| source_path = {{{source_path|}}} | | source_path = {{{source_path|}}} | ||
}}</includeonly> | }}</includeonly> | ||
Revision as of 00:02, 13 May 2026
One row per hero skill. 102 rows total in 2026-05-05: 30 production + 12 pseudo + 30 arena + 30 campaign. Skills are the top-level branches of the hero skill tree (e.g. skill_assault, skill_archery, skill_logistics); each has 1-3 mastery levels, and at each level the player gets to pick from a small pool of sub-skills ("perks") that further specialize the build.
A skill carries identity (id, variant, type), shared name + desc SIDs, and a count of mastery levels. Per-level data (overrides, offered sub-skills, bonuses) lives on SkillLevel. The sub-skills available from a skill live on SubSkill, recovered by scanning every level's offered_sub_skills list.
Page layout
Data:Skill/<id> is self-contained — it carries the skill's own row plus every sub-skill referenced by any of its levels:
{{SkillDef | id=… | variant=… | skill_type=… | …}}{{TranslationDef | type=skill | target_id=<id> | …}}— name + desc shared across all levels- N ×
{{SkillLevelDef | skill_id=<id> | level=N | …}} - N ×
{{SkillLevelTranslationDef | skill_id=<id> | level=N | … }}— only when level overrides a name/desc - M ×
{{BonusDef | parent_type=skill_level | parent_id=<id>_L<level> | … }} - K ×
{{SubSkillDef | id=… | parent_skill_id=<id> | …}}— every sub-skill referenced by any level - K ×
{{TranslationDef | type=sub_skill | target_id=<sub_skill_id> | …}} - K' ×
{{BonusDef | parent_type=sub_skill | parent_id=<sub_skill_id> | …}}
The 77 sub-skills not referenced by any skill (8 test entries + ~69 arena legacy *_old entries) emit onto the catch-all page Data:Skill/_orphan_sub_skills instead.
Schema
This template defines the table "Skill". View table.
{{SkillDef
| id = String
| variant = String <!-- production / arena / campaign / pseudo -->
| skill_type = String <!-- Common / Class / Faction; null for pseudo skills -->
| is_pseudo = Boolean
| name = String <!-- resolved English -->
| name_sid = String
| description = Wikitext <!-- resolved English; nullable -->
| desc_sid = String <!-- nullable -->
| max_level = Integer <!-- 1-3, == count(SkillLevel rows) -->
| source_path = String
}}
Field notes
idis the source JSON id (e.g.skill_assault,arena_skill_assault,campaign_skill_assault,skill_pseudo_1).variantdistinguishes production / arena / campaign / pseudo variants of the same skill family. Most analytical queries shouldWHERE variant = 'production'.
skill_type is one of Common / Class / FactionDef. Pseudo skills (the 12 skill_pseudo_ entries) carry no skill_type — they're internal mechanism skills not shown in the hero UI.
is_pseudomirrors the sourceisPseudoSkillflag. Pseudo skills typically have just 1 level and are used as reusable mechanic containers (e.g. movement bonuses applied uniformly).name_sid/desc_sidpoint at the L10n entries;name/descare the resolved English mirrors for at-a-glance reading.max_levelequals the length of the sourceparametersPerLevelarray.
Related tables
- SkillLevel — joined on
id = skill_id(1:N where N=1..3). - SubSkill — joined on
id = parent_skill_id. Recovered by scanning every level'soffered_sub_skills. BonusDef— skill-level bonuses join onparent_type='skill_level' AND parent_id LIKE id || '_L%'.TranslationDef— one row per skill withtype=skill,target_id=id.


