Module:Npcinfo

local data = mw.loadData( 'Module:npcinfo/data' ) -- loading data table.

local getArg = function(frame, key) local value = frame.args[key] if not value then return nil end value = mw.text.trim(value) if value == '' then return nil else return value end end

local fields = {'DeathSound', 'HitSound', 'Opacity', 'aiStyle', 'alpha', 'behindTiles', 'banner', 'boss', 'buffImmune', 'buffImmuneAll', 'buffImmuneAllNotWhips', 'catchItem', 'coldDamage', 'damage', 'damage_e', 'damage_e_hm', 'damage_e_pp', 'damage_m', 'damage_m_hm', 'damage_m_pp', 'defense', 'defense_e', 'defense_e_hm', 'defense_e_pp', 'defense_m', 'defense_m_hm', 'defense_m_pp', 'dontCountMe', 'dontTakeDamage', 'friendly', 'height', 'housingCategory', 'internalName', 'knockBackResist', 'knockBackResist_e', 'knockBackResist_e_hm', 'knockBackResist_e_pp', 'knockBackResist_m', 'knockBackResist_m_hm', 'knockBackResist_m_pp', 'lavaImmune', 'lifeMax', 'lifeMax_e', 'lifeMax_e_hm', 'lifeMax_e_pp', 'lifeMax_m', 'lifeMax_m_hm', 'lifeMax_m_pp', 'name', 'netAlways', 'netID', 'noGravity', 'noTileCollide', 'npcSlots', 'rarity', 'scale', 'timeLeft', 'townNPC', 'trapImmune', 'type', 'value', 'value_e', 'value_e_hm', 'value_e_pp', 'value_m', 'value_m_hm', 'value_m_pp', 'width',}

local statname = {}

local clear = function (frame) local prefix = getArg(frame, 'prefix') or '_npcinfo_'

local args = {} for i,v in ipairs(fields) do table.insert(args, prefix .. v)			table.insert(args, '') end

frame:callParserFunction{ name = '#dplvar:set', args = args } end

local p = { getInfo = function (frame) local npcid = tonumber(getArg(frame, 'id') or 0) local prefix = getArg(frame, 'prefix') or '_npcinfo_' local count = tonumber(getArg(frame, 'players') or 1) if not npcid then return end

-- 76/146/408 not used. if npcid < -65 or npcid > 669 then clear(frame) -- reset all dpl vars return end

local result = {} for k,v in pairs(data[0]) do			result[k] = v		end for k,v in pairs(data[npcid]) do			result[k] = v		end local args = {} for k,v in pairs(result) do args[#args + 1] = prefix .. k			args[#args + 1] = v		end args[#args + 1] = prefix .. '_fields' args[#args + 1] = table.concat(fields, ',') args[#args + 1] = prefix args[#args + 1] = 'InvalidNpcinfoStatName'

frame:callParserFunction{ name = '#dplvar:set', args = args }

end,

clear = clear,

getStat = function (frame) local npcid = tonumber(getArg('id')) or tonumber(getArg(1)) or 0 local stat = getArg('stat') or getArg(2) stat = statname[stat] or stat

if npcid < -65 or npcid > 669 then return end

if not stat then return end

return data[npcid][stat] or data[0][stat]

end,

-- for module. stat = function(npcid, stat) stat = statname[stat] or stat

if npcid < -65 or npcid > 669 then return end

if not stat then return end

return data[npcid][stat] or data[0][stat]

end, } p.getinfo = p.getInfo p.GetInfo = p.getInfo p.getstat = p.getStat p.GetStat = p.getStat return p