12,787
edits
(getFishTable: Adjust formatting) |
(Use printError function) |
||
(6 intermediate revisions by 2 users not shown) | |||
Line 11: | Line 11: | ||
local Skills = require('Module:Skills') | local Skills = require('Module:Skills') | ||
local ItemSourceTables = require('Module:Items/SourceTables') | local ItemSourceTables = require('Module:Items/SourceTables') | ||
function p.getRecipeRequirements(skillName, recipe) | function p.getRecipeRequirements(skillName, recipe) | ||
Line 150: | Line 40: | ||
table.insert(resultPart, '\n|-') | table.insert(resultPart, '\n|-') | ||
table.insert(resultPart, '\n|class="table-img" data-sort-value="'..tree.name..'"| '..Icons.Icon({log.name, img=tree.name, type='tree', notext=true, size=50})) | table.insert(resultPart, '\n|class="table-img" data-sort-value="'..tree.name..'"| '..Icons.Icon({log.name, img=tree.name, type='tree', notext=true, size=50})) | ||
table.insert(resultPart, '\n|'..tree.name) | table.insert(resultPart, '\n|data-sort-value="'..tree.name..'"|'..Icons.getExpansionIcon(tree.id)..tree.name) | ||
table.insert(resultPart, '\n|class="table-img" data-sort-value="'..log.name..'"| '..Icons.Icon({log.name, type='item', notext=true, size=50})) | table.insert(resultPart, '\n|class="table-img" data-sort-value="'..log.name..'"| '..Icons.Icon({log.name, type='item', notext=true, size=50})) | ||
table.insert(resultPart, '\n| '..Icons.Icon({log.name, type='item', noicon=true})) | table.insert(resultPart, '\n| '..Icons.Icon({log.name, type='item', noicon=true})) | ||
Line 243: | Line 133: | ||
table.insert(resultPart, '\n|-\n|class="table-img" data-sort-value="' .. rockName .. '"| '..Icons.Icon({oreData.name, type='rock', size='50', notext=true, nolink=true})) | table.insert(resultPart, '\n|-\n|class="table-img" data-sort-value="' .. rockName .. '"| '..Icons.Icon({oreData.name, type='rock', size='50', notext=true, nolink=true})) | ||
table.insert(resultPart, '\n| ' .. rockName) | table.insert(resultPart, '\n| data-sort-value="' ..rockName.. '"|'..Icons.getExpansionIcon(oreData.id) .. rockName) | ||
table.insert(resultPart, '\n|class="table-img" data-sort-value="' .. ore.name .. '"| '..Icons.Icon({ore.name, type='item', size='50', notext=true})) | table.insert(resultPart, '\n|class="table-img" data-sort-value="' .. ore.name .. '"| '..Icons.Icon({ore.name, type='item', size='50', notext=true})) | ||
table.insert(resultPart, '\n| ' .. qtyText .. Icons.Icon({ore.name, type='item', noicon=true})) | table.insert(resultPart, '\n| ' .. qtyText .. Icons.Icon({ore.name, type='item', noicon=true})) | ||
Line 267: | Line 157: | ||
local gemDataKey = validTypes[gemType] | local gemDataKey = validTypes[gemType] | ||
if gemDataKey == nil then | if gemDataKey == nil then | ||
return ' | return Shared.printError('No such gem type "' .. gemType .. '"') | ||
end | end | ||
Line 286: | Line 176: | ||
table.insert(resultPart, '\n|-\n|class="table-img"| ') | table.insert(resultPart, '\n|-\n|class="table-img"| ') | ||
table.insert(resultPart, Icons.Icon({gemItem.name, type='item', size='50', notext=true})) | table.insert(resultPart, Icons.Icon({gemItem.name, type='item', size='50', notext=true})) | ||
table.insert(resultPart, '\n| ' .. Icons.Icon({gemItem.name, type='item', noicon=true})) | table.insert(resultPart, '\n| data-sort-value="'..gemItem.name..'"|'..Icons.getExpansionIcon(gemItem.id) .. Icons.Icon({gemItem.name, type='item', noicon=true})) | ||
table.insert(resultPart, '\n|style="text-align:right" data-sort-value="' .. gemPct .. '" | ' .. string.format("%.1f%%", gemPct)) | table.insert(resultPart, '\n|style="text-align:right" data-sort-value="' .. gemPct .. '" | ' .. string.format("%.1f%%", gemPct)) | ||
table.insert(resultPart, '\n|data-sort-value="' .. gemItem.sellsFor .. '"| ' .. Icons.GP(gemItem.sellsFor)) | table.insert(resultPart, '\n|data-sort-value="' .. gemItem.sellsFor .. '"| ' .. Icons.GP(gemItem.sellsFor)) | ||
Line 330: | Line 220: | ||
local GPs = fish.sellsFor / timeSortVal | local GPs = fish.sellsFor / timeSortVal | ||
local cookSortVal = cookReq[recipe.productId] or 0 | local cookSortVal = cookReq[recipe.productId] or 0 | ||
local | local cookStyle = (cookReq[recipe.productId] ~= nil and 'style="text-align:right" ' or 'class="table-na" ') | ||
local cookStr = cookReq[recipe.productId] or 'N/A' | local cookStr = cookReq[recipe.productId] or 'N/A' | ||
table.insert(resultPart, '\r\n|-') | table.insert(resultPart, '\r\n|-') | ||
table.insert(resultPart, '\r\n|class="table-img"| ' .. Icons.Icon({fish.name, type='item', size='50', notext=true})) | table.insert(resultPart, '\r\n|class="table-img"| ' .. Icons.Icon({fish.name, type='item', size='50', notext=true})) | ||
table.insert(resultPart, '\r\n| ' .. Icons.Icon({fish.name, type='item', noicon=true})) | table.insert(resultPart, '\r\n|data-sort-value="'..fish.name..'"|'..Icons.getExpansionIcon(fish.id) .. Icons.Icon({fish.name, type='item', noicon=true})) | ||
table.insert(resultPart, '\r\n|style="text-align:right"| ' .. recipe.level) | table.insert(resultPart, '\r\n|style="text-align:right"| ' .. recipe.level) | ||
table.insert(resultPart, '\r\n|style="text-align:right" data-sort-value="' .. timeSortVal .. '"| ' .. timeStr) | table.insert(resultPart, '\r\n|style="text-align:right" data-sort-value="' .. timeSortVal .. '"| ' .. timeStr) | ||
Line 341: | Line 231: | ||
table.insert(resultPart, '\r\n|style="text-align:right"| ' .. Shared.round(XPs, 2, 2)) | table.insert(resultPart, '\r\n|style="text-align:right"| ' .. Shared.round(XPs, 2, 2)) | ||
table.insert(resultPart, '\r\n|data-sort-value="' .. GPs .. '"|' .. Icons.GP(Shared.round(GPs, 2, 2))) | table.insert(resultPart, '\r\n|data-sort-value="' .. GPs .. '"|' .. Icons.GP(Shared.round(GPs, 2, 2))) | ||
table.insert(resultPart, '\r\n|' .. | table.insert(resultPart, '\r\n|' .. cookStyle .. 'data-sort-value="' .. cookSortVal .. '"| ' .. cookStr) | ||
end | end | ||
end | end | ||
Line 391: | Line 281: | ||
local odds = drop.chance | local odds = drop.chance | ||
rareTxt = rareTxt..'\r\n|-\r\n|'..Icons.Icon({thisItem.name, type='item'}) | rareTxt = rareTxt..'\r\n|-\r\n|data-sort-value="'..thisItem.name..'"|'..Icons.getExpansionIcon(thisItem.id)..Icons.Icon({thisItem.name, type='item'}) | ||
rareTxt = rareTxt..'||1||data-sort-value="'..thisItem.sellsFor..'"|'..Icons.GP(thisItem.sellsFor) | rareTxt = rareTxt..'||1||data-sort-value="'..thisItem.sellsFor..'"|'..Icons.GP(thisItem.sellsFor) | ||
rareTxt = rareTxt..'||style="text-align:right" data-sort-value="'..odds..'"|'..Shared.fraction(1, Shared.round2(1/(odds/100), 0)) | rareTxt = rareTxt..'||style="text-align:right" data-sort-value="'..odds..'"|'..Shared.fraction(1, Shared.round2(1/(odds/100), 0)) | ||
Line 490: | Line 380: | ||
--After normal drops, add in rare drops | --After normal drops, add in rare drops | ||
local rareTxt = '===Possible Rare Drops:===\r\nAny of these can be received after a successful pickpocket' | local rareTxt = '===Possible Rare Drops:===\r\nAny of these can be received after a successful pickpocket:' | ||
rareTxt = rareTxt..'\r\n'..p._getThievingGeneralRareTable(npc.id) | rareTxt = rareTxt..'\r\n'..p._getThievingGeneralRareTable(npc.id) | ||
table.insert(sectionTxt, rareTxt) | table.insert(sectionTxt, rareTxt) | ||
Line 516: | Line 406: | ||
areaTxt = areaTxt..txt | areaTxt = areaTxt..txt | ||
end | end | ||
areaTxt = areaTxt..'\r\n|}' | areaTxt = areaTxt..'\r\n|}' | ||
table.insert(sectionTxt, areaTxt) | table.insert(sectionTxt, areaTxt) | ||
Line 530: | Line 417: | ||
uniqueTxt = uniqueTxt..'\r\nThe unique drop for the '..npc.name..' is ' | uniqueTxt = uniqueTxt..'\r\nThe unique drop for the '..npc.name..' is ' | ||
if npc.uniqueDrop.quantity > 1 then | if npc.uniqueDrop.quantity > 1 then | ||
uniqueTxt = uniqueTxt..Icons.Icon({thisItem.name, type='item', qty=npc.uniqueDrop.quantity}) | uniqueTxt = uniqueTxt..Icons.Icon({thisItem.name, type='item', qty=npc.uniqueDrop.quantity}) .. '.' | ||
else | else | ||
uniqueTxt = uniqueTxt..Icons.Icon({thisItem.name, type='item'}) | uniqueTxt = uniqueTxt..Icons.Icon({thisItem.name, type='item'}) .. '.' | ||
end | end | ||
table.insert(sectionTxt, uniqueTxt) | table.insert(sectionTxt, uniqueTxt) | ||
Line 545: | Line 432: | ||
local npc = Skills.getThievingNPC(npcName) | local npc = Skills.getThievingNPC(npcName) | ||
if npc == nil then | if npc == nil then | ||
return | return Shared.printError('Invalid Thieving NPC "' .. npcName .. '"') | ||
end | end | ||
Line 560: | Line 447: | ||
result = result..'\r\n|-' | result = result..'\r\n|-' | ||
result = result..'\r\n|'..Icons.Icon({npc.name, type='thieving', size='50', notext=true}) | result = result..'\r\n|'..Icons.Icon({npc.name, type='thieving', size='50', notext=true}) | ||
result = result..'||'..Icons.Icon({npc.name, type='thieving', noicon=true}) | result = result..'||data-sort-value="'..npc.name..'"|'..Icons.getExpansionIcon(npc.id)..Icons.Icon({npc.name, type='thieving', noicon=true}) | ||
local area = Skills.getThievingNPCArea(npc) | local area = Skills.getThievingNPCArea(npc) | ||
Line 640: | Line 527: | ||
local category = GameData.getEntityByName(SkillData.Farming.categories, categoryName) | local category = GameData.getEntityByName(SkillData.Farming.categories, categoryName) | ||
if category == nil then | if category == nil then | ||
return ' | return Shared.printError('Invalid farming category. Please choose Allotments, Herbs, or Trees') | ||
end | end | ||
local seedList = GameData.getEntities(SkillData.Farming.recipes, | local seedList = GameData.getEntities(SkillData.Farming.recipes, | ||
Line 670: | Line 557: | ||
if seedItem ~= nil and productItem ~= nil then | if seedItem ~= nil and productItem ~= nil then | ||
result = result..'\r\n|-' | result = result..'\r\n|-' | ||
result = result..'\r\n|'..Icons.Icon({seedItem.name, type='item', size='50', notext=true})..'|| | result = result..'\r\n|'..Icons.Icon({seedItem.name, type='item', size='50', notext=true}) | ||
result = result..'|| ' .. Icons.getExpansionIcon(seedItem.id) .. Icons.Icon({seedItem.name, type='item', noicon=true}) | |||
result = result..'||'..seed.level..'||'..Shared.formatnum(seed.baseExperience) | result = result..'||'..seed.level..'||'..Shared.formatnum(seed.baseExperience) | ||
result = result..'||data-sort-value="'..(seed.baseInterval / 1000)..'"|'..Shared.timeString(seed.baseInterval / 1000, true) | result = result..'||data-sort-value="'..(seed.baseInterval / 1000)..'"|'..Shared.timeString(seed.baseInterval / 1000, true) | ||
result = result..'||data-sort-value="'..seedItem.sellsFor..'"|'..Icons.GP(seedItem.sellsFor) | result = result..'||data-sort-value="'..seedItem.sellsFor..'"|'..Icons.GP(seedItem.sellsFor) | ||
result = result..'||'..Icons.Icon({productItem.name, type='item', size='50', notext=true})..'|| | result = result..'||'..Icons.Icon({productItem.name, type='item', size='50', notext=true}) | ||
result = result..'|| ' .. Icons.getExpansionIcon(productItem.id) .. Icons.Icon({productItem.name, type='item', noicon=true}) | |||
if category.id == 'melvorD:Allotment' then | if category.id == 'melvorD:Allotment' then | ||
result = result..'||'..Icons.Icon({'Hitpoints', type='skill', notext=true})..' '..((productItem.healsFor or 0) * 10) | result = result..'||'..Icons.Icon({'Hitpoints', type='skill', notext=true})..' '..((productItem.healsFor or 0) * 10) | ||
Line 710: | Line 599: | ||
if product ~= nil and product.healsFor ~= nil and product.healsFor > 0 then | if product ~= nil and product.healsFor ~= nil and product.healsFor > 0 then | ||
result = result..'\r\n|-' | result = result..'\r\n|-' | ||
result = result..'\r\n|'..Icons.Icon({product.name, type='item', notext='true', size='50'})..'|| | result = result..'\r\n|'..Icons.Icon({product.name, type='item', notext='true', size='50'}) | ||
result = result..'|| ' .. Icons.getExpansionIcon(product.id) .. Icons.Icon({product.name, type='item', noicon=true}) | |||
result = result..'||style="text-align:right;"|'..recipe.level | result = result..'||style="text-align:right;"|'..recipe.level | ||
result = result..'||style="text-align:right" data-sort-value="'..product.healsFor..'"|'..Icons.Icon({"Hitpoints", type="skill", notext=true})..' '..(product.healsFor * 10) | result = result..'||style="text-align:right" data-sort-value="'..product.healsFor..'"|'..Icons.Icon({"Hitpoints", type="skill", notext=true})..' '..(product.healsFor * 10) | ||
Line 726: | Line 616: | ||
local category = GameData.getEntityByName(SkillData.Farming.categories, areaName) | local category = GameData.getEntityByName(SkillData.Farming.categories, areaName) | ||
if category == nil then | if category == nil then | ||
return ' | return Shared.printError('Invalid farming category. Please choose Allotments, Herbs, or Trees') | ||
end | end | ||
local patches = GameData.getEntities(SkillData.Farming.plots, | local patches = GameData.getEntities(SkillData.Farming.plots, | ||
Line 759: | Line 649: | ||
local name = cons.name | local name = cons.name | ||
result = result..'\r\n|-' | result = result..'\r\n|-' | ||
result = result..'\r\n|data-sort-value="'..name..'"|'..Icons.Icon({name, type='constellation', size='50', notext=true})..'||'..name | result = result..'\r\n|data-sort-value="'..name..'"|'..Icons.Icon({name, type='constellation', size='50', notext=true}) | ||
result = result..'|| ' .. Icons.getExpansionIcon(cons.id) .. name | |||
result = result..'||'..cons.level..'||'..cons.baseExperience | result = result..'||'..cons.level..'||'..cons.baseExperience | ||