Module:GathererList: Difference between revisions
Jump to navigation
Jump to search
Content added Content deleted
m (remove unknown value cell parameter, no longer used.) |
(downtime calculations, display tool) |
||
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 |
if results==nil or results[1]==nil then |
||
return nil |
return nil |
||
end |
end |
||
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,'Globeplant') then |
|||
item.downtime = 40 |
|||
item.nodes = 8 |
|||
elseif string.find(item.pageName,'Dandelion') then |
|||
item.downtime = 20 |
|||
item.nodes = 8 |
|||
elseif string.find(item.pageName,'Goat Horn') then |
|||
item.downtime = 60 |
|||
item.nodes = 8 |
|||
elseif string.find(item.pageName,'Apple') then |
|||
item.downtime = 80 |
|||
item.nodes = 6 |
|||
elseif string.find(item.pageName,'Leek') then |
|||
item.downtime = 40 |
|||
item.nodes = 8 |
|||
elseif string.find(item.pageName,'Haleberries') then |
|||
item.downtime = 50 -- portal back after depositing |
|||
item.nodes = 8 |
|||
elseif string.find(item.pageName,'Rams Horn') then |
|||
item.downtime = 100 |
|||
item.nodes = 8 |
|||
elseif string.find(item.pageName,'Bitterfruit') then |
|||
item.downtime = 160 -- cannot be banked, must be sold |
|||
item.nodes = 8 |
|||
elseif string.find(item.pageName,'Chestnut') then |
|||
item.downtime = 80 |
|||
item.nodes = 6 |
|||
elseif string.find(item.pageName,'Bone Spike') then |
|||
item.downtime = 0 |
|||
item.nodes = 8 |
|||
elseif string.find(item.pageName,'Tangfruit') then |
|||
item.downtime = 150 -- cannot be banked, must be sold |
|||
item.nodes = 6 |
|||
elseif string.find(item.pageName,'Catkin') then |
|||
item.downtime = 60 |
|||
item.nodes = 6 |
|||
elseif string.find(item.pageName,'Femur Shard') then |
|||
item.downtime = 80 |
|||
item.nodes = 8 |
|||
elseif string.find(item.pageName,'Clover') then |
|||
item.downtime = 40 |
|||
item.nodes = 8 |
|||
elseif string.find(item.pageName,'Snake Scale') then |
|||
item.downtime = 60 |
|||
item.nodes = 8 |
|||
elseif string.find(item.pageName,'Orchid') then |
|||
item.downtime = 60 |
|||
item.nodes = 8 |
|||
elseif string.find(item.pageName,'Dock Leaf') then |
|||
item.downtime = 80 -- portal back after depositing |
|||
item.nodes = 8 |
|||
elseif string.find(item.pageName,'Sage') then |
|||
item.downtime = 120 -- portal to deposit then run back |
|||
item.nodes = 6 |
|||
elseif string.find(item.pageName,'Thistle') then |
|||
item.downtime = 100 |
|||
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 61: | Line 125: | ||
-- make the table |
-- make the table |
||
function p.displayTable(results) |
function p.displayTable(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 71: | Line 135: | ||
:tag('tr') |
:tag('tr') |
||
:tag('th') |
:tag('th') |
||
:wikitext('[[File: |
:wikitext('[[File:Forager small icon.png|15px]] Level') |
||
:done() |
:done() |
||
: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 165: | ||
:tag('th') |
:tag('th') |
||
:wikitext('XP/hr') |
:wikitext('XP/hr') |
||
:done() |
|||
:tag('th') |
|||
:wikitext('XP/hr<br>(Discarding)') |
|||
:done() |
:done() |
||
:done() |
:done() |
||
Line 115: | Line 186: | ||
-- gathering node |
-- 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) |
|||
:node(plist.two_column_image_text(item.tool,'File:'..(item.tool or '')..' (grade 1).png',(item.tool or ''),(item.tool or ''))) |
|||
:ELSE() |
|||
:tag('td') |
|||
:addClass('table-na') |
|||
:attr{ colspan = '2' } |
|||
:wikitext('N/A') |
|||
:done() |
|||
:END() |
|||
-- resource |
-- resource |
||
Line 127: | Line 208: | ||
: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 226: | ||
: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() |