<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.vaulthunters.gg/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mnooseman</id>
	<title>Vault Hunters Official Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.vaulthunters.gg/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mnooseman"/>
	<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/Special:Contributions/Mnooseman"/>
	<updated>2026-04-10T22:23:01Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=Module:Inventory_slot&amp;diff=11412</id>
		<title>Module:Inventory slot</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=Module:Inventory_slot&amp;diff=11412"/>
		<updated>2026-03-26T17:39:47Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Removed protection from &amp;quot;Module:Inventory slot&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Cache for this page load&lt;br /&gt;
local frameCache = {}&lt;br /&gt;
local aliasCache = {}&lt;br /&gt;
local fileExistsCache = {}&lt;br /&gt;
&lt;br /&gt;
-- Internationalization data&lt;br /&gt;
local i18n = {&lt;br /&gt;
	filename = &#039;Invicon $1&#039;,&lt;br /&gt;
	legacyFilename = &#039;Grid $1&#039;,&lt;br /&gt;
	modLink = &#039;Mods/$1/$2&#039;,&lt;br /&gt;
	&lt;br /&gt;
	-- Dependencies&lt;br /&gt;
	moduleAliases = [[Module:Inventory slot/Aliases]],&lt;br /&gt;
	moduleVHAliases = [[Module:Inventory slot/VHAliases]], -- New mod aliases module&lt;br /&gt;
	moduleRandom = [[Module:Random]],&lt;br /&gt;
	&lt;br /&gt;
	prefixes = {&lt;br /&gt;
		any = &#039;Any&#039;,&lt;br /&gt;
		matching = &#039;Matching&#039;,&lt;br /&gt;
		damaged = &#039;Damaged&#039;,&lt;br /&gt;
		unwaxed = &#039;Unwaxed&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	suffixes = {&lt;br /&gt;
		rev = &#039;Revision %d+&#039;,&lt;br /&gt;
		be = &#039;BE&#039;,&lt;br /&gt;
		lce = &#039;LCE&#039;,&lt;br /&gt;
		sm = &#039;SM&#039;,&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
p.i18n = i18n&lt;br /&gt;
&lt;br /&gt;
-- Lazy-loaded dependencies&lt;br /&gt;
local random, aliases, VHAliases&lt;br /&gt;
local vanilla = { v = 1, vanilla = 1, mc = 1, minecraft = 1 }&lt;br /&gt;
&lt;br /&gt;
-- Initialize dependencies only when needed&lt;br /&gt;
local function initDependencies()&lt;br /&gt;
	if not random then&lt;br /&gt;
		local success, module = pcall(require, i18n.moduleRandom)&lt;br /&gt;
		if success then&lt;br /&gt;
			random = module.random&lt;br /&gt;
		else&lt;br /&gt;
			-- Fallback random function&lt;br /&gt;
			random = function(max) return math.random(max) end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if not aliases then&lt;br /&gt;
		local success, data = pcall(mw.loadData, i18n.moduleAliases)&lt;br /&gt;
		if success then&lt;br /&gt;
			aliases = data&lt;br /&gt;
		else&lt;br /&gt;
			aliases = {} -- Fallback empty table&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if not VHAliases then&lt;br /&gt;
		local success, data = pcall(mw.loadData, i18n.moduleVHAliases)&lt;br /&gt;
		if success then&lt;br /&gt;
			VHAliases = data&lt;br /&gt;
		else&lt;br /&gt;
			VHAliases = {} -- Fallback empty table&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Optimized file existence check with caching&lt;br /&gt;
local function fileExists(filename)&lt;br /&gt;
	if fileExistsCache[filename] ~= nil then&lt;br /&gt;
		return fileExistsCache[filename]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local title = mw.title.new(filename, &#039;File&#039;)&lt;br /&gt;
	local exists = title and title.fileExists&lt;br /&gt;
	fileExistsCache[filename] = exists&lt;br /&gt;
	return exists&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Fast semicolon splitting (optimized version)&lt;br /&gt;
local function splitOnUnenclosedSemicolons(text)&lt;br /&gt;
	local semicolon, lbrace, rbrace = 59, 91, 93 -- ASCII values for ;[]&lt;br /&gt;
	local bracketDepth = 0&lt;br /&gt;
	local splitStart = 1&lt;br /&gt;
	local frames = {}&lt;br /&gt;
	local frameIndex = 1&lt;br /&gt;
	&lt;br /&gt;
	for index = 1, #text do&lt;br /&gt;
		local byte = text:byte(index)&lt;br /&gt;
		if byte == semicolon and bracketDepth == 0 then&lt;br /&gt;
			frames[frameIndex] = text:sub(splitStart, index - 1):match(&amp;quot;^%s*(.-)%s*$&amp;quot;)&lt;br /&gt;
			frameIndex = frameIndex + 1&lt;br /&gt;
			splitStart = index + 1&lt;br /&gt;
		elseif byte == lbrace then&lt;br /&gt;
			bracketDepth = bracketDepth + 1&lt;br /&gt;
		elseif byte == rbrace then&lt;br /&gt;
			bracketDepth = bracketDepth - 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	frames[frameIndex] = text:sub(splitStart):match(&amp;quot;^%s*(.-)%s*$&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	return frames&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Optimized table merging&lt;br /&gt;
local function mergeList(parentTable, content)&lt;br /&gt;
	local parentLen = #parentTable&lt;br /&gt;
	if content[1] then&lt;br /&gt;
		-- Merge list into table&lt;br /&gt;
		for i, v in ipairs(content) do&lt;br /&gt;
			parentTable[parentLen + i] = v&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		-- Add single item&lt;br /&gt;
		parentTable[parentLen + 1] = content&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Optimized item creation with reduced expensive calls&lt;br /&gt;
local function makeItem(frame, args)&lt;br /&gt;
	local item = mw.html.create(&#039;span&#039;)&lt;br /&gt;
		:addClass(&#039;invslot-item&#039;)&lt;br /&gt;
		:addClass(args.imgclass)&lt;br /&gt;
		:cssText(args.imgstyle)&lt;br /&gt;
	&lt;br /&gt;
	if not frame.name or frame.name == &#039;&#039; then&lt;br /&gt;
		return item&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Frame parameters&lt;br /&gt;
	local title = frame.title or args.title or &#039;&#039;&lt;br /&gt;
	title = title:match(&amp;quot;^%s*(.-)%s*$&amp;quot;) -- trim&lt;br /&gt;
	local mod = frame.mod&lt;br /&gt;
	local name = frame.name&lt;br /&gt;
	local num = frame.num&lt;br /&gt;
	local description = frame.text&lt;br /&gt;
	&lt;br /&gt;
	-- Optimized file extension detection&lt;br /&gt;
	local img, extension&lt;br /&gt;
	if mod then&lt;br /&gt;
		img = i18n.legacyFilename:gsub(&#039;%$1&#039;, name .. &#039; (&#039; .. mod .. &#039;)&#039;)&lt;br /&gt;
		extension = &#039;.png&#039; -- Default for legacy&lt;br /&gt;
	else&lt;br /&gt;
		local baseName = name&lt;br /&gt;
		local baseImg = i18n.filename:gsub(&#039;%$1&#039;, baseName)&lt;br /&gt;
		&lt;br /&gt;
		-- Check extensions in order of preference, with caching&lt;br /&gt;
		local extensions = {&#039;.png&#039;, &#039;.gif&#039;, &#039;.webp&#039;}&lt;br /&gt;
		extension = &#039;.png&#039; -- default&lt;br /&gt;
		for _, ext in ipairs(extensions) do&lt;br /&gt;
			if fileExists(baseImg .. ext) then&lt;br /&gt;
				extension = ext&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		img = baseImg&lt;br /&gt;
	end&lt;br /&gt;
	img = img .. extension&lt;br /&gt;
	&lt;br /&gt;
	-- Strip suffixes (optimized)&lt;br /&gt;
	local cleanName = name&lt;br /&gt;
	for _, suffix in pairs(i18n.suffixes) do&lt;br /&gt;
		cleanName = cleanName:gsub(&#039; &#039; .. suffix .. &#039;$&#039;, &#039;&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Determine link target&lt;br /&gt;
	local link = args.link or &#039;&#039;&lt;br /&gt;
	if link == &#039;&#039; then&lt;br /&gt;
		if mod then&lt;br /&gt;
			link = i18n.modLink:gsub(&#039;%$1&#039;, mod):gsub(&#039;%$2&#039;, cleanName)&lt;br /&gt;
		else&lt;br /&gt;
			link = cleanName:gsub(&#039;^&#039; .. i18n.prefixes.damaged .. &#039; &#039;, &#039;&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	elseif link:lower() == &#039;none&#039; then&lt;br /&gt;
		link = nil&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Avoid self-links&lt;br /&gt;
	if link then&lt;br /&gt;
		local pageName = mw.title.getCurrentTitle().text&lt;br /&gt;
		if link:gsub(&#039;^%l&#039;, string.upper) == pageName then&lt;br /&gt;
			link = nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Process title and tooltips&lt;br /&gt;
	local formattedTitle, plainTitle&lt;br /&gt;
	if title == &#039;&#039; then&lt;br /&gt;
		plainTitle = cleanName&lt;br /&gt;
	elseif title:lower() ~= &#039;none&#039; then&lt;br /&gt;
		plainTitle = title:gsub(&#039;\\\\&#039;, &#039;&amp;amp;#92;&#039;):gsub(&#039;\\&amp;amp;&#039;, &#039;&amp;amp;#38;&#039;)&lt;br /&gt;
		&lt;br /&gt;
		-- Check for formatting codes&lt;br /&gt;
		if plainTitle:find(&#039;&amp;amp;[0-9a-jl-qs-vyzr]&#039;) or plainTitle:find(&#039;&amp;amp;#%x%x%x%x%x%x&#039;) or plainTitle:find(&#039;&amp;amp;$%x%x%x&#039;) then&lt;br /&gt;
			formattedTitle = title&lt;br /&gt;
			plainTitle = plainTitle:gsub(&#039;&amp;amp;[0-9a-jl-qs-vyzr]&#039;, &#039;&#039;):gsub(&#039;&amp;amp;#%x%x%x%x%x%x&#039;, &#039;&#039;):gsub(&#039;&amp;amp;$%x%x%x&#039;, &#039;&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if plainTitle == &#039;&#039; then&lt;br /&gt;
			plainTitle = cleanName&lt;br /&gt;
		else&lt;br /&gt;
			plainTitle = plainTitle:gsub(&#039;&amp;amp;#92;&#039;, &#039;\\&#039;):gsub(&#039;&amp;amp;#38;&#039;, &#039;&amp;amp;&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	elseif link then&lt;br /&gt;
		formattedTitle = &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Set minetip attributes&lt;br /&gt;
	if formattedTitle or description then&lt;br /&gt;
		item:attr(&#039;data-minetip-title&#039;, formattedTitle)&lt;br /&gt;
		item:attr(&#039;data-minetip-text&#039;, description)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Escape title for HTML&lt;br /&gt;
	local escapedTitle = (plainTitle or &#039;&#039;):gsub(&#039;&amp;amp;&#039;, &#039;&amp;amp;#38;&#039;)&lt;br /&gt;
	&lt;br /&gt;
	-- Alt text&lt;br /&gt;
	local altText = &#039;Inventory sprite for &#039; .. cleanName&lt;br /&gt;
	if link then&lt;br /&gt;
		altText = altText .. &#039; linking to &#039; .. link&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Add the image&lt;br /&gt;
	item:addClass(&#039;invslot-item-image&#039;)&lt;br /&gt;
		:wikitext(&#039;[[File:&#039;, img, &#039;|link=&#039;, link or &#039;&#039;, &#039;|alt=&#039;, altText, &#039;|&#039;, escapedTitle, &#039;]]&#039;)&lt;br /&gt;
	&lt;br /&gt;
	-- Add stack number&lt;br /&gt;
	if num and num &amp;gt; 1 and num &amp;lt; 1025 then&lt;br /&gt;
		local numberSpan = item:tag(&#039;span&#039;)&lt;br /&gt;
			:addClass(&#039;invslot-stacksize&#039;)&lt;br /&gt;
			:attr(&#039;title&#039;, plainTitle)&lt;br /&gt;
			:wikitext(num)&lt;br /&gt;
		&lt;br /&gt;
		if args.numstyle then&lt;br /&gt;
			numberSpan:cssText(args.numstyle)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if link then&lt;br /&gt;
			-- Wrap the number in a link&lt;br /&gt;
			item:wikitext(&#039;[[&#039;, link, &#039;|&#039;):node(numberSpan):wikitext(&#039;]]&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return item&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Fixed alias lookup - check both tables without distinguishing mod vs vanilla&lt;br /&gt;
local function getAliasFromCache(id)&lt;br /&gt;
	-- Simple cache key since we don&#039;t need to distinguish mod vs vanilla&lt;br /&gt;
	if aliasCache[id] ~= nil then&lt;br /&gt;
		return aliasCache[id]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	initDependencies()&lt;br /&gt;
	local alias&lt;br /&gt;
	&lt;br /&gt;
	-- Check main aliases table first&lt;br /&gt;
	alias = aliases[id]&lt;br /&gt;
	&lt;br /&gt;
	-- If not found, check VHAliases table&lt;br /&gt;
	if not alias then&lt;br /&gt;
		alias = VHAliases[id]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	aliasCache[id] = alias or false -- Cache negative results too&lt;br /&gt;
	return alias&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Main slot function with caching&lt;br /&gt;
function p.slot(f)&lt;br /&gt;
	local args = f.args or f&lt;br /&gt;
	if f == mw.getCurrentFrame() and args[1] == nil then&lt;br /&gt;
		args = f:getParent().args&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Prepare args and create cache key&lt;br /&gt;
	local frameText = &#039;&#039;&lt;br /&gt;
	if not args.parsed then&lt;br /&gt;
		frameText = (args[1] or &#039;&#039;):match(&amp;quot;^%s*(.-)%s*$&amp;quot;) -- trim&lt;br /&gt;
		args[1] = frameText&lt;br /&gt;
	else&lt;br /&gt;
		-- For parsed args, create a simple cache key from table contents&lt;br /&gt;
		if args[1] and type(args[1]) == &#039;table&#039; then&lt;br /&gt;
			frameText = &#039;parsed_&#039; .. tostring(#args[1])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local cacheKey = frameText .. &#039;|&#039; .. (args.class or &#039;&#039;) .. &#039;|&#039; .. (args.style or &#039;&#039;) .. &#039;|&#039; .. (args.mod or &#039;&#039;)&lt;br /&gt;
	if frameCache[cacheKey] then&lt;br /&gt;
		return frameCache[cacheKey]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Legacy mod support&lt;br /&gt;
	local modData = {&lt;br /&gt;
		default = args.mod ~= &#039;&#039; and args.mod or nil&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	-- Parse frames&lt;br /&gt;
	local frames&lt;br /&gt;
	if args.parsed then&lt;br /&gt;
		frames = args[1]&lt;br /&gt;
	elseif args[1] and args[1] ~= &#039;&#039; then&lt;br /&gt;
		local randomise = args.class == &#039;invslot-large&#039; and &#039;never&#039; or nil&lt;br /&gt;
		frames = p.parseFrameText(args[1], randomise, false, modData)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Create slot&lt;br /&gt;
	local body = mw.html.create(&#039;span&#039;)&lt;br /&gt;
		:addClass(&#039;invslot&#039;)&lt;br /&gt;
		:css(&#039;vertical-align&#039;, args.align)&lt;br /&gt;
	&lt;br /&gt;
	-- Handle animation&lt;br /&gt;
	if frames and #frames &amp;gt; 1 then&lt;br /&gt;
		body:addClass(&#039;animated&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Default background&lt;br /&gt;
	if args.default and args.default ~= &#039;&#039; then&lt;br /&gt;
		body:addClass(&#039;invslot-default-&#039; .. args.default:lower():gsub(&#039; &#039;, &#039;-&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Custom styles&lt;br /&gt;
	if args.class then body:addClass(args.class) end&lt;br /&gt;
	if args.style then body:cssText(args.style) end&lt;br /&gt;
	&lt;br /&gt;
	if not frames or #frames == 0 then&lt;br /&gt;
		local result = tostring(body)&lt;br /&gt;
		frameCache[cacheKey] = result&lt;br /&gt;
		return result&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Add frames&lt;br /&gt;
	local activeFrame = 1&lt;br /&gt;
	if frames.randomise == true then&lt;br /&gt;
		if not random then&lt;br /&gt;
			initDependencies()&lt;br /&gt;
		end&lt;br /&gt;
		activeFrame = random(#frames)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i, frame in ipairs(frames) do&lt;br /&gt;
		local item&lt;br /&gt;
		if frame[1] then&lt;br /&gt;
			-- Subframe container&lt;br /&gt;
			item = body:tag(&#039;span&#039;):addClass(&#039;animated-subframe&#039;)&lt;br /&gt;
			local subActiveFrame = frame.randomise == true and random(#frame) or 1&lt;br /&gt;
			&lt;br /&gt;
			for sI, sFrame in ipairs(frame) do&lt;br /&gt;
				local sItem = makeItem(sFrame, args)&lt;br /&gt;
				if sI == subActiveFrame then&lt;br /&gt;
					sItem:addClass(&#039;animated-active&#039;)&lt;br /&gt;
				end&lt;br /&gt;
				item:node(sItem)&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- Simple frame&lt;br /&gt;
			item = makeItem(frame, args)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if i == activeFrame and #frames &amp;gt; 1 then&lt;br /&gt;
			item:addClass(&#039;animated-active&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		body:node(item)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = tostring(body)&lt;br /&gt;
	frameCache[cacheKey] = result&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Fixed frame parsing with simplified alias lookup&lt;br /&gt;
function p.parseFrameText(framesText, randomise, aliasReference, modData)&lt;br /&gt;
	local frames = { randomise = randomise }&lt;br /&gt;
	local subframes = {}&lt;br /&gt;
	local subframe = false&lt;br /&gt;
	local expandedAliases = aliasReference and {} or nil&lt;br /&gt;
	&lt;br /&gt;
	local splitFrames = splitOnUnenclosedSemicolons(framesText)&lt;br /&gt;
	&lt;br /&gt;
	for i, frameText in ipairs(splitFrames) do&lt;br /&gt;
		-- Handle subframes&lt;br /&gt;
		if frameText:find(&#039;^%s*{&#039;) then&lt;br /&gt;
			frameText = frameText:gsub(&#039;^%s*{%s*&#039;, &#039;&#039;)&lt;br /&gt;
			subframe = true&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if subframe and frameText:find(&#039;}%s*$&#039;) then&lt;br /&gt;
			frameText = frameText:gsub(&#039;%s*}%s*$&#039;, &#039;&#039;)&lt;br /&gt;
			subframe = &#039;last&#039;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- Create frame&lt;br /&gt;
		local frame = p.makeFrame(frameText, modData and modData.default)&lt;br /&gt;
		&lt;br /&gt;
		-- Simplified alias processing - just check both tables&lt;br /&gt;
		local newFrame = { frame }&lt;br /&gt;
		if frame.name and frame.name ~= &#039;&#039; then&lt;br /&gt;
			local alias = getAliasFromCache(frame.name)&lt;br /&gt;
			&lt;br /&gt;
			if alias then&lt;br /&gt;
				newFrame = p.getAlias(alias, frame)&lt;br /&gt;
				&lt;br /&gt;
				if aliasReference then&lt;br /&gt;
					local curFrame = #frames + 1&lt;br /&gt;
					local aliasData = { frame = frame, length = #newFrame }&lt;br /&gt;
					if subframe then&lt;br /&gt;
						if not subframes.aliasReference then&lt;br /&gt;
							subframes.aliasReference = {}&lt;br /&gt;
						end&lt;br /&gt;
						subframes.aliasReference[#subframes + 1] = aliasData&lt;br /&gt;
					else&lt;br /&gt;
						expandedAliases[curFrame] = aliasData&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- Add frames&lt;br /&gt;
		if subframe then&lt;br /&gt;
			mergeList(subframes, newFrame)&lt;br /&gt;
			&lt;br /&gt;
			-- Handle randomization&lt;br /&gt;
			if frames.randomise ~= &#039;never&#039; and subframes.randomise == nil and&lt;br /&gt;
				frame.name and frame.name:find(&#039;^&#039; .. i18n.prefixes.any .. &#039; &#039;) then&lt;br /&gt;
				subframes.randomise = true&lt;br /&gt;
			else&lt;br /&gt;
				subframes.randomise = false&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if frames.randomise ~= &#039;never&#039; then&lt;br /&gt;
				frames.randomise = false&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if subframe == &#039;last&#039; then&lt;br /&gt;
				if #subframes == 1 or (#splitFrames == i and #frames == 0) then&lt;br /&gt;
					local lastFrame = #frames&lt;br /&gt;
					mergeList(frames, subframes)&lt;br /&gt;
					&lt;br /&gt;
					if #splitFrames == 1 then&lt;br /&gt;
						frames.randomise = subframes.randomise&lt;br /&gt;
					end&lt;br /&gt;
					&lt;br /&gt;
					if aliasReference and subframes.aliasReference then&lt;br /&gt;
						for j, aliasRefData in pairs(subframes.aliasReference) do&lt;br /&gt;
							expandedAliases[lastFrame + j] = aliasRefData&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					frames[#frames + 1] = subframes&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				subframes = {}&lt;br /&gt;
				subframe = false&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			if frames.randomise ~= &#039;never&#039; and frame.name and frame.name:find(&#039;^&#039; .. i18n.prefixes.any .. &#039; &#039;) then&lt;br /&gt;
				frames.randomise = true&lt;br /&gt;
			else&lt;br /&gt;
				frames.randomise = false&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			mergeList(frames, newFrame)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	frames.aliasReference = expandedAliases&lt;br /&gt;
	return frames&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Optimized alias expansion&lt;br /&gt;
function p.getAlias(aliasFrames, parentFrame)&lt;br /&gt;
	if type(aliasFrames) == &#039;string&#039; then&lt;br /&gt;
		local expandedFrame = {&lt;br /&gt;
			name = aliasFrames,&lt;br /&gt;
			title = parentFrame.title,&lt;br /&gt;
			num = parentFrame.num,&lt;br /&gt;
			text = parentFrame.text,&lt;br /&gt;
			mod = parentFrame.mod&lt;br /&gt;
		}&lt;br /&gt;
		return { expandedFrame }&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if aliasFrames.name then&lt;br /&gt;
		aliasFrames = { aliasFrames }&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local expandedFrames = {}&lt;br /&gt;
	for i, aliasFrame in ipairs(aliasFrames) do&lt;br /&gt;
		local expandedFrame&lt;br /&gt;
		if type(aliasFrame) == &#039;string&#039; then&lt;br /&gt;
			expandedFrame = { name = aliasFrame }&lt;br /&gt;
		else&lt;br /&gt;
			-- Shallow clone for performance&lt;br /&gt;
			expandedFrame = {}&lt;br /&gt;
			for k, v in pairs(aliasFrame) do&lt;br /&gt;
				expandedFrame[k] = v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- Apply parent settings (only if not already set)&lt;br /&gt;
		expandedFrame.title = parentFrame.title or expandedFrame.title&lt;br /&gt;
		expandedFrame.num = parentFrame.num or expandedFrame.num  &lt;br /&gt;
		expandedFrame.text = parentFrame.text or expandedFrame.text&lt;br /&gt;
		expandedFrame.mod = parentFrame.mod or expandedFrame.mod&lt;br /&gt;
		&lt;br /&gt;
		expandedFrames[i] = expandedFrame&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return expandedFrames&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Optimized frame creation&lt;br /&gt;
function p.makeFrame(frameText, defaultMod)&lt;br /&gt;
	-- Fast path for simple frames&lt;br /&gt;
	if not frameText:find(&#039;[%[:,]&#039;) then&lt;br /&gt;
		return {&lt;br /&gt;
			mod = defaultMod,&lt;br /&gt;
			name = frameText:match(&amp;quot;^%s*(.-)%s*$&amp;quot;),&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Complex frame parsing&lt;br /&gt;
	local frame = { mod = defaultMod }&lt;br /&gt;
	&lt;br /&gt;
	-- Title&lt;br /&gt;
	local title, rest = frameText:match(&#039;^%s*%[([^%]]*)%]%s*(.*)&#039;)&lt;br /&gt;
	if title then&lt;br /&gt;
		frame.title = title&lt;br /&gt;
		frameText = rest&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Text&lt;br /&gt;
	rest, frame.text = frameText:match(&#039;([^%]]*)%s*%[([^%]]*)%]%s*$&#039;)&lt;br /&gt;
	if frame.text then&lt;br /&gt;
		frameText = rest&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Mod&lt;br /&gt;
	local mod, rest = frameText:match(&#039;^([^:]+):%s*(.*)&#039;)&lt;br /&gt;
	if mod and not vanilla[mod:lower()] then&lt;br /&gt;
		frame.mod = mod&lt;br /&gt;
		frameText = rest&lt;br /&gt;
	elseif mod then&lt;br /&gt;
		frameText = rest&lt;br /&gt;
	else&lt;br /&gt;
		frameText = frameText:gsub(&#039;^:&#039;, &#039;&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Name and number&lt;br /&gt;
	local name, num = frameText:match(&#039;(.*),%s*(%d+)&#039;)&lt;br /&gt;
	if num then&lt;br /&gt;
		frame.name = name:match(&amp;quot;^%s*(.-)%s*$&amp;quot;)&lt;br /&gt;
		frame.num = math.floor(tonumber(num))&lt;br /&gt;
		if frame.num &amp;lt; 2 then&lt;br /&gt;
			frame.num = nil&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		frame.name = frameText:match(&amp;quot;^%s*(.-)%s*$&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return frame&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Utility functions (unchanged)&lt;br /&gt;
function p.stringifyFrame(frame)&lt;br /&gt;
	if not frame.name then&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return string.format(&lt;br /&gt;
		&#039;[%s]%s:%s,%s[%s]&#039;,&lt;br /&gt;
		frame.title or &#039;&#039;,&lt;br /&gt;
		frame.mod or &#039;Minecraft&#039;,&lt;br /&gt;
		frame.name,&lt;br /&gt;
		frame.num or &#039;&#039;,&lt;br /&gt;
		frame.text or &#039;&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.stringifyFrames(frames)&lt;br /&gt;
	local result = {}&lt;br /&gt;
	for i, frame in ipairs(frames) do&lt;br /&gt;
		if frame[1] then&lt;br /&gt;
			result[i] = &#039;{&#039; .. p.stringifyFrames(frame) .. &#039;}&#039;&lt;br /&gt;
		else&lt;br /&gt;
			result[i] = p.stringifyFrame(frame)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(result, &#039;;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=Template:VH3Remastered&amp;diff=11411</id>
		<title>Template:VH3Remastered</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=Template:VH3Remastered&amp;diff=11411"/>
		<updated>2026-03-26T16:57:23Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
[[Category:Vault Hunters 3rd Edition Remastered]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=Template:VH3Remastered/doc&amp;diff=11410</id>
		<title>Template:VH3Remastered/doc</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=Template:VH3Remastered/doc&amp;diff=11410"/>
		<updated>2026-03-26T16:56:56Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Created page with &amp;quot;{{documentation header}} &amp;lt;!-- documentation here --&amp;gt; == Usage ==  Place &amp;lt;pre&amp;gt;{{VH3Remastered}}&amp;lt;/pre&amp;gt; at the bottom of a page to add it to the category  &amp;lt;includeonly&amp;gt;&amp;lt;/includeonly&amp;gt; &amp;lt;noinclude&amp;gt; &amp;lt;!-- documentation categories/interwikis here --&amp;gt; &amp;lt;/noinclude&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{documentation header}}&lt;br /&gt;
&amp;lt;!-- documentation here --&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Place &amp;lt;pre&amp;gt;{{VH3Remastered}}&amp;lt;/pre&amp;gt; at the bottom of a page to add it to the category&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- documentation categories/interwikis here --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=Template:VH3Remastered&amp;diff=11409</id>
		<title>Template:VH3Remastered</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=Template:VH3Remastered&amp;diff=11409"/>
		<updated>2026-03-26T16:55:53Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
[[Category:Vault Hunters 3rd Edition Remastered]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=Template:VH3Remastered&amp;diff=11408</id>
		<title>Template:VH3Remastered</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=Template:VH3Remastered&amp;diff=11408"/>
		<updated>2026-03-26T16:55:10Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Created page with &amp;quot;Category:Vault Hunters 3rd Edition Remastered&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Vault Hunters 3rd Edition Remastered]]&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Meat.png&amp;diff=11407</id>
		<title>File:InvItem Vault Meat.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Meat.png&amp;diff=11407"/>
		<updated>2026-03-26T16:45:40Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Vault Meat.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Upaline_Gemstone.png&amp;diff=11406</id>
		<title>File:InvItem Upaline Gemstone.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Upaline_Gemstone.png&amp;diff=11406"/>
		<updated>2026-03-26T16:45:40Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Upaline Gemstone.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Xenium_Gemstone.png&amp;diff=11405</id>
		<title>File:InvItem Xenium Gemstone.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Xenium_Gemstone.png&amp;diff=11405"/>
		<updated>2026-03-26T16:45:40Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Xenium Gemstone.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Wutodic_Mass.png&amp;diff=11404</id>
		<title>File:InvItem Wutodic Mass.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Wutodic_Mass.png&amp;diff=11404"/>
		<updated>2026-03-26T16:45:40Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Wutodic Mass.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Wutodic_Silver_Nugget.png&amp;diff=11403</id>
		<title>File:InvItem Wutodic Silver Nugget.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Wutodic_Silver_Nugget.png&amp;diff=11403"/>
		<updated>2026-03-26T16:45:40Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Wutodic Silver Nugget.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Wutodic_Gemstone.png&amp;diff=11402</id>
		<title>File:InvItem Wutodic Gemstone.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Wutodic_Gemstone.png&amp;diff=11402"/>
		<updated>2026-03-26T16:45:40Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Wutodic Gemstone.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Xen_Jewel.png&amp;diff=11401</id>
		<title>File:InvItem Xen Jewel.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Xen_Jewel.png&amp;diff=11401"/>
		<updated>2026-03-26T16:45:40Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Xen Jewel.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Wutodic_Silver_Ingot.png&amp;diff=11400</id>
		<title>File:InvItem Wutodic Silver Ingot.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Wutodic_Silver_Ingot.png&amp;diff=11400"/>
		<updated>2026-03-26T16:45:40Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Wutodic Silver Ingot.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Wooden_Catalyst_Inhibitor.png&amp;diff=11399</id>
		<title>File:InvItem Wooden Catalyst Inhibitor.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Wooden_Catalyst_Inhibitor.png&amp;diff=11399"/>
		<updated>2026-03-26T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Wooden Catalyst Inhibitor.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Wooden_Shard.png&amp;diff=11398</id>
		<title>File:InvItem Wooden Shard.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Wooden_Shard.png&amp;diff=11398"/>
		<updated>2026-03-26T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Wooden Shard.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Wooden_Chest_Scroll.png&amp;diff=11397</id>
		<title>File:InvItem Wooden Chest Scroll.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Wooden_Chest_Scroll.png&amp;diff=11397"/>
		<updated>2026-03-26T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Wooden Chest Scroll.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Wood_Chunk.png&amp;diff=11396</id>
		<title>File:InvItem Wood Chunk.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Wood_Chunk.png&amp;diff=11396"/>
		<updated>2026-03-26T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Wood Chunk.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vaulterite_Ingot.png&amp;diff=11395</id>
		<title>File:InvItem Vaulterite Ingot.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vaulterite_Ingot.png&amp;diff=11395"/>
		<updated>2026-03-26T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Vaulterite Ingot.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Wild_Focus.png&amp;diff=11394</id>
		<title>File:InvItem Wild Focus.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Wild_Focus.png&amp;diff=11394"/>
		<updated>2026-03-26T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Wild Focus.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Wardens_Pearl.png&amp;diff=11393</id>
		<title>File:InvItem Wardens Pearl.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Wardens_Pearl.png&amp;diff=11393"/>
		<updated>2026-03-26T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Wardens Pearl.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Waxing_Focus.png&amp;diff=11392</id>
		<title>File:InvItem Waxing Focus.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Waxing_Focus.png&amp;diff=11392"/>
		<updated>2026-03-26T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Waxing Focus.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Void_Liquid_Bucket.png&amp;diff=11391</id>
		<title>File:InvItem Void Liquid Bucket.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Void_Liquid_Bucket.png&amp;diff=11391"/>
		<updated>2026-03-26T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Void Liquid Bucket.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Waning_Focus.png&amp;diff=11390</id>
		<title>File:InvItem Waning Focus.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Waning_Focus.png&amp;diff=11390"/>
		<updated>2026-03-26T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Waning Focus.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vorpal_Focus.png&amp;diff=11389</id>
		<title>File:InvItem Vorpal Focus.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vorpal_Focus.png&amp;diff=11389"/>
		<updated>2026-03-26T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Vorpal Focus.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Rock.png&amp;diff=11388</id>
		<title>File:InvItem Vault Rock.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Rock.png&amp;diff=11388"/>
		<updated>2026-03-26T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Vault Rock.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Sack.png&amp;diff=11387</id>
		<title>File:InvItem Vault Sack.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Sack.png&amp;diff=11387"/>
		<updated>2026-03-26T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Vault Sack.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Velvet.png&amp;diff=11386</id>
		<title>File:InvItem Velvet.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Velvet.png&amp;diff=11386"/>
		<updated>2026-03-26T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Velvet.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Sweets.png&amp;diff=11385</id>
		<title>File:InvItem Vault Sweets.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Sweets.png&amp;diff=11385"/>
		<updated>2026-03-26T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Vault Sweets.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Stone.png&amp;diff=11384</id>
		<title>File:InvItem Vault Stone.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Stone.png&amp;diff=11384"/>
		<updated>2026-03-26T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Vault Stone.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Scrap.png&amp;diff=11383</id>
		<title>File:InvItem Vault Scrap.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Scrap.png&amp;diff=11383"/>
		<updated>2026-03-26T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Vault Scrap.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Crystal_Boss_Timekeeper.png&amp;diff=11382</id>
		<title>File:InvItem Vault Crystal Boss Timekeeper.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Crystal_Boss_Timekeeper.png&amp;diff=11382"/>
		<updated>2026-03-26T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Crystal_Boss_Benevolent.png&amp;diff=11381</id>
		<title>File:InvItem Vault Crystal Boss Benevolent.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Crystal_Boss_Benevolent.png&amp;diff=11381"/>
		<updated>2026-03-26T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Crystal_Boss_Omniscient.png&amp;diff=11380</id>
		<title>File:InvItem Vault Crystal Boss Omniscient.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Crystal_Boss_Omniscient.png&amp;diff=11380"/>
		<updated>2026-03-26T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Crystal_Boss_Malevolence.png&amp;diff=11379</id>
		<title>File:InvItem Vault Crystal Boss Malevolence.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Crystal_Boss_Malevolence.png&amp;diff=11379"/>
		<updated>2026-03-26T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Uploaded with SimpleBatchUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Plating.png&amp;diff=11378</id>
		<title>File:InvItem Vault Plating.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Plating.png&amp;diff=11378"/>
		<updated>2026-03-26T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Vault Plating.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Map.png&amp;diff=11377</id>
		<title>File:InvItem Vault Map.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Map.png&amp;diff=11377"/>
		<updated>2026-03-26T16:45:39Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Vault Map.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Magnet_Weak.png&amp;diff=11376</id>
		<title>File:InvItem Vault Magnet Weak.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Magnet_Weak.png&amp;diff=11376"/>
		<updated>2026-03-26T16:45:38Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Vault Magnet Weak.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Magnet_Strong.png&amp;diff=11375</id>
		<title>File:InvItem Vault Magnet Strong.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Magnet_Strong.png&amp;diff=11375"/>
		<updated>2026-03-26T16:45:38Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Vault Magnet Strong.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Magnet_Omega.png&amp;diff=11374</id>
		<title>File:InvItem Vault Magnet Omega.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Magnet_Omega.png&amp;diff=11374"/>
		<updated>2026-03-26T16:45:38Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Vault Magnet Omega.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Charm.png&amp;diff=11373</id>
		<title>File:InvItem Vault Charm.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Charm.png&amp;diff=11373"/>
		<updated>2026-03-26T16:45:38Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Vault Charm.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Catalyst_Chaos.png&amp;diff=11372</id>
		<title>File:InvItem Vault Catalyst Chaos.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Catalyst_Chaos.png&amp;diff=11372"/>
		<updated>2026-03-26T16:45:38Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Vault Catalyst Chaos.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Alloy.png&amp;diff=11371</id>
		<title>File:InvItem Vault Alloy.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Alloy.png&amp;diff=11371"/>
		<updated>2026-03-26T16:45:38Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Vault Alloy.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Upal_Jewel.png&amp;diff=11370</id>
		<title>File:InvItem Upal Jewel.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Upal_Jewel.png&amp;diff=11370"/>
		<updated>2026-03-26T16:45:38Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Upal Jewel.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Catalyst.png&amp;diff=11369</id>
		<title>File:InvItem Vault Catalyst.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Catalyst.png&amp;diff=11369"/>
		<updated>2026-03-26T16:45:38Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Vault Catalyst.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Catalyst_Fragment.png&amp;diff=11368</id>
		<title>File:InvItem Vault Catalyst Fragment.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Catalyst_Fragment.png&amp;diff=11368"/>
		<updated>2026-03-26T16:45:38Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Vault Catalyst Fragment.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Apple.png&amp;diff=11367</id>
		<title>File:InvItem Vault Apple.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Vault_Apple.png&amp;diff=11367"/>
		<updated>2026-03-26T16:45:38Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Vault Apple.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Unique_Crate_Scroll.png&amp;diff=11366</id>
		<title>File:InvItem Unique Crate Scroll.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Unique_Crate_Scroll.png&amp;diff=11366"/>
		<updated>2026-03-26T16:45:38Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Unique Crate Scroll.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Unknown_Item.png&amp;diff=11365</id>
		<title>File:InvItem Unknown Item.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Unknown_Item.png&amp;diff=11365"/>
		<updated>2026-03-26T16:45:38Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Unknown Item.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Unidentified_Treasure_Key.png&amp;diff=11364</id>
		<title>File:InvItem Unidentified Treasure Key.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Unidentified_Treasure_Key.png&amp;diff=11364"/>
		<updated>2026-03-26T16:45:38Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Unidentified Treasure Key.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
	<entry>
		<id>https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Unique_Codex.png&amp;diff=11363</id>
		<title>File:InvItem Unique Codex.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vaulthunters.gg/index.php?title=File:InvItem_Unique_Codex.png&amp;diff=11363"/>
		<updated>2026-03-26T16:45:38Z</updated>

		<summary type="html">&lt;p&gt;Mnooseman: Mnooseman uploaded a new version of File:InvItem Unique Codex.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mnooseman</name></author>
	</entry>
</feed>