Template:NpcData/doc: Difference between revisions

LVL (talk | contribs)
No edit summary
LVL (talk | contribs)
Updated doc to reflect current code and made it easier to understand
 
Line 1: Line 1:
This template is a shortcut for [[Module:NpcData]] to make it easier to display NPC stats on a page.
This template allows you to display NPC stats automatically using the game files. It pulls data directly from [[Data:NpcData.json]].


It can be used to get a single stat (including nested ones) or an item from a list of stats.
== ⚡ Quick Start ==
# Go to [[Data:NpcData.json]] and find the NPC you want.
# Look at the "path" to the stat you need.
# Copy that path into the template, separating each step with a pipe <code>|</code>.


== How to Use ==
'''Basic Example:'''
<code><nowiki>{{NpcData|trooper_medic|MaxHealth}}</nowiki></code>


=== Getting a Single or Nested Stat ===
== 📖 How to Build a Path ==
This is the most common use. Provide the information in the following order. For nested stats, simply add more parameters for each level of nesting.
JSON data is like a set of nested folders. To get a specific number, you have to tell the template which folders to open.


'''Syntax'''
=== 1. Find the NPC Name ===
<code><nowiki>{{NpcData|NPC Name|Key 1|Key 2|...|Rounding}}</nowiki></code>
The first parameter is always the "internal name" of the unit.
* '''Common names:''' <code>npc_boss_tier2</code> (Walker), <code>trooper_normal</code> (Trooper), <code>npc_super_neutral</code> (Mid Boss).


'''Parameters'''
=== 2. Follow the Boxes (The "Double Box" Rule) ===
* '''First parameter (NPC Name):''' The internal key for the NPC (e.g., <code>npc_boss_tier2</code>).
When looking at the [[Data:NpcData.json|Data Viewer]], follow the lines to your stat.
* '''Second, Third, etc. parameters (Keys):''' The path to the stat you want. For a simple stat, this is just one key. For a nested stat, provide each key as a separate parameter.
* '''Final parameter (Rounding):''' (Optional) If the final parameter is a number, it will be used to round the result to that many significant figures.


'''Examples'''
* '''Standard Stat (Single Box):'''
* To get the max health of a Medic Trooper:
*: If the stat is just inside a standard box, just add its name.
** '''Code:''' <code><nowiki>{{NpcData|trooper_medic|MaxHealth}}</nowiki></code>
*: ''Example:'' <code>ShieldLogic</code> is a standard box.
** '''Result:''' {{NpcData|trooper_medic|MaxHealth}}
*: '''Code:''' <code><nowiki>{{NpcData|npc_super_neutral|ShieldLogic|BaseAbsorptionPerSecond}}</nowiki></code>


* If you misspell a stat, you will see an error:
* '''List / Array (Double Box):'''
** '''Code:''' <code><nowiki>{{NpcData|trooper_medic|MaxHeath}}</nowiki></code> <!-- Note the typo -->
*: '''Important:''' If you see a '''box inside a box''' (like <code>IntrinsicModifiers</code> or <code>ResistValues</code>), this is a '''List'''.
** '''Result:''' {{NpcData|trooper_medic|MaxHeath}}
*: You cannot just ask for the stat; you must use a '''Number''' to tell the template which item in the list to look at (1 for the 1st, 2 for the 2nd, etc.).
*: ''Example:'' <code>IntrinsicModifiers</code> is a list.
*: '''Code:''' <code><nowiki>{{NpcData|npc_super_neutral|IntrinsicModifiers|1|HEALTH_REGEN_PER_SECOND}}</nowiki></code>


* To get a nested shield stat (using multiple parameters):
=== 3. Rounding (Optional) ===
** '''Code:''' <code><nowiki>{{NpcData|npc_super_neutral|Shield|BaseAbsorptionPerSecond}}</nowiki></code>
If the number is too long (e.g., 0.333333), you can add a number at the very end to round it.
** '''Result:''' {{NpcData|npc_super_neutral|Shield|BaseAbsorptionPerSecond}}
* '''Note:''' This uses '''Significant Figures''', not decimal places.
* <code>...|2}}</code> turns <code>1250</code> into <code>1300</code>.
* <code>...|2}}</code> turns <code>0.125</code> into <code>0.13</code>.


* To get a deeply nested ability name:
== 📋 Copy-Paste Examples ==
** '''Code:''' <code><nowiki>{{NpcData|npc_boss_tier2|BoundAbilities|1|Name}}</nowiki></code>
** '''Result:''' {{NpcData|npc_boss_tier2|BoundAbilities|1|Name}}


----
; Simple Stats
=== Getting an Item from a List ===
: <code><nowiki>{{NpcData|trooper_medic|MaxHealth}}</nowiki></code> → {{NpcData|trooper_medic|MaxHealth}}
To get a single value from a list, you must use the named <code>index=</code> parameter.


