Module:Creatures
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, 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 and tameableArray[followerName] and summonArray[followerName] then
wikiTable = wikiTable .. "[[" .. followerName .. "|"..followerName.." (Summon)]],<br>"
else
wikiTable = wikiTable .. "[[" .. followerName .. "]],<br>"
end
end
end
elseif followerAbilityType == abilityName then
if array == summonArray and tameableArray[followerName] and summonArray[followerName] then
wikiTable = wikiTable .. "[[" .. followerName .. "|"..followerName.." (Summon)]],<br>"
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, 6)
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="6">[[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 * 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.checkCreatureValue(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 creatureStat = frame.args[3] -- location/name/slayer
local value = frame.args[4] -- Aegis Keep/Molten Mongbat/Deamonic/true, defaults to true (has value)
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 "creature match found in datasource"
elseif not value or value == "" then
if stat then
return "stat exists for this creature"
else
return "stat does not exist for this creature"
end
else
if stat and string.lower(stat) == string.lower(value) then
return "stat is equal to the value"
else
return "stat is not equal to the value or doesn't exist"
end
end
else
return "creature not found in datasource"
end
end
return p