Module:Creatures: Difference between revisions
Jump to navigation
Jump to search
TheGmaster (talk | contribs) mNo edit summary |
TheGmaster (talk | contribs) mNo edit summary |
||
| Line 2: | Line 2: | ||
function p.singleCreature(frame) | function p.singleCreature(frame) | ||
local creatureArray = mw.loadData("Module:WildCreatureData") | local creatureArray = mw.loadData("Module:WildCreatureData") -- Array containing wild creature data from another module | ||
local creatureName = frame.args[1] | |||
local creatureName = frame.args[1] | local creatureType = frame.args[2] | ||
local creatureType = frame.args[2] | local imageOverride = frame.args[3] | ||
local imageOverride = frame.args[3] | local namespace = frame.args[4] | ||
local namespace = frame.args[4] | |||
local iconImage = "" | local iconImage = "" | ||
local wikiTable = "" | local wikiTable = "" | ||
local array = creatureArray | local array = creatureArray | ||
-- Change the array being pulled from if a valid creatureType is provided, also formats the creatureType to be used in Err messages and sets an iconImage | |||
if string.lower(creatureType) == "strangelands" then | if string.lower(creatureType) == "strangelands" then | ||
array = mw.loadData("Module:StrangelandsCreatureData") | array = mw.loadData("Module:StrangelandsCreatureData") | ||
| Line 24: | Line 22: | ||
iconImage = "[[File:shipdeed.png|right|30px|link=Ships|Ship Creature]]" | iconImage = "[[File:shipdeed.png|right|30px|link=Ships|Ship Creature]]" | ||
else | else | ||
creatureType = "" | creatureType = " wild " | ||
end | end | ||
| Line 51: | Line 49: | ||
<th style="border-right:none; border-bottom:none; width:110px"> | <th style="border-right:none; border-bottom:none; width:110px"> | ||
<th colspan="7" style="border-width: 1px 0px 0px; height:100px; vertical-align:bottom;"> [[File:]=] .. | <th colspan="7" style="border-width: 1px 0px 0px; height:100px; vertical-align:bottom;"> [[File:]=] .. | ||
imageName .. [=[|link=]] | |||
<th style="vertical-align:top; border-left:none; border-bottom:none; margin-left: 15px; width:110px>]=] .. | <th style="vertical-align:top; border-left:none; border-bottom:none; margin-left: 15px; width:110px>]=] .. | ||
iconImage .. [=[ | |||
<tr> | <tr> | ||
<th style="border-top:none" colspan="9">[[]=] .. creatureName .. [=[]] | <th style="border-top:none" colspan="9">[[]=] .. creatureName .. [=[]] | ||
| Line 95: | Line 93: | ||
return wikiTable | return wikiTable | ||
else | else | ||
return '<h1 style="color:FireBrick;"><big> | return '<h1 style="color:FireBrick;"><big>Creature Table Template Error: No' .. | ||
creatureType .. 'creature by the name "' .. creatureName .. '" was found (Case-sensitive)</big></h1>' | |||
end | end | ||
end | end | ||
| Line 106: | Line 104: | ||
-- Parameters passed when the function is invoked | -- Parameters passed when the function is invoked | ||
local followerName = frame.args[1] | local followerName = frame.args[1] -- Sun Wyrm | ||
local imageOverride = frame.args[2] | local imageOverride = frame.args[2] -- sunwyrm.png | ||
local followerType = frame.args[3] | local followerType = frame.args[3] -- Tameable/Summon | ||
local namespace = frame.args[4] | local namespace = frame.args[4] -- {{NAMESPACE}} | ||
local wikiTable = "" | local wikiTable = "" | ||
| Line 140: | Line 138: | ||
<th style="border-right:none; border-bottom:none; width:110px"> | <th style="border-right:none; border-bottom:none; width:110px"> | ||
<th colspan="6" style="border-width: 1px 0px 0px; height:100px; vertical-align:bottom;"> [[File:]=] .. | <th colspan="6" style="border-width: 1px 0px 0px; height:100px; vertical-align:bottom;"> [[File:]=] .. | ||
imageName .. [=[|link=]] | |||
<th style="vertical-align:top; border-left:none; border-bottom:none; margin-left: 15px; width:110px>[[File:icon-]=] .. | <th style="vertical-align:top; border-left:none; border-bottom:none; margin-left: 15px; width:110px>[[File:icon-]=] .. | ||
string.lower(tameable.class) .. [=[class.png|link=Animal_Taming#Tamed_Classes|]=] .. | |||
tameable.class .. [=[ Class|right]] | |||
<tr> | <tr> | ||
<th style="border-top:none" colspan="8">[[]=] .. followerName .. [=[]] | <th style="border-top:none" colspan="8">[[]=] .. followerName .. [=[]] | ||
| Line 185: | Line 183: | ||
local formmatedName = string.gsub(string.lower(followerName), "%s+", "") | local formmatedName = string.gsub(string.lower(followerName), "%s+", "") | ||
local imageName = string.gsub(formmatedName, "%p+", "") .. ".jpg" | local imageName = string.gsub(formmatedName, "%p+", "") .. ".jpg" | ||
local spelliconImage = "[[File:" .. | local spelliconImage = "[[File:" .. summon.spellicon .. ".png|44px|link=Spirit Speak#" .. summon.spellname .. "|" .. summon.spellname .. summon.tometier .. "|right]]" | ||
if summon.necro == true then | if summon.necro == true then | ||
spelliconImage = spelliconImage .. | spelliconImage = spelliconImage .. | ||
"[[File:SpellPlus.png|right]]<br><br>[[File:iconvengefulspirit.png|link=Necromancy#Undead Summons|Vengeful Spirit|right]]" | |||
end | end | ||
| Line 211: | Line 207: | ||
<th style="border-right:none; border-bottom:none; width:110px"> | <th style="border-right:none; border-bottom:none; width:110px"> | ||
<th colspan="5" style="border-width: 1px 0px 0px; height:100px; vertical-align:bottom;"> [[File:]=] .. | <th colspan="5" style="border-width: 1px 0px 0px; height:100px; vertical-align:bottom;"> [[File:]=] .. | ||
imageName .. [=[|link=]] | |||
<th style="vertical-align:top; border-left:none; border-bottom:none; margin-left: 5px; width:110px>]=] .. | <th style="vertical-align:top; border-left:none; border-bottom:none; margin-left: 5px; width:110px>]=] .. | ||
spelliconImage .. [=[ | |||
<tr> | <tr> | ||
<th style="border-top:none" colspan="7">[[]=] .. followerName .. [=[]] | <th style="border-top:none" colspan="7">[[]=] .. followerName .. [=[]] | ||
| Line 250: | Line 246: | ||
else | else | ||
return '<h1 style="color:FireBrick;"><big>CreatureTable Template Error: No tamed/summoned follower found by the name "' .. | return '<h1 style="color:FireBrick;"><big>CreatureTable Template Error: No tamed/summoned follower found by the name "' .. | ||
followerName .. '" (Case-sensitive)</big></h1>' | |||
end | end | ||
end | end | ||
| Line 393: | Line 389: | ||
local creatureArray = mw.loadData("Module:WildCreatureData") | local creatureArray = mw.loadData("Module:WildCreatureData") | ||
local bossesToList = frame.args[1] | local bossesToList = frame.args[1] -- Main Boss | ||
local typeOfBoss = string.lower(bossesToList) | local typeOfBoss = string.lower(bossesToList) | ||
| Line 463: | Line 459: | ||
local abilityArray = mw.loadData("Module:FollowerAbilityData") | local abilityArray = mw.loadData("Module:FollowerAbilityData") | ||
local creature = frame.args[1] | local creature = frame.args[1] -- Warpig | ||
local followerType = frame.args[2] | local followerType = frame.args[2] -- Tameable/Summon | ||
local follower = "" | local follower = "" | ||
| Line 477: | Line 473: | ||
local wikiTable = "" | local wikiTable = "" | ||
if follower and follower ~= "undefined" then | if follower and follower ~= "undefined" then -- List a follower's abilities if a follower is given | ||
wikiTable = [[<table class="wikitable" style="text-align:center"> | wikiTable = [[<table class="wikitable" style="text-align:center"> | ||
<th>Ability | <th>Ability | ||
| Line 501: | Line 497: | ||
<td style="text-align:left">]] .. abilityArray[ability].description | <td style="text-align:left">]] .. abilityArray[ability].description | ||
end | end | ||
elseif follower == "undefined" then | elseif follower == "undefined" then -- List all abilities and the followers that have them | ||
wikiTable = [[<table class="wikitable sortable" style="text-align:center"> | wikiTable = [[<table class="wikitable sortable" style="text-align:center"> | ||
<th>Ability | <th>Ability | ||
| Line 518: | Line 514: | ||
for i, array in pairs({ tameableArray, summonArray }) do | for i, array in pairs({ tameableArray, summonArray }) do | ||
for followerName, follower in pairs(array) do | for followerName, follower in pairs(array) do | ||
if tameableArray[followerName] and not summonArray[followerName] or not tameableArray[followerName] and summonArray[followerName] then | if tameableArray[followerName] and not summonArray[followerName] or not tameableArray[followerName] and summonArray[followerName] then -- Prevents listing duplicate creatures | ||
local followerAbilityType = "" | local followerAbilityType = "" | ||
| Line 549: | Line 545: | ||
end | end | ||
end | end | ||
else | else -- If a follower is given but doesn't exist | ||
return '<h1 style="color:FireBrick;"><big> | return '<h1 style="color:FireBrick;"><big>Follower Ability Table Template Error: No tamed/summoned follower found by the name "' .. creature .. '" (Case-sensitive)</big></h1>' | ||
end | end | ||
| Line 562: | Line 557: | ||
local summonArray = mw.loadData("Module:SummonableCreatureData") | local summonArray = mw.loadData("Module:SummonableCreatureData") | ||
local summonName = frame.args[1] | local summonName = frame.args[1] -- A summon given to display, defaults to {{PAGENAME}} | ||
local wikiTable = '<table class="wikitable" style="text-align:center">' | local wikiTable = '<table class="wikitable" style="text-align:center">' | ||
| Line 584: | Line 579: | ||
end | end | ||
wikiTable = wikiTable .. [=[< | wikiTable = wikiTable .. [=[<th colspan="5">[[File:]=]..summon.spelliconImage..[=[|center|link=]]<br>[[]]]=]..summonName..[=[]] | ||
<th rowspan="2">Stat | <th rowspan="2">Stat | ||
<th colspan="5"> Spirit Speak Skill | <th colspan="5"> Spirit Speak Skill | ||
| Line 639: | Line 634: | ||
return wikiTable | return wikiTable | ||
else | else | ||
return '<h1 style="color:FireBrick;"><big> | return '<h1 style="color:FireBrick;"><big>Summon Stat Table Template Error: No summoned follower found by the name "' .. | ||
summonName .. '" (Case-sensitive)</big></h1>' | |||
end | |||
end | |||
function p.ifCreature(frame) | |||
local creatureName = frame.args[1] -- Name of the creature to check for | |||
local creatureType = frame.args[2] -- Wild/Tameable/Summonable/Ships/Strangelands, defaults to Wild | |||
local dataSource | |||
if creatureType and string.lower(creatureType) == "tameable" then | |||
dataSource = mw.loadData("Module:TameableCreatureData") | |||
elseif creatureType and string.lower(creatureType) == "summonabe" then | |||
dataSource = mw.loadData("Module:SummonableCreatureData") | |||
elseif creatureType and string.lower(creatureType) == "ships" then | |||
dataSource = mw.loadData("Module:ShipCreatureData") | |||
elseif creatureType and string.lower(creatureType) == "tameable" then | |||
dataSource = mw.loadData("Module:TameableCreatureData") | |||
elseif creatureType and string.lower(creatureType) == "strangelands" then | |||
dataSource = mw.loadData("Module:StrangelandsCreatureData") | |||
else | |||
dataSource = mw.loadData("Module:WildCreatureData") | |||
end | |||
if dataSource[creatureName] then | |||
return true | |||
end | end | ||
end | end | ||
return p | return p | ||
Revision as of 02:01, 5 November 2024
Documentation for this module may be created at Module:Creatures/doc
local p = {}
function p.singleCreature(frame)
local creatureArray = mw.loadData("Module:WildCreatureData") -- Array containing wild creature data from another module
local creatureName = frame.args[1]
local creatureType = frame.args[2]
local imageOverride = frame.args[3]
local namespace = frame.args[4]
local iconImage = ""
local wikiTable = ""
local array = creatureArray
-- Change the array being pulled from if a valid creatureType is provided, also formats the creatureType to be used in Err messages and sets an iconImage
if string.lower(creatureType) == "strangelands" then
array = mw.loadData("Module:StrangelandsCreatureData")
creatureType = " " .. creatureType .. ""
iconImage = "[[File:icon-strangelands.png|right|50px|link=Strangelands#Strangelands_Creatures|Strangeland Creature]]"
elseif string.lower(creatureType) == "ships" then
array = mw.loadData("Module:ShipCreatureData")
creatureType = " " .. creatureType .. ""
iconImage = "[[File:shipdeed.png|right|30px|link=Ships|Ship Creature]]"
else
creatureType = " wild "
end
local creature = array[creatureName]
if creature then
local formmatedName = string.gsub(string.lower(creatureName), "%s+", "")
local imageName = string.gsub(formmatedName, "%p+", "") .. ".jpg"
if imageOverride and imageOverride ~= "" then
imageName = imageOverride
end
-- Automaticly add categories
if namespace == "" or namespace == nil then
wikiTable = wikiTable .. "[[Category:" .. creature.location .. "]]"
wikiTable = wikiTable .. "[[Category:" .. creature.slayer .. " Creatures]]"
if creature.bosstype ~= "" then
wikiTable = wikiTable .. "[[Category:" .. creature.bosstype .. "es]] [[Category:Bosses]]"
end
end
wikiTable = [=[__NOTOC__
<table class="wikitable" style="text-align:center">
<th style="border-right:none; border-bottom:none; width:110px">
<th colspan="7" style="border-width: 1px 0px 0px; height:100px; vertical-align:bottom;"> [[File:]=] ..
imageName .. [=[|link=]]
<th style="vertical-align:top; border-left:none; border-bottom:none; margin-left: 15px; width:110px>]=] ..
iconImage .. [=[
<tr>
<th style="border-top:none" colspan="9">[[]=] .. creatureName .. [=[]]
<tr>
<th>Slayer
<th>Difficulty
<th>Gold Value
<th>Hits
<th colspan="2">Melee Damage
<th>Wrestling
<th>Armor
<th>Magic Resist
<tr>
<td>]=] .. creature.slayer .. [=[
<td>]=] .. creature.difficulty .. [=[
<td>]=] .. creature.goldvalue .. [=[
<td>]=] .. creature.hits .. [=[
<td colspan="2">]=] .. creature.minmeleedmg .. creature.maxmeleedmg .. [=[
<td>]=] .. creature.wrestling .. [=[
<td>]=] .. creature.armor .. creature.armormin .. [=[
<td>]=] .. creature.magicresist .. creature.magicresistmin .. [=[
<tr>
<th>Parry
<th>Attack Speed
<th>Magery
<th colspan="2">Spell Damage
<th>Poison
<th>Poison Resist
<th>Stealth
<th>AI
<tr>
<td>]=] .. creature.parry .. [=[
<td>]=] .. creature.atkspd .. [=[
<td>]=] .. creature.magery .. [=[
<td colspan="2">]=] .. creature.minspelldmg .. creature.maxspelldmg .. [=[
<td>]=] .. creature.poisontype .. [=[
<td>]=] .. creature.poisonresist .. creature.poisonresistmin .. [=[
<td>]=] .. creature.stealth .. [=[
<td>]=] .. creature.ai .. "</table>"
return wikiTable
else
return '<h1 style="color:FireBrick;"><big>Creature Table Template Error: No' ..
creatureType .. 'creature by the name "' .. creatureName .. '" was found (Case-sensitive)</big></h1>'
end
end
function p.singleFollower(frame)
local creatureArray = mw.loadData("Module:WildCreatureData")
local tameableArray = mw.loadData("Module:TameableCreatureData")
local summonArray = mw.loadData("Module:SummonableCreatureData")
-- Parameters passed when the function is invoked
local followerName = frame.args[1] -- Sun Wyrm
local imageOverride = frame.args[2] -- sunwyrm.png
local followerType = frame.args[3] -- Tameable/Summon
local namespace = frame.args[4] -- {{NAMESPACE}}
local wikiTable = ""
local creature = creatureArray[followerName]
local tameable = tameableArray[followerName]
local summon = summonArray[followerName]
if string.lower(followerType) ~= "summon" and tameable then
local formmatedName = string.gsub(string.lower(followerName), "%s+", "")
local imageName = string.gsub(formmatedName, "%p+", "") .. ".jpg"
if imageOverride and imageOverride ~= "" then
imageName = imageOverride
end
-- Automaticlly add categories
if namespace == "" or namespace == nil then
if creature then
wikiTable = wikiTable .. "[[Category:" .. creature.location .. "]]"
wikiTable = wikiTable .. "[[Category:" .. creature.slayer .. " Creatures]]"
end
wikiTable = wikiTable .. "[[Category:Tameable Creatures]]"
wikiTable = wikiTable .. "[[Category:" .. tameable.class .. " Class Tameable]]"
wikiTable = wikiTable .. "[[Category:" .. tameable.combat .. " Tameable]]"
end
wikiTable = [=[__NOTOC__
<table class="wikitable" style="text-align:center">
<th style="border-right:none; border-bottom:none; width:110px">
<th colspan="6" style="border-width: 1px 0px 0px; height:100px; vertical-align:bottom;"> [[File:]=] ..
imageName .. [=[|link=]]
<th style="vertical-align:top; border-left:none; border-bottom:none; margin-left: 15px; width:110px>[[File:icon-]=] ..
string.lower(tameable.class) .. [=[class.png|link=Animal_Taming#Tamed_Classes|]=] ..
tameable.class .. [=[ Class|right]]
<tr>
<th style="border-top:none" colspan="8">[[]=] .. followerName .. [=[]]
<tr>
<th>Min Taming
<th>Control Slots
<th>Hits
<th>Class
<th colspan="2">]=] .. tameable.combat .. [=[ Damage
<th>Armor
<th>Wrestling
<tr>
<td>]=] .. tameable.taming .. [=[
<td>]=] .. tameable.slots .. [=[
<td>]=] .. tameable.hits .. [=[
<td>]=] .. tameable.class .. [=[
<td colspan="2>]=] .. tameable.mindmg .. " - " .. tameable.maxdmg .. [=[
<td>]=] .. tameable.armor .. tameable.armormin .. [=[
<td>]=] .. tameable.wrestling .. [=[
<tr>
<th>Attack Speed
<th>Magic Resist
<th>Poison Resist
<th>Special Resist
<th>Poison
<th>Poisoning
<th>Stealth
<th>Underdog Scalar
<tr>
<td>]=] .. tameable.atkspd .. [=[
<td>]=] .. tameable.magicresist .. tameable.magicresistmin .. [=[
<td>]=] .. tameable.poisonresist .. tameable.poisonresistmin .. [=[
<td>]=] .. tameable.specialresist .. [=[
<td>]=] .. tameable.poisontype .. [=[
<td>]=] .. tameable.poisoning .. [=[
<td>]=] .. tameable.stealth .. [=[
<td>]=] .. tameable.underdogscalar .. "</table>"
return wikiTable
elseif string.lower(followerType) ~= "tameable" and summon then
local formmatedName = string.gsub(string.lower(followerName), "%s+", "")
local imageName = string.gsub(formmatedName, "%p+", "") .. ".jpg"
local spelliconImage = "[[File:" .. summon.spellicon .. ".png|44px|link=Spirit Speak#" .. summon.spellname .. "|" .. summon.spellname .. summon.tometier .. "|right]]"
if summon.necro == true then
spelliconImage = spelliconImage ..
"[[File:SpellPlus.png|right]]<br><br>[[File:iconvengefulspirit.png|link=Necromancy#Undead Summons|Vengeful Spirit|right]]"
end
if imageOverride and imageOverride ~= "" then
imageName = imageOverride
end
-- Automaticlly add categories
if namespace == "" or namespace == nil then
if creature then
wikiTable = wikiTable .. "[[Category:" .. creature.location .. "]]"
wikiTable = wikiTable .. "[[Category:" .. creature.slayer .. " Creatures]]"
end
wikiTable = wikiTable .. "[[Category:Summonable Creatures]]"
end
wikiTable = [=[__NOTOC__
<table class="wikitable" style="text-align:center">
<th style="border-right:none; border-bottom:none; width:110px">
<th colspan="5" style="border-width: 1px 0px 0px; height:100px; vertical-align:bottom;"> [[File:]=] ..
imageName .. [=[|link=]]
<th style="vertical-align:top; border-left:none; border-bottom:none; margin-left: 5px; width:110px>]=] ..
spelliconImage .. [=[
<tr>
<th style="border-top:none" colspan="7">[[]=] .. followerName .. [=[]]
<tr>
<th>Spell
<th>Control Slots
<th>Hits
<th colspan="2">]=] .. summon.combat .. [=[ Damage
<th>Armor
<th>Wrestling
<tr>
<td>]=] .. summon.spellname .. summon.tometier .. [=[
<td>]=] .. summon.slots .. [=[
<td>]=] .. summon.hits .. [=[
<td colspan="2>]=] .. summon.mindmg .. " - " .. summon.maxdmg .. [=[
<td>]=] .. summon.armor .. summon.armormin .. [=[
<td>]=] .. summon.wrestling .. [=[
<tr>
<th>Attack Speed
<th>Magic Resist
<th>Poison Resist
<th>Special Resist
<th>Poison
<th>Poisoning
<th>Stealth
<tr>
<td>]=] .. summon.atkspd .. [=[
<td>]=] .. summon.magicresist .. summon.magicresistmin .. [=[
<td>]=] .. summon.poisonresist .. summon.poisonresistmin .. [=[
<td>]=] .. summon.specialresist .. [=[
<td>]=] .. summon.poisontype .. [=[
<td>]=] .. summon.poisoning .. [=[
<td>]=] .. summon.stealth .. "</table>"
return wikiTable
else
return '<h1 style="color:FireBrick;"><big>CreatureTable Template Error: No tamed/summoned follower found by the name "' ..
followerName .. '" (Case-sensitive)</big></h1>'
end
end
function p.listSlayerGroup(frame)
local creatureArray = mw.loadData("Module:WildCreatureData")
local slayerGroup = frame.args[1]
local position = frame.args[2]
local wikiTable = ""
if position and string.find(string.lower(position), "start") then
wikiTable = [[<table class="wikitable sortable" style="text-align:center">
<th>Name
<th>Location
<th>Slayer
<th>Difficulty
<th>Gold Value
<th>Hits
<th colspan="2">Melee Dmg
<th>Wrestling
<th>Armor
<th>Magic Resist
<th>Parry
<th>AtkSpd
<th>Magery
<th colspan="2">Spell Dmg
<th>Poison
<th>Poisoning
<th>Poison Resist
<th>Stealth
<th>AI
<th>Speed
<th>Unique Scalar]]
else
wikiTable = ""
end
for creatureName, creature in pairs(creatureArray) do
if creature.slayer == slayerGroup then
wikiTable = wikiTable .. [=[<tr>
<td>[[]=] .. creatureName .. [=[]]
<td>]=] .. creature.location .. [=[
<td>]=] .. creature.slayer .. [[
<td>]] .. creature.difficulty .. [[
<td>]] .. creature.goldvalue .. [[
<td>]] .. creature.hits .. [[
<td colspan="2">]] .. creature.minmeleedmg .. creature.maxmeleedmg .. [[
<td>]] .. creature.wrestling .. [[
<td>]] .. creature.armor .. creature.armormin .. [[
<td>]] .. creature.magicresist .. creature.magicresistmin .. [[
<td>]] .. creature.parry .. [[
<td>]] .. creature.atkspd .. [[
<td>]] .. creature.magery .. [[
<td colspan="2">]] .. creature.minspelldmg .. creature.maxspelldmg .. [[
<td>]] .. creature.poisontype .. [[
<td>]] .. creature.poisoning .. [[
<td>]] .. creature.poisonresist .. creature.poisonresistmin .. [[
<td>]] .. creature.stealth .. [[
<td>]] .. creature.ai .. [[
<td>]] .. creature.speed .. [[
<td>]] .. creature.uniquescalar
end
end
if position and position and string.find(string.lower(position), "end") then
wikiTable = wikiTable .. "</table>"
end
return wikiTable
end
function p.listLocationGroup(frame)
local locationGroup = frame.args[1]
local position = frame.args[2]
local wikiTable = ""
local array = creatureArray
if string.lower(locationGroup) == "strangelands" then
array = mw.loadData("Module:StrangelandsCreatureData")
elseif string.lower(locationGroup) == "ships" then
array = mw.loadData("Module:ShipCreatureData")
end
if position and string.find(string.lower(position), "start") then
wikiTable = [[<table class="wikitable sortable" style="text-align:center">
<th>Name
<th>Slayer
<th>Difficulty
<th>Gold Value
<th>Hits
<th colspan="2">Melee Dmg
<th>Wrestling
<th>Armor
<th>Magic Resist
<th>Parry
<th>AtkSpd
<th>Magery
<th colspan="2">Spell Dmg
<th>Poison
<th>Poisoning
<th>Poison Resist
<th>Stealth
<th>AI
<th>Speed
<th>Unique Scalar]]
end
for creatureName, creature in pairs(array) do
if string.find(creature.location, "[[" .. locationGroup .. "]]") then
wikiTable = wikiTable .. [=[<tr>
<td>[[]=] .. creatureName .. [=[]]
<td>]=] .. creature.slayer .. [[
<td>]] .. creature.difficulty .. [[
<td>]] .. creature.goldvalue .. [[
<td>]] .. creature.hits .. [[
<td colspan="2">]] .. creature.minmeleedmg .. creature.maxmeleedmg .. [[
<td>]] .. creature.wrestling .. [[
<td>]] .. creature.armor .. creature.armormin .. [[
<td>]] .. creature.magicresist .. creature.magicresistmin .. [[
<td>]] .. creature.parry .. [[
<td>]] .. creature.atkspd .. [[
<td>]] .. creature.magery .. [[
<td colspan="2">]] .. creature.minspelldmg .. creature.maxspelldmg .. [[
<td>]] .. creature.poisontype .. [[
<td>]] .. creature.poisoning .. [[
<td>]] .. creature.poisonresist .. creature.poisonresistmin .. [[
<td>]] .. creature.stealth .. [[
<td>]] .. creature.ai .. [[
<td>]] .. creature.speed .. [[
<td>]] .. creature.uniquescalar
end
end
if position and position and string.find(string.lower(position), "end") then
wikiTable = wikiTable .. "</table>"
end
return wikiTable
end
function p.listBosses(frame)
local creatureArray = mw.loadData("Module:WildCreatureData")
local bossesToList = frame.args[1] -- Main Boss
local typeOfBoss = string.lower(bossesToList)
local wikiTable = [[<table class="wikitable sortable" style="text-align:center">
<th>Name
<th>Location
<th>Slayer
<th>Difficulty
<th>Base Hits
<th colspan="2">Melee Damage
<th>Wrestling
<th>Armor
<th>Magic Resist
<th>Parry
<th>Magery
<th colspan="2">Spell Damage
<th>Poison
<th>Poisoning
<th>Poison Resist
<th>Stealth]]
for creatureName, creature in pairs(creatureArray) do
if string.lower(creature.bosstype) == typeOfBoss or typeOfBoss == "all" then
if creature.bosstype ~= "" and creature.bosstype ~= "Boss Summon" then
local imageType = ".jpg"
local imagePrefix = ""
if creature.bosstype == "Main Boss" then
imageType = ".gif"
elseif creature.bosstype == "Shrine Boss" then
imageType = ".png"
elseif creature.bosstype == "Omni Boss" then
imageType = ".gif"
imagePrefix = "omni"
end
local formmatedName = string.gsub(string.lower(creatureName), "%s+", "")
local imageName = imagePrefix .. string.gsub(formmatedName, "%p+", "") .. imageType
wikiTable = wikiTable .. [[<tr>
<td>]] .. "[[File:" .. imageName .. "|link=" .. creatureName .. "]]<br />[[" .. creatureName .. [=[]]
<td>]=] .. creature.location .. [=[
<td>]=] .. creature.slayer .. [[
<td>]] .. creature.difficulty .. [[
<td>]] .. creature.hits .. [[
<td colspan="2">]] .. creature.minmeleedmg .. creature.maxmeleedmg .. [[
<td>]] .. creature.wrestling .. [[
<td>]] .. creature.armor .. creature.armormin .. [[
<td>]] .. creature.magicresist .. creature.magicresistmin .. [[
<td>]] .. creature.parry .. [[
<td>]] .. creature.magery .. [[
<td colspan="2">]] .. creature.minspelldmg .. creature.maxspelldmg .. [[
<td>]] .. creature.poisontype .. [[
<td>]] .. creature.poisoning .. [[
<td>]] .. creature.poisonresist .. creature.poisonresistmin .. [[
<td>]] .. creature.stealth
end
end
end
wikiTable = wikiTable .. "</table>"
return wikiTable
end
function p.listAbilities(frame)
local tameableArray = mw.loadData("Module:TameableCreatureData")
local summonArray = mw.loadData("Module:SummonableCreatureData")
local abilityArray = mw.loadData("Module:FollowerAbilityData")
local creature = frame.args[1] -- Warpig
local followerType = frame.args[2] -- Tameable/Summon
local follower = ""
if string.lower(followerType) ~= "summon" and tameableArray[creature] then
follower = tameableArray[creature]
elseif string.lower(followerType) ~= "tameable" and summonArray[creature] then
follower = summonArray[creature]
else
follower = "undefined"
end
local wikiTable = ""
if follower and follower ~= "undefined" then -- List a follower's abilities if a follower is given
wikiTable = [[<table class="wikitable" style="text-align:center">
<th>Ability
<th>Type
<th>Description]]
local abilities = {}
for i, creatureAbility in pairs({ follower.cooldownability, follower.innateability, follower.passiveability }) do
if creatureAbility and creatureAbility ~= "" and type(creatureAbility) == "table" then
for index, ability in pairs(creatureAbility) do
table.insert(abilities, ability)
end
elseif creatureAbility and creatureAbility ~= "" then
table.insert(abilities, creatureAbility)
end
end
for i, ability in pairs(abilities) do
wikiTable = wikiTable .. [[<tr>
<td>]] .. ability .. [[
<td>]] .. abilityArray[ability].type .. [[
<td style="text-align:left">]] .. abilityArray[ability].description
end
elseif follower == "undefined" then -- List all abilities and the followers that have them
wikiTable = [[<table class="wikitable sortable" style="text-align:center">
<th>Ability
<th>Type
<th>Description
<th>Creatures]]
for abilityName, ability in pairs(abilityArray) do
wikiTable = wikiTable .. [[<tr>
<td>]] .. abilityName .. [[
<td>]] .. ability.type .. [[
<td style="text-align:left">]] .. ability.description .. [[
<td>]]
-- Find and list any followers with the ability
for i, array in pairs({ tameableArray, summonArray }) do
for followerName, follower in pairs(array) do
if tameableArray[followerName] and not summonArray[followerName] or not tameableArray[followerName] and summonArray[followerName] then -- Prevents listing duplicate creatures
local followerAbilityType = ""
if ability.type == "Cooldown" then
followerAbilityType = follower.cooldownability
elseif ability.type == "Innate" then
followerAbilityType = follower.innateability
elseif ability.type == "Passive" then
followerAbilityType = follower.passiveability
end
if type(followerAbilityType) == "table" then
for creatureName, value in pairs(followerAbilityType) do
if value == abilityName then
wikiTable = wikiTable .. "[[" .. followerName .. "]]<br>"
end
end
elseif followerAbilityType == abilityName then
wikiTable = wikiTable .. "[[" .. followerName .. "]]<br>"
end
end
end
end
-- Cut out the extra line break
if string.find(wikiTable, "<br>") then
wikiTable = string.reverse(wikiTable)
wikiTable = string.sub(wikiTable, 5)
wikiTable = string.reverse(wikiTable)
end
end
else -- If a follower is given but doesn't exist
return '<h1 style="color:FireBrick;"><big>Follower Ability Table Template Error: No tamed/summoned follower found by the name "' .. creature .. '" (Case-sensitive)</big></h1>'
end
wikiTable = wikiTable .. "</table>"
return wikiTable
end
function p.summonStatIncrease(frame)
local summonArray = mw.loadData("Module:SummonableCreatureData")
local summonName = frame.args[1] -- A summon given to display, defaults to {{PAGENAME}}
local wikiTable = '<table class="wikitable" style="text-align:center">'
local summon = summonArray[summonName]
if summon then
local stats = {
["hits"] = summon.unformattedhits,
["atkspd"] = summon.atkspd,
["mindmg"] = summon.mindmg,
["maxdmg"] = summon.maxdmg,
["wrestling"] = summon.wrestling,
["armor"] = summon.armor,
["magicresist"] = summon.magicresist
}
for statName, stat in pairs(stats) do
if type(stats[statName]) == "string" then
stats[statName] = 0
end
end
wikiTable = wikiTable .. [=[<th colspan="5">[[File:]=]..summon.spelliconImage..[=[|center|link=]]<br>[[]]]=]..summonName..[=[]]
<th rowspan="2">Stat
<th colspan="5"> Spirit Speak Skill
<tr>
<th>Base
<th>80
<th>100
<th>120
<th>150
<tr>
<th>Hits
<td>]=] .. stats.hits .. [[
<td>]] .. stats.hits * 1.5 * (80 / 100) .. [[
<td>]] .. stats.hits * 1.5 * (100 / 100) .. [[
<td>]] .. stats.hits * 1.5 * (120 / 100) .. [[
<td>]] .. stats.hits * 1.5 * (150 / 100) .. [[
<tr>
<th>Attack Speed
<td>]] .. stats.atkspd .. [[
<td>]] .. stats.atkspd * 1.125 * (80 / 100) .. [[
<td>]] .. stats.atkspd * 1.125 * (100 / 100) .. [[
<td>]] .. stats.atkspd * 1.125 * (120 / 100) .. [[
<td>]] .. stats.atkspd * 1.125 * (150 / 100) .. [[
<tr>
<th>]] .. summon.combat .. [[ Damage
<td>]] .. stats.mindmg .. " - " .. stats.maxdmg .. [[
<td>]] .. stats.mindmg * 1.25 * (80 / 100) .. " - " .. stats.maxdmg * 1.25 * (80 / 100) .. [[
<td>]] .. stats.mindmg * 1.25 * (100 / 100) .. " - " .. stats.maxdmg * 1.25 * (100 / 100) .. [[
<td>]] .. stats.mindmg * 1.25 * (120 / 100) .. " - " .. stats.maxdmg * 1.25 * (120 / 100) .. [[
<td>]] .. stats.mindmg * 1.25 * (150 / 100) .. " - " .. stats.maxdmg * 1.25 * (150 / 100) .. [[
<tr>
<th>Wrestling
<td>]] .. stats.wrestling .. [[
<td>]] .. stats.wrestling * 1.25 * (80 / 100) .. [[
<td>]] .. stats.wrestling * 1.25 * (100 / 100) .. [[
<td>]] .. stats.wrestling * 1.25 * (120 / 100) .. [[
<td>]] .. stats.wrestling * 1.25 * (150 / 100) .. [[
<tr>
<th>Armor
<td>]] .. stats.armor .. [[
<td>]] .. stats.armor + (25 * (80 / 100)) .. [[
<td>]] .. stats.armor + (25 * (100 / 100)) .. [[
<td>]] .. stats.armor + (25 * (120 / 100)) .. [[
<td>]] .. stats.armor + (25 * (150 / 100)) .. [[
<tr>
<th>Magic Resist
<td>]] .. stats.magicresist .. [[
<td>]] .. stats.magicresist + (50 * (80 / 100)) .. [[
<td>]] .. stats.magicresist + (50 * (100 / 100)) .. [[
<td>]] .. stats.magicresist + (50 * (120 / 100)) .. [[
<td>]] .. stats.magicresist + (50 * (150 / 100)) .. [[
</table>]]
return wikiTable
else
return '<h1 style="color:FireBrick;"><big>Summon Stat Table Template Error: No summoned follower found by the name "' ..
summonName .. '" (Case-sensitive)</big></h1>'
end
end
function p.ifCreature(frame)
local creatureName = frame.args[1] -- Name of the creature to check for
local creatureType = frame.args[2] -- Wild/Tameable/Summonable/Ships/Strangelands, defaults to Wild
local dataSource
if creatureType and string.lower(creatureType) == "tameable" then
dataSource = mw.loadData("Module:TameableCreatureData")
elseif creatureType and string.lower(creatureType) == "summonabe" then
dataSource = mw.loadData("Module:SummonableCreatureData")
elseif creatureType and string.lower(creatureType) == "ships" then
dataSource = mw.loadData("Module:ShipCreatureData")
elseif creatureType and string.lower(creatureType) == "tameable" then
dataSource = mw.loadData("Module:TameableCreatureData")
elseif creatureType and string.lower(creatureType) == "strangelands" then
dataSource = mw.loadData("Module:StrangelandsCreatureData")
else
dataSource = mw.loadData("Module:WildCreatureData")
end
if dataSource[creatureName] then
return true
end
end
return p