Editing
Module:Sandbox/User:Alsang/PassivePotionList
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.
Anti-spam check. Do
not
fill this in!
require('Module:Mw.html extension') local param = require( 'Module:Paramtest' ) local currency = require('Module:Currency') local lang = mw.getContentLanguage() require("Module:Mw.html extension") 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) --for debugging --return '<pre>'..mw.text.jsonEncode(results, mw.text.JSON_PRETTY)..'</pre>' end -- makes the html for the cells containing currency directly, no tags needed local function currency_cell(amount) return currency._cell(amount, { html = 'yes' }) 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.hasLvl = param.has_content(item.lvl) 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) 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 not(item.variant=='Ebsworth Work') then -- 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') :IF(item.hasBuy) :css{ ['text-align'] = 'center' } :wikitext(item.lvl) :ELSE() :addClass('table-bg-grey') :css{ ['text-align'] = 'center' } :wikitext('unknown') :END() :done() :tag('td') :wikitext('[[File:' .. item.name .. '.png|30px|link=' .. item.name .. ']] [[' .. item.name .. ']]') :done() :IF(not(item.variant=='Ebsworth Work')) :tag('td') :wikitext(reagentCell) :done() :IF(item.hasBuy) :wikitext(currency_cell(item.buy)) :ELSE() :tag('td') :addClass('table-bg-grey') :attr{ colspan = '10' } :css{ ['text-align'] = 'center' } :wikitext('unknown') :done() :END() :IF(item.hasSell) -- I cannot for the life of me figure out why, -- but if I put item.sell directly into this function it claims it has value nil -- it works for other functions to display it directly -- so here is the workaround I guess :wikitext(currency_cell(item.buy+200*item.profit)) --:wikitext(currency_cell(item.sell)) :ELSE() :tag('td') :addClass('table-bg-grey') :attr{ colspan = '10' } :css{ ['text-align'] = 'center' } :wikitext('unknown') :done() :END() :ELSE() :tag('td') :addClass('table-na') :attr{ colspan = '21' } :wikitext('N/A') :done() :END() :IF(item.hasProfit) :wikitext(currency_cell(item.profit)) :ELSE() :tag('td') :addClass('table-bg-grey') :attr{ colspan = '10' } :css{ ['text-align'] = 'center' } :wikitext('unknown') :done() :END() :IF(item.hasProfit and item.hasDuration) :wikitext(currency_cell(item.profitPerHour)) :ELSE() :tag('td') :addClass('table-bg-grey') :attr{ colspan = '10' } :css{ ['text-align'] = 'center' } :wikitext('unknown') :done() :END() :tag('td') :IF(item.hasXP) :wikitext(item.XP) :ELSE() :addClass('table-bg-grey') :css{ ['text-align'] = 'center' } :wikitext('unknown') :END() :done() :tag('td') :IF(item.hasXP and item.hasDuration) :wikitext(lang:formatNum(tonumber(item.XPPerHour))) :ELSE() :addClass('table-bg-grey') :css{ ['text-align'] = 'center' } :wikitext('unknown') :END() :done() :IF(item.hasXP and item.hasProfit) :wikitext(currency_cell(item.profitPerXP)) :ELSE() :tag('td') :addClass('table-bg-grey') :attr{ colspan = '10' } :css{ ['text-align'] = 'center' } :wikitext('unknown') :done() :END() :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
)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Module
Discussion
English
Views
Read
Edit source
View history
More
Refresh
Search
Discord
Discord
Navigation
About us
User help
Random page
Recent changes
Recruit Sparring Guard
13m
ago
-
BlackHawk
Common Guard Strapped Helmet
13m
ago
-
BlackHawk
Uncommon Guard Pulled Leather Gloves
19m
ago
-
BlackHawk
Uncommon Guard Elegant Shield
25m
ago
-
BlackHawk
Show more...
Brighter Shores
Professions
Factions
Episodes
Premium Pass
Monsters
Quests
Community
Policies
Tools
What links here
Related changes
Special pages
Page information