17,105
edits
No edit summary |
Tag: Undo |
||
Line 6: | Line 6: | ||
local p = {} | local p = {} | ||
local MonsterData = mw.loadData('Module:Monsters/data') | |||
local ItemData = mw.loadData('Module:Items/data') | local ItemData = mw.loadData('Module:Items/data') | ||
local SkillData = mw.loadData('Module:Skills/data') | |||
local Constants = require('Module:Constants') | local Constants = require('Module:Constants') | ||
Line 12: | Line 14: | ||
local Icons = require('Module:Icons') | local Icons = require('Module:Icons') | ||
p.EasterEggs = {'Amulet of Calculated Promotion', 'Clue Chasers Insignia', '8', 'Lemon', 'Easter Egg', 'Abnormal Log', 'Red Herring | p.EasterEggs = {'Amulet of Calculated Promotion', 'Clue Chasers Insignia', '8', 'Lemon', 'Easter Egg', 'Abnormal Log', 'Red Herring'} | ||
p.OtherShopItems = {'Cooking Gloves', 'Mining Gloves', 'Gem Gloves', 'Smithing Gloves', 'Thieving Gloves'} | p.OtherShopItems = {'Cooking Gloves', 'Mining Gloves', 'Gem Gloves', 'Smithing Gloves', 'Thieving Gloves'} | ||
--This is hardcoded, so there's no easy way to scrape it. Hopefully it doesn't change | --This is hardcoded, so there's no easy way to scrape it. Hopefully it doesn't change | ||
p.GemTable = {["Topaz"] = {name = 'Topaz', id = 128, chance = 50}, | p.GemTable = {["Topaz"] = {name = 'Topaz', id = 128, chance = 50}, | ||
["Sapphire"] = {name = "Sapphire", id = 129, chance = 17.5}, | ["Sapphire"] = {name = "Sapphire", id = 129, chance = 17.5}, | ||
["Ruby"] = {name = "Ruby", id = 130, chance = 17.5}, | ["Ruby"] = {name = "Ruby", id = 130, chance = 17.5}, | ||
["Emerald"] = {name = "Emerald", id = 131, chance = 10}, | ["Emerald"] = {name = "Emerald", id = 131, chance = 10}, | ||
["Diamond"] = {name = "Diamond", id = 132, chance = 5}} | ["Diamond"] = {name = "Diamond", id = 132, chance = 5}} | ||
--The base chance to receive a gem while mining | --The base chance to receive a gem while mining | ||
Line 64: | Line 66: | ||
return result | return result | ||
end | end | ||
function p.getItemByID(ID) | function p.getItemByID(ID) | ||
Line 102: | Line 102: | ||
end | end | ||
return result | return result | ||
end | end | ||
Line 141: | Line 107: | ||
local result = item[StatName] | local result = item[StatName] | ||
--Special Overrides: | --Special Overrides: | ||
if StatName == 'stabAttackBonus' then | |||
if | if item.attackBonus == nil then | ||
result = nil | |||
result = | else | ||
elseif StatName == ' | result = item.attackBonus[1] | ||
if item. | end | ||
elseif StatName == 'slashAttackBonus' then | |||
if item.attackBonus == nil then | |||
result = nil | |||
else | else | ||
result = item.attackBonus[2] | |||
end | end | ||
elseif | elseif StatName == 'blockAttackBonus' then | ||
if item.attackBonus == nil then | |||
if | result = nil | ||
else | |||
result = | result = item.attackBonus[3] | ||
end | end | ||
elseif StatName == 'attackType' then | elseif StatName == 'attackType' then | ||
Line 199: | Line 167: | ||
skill = Constants.getSkillID(skill) | skill = Constants.getSkillID(skill) | ||
end | end | ||
mw.log(item.name..', '..modifier) | |||
local result = 0 | local result = 0 | ||
Line 227: | Line 197: | ||
function p.hasCombatStats(item) | function p.hasCombatStats(item) | ||
if | if item.equipmentSlot == nil then | ||
return false | |||
elseif item.equipmentSlot == Constants.getEquipmentSlotID('Weapon') then | |||
return true | |||
end | |||
local combatStatList = {'strengthBonus', 'defenceBonus', 'stabAttackBonus', 'slashAttackBonus', 'blockAttackBonus', 'damageReduction', | |||
'rangedDefenceBonus', 'magicDefenceBonus', 'rangedAttackBonus', 'rangedStrengthBonus', 'magicAttackBonus', 'magicDamageBonus'} | |||
for i, stat in Shared.skpairs(combatStatList) do | |||
if p._getItemStat(item, stat, true) > 0 then | |||
return true | |||
end | end | ||
end | end | ||
return false | return false | ||
end | end | ||
Line 259: | Line 237: | ||
function p._getWeaponAttackType(item) | function p._getWeaponAttackType(item) | ||
if item. | if item.type == 'Weapon' then | ||
return Icons.Icon({'Melee', nolink='true'}) | |||
elseif item.type == 'Ranged Weapon' then | |||
return Icons.Icon({'Ranged', type='skill', nolink='true'}) | |||
elseif item.type == 'Magic Staff' or item.type == 'Magic Wand' then | |||
return Icons.Icon({'Magic', type='skill', nolink='true'}) | |||
else | |||
return "Invalid" | |||
end | end | ||
end | end | ||
function p.getWeaponAttackType(frame) | function p.getWeaponAttackType(frame) | ||
Line 303: | Line 284: | ||
result = '' | result = '' | ||
--For equipment, show the slot they go in | --For equipment, show the slot they go in | ||
if item. | if item.equipmentSlot ~= nil then | ||
result = result.."\r\n|-\r\n|'''Equipment Slot:''' ".. | result = result.."\r\n|-\r\n|'''Equipment Slot:''' "..Constants.getEquipmentSlotName(item.equipmentSlot) | ||
if item.isPassiveItem then | |||
result = result..', Passive' | |||
end | |||
end | end | ||
--For weapons with a special attack, show the details | --For weapons with a special attack, show the details | ||
if item.hasSpecialAttack then | if item.hasSpecialAttack then | ||
local | local spAtt = p.getSpecialAttackByID(item.specialAttackID) | ||
result = result.."\r\n|-\r\n|'''Special Attack:'''" | |||
result = result..'\r\n* '..spAtt.chance..'% chance for '..spAtt.name..':' | |||
result = result..'\r\n** '..spAtt.description | |||
end | end | ||
--For potions, show the number of charges | --For potions, show the number of charges | ||
Line 340: | Line 320: | ||
local item = p.getItem(itemName) | local item = p.getItem(itemName) | ||
local asList = false | local asList = false | ||
if frame.args ~= nil then | if frame.args ~= nil then | ||
asList = frame.args.asList ~= nil and frame.args.asList ~= '' and frame.args.asList ~= 'false' | asList = frame.args.asList ~= nil and frame.args.asList ~= '' and frame.args.asList ~= 'false' | ||
end | end | ||
Line 354: | Line 334: | ||
if item.category ~= nil then result = result..'[[Category:'..item.category..']]' end | if item.category ~= nil then result = result..'[[Category:'..item.category..']]' end | ||
if item.type ~= nil then result = result..'[[Category:'..item.type..']]' end | if item.type ~= nil then result = result..'[[Category:'..item.type..']]' end | ||
if item.equipmentSlot ~= nil then result = result..'[[Category:'..Constants.getEquipmentSlotName(item.equipmentSlot)..']]' end | |||
if item.tier ~= nil then result = result..'[[Category:'..Shared.titleCase(item.tier)..' '..item.type..']]' end | if item.tier ~= nil then result = result..'[[Category:'..Shared.titleCase(item.tier)..' '..item.type..']]' end | ||
if item.hasSpecialAttack then result = result..'[[Category:Items With Special Attacks]]' end | if item.hasSpecialAttack then result = result..'[[Category:Items With Special Attacks]]' end | ||
if item. | if item.isPassiveItem then result = result..'[[Category:Passive Items]]' end | ||
if item.chanceToDoubleLoot ~= nil and item.chanceToDoubleLoot > 0 then result = result..'[[Category:Double Loot Chance Items]]' end | |||
if item. | |||
return result | return result | ||
end | end | ||
Line 424: | Line 379: | ||
function p.getSpecialAttackTable(frame) | function p.getSpecialAttackTable(frame) | ||
local spAttTable = {} | local spAttTable = {} | ||
for i, item in Shared.skpairs(ItemData.Items) do | for i, item in Shared.skpairs(ItemData.Items) do | ||
if item.hasSpecialAttack then | if item.hasSpecialAttack then | ||
if spAttTable[item.specialAttackID] == nil then spAttTable[item.specialAttackID] = {sortName=item.name, Icons = {}} end | |||
table.insert(spAttTable[item.specialAttackID].Icons, Icons.Icon({item.name, type='item'})) | |||
end | end | ||
end | end | ||
local result = '{|class="wikitable sortable stickyHeader"' | local result = '{|class="wikitable sortable stickyHeader"' | ||
Line 443: | Line 395: | ||
result = result..'\r\n|-' | result = result..'\r\n|-' | ||
result = result..'\r\n|data-sort-value="'..spAttData.sortName..'"|'..table.concat(spAttData.Icons, '<br/>') | result = result..'\r\n|data-sort-value="'..spAttData.sortName..'"|'..table.concat(spAttData.Icons, '<br/>') | ||
result = result..'||'..spAtt.name..'||data-sort-value="'..spAtt. | result = result..'||'..spAtt.name..'||data-sort-value="'..spAtt.chance..'"|'..spAtt.chance..'%' | ||
result = result..'||'..spAtt.description | result = result..'||'..spAtt.description | ||
end | end |