Module:Sandbox/LVL: Difference between revisionsGive feedback
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| Line 6: | Line 6: | ||
-- Load data and utility modules | -- Load data and utility modules | ||
local npcs_data = mw.loadJsonData("Data:NpcData.json") | local npcs_data = mw.loadJsonData("Data:NpcData.json") | ||
local util_module = require('Module:Utilities') | local util_module = require('Module:Utilities') | ||
local lang_module = require('Module:Lang') | local lang_module = require('Module:Lang') | ||
function p.get_npc_data(name) | function p.get_npc_data(name) | ||
if not name or name == '' then | if not name or name == '' then | ||
| Line 24: | Line 17: | ||
end | end | ||
p.get_npc_var = function(frame) | p.get_npc_var = function(frame) | ||
local args = frame.args | local args = frame.args | ||
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 | ||
| Line 40: | Line 23: | ||
local sig_figs_or_localize = args[3] and mw.text.trim(args[3]) or nil | local sig_figs_or_localize = args[3] and mw.text.trim(args[3]) or nil | ||
if not npc_name or npc_name == '' then | if not npc_name or npc_name == '' then | ||
return "Error: NPC name not provided. | return '<span class="error">Error: NPC name not provided.</span>' | ||
end | end | ||
if not npc_stat_key or npc_stat_key == '' then | if not npc_stat_key or npc_stat_key == '' then | ||
return "Error: Stat key not provided. | return '<span class="error">Error: Stat key not provided.</span>' | ||
end | end | ||
local npc = npcs_data[npc_name] | local npc = npcs_data[npc_name] | ||
if not npc then | if not npc then | ||
return "Error: NPC ' | return '<span class="error">Error: NPC "' .. npc_name .. '" not found.</span>' | ||
end | end | ||
local var_value = npc[npc_stat_key] | local var_value = npc[npc_stat_key] | ||
if var_value == nil then | if var_value == nil then | ||
return '<span class="error">Error: Stat "' .. npc_stat_key .. '" not found for NPC "' .. npc_name .. '".</span>' | return '<span class="error">Error: Stat "' .. npc_stat_key .. '" not found for NPC "' .. npc_name .. '".</span>' | ||
end | end | ||
if sig_figs_or_localize and tonumber(sig_figs_or_localize) then | if sig_figs_or_localize and tonumber(sig_figs_or_localize) 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_or_localize) | ||
if var_value == nil then | if var_value == nil then | ||
return '<span class="error">Error: Rounding failed for value.</span>' | |||
end | end | ||
end | end | ||
if sig_figs_or_localize == "true" then | if sig_figs_or_localize == "true" then | ||
return lang_module.get_string(var_value) | return lang_module.get_string(var_value) | ||
| Line 78: | Line 54: | ||
end | end | ||
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 | ||
| Line 93: | Line 60: | ||
local localize = frame.args[4] and mw.text.trim(frame.args[4]) 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 "Error: NPC name not provided. | if not var or var == '' then return '<span class="error">Error: List variable name not provided.</span>' end | ||
if not var or var == '' then return "Error: List variable name not provided. | if not number_str or number_str == '' then return '<span class="error">Error: Index not provided.</span>' end | ||
if not number_str or number_str == '' then return "Error: Index not provided. | |||
local number_int = tonumber(number_str) | local number_int = tonumber(number_str) | ||
if not number_int then return "Error: Invalid index provided. Must be a number. | if not number_int then return '<span class="error">Error: Invalid index provided. Must be a number.</span>' end | ||
local npc = npcs_data[npc_name] | local npc = npcs_data[npc_name] | ||
if not npc then return "Error: NPC ' | if not npc then return '<span class="error">Error: NPC "' .. npc_name .. '" not found.</span>' end | ||
local list = npc[var] | local list = npc[var] | ||
if list == nil or type(list) ~= "table" then return "" end | if list == nil or type(list) ~= "table" then return "" end | ||
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 | if localize == "true" then | ||
| Line 119: | Line 83: | ||
end | end | ||
p.get_ability_key = function(frame) | p.get_ability_key = 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 slot_name = frame.args[2] and mw.text.trim(frame.args[2]) or nil | local slot_name = frame.args[2] and mw.text.trim(frame.args[2]) 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 "Error: NPC name not provided. | if not slot_name or slot_name == '' then return '<span class="error">Error: Slot name not provided.</span>' end | ||
if not slot_name or slot_name == '' then return "Error: Slot name not provided. | |||
local npc_data = npcs_data[npc_name] | local npc_data = npcs_data[npc_name] | ||
if not npc_data then return "Error: NPC ' | if not npc_data then return '<span class="error">Error: NPC "'..npc_name.. '" not found.</span>' end | ||
local bound_abilities_data = npc_data["BoundAbilities"] | local bound_abilities_data = npc_data["BoundAbilities"] | ||
if not bound_abilities_data or type(bound_abilities_data) ~= "table" then | if not bound_abilities_data or type(bound_abilities_data) ~= "table" then | ||
return "Error: NPC ' | return '<span class="error">Error: NPC "' .. npc_name .. '" has no \'BoundAbilities\' data.</span>' | ||
end | end | ||
local ability_key = bound_abilities_data[slot_name] | local ability_key = bound_abilities_data[slot_name] | ||
if not ability_key then | if not ability_key then | ||
return "Error: Slot ' | return '<span class="error">Error: Slot "' .. slot_name .. '" not found for NPC "' .. npc_name .. '".</span>' | ||
end | end | ||