|
|
(2 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| local p = {}
| | <noinclude><big>''Editing this template will '''not''' change what the template displays, see [[Template:{{PAGENAME}}#Editing|#Editing]] for more information</big>'' |
|
| |
|
| function p.singleCreature(frame)
| |
| local creatureName = frame.args[1]
| |
| local creatureType = frame.args[2]
| |
| local imageOverride = frame.args[3]
| |
| local namespace = frame.args[4]
| |
| local iconImage = ""
| |
|
| |
|
| local wikiTable = ""
| | {{PAGENAME}} generates a list of a group of followers, i.e. summons or tameables. |
| 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 = mw.loadData("Module:StrangelandsCreatureData")
| |
| creatureType = " " .. creatureType .. ""
| |
| iconImage = "[[File:icon-strangelands.png|right|50px|link=Strangelands#Strangelands_Creatures|Strangeland Creature]]"
| |
| elseif string.find(string.lower(creatureType),"ship") then
| |
| array = mw.loadData("Module:ShipCreatureData")
| |
| creatureType = " " .. creatureType .. ""
| |
| iconImage = "[[File:shipdeed.png|right|30px|link=Ships|Ship Creature]]"
| |
| else
| |
| array = mw.loadData("Module:WildCreatureData") -- Array containing wild creature data from another module
| |
| creatureType = " wild "
| |
| end
| |
|
| |
|
| local creature = array[creatureName]
| | == Template == |
| | The tables are sortable, the sorting arrows are just black... (Click the links on the right to show the tables) |
| | <div class="mw-collapsible mw-collapsed" data-expandtext="Show Tameable List"> |
| | {{FollowerList|tameable}} |
| | </div><br> |
| | <div class="mw-collapsible mw-collapsed" data-expandtext="Show Summons List"> |
| | {{FollowerList|summon}} |
| | </div> |
| | </noinclude><onlyinclude>{{#invoke:Creatures|listFollowerGroup|group={{{group|{{{1|}}}}}}}}</onlyinclude> |
|
| |
|
| if creature then
| | == Parameters == |
| local formmatedName = string.gsub(string.lower(creatureName), "%s+", "")
| | {| class="wikitable" style="text-align:center" |
| local imageName = string.gsub(formmatedName, "%p+", "") .. ".jpg"
| | ! Name |
| | ! Alias |
| | ! Default Value |
| | ! Function |
| | ! Example |
| | |- |
| | | group |
| | | 1 |
| | | all |
| | | style="text-align:left"| The type of follower to list, won't list anything if left blank. Not case-sensitive. |
| | | tame/summon |
| | |} |
|
| |
|
| if imageOverride and imageOverride ~= "" then
| | == Editing == |
| imageName = imageOverride
| | This template is generated by [[Module:Creatures]], which formats the creature data into this table, this cannot be edited without a basic understanding of Lua, or at least general programming. However the creature data is either pulled from [[Module:SummonableCreatureData]] alone or [[Module:TameableCreatureData]] and a [[Module:WildCreatureData]] based on the group specified. These module's documentation (linked at the top of its pages) give details on how to structure data in the Lua table, after editing it is recommended that editors make sure the template still functions properly. |
| end
| |
|
| |
|
| -- Automaticly add categories
| | These modules were created by [[User:TheGmaster]], feel free to dm any questions/concerns/requests directly via Discord @thegmaster1. |
| 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 followerType = frame.args[2] -- tame/summon
| |
| local imageOverride = frame.args[3] -- sunwyrm.png
| |
| local namespace = frame.args[4] -- {{NAMESPACE}}
| |
| | |
| 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 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 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.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>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
| |
| | |
| 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
| |
| | |
| wikiTable = wikiTable .. [=[<tr>
| |
| <td>[[]=] .. followerName .. [=[]]
| |
| <td>]=] .. creature.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>Slots
| |
| <th>Type
| |
| <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[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)
| |
| local valueIfTrue = frame.args[5]
| |
| local valueIfFalse = frame.args[6]
| |
| | |
| 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 true -- "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.creaturePage(frame)
| |
| local creature = frame.args[1]
| |
| local imageOverride = frame.args[2]
| |
| local page = ""
| |
| | |
| if imageOverride and imageOverride ~= "" then
| |
| imageOverride = "|image="..imageOverride
| |
| end
| |
| | |
| local creatureArray = mw.loadData("Module:WildCreatureData")
| |
| local tameableArray = mw.loadData("Module:TameableCreatureData")
| |
| local summonArray = mw.loadData("Module:SummonableCreatureData")
| |
| local strangelandsArray = mw.loadData("Module:StrangelandsCreatureData")
| |
| local shipsArray = mw.loadData("Module:ShipCreatureData")
| |
| | |
| if creatureArray[creature] then
| |
| page = page.."{{CreatureTable"..imageOverride.."}}\n"
| |
| end
| |
| | |
| if shipsArray[creature] then
| |
| page = page.."== Ship Creature Stats ==\n{{CreatureTable|type=ships"..imageOverride.."}}\n"
| |
| end
| |
| | |
| if tameableArray[creature] then
| |
| page = page.."== Tameable Stats ==\n{{FollowerTable|type=tameable"..imageOverride.."}}<br>{{FollowerAbilities|type=tameable}}<br>{{TamedScalarLevels}}\n"
| |
| end
| |
| | |
| if summonArray[creature] then
| |
| page = page.."== Summoned Creature Stats ==\n{{FollowerTable|type=summon"..imageOverride.."}}<br>{{FollowerAbilities|type=summon}}<br>{{SummonStatIncrease}}\n"
| |
| end
| |
| | |
| if strangelandsArray[creature] then
| |
| page = page.."== Strangelands Creature Stats==\n{{CreatureTable|type=strangelands"..imageOverride.."}}\n"
| |
| end
| |
| | |
| return page
| |
| end
| |
| | |
| function p.test()
| |
| return "{{CreatureTable}}"
| |
| end
| |
| | |
| return p
| |