Module:Creatures: Difference between revisions
Jump to navigation
Jump to search
TheGmaster (talk | contribs) No edit summary |
TheGmaster (talk | contribs) No edit summary |
||
(50 intermediate revisions by the same user not shown) | |||
Line 8: | Line 8: | ||
local namespace = frame.args["namespace"] | local namespace = frame.args["namespace"] | ||
local iconImage = "" | local iconImage = "" | ||
local creatureArray = mw.loadData("Module:WildCreatureData") -- Array containing wild creature data from another module | |||
local shipsArray = mw.loadData("Module:ShipCreatureData") | |||
local strangelandsArray = mw.loadData("Module:StrangelandsCreatureData") | |||
local wikiTable = "" | local wikiTable = "" | ||
Line 14: | Line 18: | ||
-- 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 | -- 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.find(string.lower(creatureType), "strangeland") then | if string.find(string.lower(creatureType), "strangeland") then | ||
array = | array = strangelandsArray | ||
creatureType = " " .. creatureType .. "" | creatureType = " " .. creatureType .. "" | ||
iconImage = "[[File:icon-strangelands.png|right|50px|link=Strangelands#Strangelands_Creatures|Strangeland Creature]]" | iconImage = "[[File:icon-strangelands.png|right|50px|link=Strangelands#Strangelands_Creatures|Strangeland Creature]]" | ||
elseif string.find(string.lower(creatureType), "ship") then | elseif string.find(string.lower(creatureType), "ship") then | ||
array = | array = shipsArray | ||
creatureType = " " .. creatureType .. "" | creatureType = " " .. creatureType .. "" | ||
iconImage = "[[File:shipdeed.png|right|30px|link=Ships|Ship Creature]]" | iconImage = "[[File:shipdeed.png|right|30px|link=Ships|Ship Creature]]" | ||
else | else | ||
array = | array = creatureArray | ||
creatureType = " wild " | creatureType = " wild " | ||
end | end | ||
Line 33: | Line 37: | ||
if section and section ~= "" then | if section and section ~= "" then | ||
wikiTable = wikiTable .. "== " .. section .. " ==\n" | wikiTable = wikiTable .. "\n== " .. section .. " ==\n" | ||
end | end | ||
if imageOverride and imageOverride ~= "" then | if imageOverride and imageOverride ~= "" then | ||
imageName = imageOverride | imageName = imageOverride | ||
elseif mw.title.new(imageName, 'File').exists == false then | |||
imageName = string.gsub(formmatedName, "%p+", "") .. ".png" | |||
if mw.title.new(imageName, 'File').exists == false then | |||
imageName = string.gsub(formmatedName, "%p+", "") .. ".gif" | |||
end | |||
end | end | ||
-- Automaticly add categories | -- Automaticly add categories | ||
if namespace == "" or namespace == nil then | if namespace == "" or namespace == nil then | ||
wikiTable = wikiTable .. "[[Category:Creatures]]" | |||
wikiTable = wikiTable .. "[[Category:" .. creature.slayer .. " Creatures]]" | |||
if creature.locationtable then | if creature.locationtable then | ||
for i, location in ipairs(creature.locationtable) do | for i, location in ipairs(creature.locationtable) do | ||
wikiTable = wikiTable .. "[[Category:" .. string.gsub( | wikiTable = wikiTable .. "[[Category:" .. string.gsub(location, "%p+", "") .. "]]" | ||
end | end | ||
elseif creature.location and creature.location ~= "?" then | elseif creature.location and creature.location ~= "?" then | ||
Line 50: | Line 62: | ||
end | end | ||
if creature.bosstype ~= "" and creature.bosstype ~= "Boss Summon" then | |||
if creature.bosstype ~= "Undermountain Boss" then | |||
wikiTable = wikiTable .. "[[Category:" .. creature.bosstype .. "es]]" | |||
else | |||
wikiTable = wikiTable .. "[[Category:Bosses]]" | |||
end | |||
end | end | ||
end | end | ||
Line 100: | Line 115: | ||
<td>]=] .. creature.poisonresist .. creature.poisonresistmin .. [=[ | <td>]=] .. creature.poisonresist .. creature.poisonresistmin .. [=[ | ||
<td>]=] .. creature.stealth .. [=[ | <td>]=] .. creature.stealth .. [=[ | ||
<td>]=] .. creature.ai .. "</table>" | <td>]=] .. creature.ai | ||
if array == creatureArray then | |||
wikiTable = wikiTable .. [[ | |||
<tr><td colspan="9"> | |||
<tr> | |||
<td colspan="9">'''Location: ''']] .. creature.location | |||
end | |||
wikiTable = wikiTable .. "</table>" | |||
return wikiTable | return wikiTable | ||
elseif creatureArray[creatureName] == nil and shipsArray[creatureName] == nil and strangelandsArray[creatureName] == nil and namespace == "" then | |||
-- Rule out summons that aren't wild | |||
if mw.loadData("Module:SummonableCreatureData")[creatureName] == nil then | |||
return "[[Category:Incomplete Pages]]" | |||
end | |||
end | end | ||
end | end | ||
Line 120: | Line 146: | ||
local section = frame.args["section"] | local section = frame.args["section"] | ||
local namespace = frame.args["namespace"] -- {{NAMESPACE}} | local namespace = frame.args["namespace"] -- {{NAMESPACE}} | ||
local mountIcon = "" | |||
local wikiTable = "" | local wikiTable = "" | ||
Line 132: | Line 158: | ||
if section and section ~= "" then | if section and section ~= "" then | ||
wikiTable = wikiTable .. "== " .. section .. " ==\n" | wikiTable = wikiTable .. "\n== " .. section .. " ==\n" | ||
end | end | ||
Line 142: | Line 168: | ||
if namespace == "" or namespace == nil then | if namespace == "" or namespace == nil then | ||
wikiTable = wikiTable .. "[[Category:Tameable Creatures]]" | wikiTable = wikiTable .. "[[Category:Tameable Creatures]]" | ||
end | |||
if tameable.mount == true then | |||
mountIcon = "[[File:horse1891.png|40px|link=Mounts|This creature is a mount and can be ridden]]" | |||
end | end | ||
wikiTable = wikiTable .. [=[__NOTOC__ | wikiTable = wikiTable .. [=[__NOTOC__ | ||
<table class="wikitable" style="text-align:center"> | <table class="wikitable" style="text-align:center"> | ||
<th style="border-right:none; border-bottom:none; width:110px"> | <th style="border-right:none; border-bottom:none; width:110px; text-align:left; vertical-align:top;margin-right: 15px;">]=]..mountIcon..[=[ | ||
<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=]] | imageName .. [=[|link=]] | ||
Line 189: | Line 217: | ||
<td>]=] .. tameable.poisoning .. [=[ | <td>]=] .. tameable.poisoning .. [=[ | ||
<td>]=] .. tameable.stealth .. [=[ | <td>]=] .. tameable.stealth .. [=[ | ||
<td>]=] .. tameable.underdogscalar .. "</table>" | <td>]=] .. tameable.underdogscalar .. "</table>\n" | ||
return wikiTable | return wikiTable | ||
Line 197: | Line 225: | ||
local spelliconImage = "[[File:" .. | local spelliconImage = "[[File:" .. | ||
summon.spellicon .. | summon.spellicon .. | ||
".png|44px|link=Spirit Speak#" .. summon.spellname .. "|" .. summon.spellname .. summon. | ".png|44px|link=Spirit Speak#" .. | ||
summon.spellname .. "|" .. summon.spellname .. summon.creaturepool .. "|right]]" | |||
if summon.necro == true then | if summon.necro == true then | ||
Line 205: | Line 234: | ||
if section and section ~= "" then | if section and section ~= "" then | ||
wikiTable = wikiTable .. "== " .. section .. " ==\n" | wikiTable = wikiTable .. "\n== " .. section .. " ==\n" | ||
end | end | ||
Line 234: | Line 263: | ||
<th>Wrestling | <th>Wrestling | ||
<tr> | <tr> | ||
<td>]=] .. summon.spellname | <td>]=] .. summon.spellname .. [=[ | ||
<td>]=] .. summon.slots .. [=[ | <td>]=] .. summon.slots .. [=[ | ||
<td>]=] .. summon.hits .. [=[ | <td>]=] .. summon.hits .. [=[ | ||
Line 606: | Line 635: | ||
local creatureArray = mw.loadData("Module:WildCreatureData") | local creatureArray = mw.loadData("Module:WildCreatureData") | ||
local bossesToList = frame.args["bosstype"] | local bossesToList = frame.args["bosstype"] -- Main Boss | ||
local typeOfBoss = string.lower(bossesToList) | local typeOfBoss = string.lower(bossesToList) | ||
local typeHeader = "" | local typeHeader = "" | ||
Line 637: | Line 665: | ||
if string.lower(creature.bosstype) == typeOfBoss or typeOfBoss == "all" then | if string.lower(creature.bosstype) == typeOfBoss or typeOfBoss == "all" then | ||
if creature.bosstype ~= "" and creature.bosstype ~= "Boss Summon" then | if creature.bosstype ~= "" and creature.bosstype ~= "Boss Summon" then | ||
local formmatedName = string.gsub(string.gsub(string.lower(creatureName), "%s+", ""), "%p+", "") | |||
local imageType | local imageType | ||
local imagePrefix = "" | local imagePrefix = "" | ||
Line 644: | Line 673: | ||
end | end | ||
if | if creature.bosstype == "Omni Boss" then | ||
imagePrefix = "omni" | |||
end | end | ||
if | if mw.title.new(imagePrefix .. formmatedName .. ".jpg", 'File').exists == true then | ||
imageType = ".jpg" | |||
elseif mw.title.new(imagePrefix .. formmatedName .. ".gif", 'File').exists == true then | |||
imageType = ".gif" | |||
else | |||
imageType = ".png" | |||
end | end | ||
local imageName = imagePrefix .. string.gsub(formmatedName, "%p+", "") .. imageType | local imageName = imagePrefix .. string.gsub(formmatedName, "%p+", "") .. imageType | ||
wikiTable = wikiTable .. [[<tr> | wikiTable = wikiTable .. [[<tr> | ||
<td>]] .. | <td>]] .. | ||
"[[File:" .. | |||
imageName .. "|link=" .. creatureName .. "]]<br />[[" .. creatureName .. [=[]]]=] .. typeRow .. [[ | |||
<td>]] .. creature.location .. [=[ | <td>]] .. creature.location .. [=[ | ||
<td>]=] .. creature.slayer .. [[ | <td>]=] .. creature.slayer .. [[ | ||
Line 731: | Line 755: | ||
if abilityCount >= 1 then | if abilityCount >= 1 then | ||
if section and section ~= "" then | if section and section ~= "" then | ||
wikiTable = wikiTable .. "=== " .. section .. " ===\n" | wikiTable = wikiTable .. "\n=== " .. section .. " ===\n" | ||
end | end | ||
Line 748: | Line 772: | ||
elseif creature == "" or string.lower(creature) == "all" then -- List all abilities and the followers that have them | elseif creature == "" or string.lower(creature) == "all" then -- List all abilities and the followers that have them | ||
if section and section ~= "" then | if section and section ~= "" then | ||
wikiTable = wikiTable .. "== " .. section .. " ==\n" | wikiTable = wikiTable .. "\n== " .. section .. " ==\n" | ||
end | end | ||
Line 779: | Line 803: | ||
for creatureName, value in pairs(followerAbilityType) do | for creatureName, value in pairs(followerAbilityType) do | ||
if value == abilityName then | if value == abilityName then | ||
if array | if array ~= summonArray then | ||
if not tameableArray[followerName] or not summonArray[followerName] then | |||
wikiTable = wikiTable .. "[[" .. followerName .. "]]<br>" | |||
end | |||
else | else | ||
wikiTable = wikiTable .. "[[" .. followerName .. "]] | wikiTable = wikiTable .. "[[" .. followerName .. "]]<br>" | ||
end | end | ||
end | end | ||
end | end | ||
elseif followerAbilityType == abilityName then | elseif followerAbilityType == abilityName then | ||
if array | if array ~= summonArray then | ||
if not tameableArray[followerName] or not summonArray[followerName] then | |||
wikiTable = wikiTable .. "[[" .. followerName .. "]]<br>" | |||
end | |||
else | else | ||
wikiTable = wikiTable .. "[[" .. followerName .. "]] | wikiTable = wikiTable .. "[[" .. followerName .. "]]<br>" | ||
end | end | ||
end | end | ||
Line 799: | Line 827: | ||
if string.find(wikiTable, "<br>") then | if string.find(wikiTable, "<br>") then | ||
wikiTable = string.reverse(wikiTable) | wikiTable = string.reverse(wikiTable) | ||
wikiTable = string.sub(wikiTable, | wikiTable = string.sub(wikiTable, 5) | ||
wikiTable = string.reverse(wikiTable) | wikiTable = string.reverse(wikiTable) | ||
end | end | ||
Line 809: | Line 837: | ||
end | end | ||
wikiTable = wikiTable .. "</table>" | wikiTable = wikiTable .. "</table>\n" | ||
return wikiTable | return wikiTable | ||
Line 835: | Line 863: | ||
["magicresist"] = summon.magicresist | ["magicresist"] = summon.magicresist | ||
} | } | ||
local hitsScale = 1.5 | |||
local atkspdScale = 0.25 | |||
local dmgScale = 0.5 | |||
local wrestlingScale = 0.5 | |||
local armorIncrease = 25 | |||
local resistIncrease = 50 | |||
for statName, stat in pairs(stats) do | for statName, stat in pairs(stats) do | ||
if type( | if type(stats[statName]) == "string" then | ||
stats[statName] = 0 | stats[statName] = 0 | ||
end | end | ||
Line 848: | Line 879: | ||
if section and section ~= "" then | if section and section ~= "" then | ||
wikiTable = wikiTable .. "=== " .. section .. " ===\n" | wikiTable = wikiTable .. "\n=== " .. section .. " ===\n" | ||
end | end | ||
Line 866: | Line 897: | ||
<th>Hits | <th>Hits | ||
<td>]=] .. stats.hits .. [[ | <td>]=] .. stats.hits .. [[ | ||
<td>]] .. stats.hits * | <td>]] .. stats.hits + (stats.hits * (hitsScale * (80 / 100))) .. [[ | ||
<td>]] .. stats.hits * | <td>]] .. stats.hits + (stats.hits * (hitsScale * (100 / 100))) .. [[ | ||
<td>]] .. stats.hits * | <td>]] .. stats.hits + (stats.hits * (hitsScale * (120 / 100))) .. [[ | ||
<td>]] .. stats.hits * | <td>]] .. stats.hits + (stats.hits * (hitsScale * (150 / 100))) .. [[ | ||
<tr> | <tr> | ||
<th>Attack Speed | <th>Attack Speed | ||
<td>]] .. stats.atkspd .. [[ | <td>]] .. stats.atkspd .. [[ | ||
<td>]] .. stats.atkspd * | <td>]] .. stats.atkspd + (stats.atkspd * (atkspdScale * (80 / 100))) .. [[ | ||
<td>]] .. stats.atkspd * | <td>]] .. stats.atkspd + (stats.atkspd * (atkspdScale * (100 / 100))) .. [[ | ||
<td>]] .. stats.atkspd * | <td>]] .. stats.atkspd + (stats.atkspd * (atkspdScale * (120 / 100))) .. [[ | ||
<td>]] .. stats.atkspd * | <td>]] .. stats.atkspd + (stats.atkspd * (atkspdScale * (150 / 100))) .. [[ | ||
<tr> | <tr> | ||
<th>]] .. summon.combat .. [[ Damage | <th>]] .. summon.combat .. [[ Damage | ||
<td>]] .. stats.mindmg .. " - " .. stats.maxdmg .. [[ | <td>]] .. stats.mindmg .. " - " .. stats.maxdmg .. [[ | ||
<td>]] .. stats.mindmg * | <td>]] .. | ||
<td>]] .. stats.mindmg * | stats.mindmg + (stats.mindmg * (dmgScale * (80 / 100))) .. | ||
<td>]] .. stats.mindmg * | " - " .. stats.maxdmg + (stats.maxdmg * (dmgScale * (80 / 100))) .. [[ | ||
<td>]] .. stats.mindmg * | <td>]] .. | ||
stats.mindmg + (stats.mindmg * (dmgScale * (100 / 100))) .. | |||
" - " .. stats.maxdmg + (stats.maxdmg * (dmgScale * (100 / 100))) .. [[ | |||
<td>]] .. | |||
stats.mindmg + (stats.mindmg * (dmgScale * (120 / 100))) .. | |||
" - " .. stats.maxdmg + (stats.maxdmg * (dmgScale * (120 / 100))) .. [[ | |||
<td>]] .. | |||
stats.mindmg + (stats.mindmg * (dmgScale * (150 / 100))) .. | |||
" - " .. stats.maxdmg + (stats.maxdmg * (dmgScale * (150 / 100))) .. [[ | |||
<tr> | <tr> | ||
<th>Wrestling | <th>Wrestling | ||
<td>]] .. stats.wrestling .. [[ | <td>]] .. stats.wrestling .. [[ | ||
<td>]] .. stats.wrestling * | <td>]] .. stats.wrestling + (stats.wrestling * (wrestlingScale * (80 / 100))) .. [[ | ||
<td>]] .. stats.wrestling * | <td>]] .. stats.wrestling + (stats.wrestling * (wrestlingScale * (100 / 100))) .. [[ | ||
<td>]] .. stats.wrestling * | <td>]] .. stats.wrestling + (stats.wrestling * (wrestlingScale * (120 / 100))) .. [[ | ||
<td>]] .. stats.wrestling * | <td>]] .. stats.wrestling + (stats.wrestling * (wrestlingScale * (150 / 100))) .. [[ | ||
<tr> | <tr> | ||
<th>Armor | <th>Armor | ||
<td>]] .. stats.armor .. [[ | <td>]] .. stats.armor .. [[ | ||
<td>]] .. stats.armor + ( | <td>]] .. stats.armor + (armorIncrease * (80 / 100)) .. [[ | ||
<td>]] .. stats.armor + ( | <td>]] .. stats.armor + (armorIncrease * (100 / 100)) .. [[ | ||
<td>]] .. stats.armor + ( | <td>]] .. stats.armor + (armorIncrease * (120 / 100)) .. [[ | ||
<td>]] .. stats.armor + ( | <td>]] .. stats.armor + (armorIncrease * (150 / 100)) .. [[ | ||
<tr> | <tr> | ||
<th>Magic Resist | <th>Magic Resist | ||
<td>]] .. stats.magicresist .. [[ | <td>]] .. stats.magicresist .. [[ | ||
<td>]] .. stats.magicresist + ( | <td>]] .. stats.magicresist + (resistIncrease * (80 / 100)) .. [[ | ||
<td>]] .. stats.magicresist + ( | <td>]] .. stats.magicresist + (resistIncrease * (100 / 100)) .. [[ | ||
<td>]] .. stats.magicresist + ( | <td>]] .. stats.magicresist + (resistIncrease * (120 / 100)) .. [[ | ||
<td>]] .. stats.magicresist + ( | <td>]] .. stats.magicresist + (resistIncrease * (150 / 100)) .. [[ | ||
</table>]] | </table>]] | ||
Line 968: | Line 1,007: | ||
end | end | ||
function p. | function p.findImageFormat(frame) | ||
local | local creatureName = frame.args['image'] | ||
local | local formmatedName = string.gsub(string.lower(creatureName), "%s+", "") | ||
local | local imagePrefix = "" | ||
local creature = mw.loadData("Module:WildCreatureData")[creatureName] | |||
if creature and creature.bosstype == "Omni Boss" then | |||
imagePrefix = "omni" | |||
end | end | ||
local image = string.gsub(imagePrefix .. formmatedName, "%p+", "") .. ".jpg" | |||
if | if mw.title.new(image, 'File').exists == false then | ||
image = string.gsub(imagePrefix .. formmatedName, "%p+", "") .. ".gif" | |||
if mw.title.new(image, 'File').exists == false then | |||
image = string.gsub(imagePrefix .. formmatedName, "%p+", "") .. ".png" | |||
end | |||
end | end | ||
return image | |||
return | |||
end | end | ||
return p | return p |
Latest revision as of 03:17, 19 December 2024
Documentation for this module may be created at Module:Creatures/doc
local p = {} function p.singleCreature(frame) local creatureName = frame.args["name"] local creatureType = frame.args["type"] local imageOverride = frame.args["image"] local section = frame.args["section"] local namespace = frame.args["namespace"] local iconImage = "" local creatureArray = mw.loadData("Module:WildCreatureData") -- Array containing wild creature data from another module local shipsArray = mw.loadData("Module:ShipCreatureData") local strangelandsArray = mw.loadData("Module:StrangelandsCreatureData") local wikiTable = "" local array -- 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.find(string.lower(creatureType), "strangeland") then array = strangelandsArray creatureType = " " .. creatureType .. "" iconImage = "[[File:icon-strangelands.png|right|50px|link=Strangelands#Strangelands_Creatures|Strangeland Creature]]" elseif string.find(string.lower(creatureType), "ship") then array = shipsArray creatureType = " " .. creatureType .. "" iconImage = "[[File:shipdeed.png|right|30px|link=Ships|Ship Creature]]" else array = creatureArray 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 section and section ~= "" then wikiTable = wikiTable .. "\n== " .. section .. " ==\n" end if imageOverride and imageOverride ~= "" then imageName = imageOverride elseif mw.title.new(imageName, 'File').exists == false then imageName = string.gsub(formmatedName, "%p+", "") .. ".png" if mw.title.new(imageName, 'File').exists == false then imageName = string.gsub(formmatedName, "%p+", "") .. ".gif" end end -- Automaticly add categories if namespace == "" or namespace == nil then wikiTable = wikiTable .. "[[Category:Creatures]]" wikiTable = wikiTable .. "[[Category:" .. creature.slayer .. " Creatures]]" if creature.locationtable then for i, location in ipairs(creature.locationtable) do wikiTable = wikiTable .. "[[Category:" .. string.gsub(location, "%p+", "") .. "]]" end elseif creature.location and creature.location ~= "?" then wikiTable = wikiTable .. "[[Category:" .. string.gsub(creature.location, "%p+", "") .. "]]" end if creature.bosstype ~= "" and creature.bosstype ~= "Boss Summon" then if creature.bosstype ~= "Undermountain Boss" then wikiTable = wikiTable .. "[[Category:" .. creature.bosstype .. "es]]" else wikiTable = wikiTable .. "[[Category:Bosses]]" end end end wikiTable = 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 if array == creatureArray then wikiTable = wikiTable .. [[ <tr><td colspan="9"> <tr> <td colspan="9">'''Location: ''']] .. creature.location end wikiTable = wikiTable .. "</table>" return wikiTable elseif creatureArray[creatureName] == nil and shipsArray[creatureName] == nil and strangelandsArray[creatureName] == nil and namespace == "" then -- Rule out summons that aren't wild if mw.loadData("Module:SummonableCreatureData")[creatureName] == nil then return "[[Category:Incomplete Pages]]" end 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["name"] -- Sun Wyrm local followerType = frame.args["type"] -- tame/summon local imageOverride = frame.args["image"] -- sunwyrm.png local section = frame.args["section"] local namespace = frame.args["namespace"] -- {{NAMESPACE}} local mountIcon = "" local wikiTable = "" local creature = creatureArray[followerName] local tameable = tameableArray[followerName] local summon = summonArray[followerName] if not string.find(string.lower(followerType), "summon") and tameable then local formmatedName = string.gsub(string.lower(followerName), "%s+", "") local imageName = string.gsub(formmatedName, "%p+", "") .. ".jpg" if section and section ~= "" then wikiTable = wikiTable .. "\n== " .. section .. " ==\n" end if imageOverride and imageOverride ~= "" then imageName = imageOverride end -- Automaticlly add categories if namespace == "" or namespace == nil then wikiTable = wikiTable .. "[[Category:Tameable Creatures]]" end if tameable.mount == true then mountIcon = "[[File:horse1891.png|40px|link=Mounts|This creature is a mount and can be ridden]]" end wikiTable = wikiTable .. [=[__NOTOC__ <table class="wikitable" style="text-align:center"> <th style="border-right:none; border-bottom:none; width:110px; text-align:left; vertical-align:top;margin-right: 15px;">]=]..mountIcon..[=[ <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>\n" return wikiTable elseif not string.find(string.lower(followerType), "tame") 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.creaturepool .. "|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 section and section ~= "" then wikiTable = wikiTable .. "\n== " .. section .. " ==\n" end if imageOverride and imageOverride ~= "" then imageName = imageOverride end -- Automaticlly add categories if namespace == "" or namespace == nil then wikiTable = wikiTable .. "[[Category:Summonable Creatures]]" end wikiTable = 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 .. [=[ <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>FollowerTable 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 -- 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.find(string.lower(locationGroup), "strangeland") then array = mw.loadData("Module:StrangelandsCreatureData") elseif string.find(string.lower(locationGroup), "ship") then array = mw.loadData("Module:ShipCreatureData") else array = mw.loadData("Module:WildCreatureData") 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.listFollowerGroup(frame) local followerArray local followerGroup = frame.args["group"] local wikiTable = "" if string.find(string.lower(followerGroup), "tame") then followerArray = mw.loadData("Module:TameableCreatureData") local creatureArray = mw.loadData("Module:WildCreatureData") wikiTable = [[<table class="wikitable sortable" style="text-align:center"> <th>Name <th>Location <th>Slots <th>Taming <th>Class <th>Hits <th>Combat <th colspan="2"> Damage <th>Wrestling <th>Armor <th>Magic Resist <th>AtkSpd <th>Poison <th>Poisoning <th>Poison Resist <th>Special Resist <th>Stealth <th>Cooldown Ability <th>Innate Ability <th>Passive Ability <th>Underdog Scalar]] for followerName, follower in pairs(followerArray) do local creature = creatureArray[followerName] local cooldownability = follower.cooldownability local innateability = follower.innateability local passiveability = follower.passiveability local location if type(follower.cooldownability) == "table" then cooldownability = "" for i, ability in ipairs(follower.cooldownability) do if i > 1 then cooldownability = cooldownability .. ", " end cooldownability = cooldownability .. ability end end if type(follower.innateability) == "table" then innateability = "" for i, ability in ipairs(follower.innateability) do if i > 1 then innateability = innateability .. ", " end innateability = innateability .. ability end end if type(follower.passiveability) == "table" then passiveability = "" for i, ability in ipairs(follower.passiveability) do if i > 1 then passiveability = passiveability .. ", " end passiveability = passiveability .. ability end end if creature and creature.location then location = creature.location else location = "?" end wikiTable = wikiTable .. [=[<tr> <td>[[]=] .. followerName .. [=[]] <td>]=] .. location .. [=[ <td>]=] .. follower.slots .. [[ <td>]] .. follower.taming .. [[ <td>]] .. follower.class .. [[ <td>]] .. follower.hits .. [[ <td>]] .. follower.combat .. [[ <td colspan="2">]] .. follower.mindmg .. " - " .. follower.maxdmg .. [[ <td>]] .. follower.wrestling .. [[ <td>]] .. follower.armor .. [[ <td>]] .. follower.magicresist .. [[ <td>]] .. follower.atkspd .. [[ <td>]] .. follower.poisontype .. [[ <td>]] .. follower.poisoning .. [[ <td>]] .. follower.poisonresist .. [[ <td>]] .. follower.specialresist .. [[ <td>]] .. follower.stealth .. [[ <td>]] .. cooldownability .. [[ <td>]] .. innateability .. [[ <td>]] .. passiveability .. [[ <td>]] .. follower.underdogscalar end elseif string.find(string.lower(followerGroup), "summon") then followerArray = mw.loadData("Module:SummonableCreatureData") wikiTable = [[<table class="wikitable sortable" style="text-align:center"> <th>Name <th>Spell <th>Type <th>Slots <th>Hits <th>Combat <th colspan="2"> Damage <th>Wrestling <th>Armor <th>Magic Resist <th>AtkSpd <th>Poison <th>Poisoning <th>Poison Resist <th>Special Resist <th>Stealth <th>Cooldown Ability <th>Innate Ability <th>Passive Ability]] for followerName, follower in pairs(followerArray) do local cooldownability = follower.cooldownability local innateability = follower.innateability local passiveability = follower.passiveability local summonType if type(follower.cooldownability) == "table" then cooldownability = "" for i, ability in ipairs(follower.cooldownability) do if i > 1 then cooldownability = cooldownability .. ", " end cooldownability = cooldownability .. ability end end if type(follower.innateability) == "table" then innateability = "" for i, ability in ipairs(follower.innateability) do if i > 1 then innateability = innateability .. ", " end innateability = innateability .. ability end end if type(follower.passiveability) == "table" then passiveability = "" for i, ability in ipairs(follower.passiveability) do if i > 1 then passiveability = passiveability .. ", " end passiveability = passiveability .. ability end end if follower.necro and follower.necro == true then summonType = "[[Necromancy]]" else summonType = "[[Spirit Speak|Regular]]" end wikiTable = wikiTable .. [=[<tr> <td>[[]=] .. followerName .. [=[]] <td>]=] .. follower.spellname .. [[ <td>]] .. summonType .. [[ <td>]] .. follower.slots .. [[ <td>]] .. follower.hits .. [[ <td>]] .. follower.combat .. [[ <td colspan="2">]] .. follower.mindmg .. " - " .. follower.maxdmg .. [[ <td>]] .. follower.wrestling .. [[ <td>]] .. follower.armor .. [[ <td>]] .. follower.magicresist .. [[ <td>]] .. follower.atkspd .. [[ <td>]] .. follower.poisontype .. [[ <td>]] .. follower.poisoning .. [[ <td>]] .. follower.poisonresist .. [[ <td>]] .. follower.specialresist .. [[ <td>]] .. follower.stealth .. [[ <td>]] .. cooldownability .. [[ <td>]] .. innateability .. [[ <td>]] .. passiveability end end wikiTable = wikiTable .. "</table>" return wikiTable end function p.listBosses(frame) local creatureArray = mw.loadData("Module:WildCreatureData") local bossesToList = frame.args["bosstype"] -- Main Boss local typeOfBoss = string.lower(bossesToList) local typeHeader = "" local typeRow = "" if typeOfBoss == "all" then typeHeader = "<th> Type" end local wikiTable = [[<table class="wikitable sortable" style="text-align:center"> <th>Name]] .. typeHeader .. [[ <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 formmatedName = string.gsub(string.gsub(string.lower(creatureName), "%s+", ""), "%p+", "") local imageType local imagePrefix = "" if bossesToList == "all" then typeRow = "<td>" .. creature.bosstype end if creature.bosstype == "Omni Boss" then imagePrefix = "omni" end if mw.title.new(imagePrefix .. formmatedName .. ".jpg", 'File').exists == true then imageType = ".jpg" elseif mw.title.new(imagePrefix .. formmatedName .. ".gif", 'File').exists == true then imageType = ".gif" else imageType = ".png" end local imageName = imagePrefix .. string.gsub(formmatedName, "%p+", "") .. imageType wikiTable = wikiTable .. [[<tr> <td>]] .. "[[File:" .. imageName .. "|link=" .. creatureName .. "]]<br />[[" .. creatureName .. [=[]]]=] .. typeRow .. [[ <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.listFollowerAbilities(frame) local tameableArray = mw.loadData("Module:TameableCreatureData") local summonArray = mw.loadData("Module:SummonableCreatureData") local abilityArray = mw.loadData("Module:FollowerAbilityData") local creature = frame.args["name"] local followerType = frame.args["type"] -- Tameable/Summon local section = frame.args["section"] local follower = "" if not string.find(string.lower(followerType), "summon") and tameableArray[creature] then follower = tameableArray[creature] elseif not string.find(string.lower(followerType), "tame") and summonArray[creature] then follower = summonArray[creature] else follower = "unknown" end local wikiTable = "" if follower and follower ~= "unknown" then -- List a follower's abilities if a follower is given local abilities = {} local abilityCount = 0 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 ipairs(abilities) do abilityCount = abilityCount + 1 end if abilityCount >= 1 then if section and section ~= "" then wikiTable = wikiTable .. "\n=== " .. section .. " ===\n" end wikiTable = wikiTable .. [[<table class="wikitable" style="text-align:center"> <th>Ability <th>Type <th>Description]] 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 creature == "" or string.lower(creature) == "all" then -- List all abilities and the followers that have them if section and section ~= "" then wikiTable = wikiTable .. "\n== " .. section .. " ==\n" end wikiTable = 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, followerStats in pairs(array) do local followerAbilityType = "" if ability.type == "Cooldown" then followerAbilityType = followerStats.cooldownability elseif ability.type == "Innate" then followerAbilityType = followerStats.innateability elseif ability.type == "Passive" then followerAbilityType = followerStats.passiveability end if type(followerAbilityType) == "table" then for creatureName, value in pairs(followerAbilityType) do if value == abilityName then if array ~= summonArray then if not tameableArray[followerName] or not summonArray[followerName] then wikiTable = wikiTable .. "[[" .. followerName .. "]]<br>" end else wikiTable = wikiTable .. "[[" .. followerName .. "]]<br>" end end end elseif followerAbilityType == abilityName then if array ~= summonArray then if not tameableArray[followerName] or not summonArray[followerName] then wikiTable = wikiTable .. "[[" .. followerName .. "]]<br>" end else 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>\n" return wikiTable end function p.summonStatIncrease(frame) local summonArray = mw.loadData("Module:SummonableCreatureData") local summonName = frame.args["name"] -- A summon given to display, defaults to {{PAGENAME}} local section = frame.args["section"] local pageName = frame.args["pagename"] local wikiTable = '<table class="wikitable" style="text-align:center"><td colspan="6" style="border-bottom:none">\n<tr>\n' 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 } local hitsScale = 1.5 local atkspdScale = 0.25 local dmgScale = 0.5 local wrestlingScale = 0.5 local armorIncrease = 25 local resistIncrease = 50 for statName, stat in pairs(stats) do if type(stats[statName]) == "string" then stats[statName] = 0 end end if section and section ~= "" then wikiTable = wikiTable .. "\n=== " .. section .. " ===\n" end wikiTable = wikiTable .. [=[<th colspan="6" style="border-top:none">[[File:]=] .. summon.spellicon .. [=[.png|center|link=]]<br>[[]=] .. summonName .. [=[]] <tr> <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 + (stats.hits * (hitsScale * (80 / 100))) .. [[ <td>]] .. stats.hits + (stats.hits * (hitsScale * (100 / 100))) .. [[ <td>]] .. stats.hits + (stats.hits * (hitsScale * (120 / 100))) .. [[ <td>]] .. stats.hits + (stats.hits * (hitsScale * (150 / 100))) .. [[ <tr> <th>Attack Speed <td>]] .. stats.atkspd .. [[ <td>]] .. stats.atkspd + (stats.atkspd * (atkspdScale * (80 / 100))) .. [[ <td>]] .. stats.atkspd + (stats.atkspd * (atkspdScale * (100 / 100))) .. [[ <td>]] .. stats.atkspd + (stats.atkspd * (atkspdScale * (120 / 100))) .. [[ <td>]] .. stats.atkspd + (stats.atkspd * (atkspdScale * (150 / 100))) .. [[ <tr> <th>]] .. summon.combat .. [[ Damage <td>]] .. stats.mindmg .. " - " .. stats.maxdmg .. [[ <td>]] .. stats.mindmg + (stats.mindmg * (dmgScale * (80 / 100))) .. " - " .. stats.maxdmg + (stats.maxdmg * (dmgScale * (80 / 100))) .. [[ <td>]] .. stats.mindmg + (stats.mindmg * (dmgScale * (100 / 100))) .. " - " .. stats.maxdmg + (stats.maxdmg * (dmgScale * (100 / 100))) .. [[ <td>]] .. stats.mindmg + (stats.mindmg * (dmgScale * (120 / 100))) .. " - " .. stats.maxdmg + (stats.maxdmg * (dmgScale * (120 / 100))) .. [[ <td>]] .. stats.mindmg + (stats.mindmg * (dmgScale * (150 / 100))) .. " - " .. stats.maxdmg + (stats.maxdmg * (dmgScale * (150 / 100))) .. [[ <tr> <th>Wrestling <td>]] .. stats.wrestling .. [[ <td>]] .. stats.wrestling + (stats.wrestling * (wrestlingScale * (80 / 100))) .. [[ <td>]] .. stats.wrestling + (stats.wrestling * (wrestlingScale * (100 / 100))) .. [[ <td>]] .. stats.wrestling + (stats.wrestling * (wrestlingScale * (120 / 100))) .. [[ <td>]] .. stats.wrestling + (stats.wrestling * (wrestlingScale * (150 / 100))) .. [[ <tr> <th>Armor <td>]] .. stats.armor .. [[ <td>]] .. stats.armor + (armorIncrease * (80 / 100)) .. [[ <td>]] .. stats.armor + (armorIncrease * (100 / 100)) .. [[ <td>]] .. stats.armor + (armorIncrease * (120 / 100)) .. [[ <td>]] .. stats.armor + (armorIncrease * (150 / 100)) .. [[ <tr> <th>Magic Resist <td>]] .. stats.magicresist .. [[ <td>]] .. stats.magicresist + (resistIncrease * (80 / 100)) .. [[ <td>]] .. stats.magicresist + (resistIncrease * (100 / 100)) .. [[ <td>]] .. stats.magicresist + (resistIncrease * (120 / 100)) .. [[ <td>]] .. stats.magicresist + (resistIncrease * (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.checkCreatureValue(frame) local creatureName = frame.args["name"] -- Name of the creature to check for local creatureType = frame.args["type"] -- Wild/Tameable/Summonable/Ships/Strangelands, defaults to Wild local creatureStat = frame.args["stat"] -- location/name/slayer local value = frame.args["value"] -- Aegis Keep/Molten Mongbat/Deamonic/true, defaults to true (has value) local valueIfTrue = frame.args["iftrue"] local valueIfFalse = frame.args["iffalse"] if not creatureStat or creatureStat == "" then creatureStat = "name" end local dataSource -- Set the requested data source if creatureType and string.lower(creatureType) == "tameable" then dataSource = mw.loadData("Module:TameableCreatureData") elseif creatureType and string.lower(creatureType) == "summonable" 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 local creature = dataSource[creatureName] if creature then local stat = creature[creatureStat] if creatureStat == "name" then return valueIfTrue -- "creature match found in datasource" elseif not value or value == "" then if stat then return valueIfTrue -- "stat exists for this creature" else return valueIfFalse -- "stat does not exist for this creature" end else if stat and string.lower(stat) == string.lower(value) then return valueIfTrue -- "stat is equal to the value" else return valueIfFalse -- "stat is not equal to the value or doesn't exist" end end else return valueIfFalse -- "creature not found in datasource" end end function p.findImageFormat(frame) local creatureName = frame.args['image'] local formmatedName = string.gsub(string.lower(creatureName), "%s+", "") local imagePrefix = "" local creature = mw.loadData("Module:WildCreatureData")[creatureName] if creature and creature.bosstype == "Omni Boss" then imagePrefix = "omni" end local image = string.gsub(imagePrefix .. formmatedName, "%p+", "") .. ".jpg" if mw.title.new(image, 'File').exists == false then image = string.gsub(imagePrefix .. formmatedName, "%p+", "") .. ".gif" if mw.title.new(image, 'File').exists == false then image = string.gsub(imagePrefix .. formmatedName, "%p+", "") .. ".png" end end return image end return p