Module:NpcData: Difference between revisions

Jump to navigation Jump to search
LVL (talk | contribs)
Create Module:NpcData to access NPC stats from Data:NpcData.json, similar in function to Module:HeroData.
 
LVL (talk | contribs)
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|OPTIONS}}--
--{{#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 sig_figs_or_localize = args[3] and mw.text.trim(args[3]) or nil
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 sig_figs_or_localize and tonumber(sig_figs_or_localize) then
if sig_figs and tonumber(sig_figs) then
var_value = util_module.round_to_sig_fig(var_value, sig_figs_or_localize)
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
-- localize
if sig_figs_or_localize == "true" then
return lang_module.get_string(var_value)
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|localize}}--
--{{#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
local localize = frame.args[4] and mw.text.trim(frame.args[4]) 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
if localize == "true" then
element = lang_module.get_string(element)
end
return element
return element