Module:SpellData

From League of Legends Wiki, LoL Wiki
Jump to navigation Jump to search
Module:SpellData has the following documentation.

Fetches all data items for League of Legends summoner spells.

The data is stored at Module:SpellData/data. If you wish to edit that data, please follow the format documented at the top of that page.


-- <pre>
local p = {}

local spellData  = mw.loadData('Module:SpellData/data')
local lib        = require('Module:Feature')

local function getSpellData(spell)
	return spellData[spell] or {}
end

function p.fullData()
	return spellData
end

function p.spellargument(frame)
	local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
	local s = args['spell'] or args[1]
	s = s:sub(1,1):upper()..s:sub(2)
	return s
end

function p.smiteswap(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    
    if args['spell'] == "Unleashed Smite" or args['spell'] == "Primal Smite" then args['spell'] = "Smite"
    end
    
    return args['spell']
end


function p.getdisp_name(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    
    return getSpellData(args['spell']).disp_name or getSpellData(p.smiteswap(frame)).disp_name or args['spell']
end


function p.getlink(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    
    return (
    	getSpellData(args['spell']) and getSpellData(args['spell']).link or 
    	getSpellData(p.smiteswap(frame)) and getSpellData(p.smiteswap(frame)).link or 
    	args['spell']
    )
end


function p.getfile(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    local FN = require("Module:Filename")
    
    return FN.spell{args['spell'], args['variant']}
end


function p.getcooldown(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    
    local result = getSpellData(args['spell']).cooldown or getSpellData(p.smiteswap(frame)).cooldown or ""
    return frame:preprocess(result)
end


function p.getrecharge(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    
    return getSpellData(args['spell']).recharge or getSpellData(p.smiteswap(frame)).recharge
end


function p.getcharges(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    
    return getSpellData(args['spell']).charges or getSpellData(p.smiteswap(frame)).charges
end


function p.getlevel(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    
    local result = getSpellData(args['spell']).level or getSpellData(p.smiteswap(frame)).level or ""
    return frame:preprocess(result)
end


function p.getrange(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    
    local result = getSpellData(args['spell']).range or getSpellData(p.smiteswap(frame)).range or ""
    return frame:preprocess(result)
end


function p.getstealth(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    
    return getSpellData(args['spell']).stealth or getSpellData(p.smiteswap(frame)).stealth
end


function p.getmaps(frame)
    local spell = p.smiteswap(frame)
    local s = ""

    for k,v in pairs(getSpellData(spell).maps or {}) do
    	if v then s = s .. k:upper() end
    end
    
    return s
end


function p.getsr(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    
    return getSpellData(args['spell']).maps.sr or getSpellData(p.smiteswap(frame)).maps.sr or false
end


function p.getha(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    
    return getSpellData(args['spell']).maps.ha or getSpellData(p.smiteswap(frame)).maps.ha or false
end


function p.gettt(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    
    return getSpellData(args['spell']).maps.tt or getSpellData(p.smiteswap(frame)).maps.tt or false
end


function p.getnb(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    
    return getSpellData(args['spell']).maps.nb or getSpellData(p.smiteswap(frame)).maps.nb or false
end


function p.getar(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    
    return getSpellData(args['spell']).maps.ar or getSpellData(p.smiteswap(frame)).maps.ar or false
end


function p.getcs(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    
    return getSpellData(args['spell']).maps.cs or getSpellData(p.smiteswap(frame)).maps.cs or false
end


function p.geteffect(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    
    local result = getSpellData(args['spell']).effect or getSpellData(p.smiteswap(frame)).effect or ""
    return frame:preprocess(result)
end


function p.geteffect2(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    
    local result = getSpellData(args['spell']).effect2 or getSpellData(p.smiteswap(frame)).effect2 or ""
    return frame:preprocess(result)
end


function p.geteffect3(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    
    local result = getSpellData(args['spell']).effect3 or getSpellData(p.smiteswap(frame)).effect3 or ""
    return frame:preprocess(result)
end


function p.getdescription(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    
    local result = getSpellData(args['spell']).description or getSpellData(p.smiteswap(frame)).description or ""
    return frame:preprocess(result)
end


function p.getremoved(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    
    return getSpellData(args['spell']).removed or getSpellData(p.smiteswap(frame)).removed or false
end


function p.getpatch(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    
    return getSpellData(args['spell']).patch or getSpellData(p.smiteswap(frame)).patch
end

function p.getexample(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    
    return getSpellData(args['spell']).example or getSpellData(p.smiteswap(frame)).example
end

function p.getexample2(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
    
    args['spell'] = p.spellargument(frame)
    
    return getSpellData(args['spell']).example2 or getSpellData(p.smiteswap(frame)).example2
end


return p

-- </pre>
-- [[Category:Lua]]