Module:GathererList: Difference between revisions
Jump to navigation
Jump to search
Content added Content deleted
m (femur bank time) |
(move from calculating actions per hour to specifying actions per hour, so people can import values from strategy guides) |
||
Line 40:
-- downtime is very important for gathering-type professions
-- initial values, it will be obvious if these get used
item.
item.
-- these numbers are
if string.find(item.pageName,'Globeplant') then
item.
item.
elseif string.find(item.pageName,'Dandelion') then
item.
item.
elseif string.find(item.pageName,'Goat Horn') then
item.
item.
elseif string.find(item.pageName,'Apple') then
item.
item.
elseif string.find(item.pageName,'Leek') then
item.
item.
elseif string.find(item.pageName,'Haleberries') then
item.productPerHour = 357
item.
elseif string.find(item.pageName,'Rams Horn') then
item.
item.
elseif string.find(item.pageName,'Bitterfruit') then
item.productPerHour = 245
item.
elseif string.find(item.pageName,'Chestnut') then
item.
item.
elseif string.find(item.pageName,'Bone Spike') then
item.
item.
elseif string.find(item.pageName,'Tangfruit') then
item.productPerHour = 212
item.
elseif string.find(item.pageName,'Catkin') then
item.
item.
elseif string.find(item.pageName,'Femur Shard') then
item.
item.
elseif string.find(item.pageName,'Clover') then
item.
item.
elseif string.find(item.pageName,'Snake Scale') then
item.
item.
elseif string.find(item.pageName,'Orchid') then
item.
item.
elseif string.find(item.pageName,'Dock Leaf') then
item.productPerHour = nil
item.
elseif string.find(item.pageName,'Sage') then
item.productPerHour = nil
item.
elseif string.find(item.pageName,'Thistle') then
item.
item.
end
-- profitability
item.profit = item.sellPrice
-- properties per hour
|
Latest revision as of 19:38, 7 January 2025
Module documentation
This documentation is transcluded from Module:GathererList/doc. [edit] [history] [purge]
This module does not have any documentation. Please consider adding documentation at Module:GathererList/doc. [edit]
Module:GathererList's function main is invoked by Template:GathererList.
Module:GathererList requires Module:Mw.html extension.
Module:GathererList requires Module:ProfessionList.
Module:GathererList requires Module:Purge.
Module:GathererList requires strict.
require('strict')
require('Module:Mw.html extension')
local lang = mw.getContentLanguage()
local plist = require('Module:ProfessionList')
local purge = require('Module:Purge')._purge
local p = {}
-- non dynamic module, no inputs
function p.main()
local queryString = '[[Category:Gatherer]] AND [[Category:Pages with activities]]'
local function screenFunction(item)
return not item.passive
end
local results = plist.generate_recipe_table(queryString,screenFunction)
results = p.formatResults(results)
return p.displayTable(results)
--for debugging
--return '<pre>'..mw.text.jsonEncode(results, mw.text.JSON_PRETTY)..'</pre>'
end
-- do calculations and determine strings to go in cells
function p.formatResults(results)
--simple check for nil results
if results==nil or results[1]==nil then
return nil
end
-- iterate through products
for _, item in ipairs(results) do
-- downtime is very important for gathering-type professions
-- initial values, it will be obvious if these get used
item.productPerHour = 1
item.productPerHourDropping = 1
-- these numbers are from the strategy guides for each node
if string.find(item.pageName,'Globeplant') then
item.productPerHour = 372
item.productPerHourDropping = 450
elseif string.find(item.pageName,'Dandelion') then
item.productPerHour = 407
item.productPerHourDropping = 450
elseif string.find(item.pageName,'Goat Horn') then
item.productPerHour = 342
item.productPerHourDropping = 450
elseif string.find(item.pageName,'Apple') then
item.productPerHour = 257
item.productPerHourDropping = 337
elseif string.find(item.pageName,'Leek') then
item.productPerHour = 372
item.productPerHourDropping = 450
elseif string.find(item.pageName,'Haleberries') then
item.productPerHour = 357
item.productPerHourDropping = 450
elseif string.find(item.pageName,'Rams Horn') then
item.productPerHour = 295
item.productPerHourDropping = 450
elseif string.find(item.pageName,'Bitterfruit') then
item.productPerHour = 245
item.productPerHourDropping = 450
elseif string.find(item.pageName,'Chestnut') then
item.productPerHour = 257
item.productPerHourDropping = 337
elseif string.find(item.pageName,'Bone Spike') then
item.productPerHour = 450
item.productPerHourDropping = 450
elseif string.find(item.pageName,'Tangfruit') then
item.productPerHour = 212
item.productPerHourDropping = 450
elseif string.find(item.pageName,'Catkin') then
item.productPerHour = 273
item.productPerHourDropping = 337
elseif string.find(item.pageName,'Femur Shard') then
item.productPerHour = 342
item.productPerHourDropping = 450
elseif string.find(item.pageName,'Clover') then
item.productPerHour = 372
item.productPerHourDropping = 450
elseif string.find(item.pageName,'Snake Scale') then
item.productPerHour = 342
item.productPerHourDropping = 450
elseif string.find(item.pageName,'Orchid') then
item.productPerHour = 342
item.productPerHourDropping = 450
elseif string.find(item.pageName,'Dock Leaf') then
item.productPerHour = nil
item.productPerHourDropping = nil
elseif string.find(item.pageName,'Sage') then
item.productPerHour = nil
item.productPerHourDropping = nil
elseif string.find(item.pageName,'Thistle') then
item.productPerHour = 291
item.productPerHourDropping = 440
end
-- profitability
item.profit = item.sellPrice
-- properties per hour
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)
end
return results
end
-- make the table
function p.displayTable(results)
--simple check for nil results
if results ==nil or results[1] == nil then
return 'No data found for table'
end
local out = mw.html.create('table')
:addClass('wikitable sortable')
:tag('caption')
:wikitext('This list is updated dynamically. '..purge())
:done()
:tag('tr')
:tag('th')
:wikitext('[[File:Forager small icon.png|15px]] Level')
:done()
:tag('th')
:attr{ colspan = '2' }
:wikitext('Node')
:done()
:tag('th')
:attr{ colspan = '2' }
:wikitext('Tool')
:done()
:tag('th')
:attr{ colspan = '2' }
:wikitext('Resource')
:done()
:tag('th')
:wikitext('Resource/hr')
:done()
:tag('th')
:attr{ colspan = '10' }
:wikitext('Profit')
:done()
:tag('th')
:attr{ colspan = '10' }
:wikitext('Profit/hr')
:done()
:tag('th')
:wikitext('XP')
:done()
:tag('th')
:wikitext('XP/hr')
:done()
:tag('th')
:wikitext('XP/hr<br>(Discarding)')
:done()
:done()
for i, item in ipairs(results) do
local row = out:tag('tr')
--level
:IF(item.level)
:tag('td')
:css{ ['text-align'] = 'center' }
:wikitext(item.level)
:done()
:ELSE()
:node(plist.unknown_value_edit_cell(item.pageName,1))
:END()
-- gathering node
: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
:node(plist.two_column_image_text(item.product,'File:' .. item.product .. '.png',item.product,item.product))
-- resource/hr
:IF(item.productPerHour)
:tag('td')
:wikitext(item.productPerHour and math.floor(tonumber(item.productPerHour)*10)/10)
:done()
:ELSE()
:node(plist.unknown_value_edit_cell(item.pageName,1))
:END()
-- economics
:node(plist.currency_cell(item.profit))
:node(plist.currency_cell(item.profitPerHour))
-- XP
:IF(item.xp)
:tag('td')
:wikitext(item.xp and lang:formatNum(tonumber(item.xp)))
:done()
:ELSE()
:node(plist.unknown_value_edit_cell(item.pageName,1))
:END()
-- XP per hour
:IF(item.xpPerHour)
:tag('td')
: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()
:ELSE()
:node(plist.unknown_value_cell(1))
:END()
:done()
end
return out
end
return p