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:Monster: Difference between revisions

From Ashenzari's Archive
imported>Edsrzf
Tile arg isn't needed; try lowercase monster name too
imported>Edsrzf
Fix typo
Line 43: Line 43:
     args.vulnerabilities = "None"
     args.vulnerabilities = "None"
   else
   else
     args.vulnerabilities = table.concat(vulnerabilties, "<br>")
     args.vulnerabilities = table.concat(vulnerabilities, "<br>")
   end
   end



Revision as of 03:55, 7 December 2015

local p = {} local data = mw.loadData('Module: Table of monsters')

-- Taken from max_corpse_chunks in mon-util.cc local max_corpse_chunks = {

 Tiny = 1,
 Little = 2,
 Small = 3,
 Medium = 4,
 Large = 9,
 Big = 10,
 Giant = 12,

}

function p.monster_info(frame)

 local name = frame.args[1] or mw.title.getCurrentTitle()
 local monster = data[name] or data[name:lower()]
 local args = {}
 args.name = monster.Name
 args.glyph = frame:expandTemplate{title = monster.Colour, args = {monster.Glyph}}
 local flags = {}
 for i, v in ipairs(monster.Flags) do
   flags[i] = frame:expandTemplate{title = v}
 end
 args.flags = table.concat(flags, "
")
 local resistances = {}
 for i, v in ipairs(monster.Resistances) do
   resistances[i] = frame:expandTemplate{title = v}
 end
 if #resistances == 0 then
   args.resistances = "None"
 else
   args.resistances = table.concat(resistances, "
") end
 local vulnerabilities = {}
 for i, v in ipairs(monster.Vulnerabilities) do
   vulnerabilities[i] = frame:expandTemplate{title = v}
 end
 if #vulnerabilities == 0 then
   args.vulnerabilities = "None"
 else
   args.vulnerabilities = table.concat(vulnerabilities, "
") end
 args.max_chunks = max_corpse_chunks[monster.Size] or 0
 args.meat = frame:expandTemplate{title = monster.Corpse .. " corpse"}
 args.xp = monster.XP
 args.holiness = frame:expandTemplate{title = monster.Holiness}
 args.magic_resistance = monster.MR
 local hp_min = monster.HD*monster["Base HP"] + monster["Fixed HP"]
 local hp_max = monster.HD*(monster["Base HP"]+monster["Rand HP"])+monster["Fixed HP"]
 args.hp_range = ("%d-%d").format(hp_min, hp_max)
 args.avg_hp = (hp_min + hp_max)/2
 args.armour_class = monster.AC
 args.evasion = monster.EV
 args.habitat = monster.Habitat
 args.speed = monster.Speed
 args.size = frame:expandTemplate{title = monster.Size}
 local item_use = {}
 for i, v in ipairs(monster["Item Use"]) do
   item_use[i] = frame:expandTemplate{title = v}
 end
 args.item_use = table.concat(item_use, "
")
 for i = 1, 4 do
   local attack = monster.Attacks[i]
   if attack then
     local type = frame:expandTemplate{title = attack.Type .. " type"}
     local flavour = frame:expandTemplate{title = attack.Flavour .. " flavour"}
     args["attack" .. i] = ("%d %s: %s").format(attack.Damage, type, flavour)
   else
     args["attack" .. i] = ""
   end
 end
 args.hit_dice = monster.HD
 args.base_hp = monster["Base HP"]
 args.extra_hp = monster["Rand HP"]
 args.fixed_hp = monster["Fixed HP"]
 args.intelligence = frame:expandTemplate{title = monster.Intelligence .. " intelligence"}
 args.genus = monster.Genus
 args.species = monster.Species
 return frame:expandTemplate{title = "monster", args = args}

end

return p