Module:NpcData: Difference between revisionsGive feedback
Jump to navigation
Jump to search
Create Module:NpcData to access NPC stats from Data:NpcData.json, similar in function to Module:HeroData. |
Removed localization |
||
| Line 15: | Line 15: | ||
-- Retrieves a specific stat value for a given NPC. | -- Retrieves a specific stat value for a given NPC. | ||
--{{#invoke:NpcData|get_npc_var|NPC_KEY|STAT_KEY| | --{{#invoke:NpcData|get_npc_var|NPC_KEY|STAT_KEY|SIG_FIGS}}-- | ||
p.get_npc_var = function(frame) | p.get_npc_var = function(frame) | ||
-- Get arguments from the #invoke call and trim whitespace | -- Get arguments from the #invoke call and trim whitespace | ||
| Line 21: | Line 21: | ||
local npc_name = args[1] and mw.text.trim(args[1]) or nil | local npc_name = args[1] and mw.text.trim(args[1]) or nil | ||
local npc_stat_key = args[2] and mw.text.trim(args[2]) or nil | local npc_stat_key = args[2] and mw.text.trim(args[2]) or nil | ||
local | local sig_figs = args[3] and mw.text.trim(args[3]) or nil | ||
-- Validate required arguments | -- Validate required arguments | ||
| Line 43: | Line 43: | ||
end | end | ||
-- round | -- round if a number is provided | ||
if | if sig_figs and tonumber(sig_figs) then | ||
var_value = util_module.round_to_sig_fig(var_value, | var_value = util_module.round_to_sig_fig(var_value, sig_figs) | ||
if var_value == nil then | if var_value == nil then | ||
return '<span class="error">Error: Rounding failed for value.</span>' | return '<span class="error">Error: Rounding failed for value.</span>' | ||
end | end | ||
end | end | ||
| Line 60: | Line 55: | ||
-- Retrieves an element from a list (array) within an NPC's data. | -- Retrieves an element from a list (array) within an NPC's data. | ||
--{{#invoke:NpcData|get_list_elem|NPC_KEY|LIST_KEY|INDEX | --{{#invoke:NpcData|get_list_elem|NPC_KEY|LIST_KEY|INDEX}}-- | ||
p.get_list_elem = function(frame) | p.get_list_elem = function(frame) | ||
local npc_name = frame.args[1] and mw.text.trim(frame.args[1]) or nil | local npc_name = frame.args[1] and mw.text.trim(frame.args[1]) or nil | ||
local var = frame.args[2] and mw.text.trim(frame.args[2]) or nil | local var = frame.args[2] and mw.text.trim(frame.args[2]) or nil | ||
local number_str = frame.args[3] and mw.text.trim(frame.args[3]) or nil | local number_str = frame.args[3] and mw.text.trim(frame.args[3]) or nil | ||
if not npc_name or npc_name == '' then return '<span class="error">Error: NPC name not provided.</span>' end | if not npc_name or npc_name == '' then return '<span class="error">Error: NPC name not provided.</span>' end | ||
| Line 82: | Line 76: | ||
local element = list[number_int] | local element = list[number_int] | ||
if element == nil then return "" end | if element == nil then return "" end | ||
return element | return element | ||