Module:HeroSubClassData
Template:Documentation
This module provides standardized methods to query mechanical data configurations, activation skill prerequisites, and localized texts mapped to specific hero mastery subclasses directly from the Cargo database tables (specifically HeroSubClass and Translation).
Basic Syntax
To extract any structural variable node or translation block from a hero subclass registry page:
{{#invoke:HeroSubClassData|get|SUBCLASS_ID|VARIABLE|LANGUAGE_CODE}}
SUBCLASS_ID: The technical internal database key identifier assigned to the targeted hero subclass row (e.g.,sub_class_human_might_1).VARIABLE: The specific data field node target identifier to look up (see reference matrix below).LANGUAGE_CODE: (Optional) Sets the localization system language. Defaults to French (fr) if omitted, with automated fallbacks.
---
Technical Reference Index
📝 Localized Text Blocks (Language-Aware)
Queries localized dictionary assets that translate dynamically based on the language parameter input.
| Variable Keyword | Description | Sample Expected Output |
|---|---|---|
name |
The localized public name of the specialty subclass. | Bretteur |
description |
Mechanical lore synopses detailing passive thresholds or stats adjustments. | Coup héroïque inflige +60 point(s)... |
⚙️ Structural & Mechanical Properties
Static code variables returning gameplay rows directly mapped parameters tied into the core game database.
| Variable Keyword | Description | Sample Output |
|---|---|---|
faction |
The alignment technical name faction group linked to the subclass. | human
|
class_type |
Archetypal class methodology branch style. | might
|
icon |
Graphical asset emblem visual token key identifier. | sub_class_human_might_1_icon
|
source_path |
Server file system dump localization repository tree tracker. | DB/heroes_sub_classes/sub_classes_human.json
|
⚔️ Required Activation Skills
Prerequisites requirements parameters checking skills conditions to validate the subclass unlock state.
| Variable Keyword | Description | Variable Keyword | Description |
|---|---|---|---|
activation_skill_1_sid |
Internal ID of required Skill 1 | activation_skill_1_level |
Required level threshold for Skill 1 |
activation_skill_2_sid |
Internal ID of required Skill 2 | activation_skill_2_level |
Required level threshold for Skill 2 |
activation_skill_3_sid |
Internal ID of required Skill 3 | activation_skill_3_level |
Required level threshold for Skill 3 |
activation_skill_4_sid |
Internal ID of required Skill 4 | activation_skill_4_level |
Required level threshold for Skill 4 |
activation_skill_5_sid |
Internal ID of required Skill 5 | activation_skill_5_level |
Required level threshold for Skill 5 |
---
Practical Implementation Examples
Example 1: Creating a Prerequisites Checklist
Pull structural required requirements to display dynamic conditional lists on wiki pages:
To become a {{#invoke:HeroSubClassData|get|sub_class_human_might_1|name|en}}, you need:
* {{#invoke:HeroSubClassData|get|sub_class_human_might_1|activation_skill_1_sid}} at Level {{#invoke:HeroSubClassData|get|sub_class_human_might_1|activation_skill_1_level}}
* {{#invoke:HeroSubClassData|get|sub_class_human_might_1|activation_skill_2_sid}} at Level {{#invoke:HeroSubClassData|get|sub_class_human_might_1|activation_skill_2_level}}
local p = {}
-- Fonction principale pour récupérer les données d'une sous-classe
-- Syntaxe : {{#invoke:HeroSubClassData|get|ID_SOUS_CLASSE|CHAMP|LANGUE}}
function p.get(frame)
local args = frame.args[1] and frame.args or frame:getParent().args
local subclass_id = args[1]
local field = args[2]
local lang = args[3] or 'fr' -- Par défaut en français
if not subclass_id or not field then
return "Erreur : ID de sous-classe ou champ manquant."
end
-- 1. GESTION DES DONNÉES TRADUITES (Ajusté sur "hero_sub_class")
if field == 'name' or field == 'description' then
local queryOpts = {
where = string.format('target_id="%s" AND language="%s" AND type="hero_sub_class"', subclass_id, lang)
}
local res = mw.ext.cargo.query('Translation', field, queryOpts)
if res and res[1] and res[1][field] then
return res[1][field]
else
-- Système de fallback (secours) vers le français ou l'anglais
if lang ~= 'fr' then
local fallbackFr = mw.ext.cargo.query('Translation', field, {where = string.format('target_id="%s" AND language="fr" AND type="hero_sub_class"', subclass_id)})
if fallbackFr and fallbackFr[1] and fallbackFr[1][field] then return fallbackFr[1][field] end
end
if lang ~= 'en' then
local fallbackEn = mw.ext.cargo.query('Translation', field, {where = string.format('target_id="%s" AND language="en" AND type="hero_sub_class"', subclass_id)})
if fallbackEn and fallbackEn[1] and fallbackEn[1][field] then return fallbackEn[1][field] end
end
return ""
end
end
-- 2. GESTION DES PROPRIÉTÉS STRUCTURELLES
local queryOpts = {
where = string.format('id="%s"', subclass_id)
}
local res = mw.ext.cargo.query('HeroSubClass', field, queryOpts)
if res and res[1] and res[1][field] then
return res[1][field]
end
return ""
end -- <-- Le fameux "end" qui manquait ici !
return p


