Módulo:Spell cost table
Ir para navegação
Ir para pesquisar
Documentação do módulo
Esta documentação é transcluída de Predefinição:Sem documentação/doc. [editar] [atualizar]
Este módulo não possui nenhuma documentação. Por favor, considere adicionar uma documentação em Módulo:Spell cost table/doc. [editar]
Módulo:Spell cost table requer Módulo:Mercado.
Módulo:Spell cost table requer Módulo:Moedas.
Módulo:Spell cost table requer Módulo:Mw.html extension.
Módulo:Spell cost table requer Módulo:Paramtest.
Módulo:Spell cost table requer Módulo:Yesno.
-- <pre>
local p = {}
require('Módulo:Mw.html extension')
local gep = require('Módulo:Mercado')._price
local coins = require('Módulo:Moedas')._amount
local yn = require('Módulo:Yesno')
local pt = require('Módulo:Paramtest')
local combo_runes = {
['runa da névoa'] = { 'runa do ar', 'runa da água' },
['runa do pó'] = { 'runa do ar', 'runa da terra' },
['runa da lama'] = { 'runa da água', 'runa da terra' },
['runa da fumaça'] = { 'runa do ar', 'runa do fogo' },
['runa do vapor'] = { 'runa da água', 'runa do fogo' },
['runa da lava'] = { 'runa da terra', 'runa do fogo' }
}
local staffs = {
['cajado do ar'] = { 'runa do ar' },
['cajado da água'] = { 'runa da água' },
['cajado da terra'] = { 'runa da terra' },
['cajado do fogo'] = { 'runa do fogo' },
['bastão de lama'] = { 'runa da água', 'runa da terra' },
['bastão de vapor'] = { 'runa da água', 'runa do fogo' },
['bastão de lava'] = { 'runa da terra', 'runa do fogo' },
['avêrnicos e congelamento'] = { 'runa do ar', 'runa da água' },
['bastão elemental'] = { 'runa do ar', 'runa da água', 'runa da terra', 'runa do fogo'},
['cajado místico'] = {'runa da água', 'runa da terra', 'runa do fogo'},
['cajado da natureza'] = { 'runa da natureza' },
['cajado da lei'] = { 'runa da lei' },
['bastão de armadyl'] = { 'runa do ar' },
}
local percentage_saved = {
['cajado do ar'] = 1,
['cajado da água'] = 1,
['cajado da terra'] = 1,
['cajado do fogo'] = 1,
['bastão de lama'] = 1,
['bastão de vapor'] = 1,
['bastão de lava'] = 1,
['avêrnicos e congelamento'] = 1,
['bastão elemental'] = 1,
['cajado místico'] = 1,
['cajado da natureza'] = 0.1,
['cajado da lei'] = 0.1,
['bastão de armadyl'] = 1,
}
local non_rune_items = {
['banana'] = true,
['orbe sem poder'] = true,
['argila macia'] = true,
}
function p.main(frame)
local args = frame:getParent().args
local runes = {}
for i=1,10 do
if not args['Runa'..i] then
break
end
local rune = args['Runa'..i]
if not non_rune_items[rune] then
rune = 'runa ' .. rune
end
local num = tonumber(args['Runa'..i..'num'] or 1)
table.insert(runes,{rune,num})
end
local no_staff = args.semcajado ~= nil
local show_profit = yn(args.tablet)
local sold_name = pt.default_to(args.sold_name, mw.title.getCurrentTitle().subpageText)
return p._main(runes,no_staff,show_profit,sold_name)
end
function p._main(runes,no_staff,show_profit,sold_name)
local cols = show_profit and 3 or 2
local ret = mw.html.create('table')
:addClass('wikitable inventory-image')
:tag('tr')
:tag('th')
:wikitext('Entrada')
:done()
:tag('th')
:wikitext('Custo')
:done()
:IF(show_profit)
:tag('th')
:wikitext('Lucro')
:done()
:END()
:done()
:tag('tr')
:tag('td')
:wikitext(make_pics(runes))
:done()
:tag('td')
:wikitext(coins(total_price(runes)))
:done()
:IF(show_profit)
:tag('td')
:wikitext(show_profit and (coins(gep(sold_name)-total_price(runes))))
:done()
:END()
:done()
local combos_used = {}
local staffs_used = {}
for i, v in pairs(combo_runes) do
local amtused = 0
local tblcopy = copytbl(runes)
for _, w in ipairs(v) do
for j, x in ipairs(tblcopy) do
if w == x[1] then
table.remove(tblcopy,j)
if x[2] > amtused then
amtused = x[2]
end
end
end
end
if amtused > 0 then
table.insert(tblcopy,{i, amtused})
table.insert(combos_used,tblcopy)
end
end
if #combos_used > 0 then
ret:tag('tr')
:tag('th')
:attr('colspan',cols)
:wikitext('Runas de combinação')
:done()
:done()
for _, v in ipairs(combos_used) do
ret:tag('tr')
:tag('td')
:wikitext(make_pics(v))
:done()
:tag('td')
:wikitext(coins(total_price(v)))
:done()
:IF(show_profit)
:tag('td')
:wikitext(show_profit and (coins(gep(sold_name)-total_price(v))))
:done()
:END()
:done()
end
end
for i, v in pairs(staffs) do
local isused = false
local tblcopy = copytbl(runes)
for _, w in ipairs(v) do
for j, x in ipairs(tblcopy) do
if w == x[1] then
isused = true
if percentage_saved[i] == 1 then
table.remove(tblcopy,j)
else
new_amnt = tblcopy[j][2] * (1 - (percentage_saved[i] or 0))
tblcopy[j] = { tblcopy[j][1], new_amnt }
end
end
end
end
if isused then
table.insert(tblcopy,{i, 0})
table.insert(staffs_used,tblcopy)
end
end
if #staffs_used > 0 and not no_staff then
ret:tag('tr')
:tag('th')
:attr('colspan',cols)
:wikitext('Cajados')
:done()
:done()
for _, v in ipairs(staffs_used) do
ret:tag('tr')
:tag('td')
:wikitext(make_pics(v))
:done()
:tag('td')
:wikitext(coins(total_price(v)))
:done()
:IF(show_profit)
:tag('td')
:wikitext(show_profit and (coins(gep(sold_name)-total_price(v))))
:done()
:END()
:done()
end
end
return ret
end
function copytbl(tbl)
local ret = {}
for _, v in ipairs(tbl) do
table.insert(ret,v)
end
return ret
end
function make_pics(runes)
local ret = {}
for _, v in ipairs(runes) do
if v[1] == 'avêrnicos e congelamento' then
table.insert(ret,'[[File:Varinha dos Avêrnicos.png|link=Varinha dos Avêrnicos]]')
table.insert(ret,'[[File:Livro do congelamento.png|link=Livro do congelamento]]')
elseif v[1] == 'cajado místico' then
table.insert(ret,'[[File:Cajado místico (75).png|link=Cajado místico]]')
elseif v[1] == 'bastão de armadyl' then
table.insert(ret,'[[File:Bastão de Armadyl.png|link=Bastão de Armadyl]]')
else
if v[2] > 0 then
table.insert(ret,'<sup>'..v[2]..'</sup>')
end
table.insert(ret,'[[File:'..v[1]..'.png|link='..v[1]..']]')
end
end
return table.concat(ret)
end
function total_price(runes)
local ret = 0
for _, v in ipairs(runes) do
if v[2] > 0 then
ret = ret + gep(v[1]) * v[2]
end
end
return ret
end
return p