Editing Module:Sandbox/User:Alsang

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 4: Line 4:
local currency = require('Module:Currency')
local currency = require('Module:Currency')
local lang = mw.getContentLanguage()
local lang = mw.getContentLanguage()
local xpdata = mw.loadData('Module:Experience/data')


local p = {}
local p = {}
Line 14: Line 13:
-- other parameters are determined by subqueries of chained pages
-- other parameters are determined by subqueries of chained pages
local query = {
local query = {
'[[Rotten Tree Stump||Rotting Log (Hopeport)||Rock Pool||Scrap Metal Bin]]',
'[[Activity JSON::~*]]',
'? = name',
'?Activity JSON = activityJSON',
'?Activity JSON = activityJSON',
'limit = 1500'
'?#- = name',
'limit = 500'
}
}
local results = mw.smw.ask(query)
local results = mw.smw.ask(query)
results = p.screenResults(results)
results = p.screenResults(results)

results = p.formatResults(results)


return p.displayTable(results)
return p.displayTable(results)
Line 28: Line 29:
--return '<pre>'..mw.text.jsonEncode(results, mw.text.JSON_PRETTY)..'</pre>'
--return '<pre>'..mw.text.jsonEncode(results, mw.text.JSON_PRETTY)..'</pre>'


end

-- makes the html for the cells containing currency directly
-- Replaces nil with an "unknown" cell
local function currency_cell(amount)
if not amount then
return mw.html.create('td')
:addClass('table-bg-gray')
:css{ ['text-align'] = 'center' }
:attr{ colspan = '10' }
:wikitext("''unknown''")
:done()
end
return currency._cell(amount, { html = 'yes' })
end
end


Line 44: Line 59:
for j,json in ipairs(item.activityJSON) do
for j,json in ipairs(item.activityJSON) do
-- if string.find(json,'Branches') or string.find(json,'Split') then
local activityJSON = mw.text.jsonDecode(json)
if activityJSON.duration and tonumber(activityJSON.duration)==20 then
local activityJSON = mw.text.jsonDecode(json)
local itemNew = {}
local itemNew = {}
itemNew.name = item.name
itemNew.name = item.name
itemNew.XP = activityJSON.xp
itemNew.XP = activityJSON.xp
itemNew.lvl = activityJSON.level
itemNew.lvl = activityJSON.level
itemNew.profession = activityJSON.profession
itemNew.duration = activityJSON.duration and tonumber(activityJSON.duration)
itemNew.duration = activityJSON.duration
itemNew.product = activityJSON.output[1].name
itemNew.product = activityJSON.output[1].name
itemNew.activityJSON = json
itemNew.XPperHour = itemNew.XP and tonumber(itemNew.XP) and itemNew.duration and tonumber(itemNew.duration) and tonumber(itemNew.XP) * 3600 / tonumber(itemNew.duration)
itemNew.fitXP = xpdata.knowledge[itemNew.lvl]*4*0.0005
if itemNew.lvl>=200 then
itemNew.fitXP = itemNew.fitXP * 4
end
itemNew.fitXP = math.floor(itemNew.fitXP * 100 ) / 100
local query = mw.smw.ask('[[Sold item::' .. itemNew.product .. ']][[Shop sell price::!~N/A]]|?Shop sell price=data|mainlabel=-')
if type(query)=='table' then
-- price is returned as a number
itemNew.productSellPrice = tonumber(query[1].data)*0.005
else
-- will return nil if the item is not in a shop, or if it is in a shop but can only be sold to the shop
itemNew.productSellPrice = nil
end
table.insert(resultsScreened,itemNew)
table.insert(resultsScreened,itemNew)
end
-- end
end
end
end
end
Line 92: Line 89:
return resultsScreened
return resultsScreened


end

-- do calculations and determine strings to go in cells
function p.formatResults(results)
-- iterate through products
for _, item in ipairs(results) do
item.givesCoins = string.find(item.product,'Split')

-- profit from selling the items
if not item.givesCoins then
-- protection against missing parameters
item.product = item.product or ''
-- query is: there is a shop object page that has this item AND has buy price cannot be "N/A"
local query = mw.smw.ask('[[Sold item::' .. item.product .. ']][[Shop sell price::!~N/A]]|?Shop sell price=data|mainlabel=-')
if type(query)=='table' then
-- price is returned as a number
item.coins = tonumber(query[1].data)*0.005 or 0
else
-- will return nil if the item is not in a shop, or if it is in a shop but can only be sold to the shop
item.coins = 0
end
end
-- no downtime for passives
item.productPerHour = item.duration and 1 / item.duration * 3600

