Module:GetLootLines

From Vault Hunters Wiki
Jump to navigation Jump to search

Documentation for this module may be created at Module:GetLootLines/doc

local p = {}

local displaynames = mw.loadJsonData("Data:Displaynames")


function p.getTable(data)
	function dump(o)
	   if type(o) == 'table' then
	      local s = '{ '
	      for k,v in pairs(o) do
	         if type(k) ~= 'number' then k = '"'..k..'"' end
	         s = s .. '['..k..'] = ' .. dump(v) .. ','
	      end
	      return s .. '} '
	   else
	      return tostring(o)
	   end
	end
	function mysplit(inputstr, sep)
	   if sep == nil then
	      sep = "%s"
	   end
	   local t={}
	   for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
	      table.insert(t, str)
	   end
	   return t
	end
	function getDisplayname(ns, entry)
		local name = displaynames[ns .. ":" .. entry]
		if name ~= nil then
			return name
		end
		local name = displaynames[ns .. "." .. entry]
		if name ~= nil then
			return name
		end
		name = displaynames["item." .. ns .. "." .. entry]
		if name ~= nil then
			return name
		end
		name = displaynames["block." .. ns .. "." .. entry]
		if name ~= nil then
			return name
		end
	
		name = ""
		for i, c in ipairs(mysplit(entry, "_")) do
			if name ~= "" then
				name = name .. " "
			end
			name = name .. c
		end
		return "''" .. name .. "''"
		
	end
	
	local args = data["args"]
	local items = mysplit(args[1], ",")
	local quantities = mysplit(args[2], ",")
	local chances = mysplit(args[3], ",")
	
	if (#items ~= #quantities) then
		return "Error: Parameters are not matching length"
	end
	
	local returning = ""
	for _, v in ipairs(items) do
		local item = string.gsub(v, '^%s*(.-)%s*$', '%1')
		local rl = mysplit(item, ":")
		local namespace = rl[1]
		local entry = rl[2]
		local quantity = quantities[_]
		local chance = chances[_]
		local name = getDisplayname(namespace, entry)
		returning = returning .. [[
		|-
		|]] ..  " [[File:".. namespace .. "-" .. entry .. ".png|16px]] " .. name .. " || " .. quantity .. " || " .. chance .. [[ 
		]]
	end
	return returning
end

return p