12,787
edits
(Add Township Tasks to _getItemUses) |
(_getItemUseTable: Amend to show XP harvested per quantity for Farming) |
||
(5 intermediate revisions by the same user not shown) | |||
Line 17: | Line 17: | ||
Astrology = {'melvorF:Stardust', 'melvorF:Golden_Stardust'}, | Astrology = {'melvorF:Stardust', 'melvorF:Golden_Stardust'}, | ||
Attack = {}, | Attack = {}, | ||
Cartography = {'melvorD:Crown_of_Rhaelyx'}, | |||
Combat = {'melvorF:Gold_Emerald_Ring', 'melvorD:Obsidian_Cape', 'melvorF:Throwing_Power_Gloves'}, | Combat = {'melvorF:Gold_Emerald_Ring', 'melvorD:Obsidian_Cape', 'melvorF:Throwing_Power_Gloves'}, | ||
Cooking = {'melvorD:Cooking_Gloves', 'melvorD:Crown_of_Rhaelyx'}, | Cooking = {'melvorD:Cooking_Gloves', 'melvorD:Crown_of_Rhaelyx'}, | ||
Line 370: | Line 371: | ||
end | end | ||
if item == nil then | if item == nil then | ||
return | return Shared.printError('No item named "' .. itemName .. '" exists in the data module') | ||
end | end | ||
Line 458: | Line 459: | ||
local product = Items.getItemByID(recipe.productId) | local product = Items.getItemByID(recipe.productId) | ||
local mat = {{id = recipe.seedCost.id, quantity = recipe.seedCost.quantity}} | local mat = {{id = recipe.seedCost.id, quantity = recipe.seedCost.quantity}} | ||
local rowReq = recipe.level | local rowReq = recipe.level | ||
local category = GameData.getEntityByID(SkillData.Farming.categories, recipe.categoryID) | local category = GameData.getEntityByID(SkillData.Farming.categories, recipe.categoryID) | ||
local qty = 5 * category.harvestMultiplier | local qty = 5 * category.harvestMultiplier | ||
local xp = recipe.baseExperience | |||
table.insert(useArray, {item = {id = product.id, name = product.name}, qty = qty, mats = mat, skill = 'Farming', req = rowReq, xp = xp}) | table.insert(useArray, {item = {id = product.id, name = product.name}, qty = qty, mats = mat, skill = 'Farming', req = rowReq, xp = xp}) | ||
end | end | ||
Line 490: | Line 491: | ||
end | end | ||
-- Non-shard items | -- Non-shard items | ||
for j, nonShardItemID in ipairs( | -- Familiar recipes may also have a currency cost without any non-shard | ||
-- items, so account for this with a dummy ID such that one iteration | |||
-- of the below loop always occurs | |||
local nonShardItemIDs = (Shared.tableIsEmpty(recipe.nonShardItemCosts) and {''} or recipe.nonShardItemCosts) | |||
for j, nonShardItemID in ipairs(nonShardItemIDs) do | |||
if useShards or nonShardItemID == item.id then | if useShards or nonShardItemID == item.id then | ||
-- Item is used in this particular synergy recipe | -- Item is used in this particular synergy recipe | ||
Line 497: | Line 502: | ||
end | end | ||
local nonShardItem = Items.getItemByID(nonShardItemID) | local nonShardItem = Items.getItemByID(nonShardItemID) | ||
local recipeCosts = Shared.clone(recipe.itemCosts) | local recipeCosts = Shared.clone(recipe.itemCosts) | ||
local recipeCosts = {} | local recipeCosts = {} | ||
Line 504: | Line 507: | ||
table.insert(recipeCosts, {id = itemCost.id, quantity = itemCost.quantity}) | table.insert(recipeCosts, {id = itemCost.id, quantity = itemCost.quantity}) | ||
end | end | ||
table.insert(recipeCosts, {id = nonShardItemID, | if nonShardItem ~= nil then | ||
-- Item ID can be nil for recipes such as Leprechaun or Cyclops | |||
local itemValue = math.max(nonShardItem.sellsFor, 20) | |||
local nonShardQty = math.max(1, math.floor(recipeGPCost / itemValue)) | |||
table.insert(recipeCosts, {id = nonShardItemID, quantity = nonShardQty}) | |||
end | |||
table.insert(useArray, {item = {id = recipeItem.id, name = recipeItem.name}, qty = recipe.baseQuantity, mats = recipeCosts, gp = recipe.gpCost, sc = recipe.scCost, skill = 'Summoning', req = recipe.level, xp = recipe.baseExperience}) | table.insert(useArray, {item = {id = recipeItem.id, name = recipeItem.name}, qty = recipe.baseQuantity, mats = recipeCosts, gp = recipe.gpCost, sc = recipe.scCost, skill = 'Summoning', req = recipe.level, xp = recipe.baseExperience}) | ||
end | end | ||
Line 581: | Line 589: | ||
local matQty = itemCost.quantity or itemCost[2] or 1 | local matQty = itemCost.quantity or itemCost[2] or 1 | ||
if matItem == nil then | if matItem == nil then | ||
table.insert(matRow, ' | table.insert(matRow, Shared.printError('Failed to find item with ID "' .. itemCost.id .. '"')) | ||
elseif type(matQty) == 'number' then | elseif type(matQty) == 'number' then | ||
table.insert(matRow, Icons.Icon({matItem.name, type='item', qty=matQty})) | table.insert(matRow, Icons.Icon({matItem.name, type='item', qty=matQty})) | ||
Line 654: | Line 662: | ||
local item = Items.getItem(itemName) | local item = Items.getItem(itemName) | ||
if item == nil then | if item == nil then | ||
return | return Shared.printError('No item named "' .. itemName .. '" exists in the data module') | ||
end | end | ||
Line 713: | Line 721: | ||
local item = Items.getItem(itemName) | local item = Items.getItem(itemName) | ||
if item == nil then | if item == nil then | ||
return | return Shared.printError('No item named "' .. itemName .. '" exists in the data module') | ||
end | end | ||