Module:Magic: Difference between revisions

m
Fix typo
(_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.itemRequiredID ~= nil then
if spell.requiredItemID ~= nil then
table.insert(extraReqs, { ['type'] = 'SlayerItem', ['itemID'] = spell.itemRequiredID })
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(extraReqs)
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 ~= undefined then  
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 = item.type == 'Bar'
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(spellList) do
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