Module:ForagerList: Difference between revisions
Jump to navigation
Jump to search
Content added Content deleted
(offload much of the search, screen, and format functions to the new ProfessionList module, so they work the same for all tables) |
(include all the downtime calculations) |
||
Line 17: | Line 17: | ||
local results = plist.generate_recipe_table(queryString,screenFunction) |
local results = plist.generate_recipe_table(queryString,screenFunction) |
||
results = p.formatResults(results) |
results = p.formatResults(results) |
||
Line 29: | Line 29: | ||
-- do calculations and determine strings to go in cells |
-- do calculations and determine strings to go in cells |
||
function p.formatResults(results) |
function p.formatResults(results) |
||
⚫ | |||
--simple check for nil results |
--simple check for nil results |
||
if results==nil or results[1]==nil then |
if results==nil or results[1]==nil then |
||
Line 38: | Line 38: | ||
for _, item in ipairs(results) do |
for _, item in ipairs(results) do |
||
-- downtime is very important for gathering-type professions |
|||
--catch badly submitted data |
|||
-- initial values, it will be obvious if these get used |
|||
item.product = item.product or '' |
|||
item. |
item.downtime = 10000 |
||
item.nodes = 1 |
|||
⚫ | |||
-- these numbers are based roughly on how far the nodes are from a storage rift or shop or bank |
|||
-- 20s per room to traverse |
|||
-- duration and relocation times arent used for fisher, only respawn time and number of nodes |
|||
if string.find(item.pageName,'Kelp') then |
|||
item.downtime = 20 |
|||
item.nodes = 6 |
|||
elseif string.find(item.pageName,'Wallplant') then |
|||
item.downtime = 40 |
|||
item.nodes = 6 |
|||
elseif string.find(item.pageName,'Periwinkle') then |
|||
item.downtime = 40 |
|||
item.nodes = 6 |
|||
elseif string.find(item.pageName,'Shell') then |
|||
item.downtime = 20 |
|||
item.nodes = 6 |
|||
elseif string.find(item.pageName,'Potato') then |
|||
item.downtime = 80 |
|||
item.nodes = 6 |
|||
elseif string.find(item.pageName,'Pond Weed') then |
|||
item.downtime = 40 |
|||
item.nodes = 6 |
|||
elseif string.find(item.pageName,'Bellplant') then |
|||
item.downtime = 40 |
|||
item.nodes = 6 |
|||
elseif string.find(item.pageName,'Monument Piece') then |
|||
item.downtime = 20 |
|||
item.nodes = 8 |
|||
elseif string.find(item.pageName,'Water Lily') then |
|||
item.downtime = 40 |
|||
item.nodes = 6 |
|||
elseif string.find(item.pageName,'Starfish') then |
|||
item.downtime = 60 |
|||
item.nodes = 6 |
|||
elseif string.find(item.pageName,'Hogberries') then |
|||
item.downtime = 80 |
|||
item.nodes = 6 |
|||
elseif string.find(item.pageName,'Limpet') then |
|||
item.downtime = 100 |
|||
item.nodes = 6 |
|||
elseif string.find(item.pageName,'Nettle') then |
|||
item.downtime = 20 |
|||
item.nodes = 6 |
|||
elseif string.find(item.pageName,'Wrack') then |
|||
item.downtime = 80 |
|||
item.nodes = 6 |
|||
end |
|||
-- profitability |
-- profitability |
||
item.profit = item.sellPrice |
item.profit = item.sellPrice |
||
item.profitPerXP = item.profit and item.xp and item.profit / item.xp |
|||
-- products per hour |
|||
-- DOWNTIME VERY IMPORTANT FOR GATHERING TYPE PROFESSIONS |
|||
item.downtime = 60 -- THIS IS AN INITIAL GUESS, DO NOT USE THIS VALUE |
|||
item.batch = 24 |
item.batch = 24 |
||
item. |
item.durationEffective = item.duration and item.respawn and item.duration + item.respawn / item.nodes |
||
item.productPerHour = item.durationEffective and math.floor(1 / (item.durationEffective + item.downtime / item.batch) * 3600) |
|||
item.productPerHourDropping = item.durationEffective and 1 / (item.durationEffective) * 3600 |
|||
-- properties per hour |
-- properties per hour |
||
item.xpPerHour = item.xp and item.productPerHour and math.floor(item.xp * item.productPerHour) |
item.xpPerHour = item.xp and item.productPerHour and math.floor(item.xp * item.productPerHour) |
||
item.xpPerHourDropping = item.xp and item.productPerHourDropping and math.floor(item.xp * item.productPerHourDropping) |
|||
item.profitPerHour = item.profit and item.productPerHour and math.floor(item.profit * item.productPerHour) |
item.profitPerHour = item.profit and item.productPerHour and math.floor(item.profit * item.productPerHour) |
||
⚫ | |||
end |
end |
||
Line 75: | Line 124: | ||
:tag('th') |
:tag('th') |
||
:attr{ colspan = '2' } |
:attr{ colspan = '2' } |
||
:wikitext(' |
:wikitext('Node') |
||
:done() |
|||
:tag('th') |
|||
:attr{ colspan = '2' } |
|||
:wikitext('Tool') |
|||
:done() |
:done() |
||
:tag('th') |
:tag('th') |
||
Line 97: | Line 150: | ||
:tag('th') |
:tag('th') |
||
:wikitext('XP/hr') |
:wikitext('XP/hr') |
||
:done() |
|||
:tag('th') |
|||
:wikitext('XP/hr<br>(Discarding)') |
|||
:done() |
:done() |
||
:done() |
:done() |
||
Line 113: | Line 169: | ||
:END() |
:END() |
||
-- |
-- gathering node |
||
:node(plist.two_column_image_text(item.pageName,item.pageImage,item.pageName,item.pageName)) |
:node(plist.two_column_image_text(item.pageName,item.pageImage,item.pageName,item.pageName)) |
||
⚫ | |||
:IF(item.tool) |
|||
⚫ | |||
:ELSE() |
|||
:tag('td') |
|||
:addClass('table-na') |
|||
:attr{ colspan = '2' } |
|||
:wikitext('N/A') |
|||
:done() |
|||
:END() |
|||
-- resource |
-- resource |
||
:IF(item.coop) |
|||
⚫ | |||
:node(plist.two_column_image_text(item.product,'File:' .. item.product .. '.png',item.product .. ' (co-op)',item.product)) |
|||
:ELSE() |
|||
:node(plist.two_column_image_text(item.product,'File:' .. item.product .. '.png',item.product,item.product)) |
|||
:END() |
|||
-- resource/hr |
-- resource/hr |
||
Line 127: | Line 197: | ||
:node(plist.unknown_value_edit_cell(item.pageName,1)) |
:node(plist.unknown_value_edit_cell(item.pageName,1)) |
||
:END() |
:END() |
||
-- economics |
-- economics |
||
:node(plist.currency_cell(item.profit)) |
:node(plist.currency_cell(item.profit)) |
||
Line 145: | Line 215: | ||
:tag('td') |
:tag('td') |
||
:wikitext(item.xpPerHour and lang:formatNum(tonumber(item.xpPerHour))) |
:wikitext(item.xpPerHour and lang:formatNum(tonumber(item.xpPerHour))) |
||
:done() |
|||
:ELSE() |
|||
:node(plist.unknown_value_cell(1)) |
|||
:END() |
|||
-- XP per hour |
|||
:IF(item.xpPerHourDropping) |
|||
:tag('td') |
|||
:wikitext(item.xpPerHourDropping and lang:formatNum(tonumber(item.xpPerHourDropping))) |
|||
:done() |
:done() |
||
:ELSE() |
:ELSE() |