Jump to content
Toggle menu
  • 3.1K articles
  • 4.4K files
  • 18 users
  • 91.5K edits
Ashenzari's Archive
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:Spellbook: Difference between revisions

From Ashenzari's Archive
imported>CommanderC
No edit summary
imported>Medar
Allow giving second argument for short_spell_list to only include spells from single school.
Line 1: Line 1:
local p = {}
local p = {}
local function table_has_value(t, v)
  if t ~= nil then
    for _,x in pairs(t) do if x == v then return true end end
  end
  return false
end


function p.spellbook_table(frame)
function p.spellbook_table(frame)
Line 25: Line 32:
   if not book then
   if not book then
     return ""
     return ""
  end
  local school = frame.args[2]
  local spell_data = nil
  if school then
    spell_data = mw.loadData('Module:Table of spells')
   end
   end
   local result = "'''[[" .. book .. "]]''': "
   local result = "'''[[" .. book .. "]]''': "
   local spell_list = {}
   local spell_list = {}
   for _,sp in ipairs(data[book]) do
   for _,sp in ipairs(data[book]) do
     table.insert(spell_list, "[[".. sp.name .. "]]")
     if school == nil or table_has_value(spell_data[sp.name]["schools"], school) then
      table.insert(spell_list, "[[".. sp.name .. "]]")
    end
   end
   end
   result = result .. table.concat(spell_list, ", ")
   result = result .. table.concat(spell_list, ", ")

Revision as of 09:07, 1 February 2016

local p = {}

local function table_has_value(t, v)

 if t ~= nil then
   for _,x in pairs(t) do if x == v then return true end end
 end
 return false

end

function p.spellbook_table(frame)

 local data = mw.loadData('Module:Table of spellbooks')
 local book = frame.args[1]
 if not book then
   return ""
 end
 local result = [==[{| cellpadding="5" border="1"

|- align="center" ! Tile || Spell || Type || Level ]==]

 for _,sp in ipairs(data[book]) do
   result = result .. "|-\n| " .. sp.image .. " || " ..
      sp.letter .. " - " .. sp.name .. " || " .. sp.schools .. 
      " || " .. sp.level .. "\n"
 end
 result = result .. "|}\n"
 return result

end

function p.short_spell_list(frame)

 local data = mw.loadData('Module:Table of spellbooks')
 local book = frame.args[1]
 if not book then
   return ""
 end
 local school = frame.args[2]
 local spell_data = nil
 if school then
   spell_data = mw.loadData('Module:Table of spells')
 end
 local result = "" .. book .. ": "
 local spell_list = {}
 for _,sp in ipairs(data[book]) do
   if school == nil or table_has_value(spell_data[sp.name]["schools"], school) then
     table.insert(spell_list, "".. sp.name .. "")
   end
 end
 result = result .. table.concat(spell_list, ", ")
 return result

end

return p