Home
Random
Log in
Settings
About Brighter Shores Wiki
Disclaimers
Search
Editing
Module:Sandbox/User:Alsang/PassivePotionList
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.
Anti-spam check. Do
not
fill this in!
require('Module:Mw.html extension') local param = require( 'Module:Paramtest' ) local currency = require('Module:Currency') local p = {} -- non dynamic module, no inputs function p.main() -- returns almost every parameter needed for the row, except buy values for reagents local query = { '[[Uses facility::Passive Potion Station]] OR [[Variant of::Ebsworth Work]]', '?Profession Level A = lvl', '? #- = name', '?Uses item #- = reagents', '?Value = sell', '?Activity coins = coins', '?Activity XP = XP', '?Activity duration = duration', '?Variant of #- = variant', 'sort = Profession Level A' } local results = mw.smw.ask(query) results = p.formatResults(results) return p.displayTable(results) --return '<pre>'..mw.text.jsonEncode(results, mw.text.JSON_PRETTY)..'</pre>' end -- makes the html for the cells containing currency directly, no tags needed -- flag is for if the number should not be known, replaces with zero local function currency_cell(amount,flag) local a = {} if flag then a = currency._cell(amount, { html = 'yes' }) else a = currency._cell(0, { html = 'yes' }) -- replace this with blank, if I can figure out how to end return a end -- do calculations and determine strings to go in cells function p.formatResults(results) -- iterate through potions for i, item in ipairs(results) do -- potions have reagents, but passive ebsworth work does not if item.variant=='Ebsworth Work' then -- if it is ebsworth work, sub in different fields for the buy and sell values item.buy = 0 item.sell = item.coins else -- iterate through reagents, adding buy price to running total (individuals not needed) -- starting value 20 is for bottle item.buy = 20 for j, reagent in ipairs(item.reagents) do --shamelessley lifted from Module:Products local shopPriceQuery = '[[:+]][[Sold item::' .. reagent .. ']]|?Shop buy price|mainlabel=' .. reagent local shopPriceResult = mw.smw.ask(shopPriceQuery) or {} local shopPrice = 0 if shopPriceResult[1] and shopPriceResult[1]["Shop buy price"] then shopPrice = tonumber(shopPriceResult[1]["Shop buy price"]) or 0 end item.buy = item.buy + shopPrice end end -- sanitise data, set to 0 if its not there local lvl = item.lvl or '?' local buy = item.buy or 0 local sell = item.sell or 0 local XP = item.XP or 0 local KP = item.KP or 0 local duration = item.duration or 0 -- flags for if data values should be shown item.hasBuy = param.has_content(item.buy) item.hasSell = param.has_content(item.sell) item.hasProfit = item.hasBuy and item.hasSell item.hasXP = param.has_content(item.XP) item.hasDuration = param.has_content(item.duration) -- direct values if item.variant=='Ebsworth Work' then item.profit = sell - buy else item.profit = (sell - buy )*0.005 -- passive potions all have quantity 0.005 per action end item.XP = XP if item.XP==0 then item.profitPerXP = 0 else item.profitPerXP = math.floor(item.profit / (item.XP) * 100) / 100 end -- passive activities have no downtime item.duration = duration if item.duration == 0 then item.potionPerHour = 0 else item.potionPerHour = 1 / (item.duration) * 3600 end -- properties per hour item.XPPerHour = math.floor(item.XP * item.potionPerHour) item.profitPerHour = math.floor(item.profit * item.potionPerHour) -- XP/KP strings, if the requisite data isnt there then display "unknown" if item.hasXP then item.XP = item.XP -- format to include commas else item.XP = 'Unknown' end if item.hasXP and item.hasDuration then item.XPPerHour = item.XPPerHour -- format to include commas else item.XPPerHour = 'Unknown' end end return results end -- make the table function p.displayTable(results) local out = mw.html.create('table') :addClass('wikitable sortable') :tag('tr') :tag('th') :wikitext('[[File:Alchemist small icon.png|15px]] Level') :done() :tag('th') :wikitext('Potion or Activity') :done() :tag('th') :wikitext('Reagents (plus bottle)') :done() :tag('th') :attr{ colspan = '10' } :wikitext('Buy Value') :done() :tag('th') :attr{ colspan = '10' } :wikitext('Sell Value') :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') :attr{ colspan = '10' } :wikitext('Coins/XP') :done() :done() for i,item in ipairs(results) do -- if its not ebsworth work, need a list of reagents local reagentCell = '' if item.variant=='Ebsworth Work' then reagentCell = 'N/A' else -- need to generate the text for the reagent cell before starting the row for j, reagent in ipairs(item.reagents) do reagentCell = reagentCell .. '[[File:' .. reagent .. '.png|30px|link=' .. reagent .. ']] [[' .. reagent .. ']]<br>' end end out :tag('tr') :tag('td') :css{ ['text-align'] = 'center' } :wikitext(item.lvl) :done() :tag('td') :wikitext('[[File:' .. item.name .. '.png|30px|link=' .. item.name .. ']] [[' .. item.name .. ']]') :done() :tag('td') :wikitext(reagentCell) :done() :wikitext(currency_cell(item.buy,item.hasBuy)) :wikitext(currency_cell(item.sell,item.hasSell)) :wikitext(currency_cell(item.profit,item.hasProfit)) :wikitext(currency_cell(item.profitPerHour,item.hasProfit and item.hasDuration)) :tag('td') :wikitext(item.XP) :done() :tag('td') :wikitext(item.XPPerHour) :done() :wikitext(currency_cell(item.profitPerXP,item.hasXP and item.hasProfit)) :done() end return out end return p
Summary:
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
Template used on this page:
Module:Sandbox/User:Alsang/PassivePotionList/doc
(
view source
)