Difference between revisions of "Module:Species"
(Initial module) |
(Update for changed data) |
||
Line 56: | Line 56: | ||
local species = data[name] | local species = data[name] | ||
local result = ("%s have a base [[Strength]] of %d, [[Intelligence]] of %d, and [[Dexterity]] of %d (before Background modifiers)."):format(species_plural(name), species.Strength, species.Intelligence, species.Dexterity) | local result = ("%s have a base [[Strength]] of %d, [[Intelligence]] of %d, and [[Dexterity]] of %d (before Background modifiers)."):format(species_plural(name), species.Strength, species.Intelligence, species.Dexterity) | ||
− | + | local mp = species.Aptitudes["Magic Points"] | |
− | result = result .. (" They have %+d to base [[magic points]]."):format( | + | if mp ~= 0 then |
+ | result = result .. (" They have %+d to base [[magic points]]."):format(mp) | ||
end | end | ||
return result | return result | ||
Line 71: | Line 72: | ||
local function hp_apt(species) | local function hp_apt(species) | ||
− | + | local hp = species.Aptitudes["Hit Points"] | |
− | return ("%d%% less HP than average."):format(- | + | if hp < 0 then |
− | elseif | + | return ("%d%% less HP than average."):format(-hp*10) |
+ | elseif hp == 0 then | ||
return "Average [[hit points]]." | return "Average [[hit points]]." | ||
else | else | ||
− | return ("%d%% more HP than average."):format( | + | return ("%d%% more HP than average."):format(hp*10) |
end | end | ||
end | end |
Latest revision as of 02:42, 6 May 2016
Documentation for this module may be created at Module:Species/doc
local p = {} local data = mw.loadData('Module:Table of species') local function name_arg(frame) local name = frame.args[1] if not name or name == "" then name = mw.title.getCurrentTitle().text end return name end local function species_plural(species) if species == "Mummy" then return "Mummies" elseif species == "Deep Elf" or species == "High Elf" or species == "Deep Dwarf" then return species:sub(1, -2) .. "ves" elseif species == "Naga" or species == "Demonspawn" or species == "Tengu" or species == "Merfolk" then return species end return species .. "s" end function p.preferred_backgrounds(frame) local name = name_arg(frame) local species = data[name] local categories = {{}, {}, {}, {}, {}} local cat_names = {"Warriors", "Adventurers", "Zealots", "Warrior-mages", "Mages"} for _, bg in pairs(species.Backgrounds) do local cat = categories[5] if bg == "Fighter" or bg == "Gladiator" or bg == "Monk" or bg == "Hunter" or bg == "Assassin" then cat = categories[1] elseif bg == "Artificer" or bg == "Wanderer" then cat = categories[2] elseif bg == "Berserker" or bg == "Abyssal Knight" or bg == "Chaos Knight" then cat = categories[3] elseif bg == "Skald" or bg == "Transmuter" or bg == "Warper" or bg == "Arcane Marksman" or bg == "Enchanter" then cat = categories[4] end table.insert(cat, "[[" .. bg .. "]]") end local result = "==Preferred Backgrounds==\n" for i, cat in pairs(categories) do if #cat > 0 then result = result .. "*'''" .. cat_names[i] .. ":''' " .. table.concat(cat, ", ") .. "\n" end end return result end function p.base_stats(frame) local name = name_arg(frame) local species = data[name] local result = ("%s have a base [[Strength]] of %d, [[Intelligence]] of %d, and [[Dexterity]] of %d (before Background modifiers)."):format(species_plural(name), species.Strength, species.Intelligence, species.Dexterity) local mp = species.Aptitudes["Magic Points"] if mp ~= 0 then result = result .. (" They have %+d to base [[magic points]]."):format(mp) end return result end local function mr_gain(species) if name == "Draconian" then return ("+%d [[magic resistance]] per level (+%d for purple Draconians)."):format(species.MR, data["Purple Draconian"].MR) else return ("+%d [[magic resistance]] per level."):format(species.MR) end end local function hp_apt(species) local hp = species.Aptitudes["Hit Points"] if hp < 0 then return ("%d%% less HP than average."):format(-hp*10) elseif hp == 0 then return "Average [[hit points]]." else return ("%d%% more HP than average."):format(hp*10) end end function p.level_bonuses(frame) local name = name_arg(frame) local species = data[name] return ([[* %s * %s ]]):format(mr_gain(species), hp_apt(species)) end return p