12,787
edits
(_getSpellRequirements: Refactor) |
m (Fix typo) |
||
(5 intermediate revisions by the same user not shown) | |||
Line 144: | Line 144: | ||
{ ['type'] = 'SkillLevel', ['skillID'] = 'melvorD:Magic', ['level'] = spell.level } | { ['type'] = 'SkillLevel', ['skillID'] = 'melvorD:Magic', ['level'] = spell.level } | ||
} | } | ||
if spell. | if spell.requiredItemID ~= nil then | ||
table.insert(extraReqs, { ['type'] = 'SlayerItem', ['itemID'] = spell. | table.insert(extraReqs, { ['type'] = 'SlayerItem', ['itemID'] = spell.requiredItemID }) | ||
end | end | ||
local resultPart = {} | local resultPart = {} | ||
for i, reqs in ipairs({ extraReqs, spell.requirements }) do | for i, reqs in ipairs({ extraReqs, spell.requirements }) do | ||
local reqStr = Common.getRequirementString( | local reqStr = Common.getRequirementString(reqs) | ||
if reqStr ~= nil then | if reqStr ~= nil then | ||
table.insert(resultPart, reqStr) | table.insert(resultPart, reqStr) | ||
Line 238: | Line 238: | ||
else | else | ||
local itemProduced = Items.getItemByID(spell.produces) | local itemProduced = Items.getItemByID(spell.produces) | ||
if itemProduced ~= nil and itemProduced.prayerPoints ~= nil and type(spell.fixedItemCosts) == 'table' then | local spellNS, spellLocalID = GameData.getLocalID(spell.id) | ||
-- Item produced is a bone | if itemProduced ~= nil and itemProduced.prayerPoints ~= nil and type(spell.fixedItemCosts) == 'table' and Shared.tableCount(spell.fixedItemCosts) == 1 and spellNS ~= 'melvorAoD' then | ||
-- Item produced is a bone and spell is not from AoD (logic from altMagic.js) | |||
local costItem = Items.getItemByID(spell.fixedItemCosts[1].id) | local costItem = Items.getItemByID(spell.fixedItemCosts[1].id) | ||
if costItem ~= nil then | if costItem ~= nil then | ||
Line 316: | Line 317: | ||
return p.getTypeString(spell.spellBook) | return p.getTypeString(spell.spellBook) | ||
elseif stat == 'spellDamage' then | elseif stat == 'spellDamage' then | ||
if spell.maxHit ~= | if spell.maxHit ~= nil then | ||
return spell.maxHit * 10 | return spell.maxHit * 10 | ||
else | else | ||
Line 410: | Line 411: | ||
local item = Items.getItemByID(itemID) | local item = Items.getItemByID(itemID) | ||
if item ~= nil then | if item ~= nil then | ||
isBar = | isBar = not Shared.tableIsEmpty(GameData.getEntities(SkillData.Smithing.recipes, | ||
function(recipe) | |||
return recipe.categoryID == 'melvorD:Bars' and recipe.productID == item.id | |||
end)) | |||
isShard = GameData.getEntityByProperty(SkillData.Magic.randomShards, 'itemID', item.id) ~= nil | isShard = GameData.getEntityByProperty(SkillData.Magic.randomShards, 'itemID', item.id) ~= nil | ||
isGem = GameData.getEntityByProperty('randomGems', 'itemID', itemID) ~= nil | isGem = GameData.getEntityByProperty('randomGems', 'itemID', itemID) ~= nil | ||
Line 651: | Line 655: | ||
end | end | ||
local spellListSorted = Shared.shallowClone(spellList) | |||
table.sort(spellListSorted, function(a, b) return a.level < b.level end) | |||
local resultPart = {p._getSpellHeader(includeSpellbook, includeItems, includeDamage, includeExperience)} | local resultPart = {p._getSpellHeader(includeSpellbook, includeItems, includeDamage, includeExperience)} | ||
for i, spell in ipairs( | for i, spell in ipairs(spellListSorted) do | ||
table.insert(resultPart, p._getSpellRow(spell, includeSpellbook, includeItems, includeDamage, includeExperience)) | table.insert(resultPart, p._getSpellRow(spell, includeSpellbook, includeItems, includeDamage, includeExperience)) | ||
end | end |