모듈:ChampionData/getter
외관
이 모듈에 대한 설명문서는 모듈:ChampionData/getter/설명문서에서 만들 수 있습니다
-- <pre>
local p = {}
local data = mw.loadData('Module:ChampionData/data')
local function getData(champname, stat)
if stat then
return data[champname] and data[champname].stats or {}
else
return data[champname] or {}
end
end
local function getDataStat(champname, stat)
return getData(champname, true)[stat] or {}
end
function p.id(champname)
return getData(champname).id
end
function p.apiname(champname)
return getData(champname).apiname or champname
end
function p.title(champname)
return getData(champname).title or champname
end
function p.attack(champname)
return getData(champname).attack
end
function p.defense(champname)
return getData(champname).defense
end
function p.magic(champname)
return getData(champname).magic
end
function p.difficulty(champname)
return getData(champname).difficulty
end
function p.herotype(champname)
return getData(champname).herotype
end
function p.alttype(champname)
return getData(champname).alttype
end
function p.resource(champname)
return getData(champname).resource
end
function p.categories(champname)
return getData(champname).categories
end
function p.hp_base(champname)
return getData(champname, true).hp_base
end
function p.hp_lvl(champname)
return getData(champname, true).hp_lvl
end
function p.mp_base(champname)
return getData(champname, true).mp_base
end
function p.mp_lvl(champname)
return getData(champname, true).mp_lvl
end
function p.arm_base(champname)
return getData(champname, true).arm_base
end
function p.arm_lvl(champname)
return getData(champname, true).arm_lvl
end
function p.mr_base(champname)
return getData(champname, true).mr_base
end
function p.mr_lvl(champname)
return getData(champname, true).mr_lvl
end
function p.hp5_base(champname)
return getData(champname, true).hp5_base
end
function p.hp5_lvl(champname)
return getData(champname, true).hp5_lvl
end
function p.mp5_base(champname)
return getData(champname, true).mp5_base
end
function p.mp5_lvl(champname)
return getData(champname, true).mp5_lvl
end
function p.dam_base(champname)
return getData(champname, true).dam_base
end
function p.dam_lvl(champname)
return getData(champname, true).dam_lvl
end
function p.as_base(champname)
return getData(champname, true).as_base
end
function p.as_lvl1(champname)
return getData(champname, true).as_lvl1
end
function p.attack_delay(champname)
return getData(champname, true).attack_delay
end
function p.as_lvl(champname)
return getData(champname, true).as_lvl
end
function p.as_lvl1_bonus(champname)
return getData(champname, true).as_lvl1_bonus
end
function p.range(champname)
return getData(champname, true).range
end
function p.range_lvl(champname)
return getData(champname, true).range_lvl
end
function p.ms(champname)
return getData(champname, true).ms
end
function p.ms_lvl(champname)
return getData(champname, true).ms_lvl
end
function p.acquisition_radius(champname)
return getData(champname, true).acquisition_radius or 750
end
function p.selection_radius(champname)
return getData(champname, true).selection_radius
end
function p.pathing_radius(champname)
return getData(champname, true).pathing_radius
end
function p.gameplay_radius(champname)
return getData(champname, true).gameplay_radius or 65
end
function p.crit_base(champname)
return getData(champname, true).crit_base or 175
end
function p.crit_mod(champname)
return getData(champname, true).crit_mod
end
function p.as_ratio(champname)
return getData(champname, true).as_ratio
end
function p.windup_modifier(champname)
return getData(champname, true).windup_modifier
end
function p.missile_speed(champname)
return getData(champname, true).missile_speed
end
function p.attack_cast_time(champname)
return getData(champname, true).attack_cast_time
end
function p.attack_total_time(champname)
return getData(champname, true).attack_total_time
end
function p.attack_delay_offset(champname)
return getData(champname, true).attack_delay_offset
end
function p.windup(champname)
local act = getData(champname, true).attack_cast_time
local att = getData(champname, true).attack_total_time
if act and att then
return act / att
else
return 0.3 + (getData(champname, true).attack_delay_offset or 0)
end
end
function p.aram_dmg_dealt(champname)
return getDataStat(champname, 'aram').dmg_dealt or 1.0
end
function p.aram_dmg_taken(champname)
return getDataStat(champname, 'aram').dmg_taken or 1.0
end
function p.nb_dmg_dealt(champname)
return getDataStat(champname, 'nb').dmg_dealt or 1.0
end
function p.nb_dmg_taken(champname)
return getDataStat(champname, 'nb').dmg_taken or 1.0
end
function p.ofa_dmg_dealt(champname)
return getDataStat(champname, 'ofa').dmg_dealt or 1.0
end
function p.ofa_dmg_taken(champname)
return getDataStat(champname, 'ofa').dmg_taken or 1.0
end
function p.urf_dmg_dealt(champname)
return getDataStat(champname, 'urf').dmg_dealt or 1.0
end
function p.urf_dmg_taken(champname)
return getDataStat(champname, 'urf').dmg_taken or 1.0
end
function p.usb_dmg_dealt(champname)
return getDataStat(champname, 'usb').dmg_dealt or 1.0
end
function p.usb_dmg_taken(champname)
return getDataStat(champname, 'usb').dmg_taken or 1.0
end
function p.ar_dmg_dealt(champname)
return getDataStat(champname, 'ar').dmg_dealt or 1.0
end
function p.ar_dmg_taken(champname)
return getDataStat(champname, 'ar').dmg_taken or 1.0
end
function p.fullname(champname)
return getData(champname).fullname
end
function p.nickname(champname)
return getData(champname).nickname
end
function p.rangetype(champname)
return getData(champname).rangetype
end
function p.date(champname)
return getData(champname).date
end
function p.patch(champname)
return getData(champname).patch
end
function p.changes(champname)
return getData(champname).changes
end
function p.role(champname) -- table
return getData(champname).role
end
--function p.positions(champname) -- table
-- return getData(champname).positions
--end
function p.client_positions(champname) -- table
return getData(champname).client_positions
end
function p.external_positions(champname) -- table
return getData(champname).external_positions
end
function p.all_positions(champname) -- table
local riot_pos = data[champname].client_positions
local ext_pos = data[champname].external_positions
local sets = {}
local hash = {}
for _, value in pairs(riot_pos) do
if (not hash[value]) then
table.insert(sets, value)
hash[value] = true
end
end
for _, value in pairs(ext_pos) do
if (not hash[value]) then
table.insert(sets, value)
hash[value] = true
end
end
return sets
end
function p.damage(champname)
return getData(champname).damage
end
function p.toughness(champname)
return getData(champname).toughness
end
function p.control(champname)
return getData(champname).control
end
function p.mobility(champname)
return getData(champname).mobility
end
function p.utility(champname)
return getData(champname).utility
end
function p.style(champname)
return getData(champname).style
end
function p.adaptivetype(champname)
return getData(champname).adaptivetype or "Physical"
end
function p.be(champname)
return getData(champname).be
end
function p.rp(champname)
return getData(champname).rp
end
function p.skill_i(champname)
return getData(champname).skill_i -- table
end
function p.skill_q(champname)
return getData(champname).skill_q -- table
end
function p.skill_w(champname)
return getData(champname).skill_w -- table
end
function p.skill_e(champname)
return getData(champname).skill_e -- table
end
function p.skill_r(champname)
return getData(champname).skill_r -- table
end
function p.skills(champname)
return getData(champname).skills -- table
end
setmetatable(p, {
__index = function(t, k)
if(k:lower():find("^aram_")) then
return function(champname) return getData(champname, true).aram ~= nil and data[champname].stats.aram[k:sub(6)] or nil end
elseif(k:lower():find("^nb_")) then
return function(champname) return getData(champname, true).nb ~= nil and data[champname].stats.nb[k:sub(4)] or nil end
elseif(k:lower():find("^ofa_")) then
return function(champname) return getData(champname, true).ofa ~= nil and data[champname].stats.ofa[k:sub(5)] or nil end
elseif(k:lower():find("^urf_")) then
return function(champname) return getData(champname, true).urf ~= nil and data[champname].stats.urf[k:sub(5)] or nil end
elseif(k:lower():find("^usb_")) then
return function(champname) return getData(champname, true).usb ~= nil and data[champname].stats.usb[k:sub(5)] or nil end
elseif(k:lower():find("^ar_")) then
return function(champname) return getData(champname, true).ar ~= nil and data[champname].stats.ar[k:sub(4)] or nil end
end
end
})
return p
-- </pre>
-- [[Category:Lua]]