Module:HeroSubClassData: Difference between revisions
Undo revision 20721 by 76561198256426587 (talk) Tag: Undo |
Undo revision 20720 by 76561198256426587 (talk) Tag: Undo |
||
| Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
-- Fonction principale pour récupérer les données d'une sous-classe | |||
-- Syntaxe : {{#invoke:HeroSubClassData|get|ID_SOUS_CLASSE|CHAMP|LANGUE}} | |||
-- Fonction | |||
-- Syntaxe : {{#invoke: | |||
function p.get(frame) | function p.get(frame) | ||
local args = frame.args[1] and frame.args or frame:getParent().args | local args = frame.args[1] and frame.args or frame:getParent().args | ||
local subclass_id = args[1] | |||
local | |||
local field = args[2] | local field = args[2] | ||
local lang = args[3] or ' | local lang = args[3] or 'fr' -- Par défaut en français | ||
if | if not subclass_id or not field then | ||
return "Erreur : ID de | return "Erreur : ID de sous-classe ou champ manquant." | ||
end | end | ||
-- 1. | -- 1. GESTION DES DONNÉES TRADUITES (Ajusté sur "hero_sub_class") | ||
if field == 'name' or field == 'description' then | if field == 'name' or field == 'description' then | ||
local queryOpts = { | local queryOpts = { | ||
where = string.format('target_id="%s" AND language="%s" AND type=" | 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) | local res = mw.ext.cargo.query('Translation', field, queryOpts) | ||
| Line 64: | Line 23: | ||
return res[1][field] | return res[1][field] | ||
else | else | ||
-- Système de secours | -- 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 | if lang ~= 'en' then | ||
local | 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 | |||
if | |||
end | end | ||
return "" | return "" | ||
end | end | ||
end | end | ||
-- 2. | -- 2. GESTION DES PROPRIÉTÉS STRUCTURELLES | ||
local | local queryOpts = { | ||
where = string.format('id="%s"', | where = string.format('id="%s"', subclass_id) | ||
} | } | ||
local | local res = mw.ext.cargo.query('HeroSubClass', field, queryOpts) | ||
if | if res and res[1] and res[1][field] then | ||
return res[1][field] | |||
end | end | ||
return "" | return "" | ||
end | end -- <-- Le fameux "end" qui manquait ici ! | ||
return p | return p | ||
Revision as of 19:39, 28 May 2026
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