'''Syntax'''
; Nested Stats (Shields, Regen)
<code><nowiki>{{NpcData|NPC Name|List Name|index=Position Number}}</nowiki></code>
: <code><nowiki>{{NpcData|npc_super_neutral|ShieldLogic|BaseAbsorptionPerSecond}}</nowiki></code> → {{NpcData|npc_super_neutral|ShieldLogic|BaseAbsorptionPerSecond}}


'''Parameters'''
; Abilities (Using Slot Names)
* '''First parameter (NPC Name):''' The internal key for the NPC.
: <code><nowiki>{{NpcData|npc_boss_tier2|BoundAbilities|ESlot_Signature_1|Damage}}</nowiki></code> → {{NpcData|npc_boss_tier2|BoundAbilities|ESlot_Signature_1|Damage}}
* '''Second parameter (List Name):''' The name of the list property (e.g., <code>NearbyEnemyResistanceValues</code>).
* '''index=''' The position in the list. The first item is <code>1</code>, the second is <code>2</code>, and so on.


'''Example'''
; Lists/Arrays (Using Numbers)
* The Tier 2 Boss has a list of resistance values. To get the 4th value in that list:
: ''Getting the 4th value from a list of resistance numbers:''
** '''Code:''' <code><nowiki>{{NpcData|npc_boss_tier2|NearbyEnemyResistanceValues|index=4}}</nowiki></code>
: <code><nowiki>{{NpcData|npc_boss_tier2|NearbyEnemyResist|ResistValues|4}}</nowiki></code> → {{NpcData|npc_boss_tier2|NearbyEnemyResist|ResistValues|4}}
** '''Result:''' {{NpcData|npc_boss_tier2|NearbyEnemyResistanceValues|index=4}}
 
; Rounding
: <code><nowiki>{{NpcData|npc_boss_tier2|MaxHealth|2}}</nowiki></code> → {{NpcData|npc_boss_tier2|MaxHealth|2}}
 
== ❌ Common Errors ==
* <span class="error">Error: Key "X" not found...</span>
*: You likely spelled the stat name wrong, or you forgot a step in the path (like missing a folder name).
* <span class="error">Error: Path points to a table/object...</span>
*: You stopped too early! You pointed to a "folder" (like <code>ShieldLogic</code>) instead of a specific number inside it. Add one more parameter to get the specific stat.


<templatedata>
<templatedata>
{
{
"description": "A shortcut for Module:NpcData to display stats for NPCs. Can retrieve simple stats, nested stats, or an item from a list.",
"description": "Displays NPC stats from game files. Use the Data:NpcData.json page to find the correct paths.",
"params": {
"params": {
"1": {
"1": {
"label": "NPC Name",
"label": "NPC Name",
"description": "The internal key for the NPC (e.g., npc_boss_tier2).",
"description": "The internal key (e.g., npc_boss_tier2).",
"type": "string",
"type": "string",
"required": true,
"required": true,
"example": "trooper_medic",
"example": "trooper_medic"
"aliases": [ "npc" ]
},
},
"2": {
"2": {
"label": "Key 1 / List Name",
"label": "Path Step 1",
"description": "The name of the stat (e.g., MaxHealth), the first key in a nested path (e.g., Shield), or the name of a list.",
"description": "The first step in the path (e.g., MaxHealth or BoundAbilities).",
"type": "string",
"type": "string",
"required": true,
"required": true,
"example": "MaxHealth",
"example": "MaxHealth"
"aliases": [ "stat" ]
},
},
"3": {
"3": {
"label": "Key 2 / Rounding",
"label": "Path Step 2 / Rounding",
"description": "The second key in a nested path (e.g., BaseAbsorptionPerSecond) OR an optional number to round the result to that many significant figures.",
"description": "The next step in the path OR an optional rounding number.",
"type": "string",
"type": "string",
"required": false
"required": false
},
},
"4": {
"4": {
"label": "Key 3 / Rounding",
"label": "Path Step 3 / Rounding",
"description": "The third key in a nested path OR an optional rounding number.",
"description": "The next step in the path OR an optional rounding number.",
"type": "string",
"type": "string",
"required": false
"required": false
},
},
"5": {
"5": {
"label": "Path Step 4 / Rounding",
"description": "The next step in the path OR an optional rounding number.",
"type": "string",
"required": false
},
"6": {
"label": "Path Step 5 / Rounding",
"description": "The next step in the path OR an optional rounding number.",
"type": "string",
"required": false
},
"7": {
"label": "Path Step 6 / Rounding",
"description": "The next step in the path OR an optional rounding number.",
"type": "string",
"required": false
},
"8": {
"label": "Rounding",
"label": "Rounding",
"description": "An optional number to round the result to that many significant figures.",
"description": "Optional: Round to this many Significant Figures (e.g., 2). Only used if this is the final parameter.",
"type": "number",
"type": "number",
"required": false
"required": false
},
"index": {
"label": "Index",
"description": "The position of the item to get from a list (e.g., 4 for the 4th item). Using this parameter changes the template's behavior to get an item from a list.",
"type": "number",
"required": false,
"example": "4"
}
}
},
},