| Latest revision |
Your text |
| Line 1: |
Line 1: |
| This template allows you to display NPC stats automatically using the game files. It pulls data directly from [[Data:NpcData.json]]. | | This template is a shortcut for [[Module:NpcData]] to make it easier to display NPC stats on a page. |
|
| |
|
| == ⚡ Quick Start ==
| | It can be used to get a single stat (like `MaxHealth`) or an item from a list of stats (like the 4th value in a list of resistances). |
| # 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>.
| |
|
| |
|
| '''Basic Example:'''
| | == How to Use == |
| <code><nowiki>{{NpcData|trooper_medic|MaxHealth}}</nowiki></code>
| |
|
| |
|
| == 📖 How to Build a Path == | | === Getting a Single Stat === |
| JSON data is like a set of nested folders. To get a specific number, you have to tell the template which folders to open.
| | This is the most common use. Provide the information in the following order. |
|
| |
|
| === 1. Find the NPC Name ===
| | '''Syntax''' |
| The first parameter is always the "internal name" of the unit.
| | <code><nowiki>{{NpcData|NPC Name|Stat Name|Rounding}}</nowiki></code> |
| * '''Common names:''' <code>npc_boss_tier2</code> (Walker), <code>trooper_normal</code> (Trooper), <code>npc_super_neutral</code> (Mid Boss).
| |
|
| |
|
| === 2. Follow the Boxes (The "Double Box" Rule) ===
| | '''Parameters''' |
| When looking at the [[Data:NpcData.json|Data Viewer]], follow the lines to your stat.
| | * '''First parameter (NPC Name):''' The internal key for the NPC (e.g., `npc_boss_tier2`). |
| | * '''Second parameter (Stat Name):''' The name of the stat you want to look up (e.g., `MaxHealth`). |
| | * '''Third parameter (Rounding):''' (Optional) A number to round the result to that many significant figures. |
|
| |
|
| * '''Standard Stat (Single Box):'''
| | '''Examples''' |
| *: If the stat is just inside a standard box, just add its name. | | * To get the max health of a Medic Trooper: |
| *: ''Example:'' <code>ShieldLogic</code> is a standard box. | | ** '''Code:''' <code><nowiki>{{NpcData|trooper_medic|MaxHealth}}</nowiki></code> |
| *: '''Code:''' <code><nowiki>{{NpcData|npc_super_neutral|ShieldLogic|BaseAbsorptionPerSecond}}</nowiki></code> | | ** '''Result:''' {{NpcData|trooper_medic|MaxHealth}} |
|
| |
|
| * '''List / Array (Double Box):''' | | * If you misspell a stat, you will see an error: |
| *: '''Important:''' If you see a '''box inside a box''' (like <code>IntrinsicModifiers</code> or <code>ResistValues</code>), this is a '''List'''. | | ** '''Code:''' <code><nowiki>{{NpcData|trooper_medic|MaxHeath}}</nowiki></code> <!-- Note the typo --> |
| *: 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.).
| | ** '''Result:''' {{NpcData|trooper_medic|MaxHeath}} |
| *: ''Example:'' <code>IntrinsicModifiers</code> is a list. | |
| *: '''Code:''' <code><nowiki>{{NpcData|npc_super_neutral|IntrinsicModifiers|1|HEALTH_REGEN_PER_SECOND}}</nowiki></code> | |
|
| |
|
| === 3. Rounding (Optional) === | | ---- |
| If the number is too long (e.g., 0.333333), you can add a number at the very end to round it.
| | === Getting an Item from a List === |
| * '''Note:''' This uses '''Significant Figures''', not decimal places.
| | To get a single value from a list, you must use the named `index=` parameter. |
| * <code>...|2}}</code> turns <code>1250</code> into <code>1300</code>.
| |
| * <code>...|2}}</code> turns <code>0.125</code> into <code>0.13</code>.
| |
|
| |
|
| == 📋 Copy-Paste Examples == | | '''Syntax''' |
| | <code><nowiki>{{NpcData|NPC Name|List Name|index=Position Number}}</nowiki></code> |
|
| |
|
| ; Simple Stats
| | '''Parameters''' |
| : <code><nowiki>{{NpcData|trooper_medic|MaxHealth}}</nowiki></code> → {{NpcData|trooper_medic|MaxHealth}} | | * '''First parameter (NPC Name):''' The internal key for the NPC. |
| | * '''Second parameter (List Name):''' The name of the list property (e.g., `NearbyEnemyResistanceValues`). |
| | * '''index=''' The position in the list. The first item is `1`, the second is `2`, and so on. |
|
| |
|
| ; Nested Stats (Shields, Regen)
| | '''Example''' |
| : <code><nowiki>{{NpcData|npc_super_neutral|ShieldLogic|BaseAbsorptionPerSecond}}</nowiki></code> → {{NpcData|npc_super_neutral|ShieldLogic|BaseAbsorptionPerSecond}}
| | * The Tier 2 Boss has a list of resistance values. To get the 4th value in that list: |
| | | ** '''Code:''' <code><nowiki>{{NpcData|npc_boss_tier2|NearbyEnemyResistanceValues|index=4}}</nowiki></code> |
| ; Abilities (Using Slot Names)
| | ** '''Result:''' {{NpcData|npc_boss_tier2|NearbyEnemyResistanceValues|index=4}} |
| : <code><nowiki>{{NpcData|npc_boss_tier2|BoundAbilities|ESlot_Signature_1|Damage}}</nowiki></code> → {{NpcData|npc_boss_tier2|BoundAbilities|ESlot_Signature_1|Damage}}
| |
| | |
| ; Lists/Arrays (Using Numbers)
| |
| : ''Getting the 4th value from a list of resistance numbers:''
| |
| : <code><nowiki>{{NpcData|npc_boss_tier2|NearbyEnemyResist|ResistValues|4}}</nowiki></code> → {{NpcData|npc_boss_tier2|NearbyEnemyResist|ResistValues|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>
| |
| {
| |
| "description": "Displays NPC stats from game files. Use the Data:NpcData.json page to find the correct paths.",
| |
| "params": {
| |
| "1": {
| |
| "label": "NPC Name",
| |
| "description": "The internal key (e.g., npc_boss_tier2).",
| |
| "type": "string",
| |
| "required": true,
| |
| "example": "trooper_medic"
| |
| },
| |
| "2": {
| |
| "label": "Path Step 1",
| |
| "description": "The first step in the path (e.g., MaxHealth or BoundAbilities).",
| |
| "type": "string",
| |
| "required": true,
| |
| "example": "MaxHealth"
| |
| },
| |
| "3": {
| |
| "label": "Path Step 2 / Rounding",
| |
| "description": "The next step in the path OR an optional rounding number.",
| |
| "type": "string",
| |
| "required": false
| |
| },
| |
| "4": {
| |
| "label": "Path Step 3 / Rounding",
| |
| "description": "The next step in the path OR an optional rounding number.",
| |
| "type": "string",
| |
| "required": false
| |
| },
| |
| "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",
| |
| "description": "Optional: Round to this many Significant Figures (e.g., 2). Only used if this is the final parameter.",
| |
| "type": "number",
| |
| "required": false
| |
| }
| |
| },
| |
| "format": "inline"
| |
| }
| |
| </templatedata>
| |
| | |
| <includeonly>
| |
| [[Category:Templates]]
| |
| </includeonly><noinclude>
| |
| [[Category:Template documentation]]
| |
| </noinclude>
| |