mNo edit summary Tag: sourceedit |
mNo edit summary Tag: sourceedit |
||
Line 70: | Line 70: | ||
v.rarity) |
v.rarity) |
||
) |
) |
||
+ | table.insert(retString,'<span style="display:none;" class="hidden">'..v..'</span>') |
||
end |
end |
||
Revision as of 21:10, 5 April 2016
Documentation for this module may be created at Module:Get drop info/doc
-- <pre>
local p = {}
local JSONS = require('Dev:Json')
function p.main(frame)
-- This template is fairly expensive to use, so it should be limited
mw.incrementExpensiveFunctionCount()
local args = frame:getParent().args
local monster = string.gsub(args['?monster'] or args.monster or '','[][]','')
monster = mw.text.decode(monster)
local drop = string.lower(args.userparam or args.drop or '')
drop = mw.text.decode(drop)
-- escape lua characters
local _drop = drop:gsub('([%^%$%(%)%%%.%[%]%*%+%-%?])','%%%1')
local smwdata = frame:preprocess('{{'..
'{{{|safesubst:}}}#show:'..
monster..
[[
|?Drop JSON
|?All Combat level=&&SPLITPOINT&&Combat level:
|headers=plain
|format=list
}}
]])
smwdata = mw.text.decode(tostring(smwdata))
local _found = false
local json, cmb = unpack( mw.text.split(smwdata,'%(&&SPLITPOINT&&') )
json = JSONS.decode(string.format('[ %s ]',json))
cmb = string.format( '(%s',cmb or '?' )
local ret = {}
for _, v in pairs(json) do
if drop == v.name then
table.insert(ret,v)
_found = true
end
end
if not _found then
return ''
end
local combat = mw.ustring.match(cmb:lower(),'%(combat level: (.-)%)') or 'N/A'
local retString = {}
for _, v in pairs(ret) do
local _min,_max = v.quantity[1],v.quantity[2]
local quantity
if tonumber(_min) == tonumber(_max) then
quantity = _min
else
quantity = string.format('%s-%s',_min,_max)
end
table.insert(retString,
string.format('{{ItemDropsLine|Monster=%s|Combat=%s|Quantity=%s|Rarity=%s}}',
monster,
combat,
quantity,
v.rarity)
)
table.insert(retString,'<span style="display:none;" class="hidden">'..v..'</span>')
end
return frame:preprocess(table.concat(retString,'\n'))
end
return p