Difference between revisions of "Module:Apt"

From CrawlWiki
Jump to: navigation, search
(Add Fo and VS)
(Update for changes to Module:Table of aptitudes)
Line 7: Line 7:
 
   if not sp or not sk then
 
   if not sp or not sk then
 
     return ""
 
     return ""
  end
 
  if sp == "Draconian" then
 
    sp = "Base Draconian"
 
 
   end
 
   end
 
   return data[sp][sk]
 
   return data[sp][sk]
Line 18: Line 15:
 
   local skill = frame.args[1]
 
   local skill = frame.args[1]
 
   local species = {'Human',  'Centaur', 'Demigod', 'Demonspawn',
 
   local species = {'Human',  'Centaur', 'Demigod', 'Demonspawn',
   'Base Draconian', 'Deep Dwarf', 'Deep Elf', 'High Elf',
+
   'Draconian', 'Deep Dwarf', 'Deep Elf', 'High Elf',
 
   'Felid', 'Formicid', 'Gargoyle', 'Ghoul', 'Halfling', 'Kobold', 'Merfolk',  
 
   'Felid', 'Formicid', 'Gargoyle', 'Ghoul', 'Halfling', 'Kobold', 'Merfolk',  
 
   'Minotaur', 'Mummy', 'Naga', 'Octopode', 'Ogre', 'Hill Orc',
 
   'Minotaur', 'Mummy', 'Naga', 'Octopode', 'Ogre', 'Hill Orc',
Line 63: Line 60:
 
   local data = mw.loadData('Module:Table of aptitudes')
 
   local data = mw.loadData('Module:Table of aptitudes')
 
   local species = {'Human',  'Centaur', 'Demigod', 'Demonspawn',
 
   local species = {'Human',  'Centaur', 'Demigod', 'Demonspawn',
   'Base Draconian', 'Deep Dwarf', 'Deep Elf', 'High Elf',
+
   'Draconian', 'Deep Dwarf', 'Deep Elf', 'High Elf',
 
   'Felid', 'Formicid', 'Gargoyle', 'Ghoul', 'Halfling', 'Kobold', 'Merfolk',  
 
   'Felid', 'Formicid', 'Gargoyle', 'Ghoul', 'Halfling', 'Kobold', 'Merfolk',  
 
   'Minotaur', 'Mummy', 'Naga', 'Octopode', 'Ogre', 'Hill Orc',
 
   'Minotaur', 'Mummy', 'Naga', 'Octopode', 'Ogre', 'Hill Orc',
Line 119: Line 116:
  
 
function p.aptitude_chart_combat(frame)
 
function p.aptitude_chart_combat(frame)
   local skills = {'Fighting', 'Short Blades', 'Long Blades', 'Maces Flails',
+
   local skills = {'Fighting', 'Short Blades', 'Long Blades', 'Maces & Flails',
 
   'Axes', 'Polearms', 'Staves', 'Unarmed Combat', 'Throwing', 'Slings', 'Bows', 'Crossbows'}
 
   'Axes', 'Polearms', 'Staves', 'Unarmed Combat', 'Throwing', 'Slings', 'Bows', 'Crossbows'}
 
   local header = [=[
 
   local header = [=[

Revision as of 03:51, 30 November 2015

Documentation for this module may be created at Module:Apt/doc

local p = {}
 
function p.aptitude(frame)
  local data = mw.loadData('Module:Table of aptitudes')
  local sp = frame.args[1]
  local sk = frame.args[2]
  if not sp or not sk then
    return ""
  end
  return data[sp][sk]
end

function p.skill_table(frame)
  local data = mw.loadData('Module:Table of aptitudes')
  local skill = frame.args[1]
  local species = {'Human',  'Centaur', 'Demigod', 'Demonspawn',
   'Draconian', 'Deep Dwarf', 'Deep Elf', 'High Elf',
   'Felid', 'Formicid', 'Gargoyle', 'Ghoul', 'Halfling', 'Kobold', 'Merfolk', 
   'Minotaur', 'Mummy', 'Naga', 'Octopode', 'Ogre', 'Hill Orc',
   'Spriggan', 'Tengu', 'Troll', 'Vampire', 'Vine Stalker'}
  local result = [=[
{| class="wikitable" border="1"
|-
|'''[[Human|Hu]]'''
|'''[[Centaur|Ce]]'''
|'''[[Demigod|Dg]]'''
|'''[[Demonspawn|Ds]]'''
|'''[[Draconian|Dr]]'''
|'''[[Deep Dwarf|DD]]
|'''[[Deep Elf|DE]]'''
|'''[[High Elf|HE]]'''
|'''[[Felid|Fe]]'''
|'''[[Formicid|Fo]]'''
|'''[[Gargoyle|Gr]]'''
|'''[[Ghoul|Gh]]'''
|'''[[Halfling|Ha]]'''
|'''[[Kobold|Ko]]'''
|'''[[Merfolk|Mf]]'''
|'''[[Minotaur|Mi]]'''
|'''[[Mummy|Mu]]'''
|'''[[Naga|Na]]'''
|'''[[Octopode|Op]]'''
|'''[[Ogre|Og]]'''
|'''[[Hill Orc|HO]]'''
|'''[[Spriggan|Sp]]'''
|'''[[Tengu|Te]]'''
|'''[[Troll|Tr]]'''
|'''[[Vampire|Vp]]'''
|'''[[Vine Stalker|VS]]'''
|-
]=]
  for _, sp in ipairs(species) do
    result = result .. "| " .. data[sp][skill] .. "\n"
  end
  result = result .. "|}"
  return result
end

function p.aptitude_chart(skills, header)
  local data = mw.loadData('Module:Table of aptitudes')
  local species = {'Human',  'Centaur', 'Demigod', 'Demonspawn',
   'Draconian', 'Deep Dwarf', 'Deep Elf', 'High Elf',
   'Felid', 'Formicid', 'Gargoyle', 'Ghoul', 'Halfling', 'Kobold', 'Merfolk', 
   'Minotaur', 'Mummy', 'Naga', 'Octopode', 'Ogre', 'Hill Orc',
   'Spriggan', 'Tengu', 'Troll', 'Vampire', 'Vine Stalker'}
  local result = header

  -- constants used by sort_key
  local a_ord = string.byte('a')
  local z_ord = string.byte('z')
  local aa_ord = string.byte('A')
  -- generates the table keys
  function sort_key(i)
    local result
    if i > z_ord - a_ord then
      i = i - (z_ord - a_ord) - 1
      result = '!' .. string.char(aa_ord + i)
    else
      result = '"' .. string.char(a_ord + i)
    end
    return result
  end

  local i = 0
  for _, sp in ipairs(species) do
    result = result .. '|<span style="display:none;">' .. sort_key(i) .. '</span>' .. sp .. "\n"
    for _,sk in ipairs(skills) do
      result = result .. "||" .. data[sp][sk] .. "\n"
    end
    result = result .. "|-\n"
    i = i + 1
  end
  result = result .. "|}"
  return result
end

function p.aptitude_chart_general(frame)
  local skills = {'Armour', 'Dodging', 'Stealth',
   'Shields', 'Invocations', 'Evocations', 'Hit Points', 'Magic Points', 'Experience'}
  local header = [=[
{| class="wikitable sortable" style="font-size:75%" border=1
! scope="col" | [[Species]]
! scope="col" | [[Armour (skill)|Arm]]
! scope="col" | [[Dodging|Ddg]]
! scope="col" | [[Stealth|Sth]]
! scope="col" | [[Shields (skill)|Shd]]
! scope="col" | [[Invocations|Inv]]
! scope="col" | [[Evocations|Evo]]
! scope="col" | [[HP]]
! scope="col" | [[MP]]
! scope="col" | [[Exp]]
|-
]=]
  return p.aptitude_chart(skills, header)
end

function p.aptitude_chart_combat(frame)
  local skills = {'Fighting', 'Short Blades', 'Long Blades', 'Maces & Flails',
   'Axes', 'Polearms', 'Staves', 'Unarmed Combat', 'Throwing', 'Slings', 'Bows', 'Crossbows'}
  local header = [=[
{| class="wikitable sortable" style="font-size:75%" border=1
! scope="col" | [[Species]]
! scope="col" | [[Fighting|Fgt]]
! scope="col" | [[Short Blades|SBl]]
! scope="col" | [[Long Blades|LBl]]
! scope="col" | [[Maces &amp; Flails|M&amp;F]]
! scope="col" | [[Axes|Axs]]
! scope="col" | [[Polearms|Pla]]
! scope="col" | [[Staves|Stv]]
! scope="col" | [[Unarmed Combat|UC]]
! scope="col" | [[Throwing|Thr]]
! scope="col" | [[Slings|Slg]]
! scope="col" | [[Bows|Bws]]
! scope="col" | [[Crossbows|Crb]]
|-
]=]
  return p.aptitude_chart(skills, header)
end

function p.aptitude_chart_magic(frame)
  local skills = {'Spellcasting', 'Conjurations', 'Hexes', 'Charms',
   'Summonings', 'Necromancy', 'Translocations', 'Transmutations', 
   'Fire Magic', 'Ice Magic', 'Air Magic', 'Earth Magic', 'Poison Magic'}
  local header = [=[
{| class="wikitable sortable" style="font-size:75%" border=1
! scope="col" | [[Species]]
! scope="col" | [[Spellcasting|Spc]]
! scope="col" | [[Conjurations|Coj]]
! scope="col" | [[Hexes|Hex]]
! scope="col" | [[Charms|Cha]]
! scope="col" | [[Summonings|Sum]]
! scope="col" | [[Necromancy|Nec]]
! scope="col" | [[Translocations|Trl]]
! scope="col" | [[Transmutations|Trm]]
! scope="col" | [[Fire Magic|Fir]]
! scope="col" | [[Ice Magic|Ice]]
! scope="col" | [[Air Magic|Air]]
! scope="col" | [[Earth Magic|Ear]]
! scope="col" | [[Poison Magic|Poi]]
|-
]=]
  return p.aptitude_chart(skills, header)
end

return p