RuneScape Wiki
mNo edit summary
Tag: sourceedit
mNo edit summary
Tag: sourceedit
Line 30: Line 30:
 
json = string.format('[ %s ]',json)
 
json = string.format('[ %s ]',json)
   
cmb = '('..cmb
+
cmb = string.format( '(%s',cmb or '?' )
   
 
_found = mw.ustring.find(json:lower(), '%{ "name": "'..drop..'"')
 
_found = mw.ustring.find(json:lower(), '%{ "name": "'..drop..'"')

Revision as of 18:27, 26 March 2016

Documentation for this module may be created at Module:Get drop info/doc

-- <pre>
local p = {}

function p.main(frame)
	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)

	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 = string.format('[ %s ]',json)

	cmb = string.format( '(%s',cmb or '?' )

	_found = mw.ustring.find(json:lower(), '%{ "name": "'..drop..'"')

	if not _found then
		return ''
	end

	local _min,_max,rarity = mw.ustring.match(json:lower(), '%{ "name": "'..drop..'", "quantity": %[([%d%?]+),([%d%?]+)%], "rarity": "([%w ]+)"')

	_min = _min or ''
	_max = _max or ''
	rarity = rarity or ''

	local combat = mw.ustring.match(cmb:lower(),'%(combat level: (.-)%)') or 'N/A'

	combat = combat:gsub('(%d%d?),(%d%d%d)','%1%2')

	local quantity
	if tonumber(_min) == tonumber(_max) then
		quantity = _min
	else
		quantity = string.format('%s-%s',_min,_max)
	end

	return frame:preprocess(string.format('{{ItemDropsLine|Monster=%s|Combat=%s|Quantity=%s|Rarity=%s}}',monster,combat,quantity,rarity))
end

return p