-- properties per hour
item.XPPerHour = item.XP and item.productPerHour and math.floor(item.XP * item.productPerHour)
item.coinsPerHour = item.coins and item.productPerHour and math.floor(item.coins * item.productPerHour)
end

return results
end
end


Line 100: Line 134:
:tag('tr')
:tag('tr')
:tag('th')
:tag('th')
:wikitext('Page')
:wikitext('[[File:Forager small icon.png|15px]] Level')
:done()
:done()
:tag('th')
:tag('th')
:attr{ colspan = '2' }
:wikitext('Forager node')
:done()
:tag('th')
:attr{ colspan = '3' }
:wikitext('Product')
:wikitext('Product')
:done()
:done()
:tag('th')
:tag('th')
:wikitext('Profession')
:wikitext('Quantity/hr')
:done()
:done()
:tag('th')
:tag('th')
:wikitext('Level')
:attr{ colspan = '10' }
:wikitext('Profit/hr')
:done()
:done()
:tag('th')
:tag('th')
Line 115: Line 155:
:done()
:done()
:tag('th')
:tag('th')
:wikitext('0.0005 of levelup XP')
:wikitext('XP/hr')
:done()
:done()
:tag('th')
:wikitext('sell price<br>per action')
:done()
-- :tag('th')
-- :wikitext('Duration')
-- :done()
-- :tag('th')
-- :wikitext('XP/hr')
-- :done()
:done()
:done()

local unknown_value_cell = mw.html.create('td')
:addClass('table-bg-gray')
:css{ ['text-align'] = 'center' }
:wikitext("''unknown''")


for i, item in ipairs(results) do
for i, item in ipairs(results) do
Line 132: Line 168:
--level
--level
:IF(item.lvl)
:tag('td')
:css{ ['text-align'] = 'center' }
:wikitext(item.lvl)
:done()
:ELSE()
:node(unknown_value_cell)
:END()
-- activity
:tag('td')
:tag('td')
:css{ ['border-right'] = '0', ['text-align'] = 'right', ['max-width'] = '100px' }
:wikitext(item.name)
:attr{ ['data-sort-value'] = item.name }
:wikitext(' [[File:' .. item.name .. '.png|link=' .. item.name .. '|30x30px]]')
:done()
:done()
:tag('td')
:tag('td')
:addClass('plinkt-link no-border')
:wikitext('[[' .. item.product .. ']]')
:wikitext('[[' .. item.name .. ']]')
:done()
:done()

:tag('td')
:tag('td')
:css{ ['border-right'] = '0', ['text-align'] = 'right' }
:wikitext('[[' .. item.profession .. ']]')
:attr{ ['data-sort-value'] = item.product }
:wikitext('0.005 &times; ')
:done()
:done()
:tag('td')
:tag('td')
:css{ ['border-right'] = '0', ['text-align'] = 'center', ['max-width'] = '100px' }
:wikitext(item.lvl)
:addClass('plinkt-link no-border')
:wikitext('[[File:' .. item.product .. '.png|link=' .. item.product .. '|30x30px]]')
:done()
:done()
:tag('td')
:tag('td')
:addClass('plinkt-link no-border')
:wikitext(item.XP)
:wikitext('[[' .. item.product .. ']]')
:done()
:done()

-- products per hour (items)
:tag('td')
:tag('td')
:css{ ['text-align'] = 'right' }
:wikitext(item.fitXP)
:wikitext('0.9 &times; [[File:' .. item.product .. '.png|link=' .. item.product .. '|30x30px]]')
:done()
:done()

:tag('td')
-- profit per hour (coins)
:wikitext(item.productSellPrice)
:node(currency_cell(item.coinsPerHour))
:done()

-- :tag('td')
-- XP
-- :wikitext(item.duration)
-- :done()
:IF(item.XP)
-- :tag('td')
:tag('td')
-- :wikitext(item.XPperHour)
:wikitext(item.XP and lang:formatNum(tonumber(item.XP)))
-- :done()
:done()
:ELSE()
:node(unknown_value_cell)
:END()
-- XP per hour
:IF(item.XPPerHour)
:tag('td')
:wikitext(item.XPPerHour and lang:formatNum(tonumber(item.XPPerHour)))
:done()
:ELSE()
:node(unknown_value_cell)
:END()


:done()
:done()
Please note that all contributions to Brighter Shores Wiki are considered to be released under the CC BY-NC-SA 3.0 (see Brighter Shores:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!
Cancel Editing help (opens in new window)
Preview page with this template

This page is a member of a hidden category: