<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://ffxiv.consolegameswiki.com/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Erin+Umbreon</id>
	<title>Final Fantasy XIV Online Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://ffxiv.consolegameswiki.com/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Erin+Umbreon"/>
	<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/wiki/Special:Contributions/Erin_Umbreon"/>
	<updated>2026-11-02T05:05:33Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Icon&amp;diff=1585990</id>
		<title>Module:Icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Icon&amp;diff=1585990"/>
		<updated>2026-10-30T17:57:35Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: fix behavior when both type and frameType are not provided&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[&lt;br /&gt;
	A module for rendering icons from the game.&lt;br /&gt;
&lt;br /&gt;
	Provides both library functions for use in other modules, and template&lt;br /&gt;
	functions for use with {{#invoke}}.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
-- This table defines how icons for various types of things should be rendered.&lt;br /&gt;
-- Each key is a possible value of [[Property:Has context]], lowercased.&lt;br /&gt;
-- Values can be one of:&lt;br /&gt;
-- * &amp;quot;none&amp;quot;, for non-frame icons&lt;br /&gt;
-- * &amp;quot;standard&amp;quot;, for frame icons using the standard frame&lt;br /&gt;
-- * &amp;quot;hq&amp;quot;, for frame icons using the HQ item frame&lt;br /&gt;
-- * &amp;quot;trait&amp;quot;, for frame icons using the trait frame&lt;br /&gt;
-- * &amp;quot;achievement&amp;quot;, for frame icons using the achievement frame&lt;br /&gt;
local iconFrames = {&lt;br /&gt;
	[&amp;quot;achievement&amp;quot;] = &amp;quot;achievement&amp;quot;,&lt;br /&gt;
	[&amp;quot;action&amp;quot;] = &amp;quot;standard&amp;quot;,&lt;br /&gt;
	[&amp;quot;critical engagement&amp;quot;] = &amp;quot;none&amp;quot;,&lt;br /&gt;
	[&amp;quot;currency&amp;quot;] = &amp;quot;none&amp;quot;,&lt;br /&gt;
	[&amp;quot;duty&amp;quot;] = &amp;quot;none&amp;quot;,&lt;br /&gt;
	[&amp;quot;enemy&amp;quot;] = &amp;quot;none&amp;quot;,&lt;br /&gt;
	[&amp;quot;quest&amp;quot;] = &amp;quot;none&amp;quot;,&lt;br /&gt;
	[&amp;quot;fate&amp;quot;] = &amp;quot;none&amp;quot;,&lt;br /&gt;
	[&amp;quot;item&amp;quot;] = &amp;quot;standard&amp;quot;,&lt;br /&gt;
	[&amp;quot;location&amp;quot;] = &amp;quot;none&amp;quot;,&lt;br /&gt;
	[&amp;quot;minion&amp;quot;] = &amp;quot;standard&amp;quot;,&lt;br /&gt;
	[&amp;quot;mount&amp;quot;] = &amp;quot;standard&amp;quot;,&lt;br /&gt;
	[&amp;quot;stellar mission&amp;quot;] = &amp;quot;none&amp;quot;,&lt;br /&gt;
	[&amp;quot;trait&amp;quot;] = &amp;quot;trait&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
-- default for anything not listed in this table is &amp;quot;standard&amp;quot;&lt;br /&gt;
-- TODO: remove this once we have a comprehensive list of &amp;quot;Has context&amp;quot; values&lt;br /&gt;
--       and we can enumerate all of them instead of relying on this&lt;br /&gt;
setmetatable(iconFrames, {__index = function() return &amp;quot;standard&amp;quot; end})&lt;br /&gt;
&lt;br /&gt;
-- CSS classes assigned to a frame icon based on desired frame type&lt;br /&gt;
local frameClasses = {&lt;br /&gt;
	standard = nil, -- default in CSS&lt;br /&gt;
	trait = &amp;quot;standard-frame-icon-trait&amp;quot;,&lt;br /&gt;
	achievement = &amp;quot;standard-frame-icon-achievement&amp;quot;,&lt;br /&gt;
	hq = &amp;quot;standard-frame-icon-hq&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- CSS classes assigned to frame icons at different sizes&lt;br /&gt;
local frameIconSizeClasses = {&lt;br /&gt;
	small = &amp;quot;small&amp;quot;,&lt;br /&gt;
	mid = &amp;quot;mid&amp;quot;,&lt;br /&gt;
	big = nil, -- default in CSS&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Pixel dimensions of frame icons at different sizes&lt;br /&gt;
local frameIconSizeDimensions = {&lt;br /&gt;
	small = 20,&lt;br /&gt;
	mid = 30,&lt;br /&gt;
	big = 40&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Pixel dimensions of non-frame icons at different sizes&lt;br /&gt;
local plainIconSizeDimensions = {&lt;br /&gt;
	small = 24,&lt;br /&gt;
	mid = 36,&lt;br /&gt;
	big = 48,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--- Renders a non-framed icon from the game.&lt;br /&gt;
-- @param icon&lt;br /&gt;
-- @param link&lt;br /&gt;
-- @param size&lt;br /&gt;
-- @return wikitext&lt;br /&gt;
function p.plainIcon(args)&lt;br /&gt;
	return mw.html.create(&amp;quot;span&amp;quot;):wikitext(&lt;br /&gt;
		(&amp;quot;[[%s|%dpx|link=%s%s]]&amp;quot;):format(&lt;br /&gt;
			args.icon,&lt;br /&gt;
			plainIconSizeDimensions[args.size],&lt;br /&gt;
			args.link,&lt;br /&gt;
			args.alt and (&amp;quot;|alt=&amp;quot; .. args.alt) or &amp;quot;&amp;quot;&lt;br /&gt;
		)&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function statusIcon(args)&lt;br /&gt;
	local result = mw.html.create(&amp;quot;span&amp;quot;):addClass(&amp;quot;text-icon&amp;quot;):wikitext(&lt;br /&gt;
		(&amp;quot;[[%s|%dpx|link=%s%s]]&amp;quot;):format(&lt;br /&gt;
			args.icon,&lt;br /&gt;
			plainIconSizeDimensions[args.size],&lt;br /&gt;
			args.link,&lt;br /&gt;
			args.alt and (&amp;quot;|alt=&amp;quot; .. args.alt) or &amp;quot;&amp;quot;&lt;br /&gt;
		)&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	if args.frame == &amp;quot;buff&amp;quot; then&lt;br /&gt;
		result:css({position = &amp;quot;relative&amp;quot;, top = &amp;quot;2px&amp;quot;})&lt;br /&gt;
	elseif args.frame == &amp;quot;debuff&amp;quot; then&lt;br /&gt;
		result:css({position = &amp;quot;relative&amp;quot;, bottom = &amp;quot;2px&amp;quot;})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Renders frame icon dye slots if there are any&lt;br /&gt;
-- @return HTML builder node&lt;br /&gt;
local function dyeSlots(dyeCount)&lt;br /&gt;
	if not dyeCount or dyeCount &amp;lt; 1 then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local span = mw.html.create(&amp;quot;span&amp;quot;):addClass(&amp;quot;standard-frame-icon-dye-slots&amp;quot;)&lt;br /&gt;
	for i = 1, dyeCount do&lt;br /&gt;
		span:node(mw.html.create(&amp;quot;span&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	return span&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Renders an icon image inside a frame.&lt;br /&gt;
-- @param icon Image to use as icon, including &amp;quot;File:&amp;quot; namespace and &amp;quot;.png&amp;quot; extension&lt;br /&gt;
-- @param link Optional link for the icon, defaults to the icon image&#039;s file page&lt;br /&gt;
-- @param size Icon size, one of &amp;quot;small&amp;quot;, &amp;quot;mid&amp;quot;, &amp;quot;big&amp;quot;&lt;br /&gt;
-- @param frame Optional frame type, one of &amp;quot;standard&amp;quot; (default), &amp;quot;trait&amp;quot;, &amp;quot;achievement&amp;quot;, &amp;quot;hq&amp;quot;&lt;br /&gt;
-- @param dyeCount Optional number of dye slots for items. One of 0 (default), 1, 2&lt;br /&gt;
-- @return HTML builder node&lt;br /&gt;
function p.frameIcon(args)&lt;br /&gt;
	args.dyeCount = args.dyeCount or 0&lt;br /&gt;
	args.link = args.link or args.icon -- default to icon page if no link is provided&lt;br /&gt;
&lt;br /&gt;
	return mw.html.create(&amp;quot;span&amp;quot;)&lt;br /&gt;
		:addClass(&amp;quot;plainlinks&amp;quot;)&lt;br /&gt;
		:addClass(&amp;quot;standard-frame-icon&amp;quot;)&lt;br /&gt;
		:addClass(frameClasses[args.frame])&lt;br /&gt;
		:addClass(frameIconSizeClasses[args.size])&lt;br /&gt;
		:wikitext(&lt;br /&gt;
			(&amp;quot;[[%s|%dpx|link=%s%s]]&amp;quot;):format(&lt;br /&gt;
				args.icon,&lt;br /&gt;
				frameIconSizeDimensions[args.size],&lt;br /&gt;
				args.link,&lt;br /&gt;
				args.alt and (&amp;quot;|alt=&amp;quot; .. args.alt) or &amp;quot;&amp;quot;&lt;br /&gt;
			)&lt;br /&gt;
		)&lt;br /&gt;
		:node(dyeSlots(args.dyeCount))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- internal helper for generic template usage where type of icon isn&#039;t known beforehand and we&#039;re relying on SMW data&lt;br /&gt;
-- @param icon&lt;br /&gt;
-- @param alt&lt;br /&gt;
-- @param link&lt;br /&gt;
-- @param size&lt;br /&gt;
-- @param type&lt;br /&gt;
-- @param frameType&lt;br /&gt;
-- @param hq For items only&lt;br /&gt;
-- @param dyeCount For items only&lt;br /&gt;
function p.gameIcon(args)&lt;br /&gt;
	-- normalize common optional parameters&lt;br /&gt;
	local size = args.size&lt;br /&gt;
	if not size or size == &amp;quot;&amp;quot; then&lt;br /&gt;
		size = &amp;quot;small&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local link = args.link or args.icon -- default to icon page if no link is provided&lt;br /&gt;
&lt;br /&gt;
	local alt = args.alt&lt;br /&gt;
	if alt == &amp;quot;&amp;quot; then&lt;br /&gt;
		alt = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- if there is no icon, render a missing icon&lt;br /&gt;
	local icon = args.icon&lt;br /&gt;
	if not icon or icon == &amp;quot;&amp;quot; then&lt;br /&gt;
		return p.frameIcon({&lt;br /&gt;
			icon = &amp;quot;File:Unknown item icon.png&amp;quot;,&lt;br /&gt;
			link = link,&lt;br /&gt;
			size = size,&lt;br /&gt;
			frame = &amp;quot;standard&amp;quot;,&lt;br /&gt;
			alt = &amp;quot;Unknown icon&amp;quot;,&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Identify frame type. If frame type is provided directly, use that;&lt;br /&gt;
	-- otherwise, look up frame type based on object type/&amp;quot;Has context&amp;quot; value&lt;br /&gt;
	local frameType = args.frameType&lt;br /&gt;
	if not frameType or frameType == &amp;quot;&amp;quot; then&lt;br /&gt;
        local type = args.type or &amp;quot;&amp;quot; -- if type is nil, allow table subscription to be nil instead of throwing&lt;br /&gt;
		frameType = iconFrames[type:lower()]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- plain icons&lt;br /&gt;
	if frameType == &amp;quot;none&amp;quot; then&lt;br /&gt;
		return p.plainIcon({&lt;br /&gt;
			icon = icon,&lt;br /&gt;
			alt = alt,&lt;br /&gt;
			link = link,&lt;br /&gt;
			size = size,&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- status effect icons&lt;br /&gt;
	if ({buff = true, debuff = true, status = true})[frameType] then&lt;br /&gt;
		return statusIcon({&lt;br /&gt;
			frame = frameType,&lt;br /&gt;
			icon = icon,&lt;br /&gt;
			alt = alt,&lt;br /&gt;
			link = link,&lt;br /&gt;
			size = size,&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- frame icons&lt;br /&gt;
	-- upgrade standard frame to HQ frame if requested&lt;br /&gt;
	if frameType == &amp;quot;standard&amp;quot; and args.hq then&lt;br /&gt;
		frameType = &amp;quot;hq&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return p.frameIcon({&lt;br /&gt;
		icon = icon,&lt;br /&gt;
		alt = alt,&lt;br /&gt;
		link = link,&lt;br /&gt;
		size = size,&lt;br /&gt;
		frame = frameType,&lt;br /&gt;
		dyeCount = args.dyeCount,&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- function to be invoked from templates that don&#039;t display labels&lt;br /&gt;
function p.renderGameIcon(frame)&lt;br /&gt;
	return p.gameIcon({&lt;br /&gt;
		icon = frame.args.icon,&lt;br /&gt;
		alt = frame.args.alt,&lt;br /&gt;
		link = frame.args.link,&lt;br /&gt;
		size = frame.args.size,&lt;br /&gt;
		type = frame.args.type,&lt;br /&gt;
		frameType = frame.args.frameType,&lt;br /&gt;
		hq = yesno(frame.args.hq),&lt;br /&gt;
		dyeCount = tonumber(frame.args.dyeCount) or 0,&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- implementation for {{Game icon}} and other templates that do display labels&lt;br /&gt;
function p.gameIconWithLabel(args)&lt;br /&gt;
	-- if qty is empty then don&#039;t render it&lt;br /&gt;
	local qty = args.qty&lt;br /&gt;
	if qty == &amp;quot;&amp;quot; then&lt;br /&gt;
		qty = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- if text is empty or set to &amp;quot;x&amp;quot; (in template usage) don&#039;t render it&lt;br /&gt;
	local text = args.text&lt;br /&gt;
	if text == &amp;quot;&amp;quot; or text == &amp;quot;x&amp;quot; then&lt;br /&gt;
		text = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- if alt is empty, use text by default&lt;br /&gt;
	-- (intentionally setting alt to be empty should never be supported, it&#039;s&lt;br /&gt;
	-- an important accessibility property and hurts nothing to be present)&lt;br /&gt;
	local alt = args.alt&lt;br /&gt;
	if not alt or alt == &amp;quot;&amp;quot; then&lt;br /&gt;
		alt = text&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local span = mw.html.create(&amp;quot;span&amp;quot;):addClass(&amp;quot;icon-label-container&amp;quot;)&lt;br /&gt;
	-- set text wrapping&lt;br /&gt;
	if not args.allowWrap then&lt;br /&gt;
		span:addClass(&amp;quot;nowrap&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- render icon using other passed parameters&lt;br /&gt;
	local renderedIcon = p.gameIcon({&lt;br /&gt;
		icon = args.icon,&lt;br /&gt;
		alt = alt,&lt;br /&gt;
		link = args.link,&lt;br /&gt;
		size = args.size,&lt;br /&gt;
		type = args.type,&lt;br /&gt;
		frameType = args.frameType,&lt;br /&gt;
		hq = args.hq,&lt;br /&gt;
		dyeCount = args.dyeCount,&lt;br /&gt;
	})&lt;br /&gt;
	span:node(renderedIcon)&lt;br /&gt;
&lt;br /&gt;
	-- render quantity, if present&lt;br /&gt;
	if qty then&lt;br /&gt;
		span:wikitext(&amp;quot; &amp;quot;)&lt;br /&gt;
		local qtyTextLabel = qty:gsub(&amp;quot;-&amp;quot;, &amp;quot;–&amp;quot;)&lt;br /&gt;
		local qtySpokenLabel = qty:gsub(&amp;quot;-&amp;quot;, &amp;quot; to &amp;quot;)&lt;br /&gt;
		span:node(mw.html.create(&amp;quot;span&amp;quot;)&lt;br /&gt;
			:wikitext(qtyTextLabel)&lt;br /&gt;
			:attr(&amp;quot;aria-label&amp;quot;, qtySpokenLabel)&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- render text link, if any&lt;br /&gt;
	if text then&lt;br /&gt;
		-- if there is a text label, hide the icon to screen readers so only the text label is spoken&lt;br /&gt;
		renderedIcon:attr(&amp;quot;aria-hidden&amp;quot;, &amp;quot;true&amp;quot;)&lt;br /&gt;
		span:node((&amp;quot; [[%s|%s]]&amp;quot;):format(args.link or args.icon, text))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return span&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderGameIconWithLabel(frame)&lt;br /&gt;
	return p.gameIconWithLabel({&lt;br /&gt;
		-- gameIcon args&lt;br /&gt;
		icon = frame.args.icon,&lt;br /&gt;
		alt = frame.args.alt,&lt;br /&gt;
		link = frame.args.link,&lt;br /&gt;
		size = frame.args.size,&lt;br /&gt;
		type = frame.args.type,&lt;br /&gt;
		frameType = frame.args.frameType,&lt;br /&gt;
		hq = yesno(frame.args.hq),&lt;br /&gt;
		dyeCount = tonumber(frame.args.dyeCount) or 0,&lt;br /&gt;
&lt;br /&gt;
		-- label args&lt;br /&gt;
		qty = frame.args.qty,&lt;br /&gt;
		text = frame.args.text,&lt;br /&gt;
		allowWrap = yesno(frame.args.allowWrap),&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Game_icon/doc&amp;diff=1585747</id>
		<title>Template:Game icon/doc</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Game_icon/doc&amp;diff=1585747"/>
		<updated>2026-10-30T03:55:35Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: remove more references to {{game icon format}}&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{documentation subpage}}&lt;br /&gt;
{{lua|Module:Game icon}}&lt;br /&gt;
&lt;br /&gt;
 {&amp;lt;nowiki/&amp;gt;{&#039;&#039;&#039;game icon&#039;&#039;&#039;|&#039;&#039;page&#039;&#039;|&#039;&#039;text&#039;&#039;|size=|alt=|hq=|qty=|wrap=}}&lt;br /&gt;
&lt;br /&gt;
Links to something in the game and displays its icon alongside the link. This template supports basically anything - items, actions, traits, quests, and anything else that uses [[Property:Has game icon]]. &lt;br /&gt;
&lt;br /&gt;
This template can also be used via the shortcut {{tlx|i}} (for &amp;quot;icon&amp;quot;) - prefer the shortcut for brevity, especially when there are lots of icons in a single section.&lt;br /&gt;
&lt;br /&gt;
This template is implemented in Lua, and uses a Semantic MediaWiki query to retrieve icon information from the given page. The helper function {{function link|Module:Icon#gameIconWithLabel}} is used to actually render the icon.&lt;br /&gt;
&lt;br /&gt;
Note that this template queries the given page for its attributes. It is designed for ease of use in text, but &#039;&#039;&#039;it should be avoided in semantically generated lists&#039;&#039;&#039;. If you are creating a table generated by a semantic query, the query should retrieve all the necessary icon data (see &amp;quot;Prerequisites&amp;quot; below), and pass each element&#039;s values directly to the formatting templates or functions (such as {{function link|Module:Icon#renderGameIcon}}). That will avoid generating additional queries for every element in the list (a.k.a. &amp;quot;[https://medium.com/databases-in-simple-words/the-n-1-database-query-problem-a-simple-explanation-and-solutions-ef11751aef8a N + 1]&amp;quot; queries).&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
In order for {{tl|game icon}} to work with a given page, the page needs a [[Property:Has game icon|Has game icon]] value and either:&lt;br /&gt;
*  a [[Property:Has context|Has context]] value (example: [[Special:Browse/:Doman-5FIron-5FDaggers |Doman Iron Daggers]])&lt;br /&gt;
OR&lt;br /&gt;
* a [[Property:Has game icon frame type|Has game icon frame type]] value (example: [[Special:Browse/:Mount-5FSpeed|Mount Speed]])&lt;br /&gt;
&lt;br /&gt;
[[Property:Has game icon|Has game icon]] and [[Property:Has context|Has context]] should be set by the relevant infobox. For pages without an infobox, such as [[Mount Speed]], {{tl|Lead icon}} should be used to specify the relevant icon and icon frame type for the page. &lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
=== Base parameters ===&lt;br /&gt;
; &#039;&#039;name&#039;&#039; (unnamed parameter 1)&lt;br /&gt;
: Item name. Defaults to &amp;quot;Item&amp;quot;.&lt;br /&gt;
; &#039;&#039;text&#039;&#039; (unnamed parameter 2)&lt;br /&gt;
; alt&lt;br /&gt;
: Optional. Link text; defaults to [[Property:Has canonical name|canonical name]]. Set to &#039;&#039;&#039;x&#039;&#039;&#039; to prevent link text from appearing. Unnamed parameter 2 has precedence over &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; named parameter.&lt;br /&gt;
; size&lt;br /&gt;
: Optional. Can be &#039;&#039;&#039;small&#039;&#039;&#039; (default), &#039;&#039;&#039;mid&#039;&#039;&#039;, or &#039;&#039;&#039;big&#039;&#039;&#039;.&lt;br /&gt;
; wrap&lt;br /&gt;
: Set to anything to force text to wrap. Generally only used in infoboxes. Will not wrap text by default.&lt;br /&gt;
&lt;br /&gt;
=== Item parameters ===&lt;br /&gt;
; hq&lt;br /&gt;
: Optional. Displays a {{HQ}} [[high quality]] item.&lt;br /&gt;
&lt;br /&gt;
=== Item/currency parameters ===&lt;br /&gt;
; qty&lt;br /&gt;
: Optional. Quantity of currency or items, displayed between icon and text. Mostly used by {{tl|Vendor table row}} to display vendor/exchange costs. Accepts a number or a hyphenated range.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;!-- Template categories go here --&amp;gt;&lt;br /&gt;
[[Category:Icon templates]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Template Data ==&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Page&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Target page&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Link text&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Text displayed in the link. Defaults to the linked page&#039;s canonical name or pagename. Use \&amp;quot;x\&amp;quot; to hide the link text and display only the icon.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;line&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;alt&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;hq&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;HQ&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;For items only. Shows the high quality version of the item in the icon.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
			&amp;quot;autovalue&amp;quot;: &amp;quot;0&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;size&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Size&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Display size of the icon.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;suggestedvalues&amp;quot;: [&lt;br /&gt;
				&amp;quot;small&amp;quot;,&lt;br /&gt;
				&amp;quot;mid&amp;quot;,&lt;br /&gt;
				&amp;quot;big&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;small&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;qty&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Quantity&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;For items and currencies only. Quantity of currency or items represented. Accepts a number or a hyphenated range.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;wrap&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Wrap&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Force link text to wrap. Generally only used in other templates like infoboxes.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;Links to something in the game and displays its icon alongside the link.&amp;quot;,&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;inline&amp;quot;,&lt;br /&gt;
	&amp;quot;paramOrder&amp;quot;: [&lt;br /&gt;
		&amp;quot;1&amp;quot;,&lt;br /&gt;
		&amp;quot;2&amp;quot;,&lt;br /&gt;
		&amp;quot;size&amp;quot;,&lt;br /&gt;
		&amp;quot;hq&amp;quot;,&lt;br /&gt;
		&amp;quot;qty&amp;quot;,&lt;br /&gt;
		&amp;quot;wrap&amp;quot;&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Crafting&amp;diff=1585689</id>
		<title>Crafting</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Crafting&amp;diff=1585689"/>
		<updated>2026-10-29T21:51:37Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: /* Experience Boost */ convert status effects to {{i}} where possible&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lead icon|Crafting_icon.png|frame=none}} [[File:Crafting and Gathering Concept1.jpg|right|400px]]&lt;br /&gt;
[[File:50 Gatherer Crafter Art PUB.jpg|right|350px]]&lt;br /&gt;
[[File:FFXIV TGS MediaKit 08.jpg|right|350px]]&lt;br /&gt;
There are eight crafting [[classes]] in [[Final Fantasy XIV]], also known as &#039;&#039;&#039;Disciples of the Hand&#039;&#039;&#039; or &#039;&#039;&#039;DoH&#039;&#039;&#039;, with each job specializing in crafting, repairing, melding and desynthesizing specific item types, as well as producing vanity items, such as [[glamours]] and furniture for [[Player Housing|houses]] and [[apartments]].&lt;br /&gt;
&lt;br /&gt;
The 8 Disciples of the Hand classes are {{i|Carpenter}}, {{i|Blacksmith}}, {{i|Armorer}}, {{i|Goldsmith}}, {{i|Leatherworker}}, {{i|Weaver}}, {{i|Alchemist}}, and {{i|Culinarian}}.&lt;br /&gt;
&lt;br /&gt;
To become a Disciple of the Hand, players require at least one level 10 Disciple of War or Magic. If eligible, visit the [[guild]] associated with the desired craft to begin your very first job quest. It is recommended to level most or all of the classes together as they feed each other with intermediate materials and can share all gear besides [[tools]].&lt;br /&gt;
&lt;br /&gt;
In addition to crafting, these classes provide the following support functions:&lt;br /&gt;
*{{i|Repair (action)}}: To repair any item yourself, you&#039;ll require a certain level in a corresponding crafting class. This applies to every piece of equipment, craftable or not. You don&#039;t have to switch to the class in order to repair the item. Unlike NPC repairs, this can restore condition up to 199%. The higher the level of the equipment, the higher the grade of [[Dark Matter]] is required to do this.&lt;br /&gt;
*{{i|Materia Melding}}: This likewise requires a certain level in the corresponding crafting class. Players can &amp;quot;Request Meld&amp;quot; from other players with a sufficient crafting level, but may also be charged for the service. This can only be performed while the class is active. This feature is unlocked through the quest {{i|Waking the Spirit}} with a crafting class at level 19.&lt;br /&gt;
*{{i|Desynthesis}}: Taking unneeded equipment, furnishings, and fish apart to potentially salvage some of the materials and even find rare materials or glams. This has its own skill level system. Culinarians can desynthesize most fish instead of equipment. You don&#039;t have to switch to the class to do this. If the [[Desynthesis]] skill is too low compared to the [[Item Level]] of the item, its not possible to receive rare items from the drop table, and some equipment can&#039;t be desynthesized at all. This feature is unlocked through the quest {{i|Gone to Pieces}} with a crafting class at level 30.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://na.finalfantasyxiv.com/crafting_gathering_guide/ Official Crafting Guide on Lodestone]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Using the class:&lt;br /&gt;
*Crafting classes are used the same way as combat classes and must be switched to by using the gear set feature or by manually equipping a primary [[Tools|tool]] in the main hand from the armory chest. Equipment with crafting stats can be bought or crafted for every equipment slot except for the [[Soul Crystals|Soul Crystal]]. (The [[Soul Crystals|Soul Crystal]] equivalent for crafters is acquired through the [[Specialist System]].) All equipment can be used across all the crafting classes except for the primary and secondary tools, which are unique to each, and class-specific [[Artifact Armor]].&lt;br /&gt;
**When you have a crafting class equipped, the [[CP]] bar replaces your [[MP]] bar.&lt;br /&gt;
&lt;br /&gt;
==Classes==&lt;br /&gt;
{{see also|Crafting Log}}&lt;br /&gt;
==={{Carpenter}} [[Carpenter]]===&lt;br /&gt;
Guild location: [[New Gridania]].&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Carpenters excel at the production of wooden materials, furniture and equipment used by many classes in the game, such as clogs, bows, staves and polearms.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==={{Blacksmith}} [[Blacksmith]]===&lt;br /&gt;
Guild location: [[Limsa Lominsa Upper Decks]].&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Blacksmiths specialize in the refining of metals and the production of main-hand and off-hand equipment, such as swords, axes, scythes, musketoons, and more.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==={{Armorer}} [[Armorer]]===&lt;br /&gt;
Guild location: [[Limsa Lominsa Upper Decks]].&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Armorers excel at shaping metals and ores into equipable armor - such as chainmail, ring mail, scale mail and plate body armor, used by multiple classes in the game.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==={{Goldsmith}} [[Goldsmith]]===&lt;br /&gt;
Guild location: [[Ul&#039;dah - Steps of Thal]].&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Goldsmiths bend metals and gems into fashionable accessories and bejewelled weaponry. Many classes desire their fineries, such as rings, earrings, necklaces, staves and sceptres.&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
==={{Leatherworker}} [[Leatherworker]]===&lt;br /&gt;
Guild location: [[Old Gridania]].&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Leatherworkers prepare hides, pelts and furs from Eorzea&#039;s most notorious monsters into leather-based armor and accessories desired by multiple classes in the game.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==={{Weaver}} [[Weaver]]===&lt;br /&gt;
Guild location: [[Ul&#039;dah - Steps of Thal]].&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Weavers convert fabrics and fibres into comfortably light armors and accessories, such as robes, ribbons, shirts and pantaloons that are wearable by multiple classes in the game.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==={{Alchemist}} [[Alchemist]]===&lt;br /&gt;
Guild Location: [[Ul&#039;dah - Steps of Thal]].&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Alchemists are masters of powders and potions – grinding and blending materials to produce useful consumables, elixirs, inks, wands, and grimoires.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==={{Culinarian}} [[Culinarian]]===&lt;br /&gt;
Guild location: [[Limsa Lominsa Upper Decks]].&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Culinarians utilize various ingredients to create hearty and emboldening meals. Players can consume food to receive temporary buffs to a variety of attributes, including EXP buffs – perfect for the wandering adventurer.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Unlike all the other jobs which strongly co-depend (on each other and) on Botany and Mining for their ingredients, the Culinarian strongly co-depends on Botany and Fishing.&lt;br /&gt;
&lt;br /&gt;
==Crafting Basics==&lt;br /&gt;
Once you have unlocked a crafting job, all recipes related to that job can be viewed using the crafting log. To craft an item, players will require the materials displayed in that item&#039;s recipe. Once the necessary components are in your inventory, head to the recipe you wish to fulfil and press &#039;&#039;&#039;Synthesize&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Durability&#039;&#039;&#039; - Durability is the number of steps you can take when while crafting an item. Each crafting action that alters the item&#039;s progress or quality consumes 10 points of durability by default, though there are various exceptions. Some abilities can restore durability or temporarily reduce consumption. Your crafting session ends when the durability of the item hits 0. If progress has not reached 100% by then, your synthesis fails – resulting in the loss of some or all crafting materials. The starting durability varies depending on the item.&lt;br /&gt;
* &#039;&#039;&#039;Progress&#039;&#039;&#039; - Progress is the measurement towards the completion of the item. The [[Craftsmanship]] [[Attributes|attribute]] dictates progress. If you fail to reach 100% progress before durability reaches 0, your synthesis fails. No further actions may be taken once the progress bar has been filled, regardless of CP or Durability remaining.&lt;br /&gt;
* &#039;&#039;&#039;Quality&#039;&#039;&#039; - Quality is the probability that the item you&#039;re making will be a [[High Quality]] {{HQ}} (HQ) item. You can increase Quality % by performing specific crafting actions and by initiating the synthesis using HQ ingredients. The [[Control]] [[Attributes|attribute]] dictates quality. The higher the % reached the more experience will be gained from the crafting as well. Using HQ crafting materials also affects the starting quality percentage. However, not all items have a HQ version. For {{collectable}} [[collectables]], the Quality rating will affect the item&#039;s Collectability. Some high-end recipes without a HQ version will require a certain Quality rating (usually 100% or very close to it) for the craft to complete at all.&lt;br /&gt;
* &#039;&#039;&#039;[[CP]]&#039;&#039;&#039; - CP, or crafting points, are required to use some of your crafting actions. While crafting, your CP will decrease as you perform your abilities according to the indicated number on the ability icon. If the CP cost of a crafting skill is higher than your remaining CP, you cannot use that ability. CP regenerates to full after you complete a craft. A few abilities can restore CP during the crafting process under the right condition.&lt;br /&gt;
* &#039;&#039;&#039;Condition&#039;&#039;&#039; - Condition is visible just below durability and is visually apparent on the glowing ball that represents the item. The condition of the item affects increases in quality as well as allowing the execution of certain actions. Condition also changes in set patterns. When the condition is &#039;&#039;&#039;Normal&#039;&#039;&#039;, the condition has a 4% chance of advancing to &#039;&#039;&#039;Excellent&#039;&#039;&#039; and a 25% chance of advancing to &#039;&#039;&#039;Good&#039;&#039;&#039;. After &#039;&#039;&#039;Excellent&#039;&#039;&#039;, the condition will always be &#039;&#039;&#039;Poor&#039;&#039;&#039;, and then &#039;&#039;&#039;Normal&#039;&#039;&#039;. After &#039;&#039;&#039;Good&#039;&#039;&#039;, the condition will always be &#039;&#039;&#039;Normal&#039;&#039;&#039;. Recipes always start on a &#039;&#039;&#039;Normal&#039;&#039;&#039; condition. The effects of non-expert conditions are as such:&lt;br /&gt;
** &#039;&#039;&#039;Excellent&#039;&#039;&#039; - Increases to quality are 4x higher than normal.&lt;br /&gt;
** &#039;&#039;&#039;Good&#039;&#039;&#039; - Increases to quality are 1.5x higher than normal. This is increased to 1.75x when certain tools are equipped.&lt;br /&gt;
** &#039;&#039;&#039;Normal&#039;&#039;&#039; - Increases to quality are normal.&lt;br /&gt;
** &#039;&#039;&#039;Poor&#039;&#039;&#039; - Increases to quality are halved.&lt;br /&gt;
** Expert recipes have additional conditions. For more information, see [[Expert Recipes|here]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Quick Synthesis===&lt;br /&gt;
Once you have crafted an item once, you can use &#039;&#039;Quick Synthesis&#039;&#039; to automatically create more in relatively quick succession without using individual crafting skills. Spiritbond is acquired normally during this process, though your gear will degrade at double the standard rate.&lt;br /&gt;
&lt;br /&gt;
It is possible for Quick Synthesis to fail, losing materials in the process, but only if the player&#039;s Craftsmanship stat is lower than the Craftsmanship Recommended listed in the recipe. There is also a minimal chance of producing a high-quality item using Quick Synthesis. This chance is unaffected by the qualities of the materials. Some recipes, such as expert crafts and current endgame recipes, cannot be quick synthesized. As of [[patch 7.4]], players may choose to synthesize only NQ items when using Quick Synthesis.&lt;br /&gt;
&lt;br /&gt;
Quick Synthesis is unlocked for all classes once any crafting job has reached level 10.&lt;br /&gt;
&lt;br /&gt;
==Leveling crafters==&lt;br /&gt;
===[https://guides.ffxivteamcraft.com/guide/crafting-leveling-guide Crafting Leveling Guide (1-100) in Dawntrail (Teamcraft Guides)]===&lt;br /&gt;
&lt;br /&gt;
Crafters gain experience by crafting items, completing crafter quests and turning in quest items. There is a great number of different methods to quickly level crafters. Progress is even faster if experience buffs are applied, such as those from a preferred+ world, XP-enhancing equipment, free company buffs or crafter manuals. Depending on one&#039;s crafter levels, fast methods include the following:&lt;br /&gt;
&lt;br /&gt;
===Levels 1 to about 25===&lt;br /&gt;
* [[Class Quests]]&lt;br /&gt;
* Synthesize items that have never been crafted before for the bonus.&lt;br /&gt;
* [[Guildleves]]&lt;br /&gt;
* [[Cosmic Exploration]] (level 10+, MSQ requirement, see below)&lt;br /&gt;
* [[Ishgardian Restoration]] (level 20+, MSQ requirement, see below)&lt;br /&gt;
&lt;br /&gt;
===Levels 25 to 50 ===&lt;br /&gt;
* Class quests&lt;br /&gt;
* Daily [[Grand Company Supply and Provisioning Missions|Grand Company Supply Missions]]&lt;br /&gt;
* [[Ixali Daily Quests]]&lt;br /&gt;
* [[Guildleves]]&lt;br /&gt;
&lt;br /&gt;
===Levels 50 to 60===&lt;br /&gt;
* Class quests (MSQ requirement)&lt;br /&gt;
* Daily [[Grand Company Supply and Provisioning Missions|Grand Company Supply Missions]]&lt;br /&gt;
* [[Collectables]] (level 50+, MSQ requirement)&lt;br /&gt;
* [[Moogle Daily Quests]]&lt;br /&gt;
* [[Guildleves]]&lt;br /&gt;
&lt;br /&gt;
===Levels 60 to 70===&lt;br /&gt;
* Class quests (MSQ requirement)&lt;br /&gt;
* Daily [[Grand Company Supply and Provisioning Missions|Grand Company Supply Missions]]&lt;br /&gt;
* [[Custom Deliveries]] (level 60+, MSQ requirement)&lt;br /&gt;
* [[Namazu Daily Quests]]&lt;br /&gt;
* [[Guildleves]]&lt;br /&gt;
&lt;br /&gt;
===Levels 70 to 80===&lt;br /&gt;
* [[Crystarium Deliveries]]&lt;br /&gt;
* Daily [[Grand Company Supply and Provisioning Missions|Grand Company Supply Missions]]&lt;br /&gt;
* [[Dwarf Daily Quests]]&lt;br /&gt;
* [[Guildleves]]&lt;br /&gt;
&lt;br /&gt;
===Levels 80 to 90===&lt;br /&gt;
* [[Studium Deliveries]]&lt;br /&gt;
* Daily [[Grand Company Supply and Provisioning Missions|Grand Company Supply Missions]]&lt;br /&gt;
* [[Loporrit Daily Quests]]&lt;br /&gt;
* [[Guildleves]]&lt;br /&gt;
&lt;br /&gt;
===Levels 90 to 100===&lt;br /&gt;
* [[Wachumeqimeqi Deliveries]]&lt;br /&gt;
* Daily [[Grand Company Supply and Provisioning Missions|Grand Company Supply Missions]]&lt;br /&gt;
* [[Yok Huy Daily Quests]]&lt;br /&gt;
* [[Guildleves]]&lt;br /&gt;
&lt;br /&gt;
=== The Ishgardian Restoration ===&lt;br /&gt;
{{main|Ishgardian Restoration}}&lt;br /&gt;
The Ishgardian Restoration allows players to level up to 80 before the experience points provided becomes negligible. Players must first complete the level 60 [[Main Scenario Quests|main scenario quest]] {{i|Litany of Peace}}, which is the end of the [[Patch 3.3]], before this becomes available.&lt;br /&gt;
&lt;br /&gt;
You should be able to get to 20 quickly. If your main job has progressed far enough that you can enter [[the Diadem]], and you level your gatherers in tandem with (or ahead of) your crafter(s), levelling the crafters gets easy as well.&lt;br /&gt;
&lt;br /&gt;
Starting with level 20, you can craft almost exclusively with the items you gathered in the Diadem, you need at most one external piece, and that is often easy to gather in numbers or even store-bought for a few gil. Combined with experience-increasing scrolls, this brings you up very quickly.&lt;br /&gt;
&lt;br /&gt;
From time to time do batches of class quests, as some of the abilities you get from them are really helpful. At ~45, you can upgrade to Company issued gear. At 60, you should get a full set from Sundry Splendors. (You could get a set at lvl 55, but the short time you&#039;d use that is not worth the effort.) You can continue this up to ~70, then the amount of ingredients rises steeply and you want to start crafting collectables anyways to buy gear from the Sundry Splendors.&lt;br /&gt;
&lt;br /&gt;
After about lvl 70, doing the Company&#039;s daily supply missions, ideally when they are starred, is the most time efficient way to level your crafter, mixed with doing collectables when you are about to reach the next level for Sundry Splendor&#039;s gear (i.e. 70/80/90).&lt;br /&gt;
&lt;br /&gt;
As soon as you start crafting &amp;quot;regularly&amp;quot;, you&#039;ll notice the massive synergy between the different crafter jobs. If you have enough friendly crafters to supply you (in exchange for you supplying them), or if you have a lot of gil to spend on the Market board, you can stick to one crafter job. Otherwise, it&#039;s worth considering the road called &amp;quot;Omnicrafter&amp;quot; (levelling all crafters, ideally keeping them in the same level range to make use of the gear synergy).&lt;br /&gt;
&lt;br /&gt;
===Cosmic Exploration===&lt;br /&gt;
{{main|Cosmic Exploration}}&lt;br /&gt;
&lt;br /&gt;
Cosmic Exploration allows players to level crafters from level 10 to level 100. As all Cosmic Exploration recipes are self-contained, players do not need to procure any outside items (aside from level-appropriate gear) to complete crafting missions within. Unlike Ishgardian Restoration, Cosmic Exploration is not available on the [[Free Trial]] and has a higher [[Main Scenario Quest]] requirement ({{i|Endwalker (Quest)}}) to unlock.&lt;br /&gt;
&lt;br /&gt;
==Advanced Crafting==&lt;br /&gt;
*[[Grand Company Supply and Provisioning Missions|Grand Company Supply Missions]]&lt;br /&gt;
*[[Master Recipe Tomes]]&lt;br /&gt;
*[[Collectables]] {{collectable}}&lt;br /&gt;
*[[Custom Deliveries]]&lt;br /&gt;
*[[Expert Recipes]]&lt;br /&gt;
*[[Ishgardian Restoration]]&lt;br /&gt;
*[[Crystarium Deliveries]]&lt;br /&gt;
*[[Studium Deliveries]]&lt;br /&gt;
*[[Wachumeqimeqi Deliveries]]&lt;br /&gt;
*[[Cosmic Exploration]]&lt;br /&gt;
&lt;br /&gt;
===Useful Resources===&lt;br /&gt;
* [https://ffxivteamcraft.com/ FFXIV Teamcraft] - Extensive tool set for crafting &amp;amp; gathering&lt;br /&gt;
** [https://guides.ffxivteamcraft.com/ Teamcraft Guides] - Detailed guides to crafting &amp;amp; gathering&lt;br /&gt;
* [https://ffxivcrafting.com/ Crafting as a Service] - Crafting lists &amp;amp; rotations, gear profiler, etc.&lt;br /&gt;
* [https://garlandtools.org/ Garland Tools] - Database and resources for crafting &amp;amp; gathering (data is current, but app is in maintenance mode)&lt;br /&gt;
* [https://www.raphael-xiv.com/ Raphael XIV] - Crafting rotations calculator and macro generation. Allows input of both existing and custom recipes.&lt;br /&gt;
* [https://thiria.com/expert/ Thiria.com] - Crafting solver, including step-by-step expert recipe solver&lt;br /&gt;
* [https://craftingway.app/ Craftingway] - Crafting rotations calculator&lt;br /&gt;
&lt;br /&gt;
==Crafting Attributes==&lt;br /&gt;
* &#039;&#039;&#039;[[Craftsmanship]]&#039;&#039;&#039; - increases the amount of progress you generate while using crafting actions such as [[Basic Synthesis]] and [[Careful Synthesis]].&lt;br /&gt;
* &#039;&#039;&#039;[[Control]]&#039;&#039;&#039; - increases the amount of quality you generate while using crafting actions such as [[Basic Touch]], [[Standard Touch]] and [[Advanced Touch]].&lt;br /&gt;
* &#039;&#039;&#039;([[CP]]) Crafting Points&#039;&#039;&#039; - crafting points are required to use most of your crafting actions.&lt;br /&gt;
&lt;br /&gt;
The goal of the crafting process is to get the highest possible quality and complete the progression of the item before durability reaches zero. High-quality items have higher stats where applicable and affect base quality if used in further crafting. HQ items also double your rewards when turned in for levequests and deliveries.&lt;br /&gt;
&lt;br /&gt;
Class quests and most story quests do not take the quality of an item into account. However, some quests (such as crafting class quests, deliveries and dailies) will explicitly demand HQ items. &lt;br /&gt;
&lt;br /&gt;
Some items do not have high-quality versions. However, the quality bar will still appear, but it does not affect the amount of experience gained. Crafters automatically learn new recipes as they level up and can be attempted as soon as possible, provided you have enough Craftsmanship or Control.&lt;br /&gt;
&lt;br /&gt;
==Crafting Consumables==&lt;br /&gt;
===Experience Boost===&lt;br /&gt;
{| {{STDT|item align-left}}&lt;br /&gt;
|-&lt;br /&gt;
! Item&lt;br /&gt;
! Duration&lt;br /&gt;
! Buff&lt;br /&gt;
! Effect            &lt;br /&gt;
! Source&lt;br /&gt;
|-&lt;br /&gt;
| {{item icon|Company-issue Engineering Manual}} || 18h || {{i|Crafter&#039;s Grace}} || +150% Experience earned from synthesis (Up to 250,000). Effect halved after level 40. || Purchased from [[Grand Company Quartermasters]] for {{Company seal|1440}} [[Company Seals]]&lt;br /&gt;
|-&lt;br /&gt;
| {{item icon|Company-issue Engineering Manual II}} || 18h || {{i|Crafter&#039;s Grace}} || +150% Experience earned from synthesis (Up to 500,000). Effect halved after level 50. || Purchased from [[Grand Company Quartermasters]] for {{Company seal|2300}} [[Company Seals]]&lt;br /&gt;
|-&lt;br /&gt;
| {{item icon|Commercial Engineering Manual}} || 18h || {{i|Crafter&#039;s Grace}} || +150% Experience earned from synthesis (Up to 1,750,000). Effect halved after level 70. || Level 50 &amp;amp; 60 Crafter [[Class Quests]], Purchased from a [[Scrip Exchange]] for {{scrip|low crafter|30}}  {{Scrip/low-crafter-text}}&lt;br /&gt;
|-&lt;br /&gt;
| {{item icon|Revised Engineering Manual}} || 18h || {{i|Crafter&#039;s Grace}} || +150% Experience earned from synthesis (Up to 2,000,000). Effect halved after level 80. || Purchased from a [[Scrip Exchange]] for {{scrip|low crafter|30}}  {{Scrip/low-crafter-text}}&lt;br /&gt;
|-&lt;br /&gt;
| {{item icon|Squadron Engineering Manual}} || 120m || [[File:Helping hand1.png|18px|link=Helping Hand III]] [[Helping Hand III]] || +20% Experience earned from synthesis || Reward from [[Squadron Missions]]&lt;br /&gt;
|-&lt;br /&gt;
| | [[Meals|Food]] || 30m || {{i|Well Fed}} || +3% Experience earned from synthesis || Crafted through [[Culinarian]] or purchased from vendors&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Class navbar}}&lt;br /&gt;
[[Category:Game mechanics]] [[Category:Patch 1.0 Features]]&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Contains&amp;diff=1585688</id>
		<title>Template:Contains</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Contains&amp;diff=1585688"/>
		<updated>2026-10-29T21:47:40Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: move documentation and clean up examples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{game icon|{{{1|Item}}}|{{{2|}}}|qty={{{qty|}}}}}{{#set:Contains item={{{1|}}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
{{markup example|list=y|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{contains|Intelligence Materia I}}&lt;br /&gt;
{{contains|Clear Demimateria II}}&lt;br /&gt;
{{contains|Gold Saucer Aetheryte Ticket|qty=3}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== See also==&lt;br /&gt;
* {{tl|contained in}}&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Contains/doc&amp;diff=1585687</id>
		<title>Template:Contains/doc</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Contains/doc&amp;diff=1585687"/>
		<updated>2026-10-29T21:47:11Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: move documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{documentation subpage}}&lt;br /&gt;
&lt;br /&gt;
 {&amp;lt;nowiki/&amp;gt;{&#039;&#039;&#039;Contains&#039;&#039;&#039;|&#039;&#039;item&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
Identifies what item is received upon opening a container. Sets the [[Property:Contains item]] property.&lt;br /&gt;
&lt;br /&gt;
== Template data ==&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Item&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Name of the item.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Link text&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Link text to display. Defaults to the item&#039;s canonical name. Do not use this to pluralize the name.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;qty&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Quantity&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Quantity of this item that can be contained. Can be a single number or a hyphenated range. This is &#039;&#039;not&#039;&#039; currently saved as part of semantic data, it is only used for display.&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;2-4&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;Identifies what item is received upon opening a container.\n&amp;quot;,&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;inline&amp;quot;,&lt;br /&gt;
	&amp;quot;paramOrder&amp;quot;: [&lt;br /&gt;
		&amp;quot;1&amp;quot;,&lt;br /&gt;
		&amp;quot;2&amp;quot;,&lt;br /&gt;
		&amp;quot;qty&amp;quot;&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;!-- Template/module categories and interwiki links go here --&amp;gt;&lt;br /&gt;
[[Category:Data templates]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Grouped_columns/doc&amp;diff=1585686</id>
		<title>Template:Grouped columns/doc</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Grouped_columns/doc&amp;diff=1585686"/>
		<updated>2026-10-29T21:33:28Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: reorder args&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{documentation subpage}}&lt;br /&gt;
{{lua|Module:Grouped columns}}&lt;br /&gt;
&lt;br /&gt;
 {&amp;lt;nowiki/&amp;gt;{&#039;&#039;&#039;Grouped columns&#039;&#039;&#039;|&#039;&#039;min width&#039;&#039;=|&#039;&#039;columns&#039;&#039;=|1=&lt;br /&gt;
 ...&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
Renders grouped content in a column layout. The inner content should be simple content such as paragraphs or lists, broken up with headings that separate groups. The layout guarantees that each group is not split between multiple columns.&lt;br /&gt;
&lt;br /&gt;
This template is mostly useful for breaking up long lists with multiple groups, such as drop lists (where there&#039;s a group for each category of item that can drop - gear, housing items, minions, etc).&lt;br /&gt;
&lt;br /&gt;
Note the use of the explicit &amp;lt;code&amp;gt;1=&amp;lt;/code&amp;gt; name for the content parameter; omitting this and passing content as a typical unnamed parameter will result in mishandled &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt; characters and broken output.&lt;br /&gt;
&lt;br /&gt;
== Template data ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Content&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Multiline wikitext content to display within the columns. Headings are used to define groups; within groups can live simple content such as lists or paragraphs.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;unbalanced-wikitext&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;min width&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Minimum width&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Minimum width of each column, in CSS &amp;lt;code&amp;gt;em&amp;lt;/code&amp;gt; units which scale with the user&#039;s font size. The default value of &#039;&#039;&#039;24&#039;&#039;&#039; results in a three-column layout on typical desktop displays.&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;16&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;number&amp;quot;,&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;24&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;columns&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Maximum columns&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Maximum number of columns to use. This should only be set when the number of total groups is small, to allow them to grow larger than the minimum column width when extra horizontal space is available. For more than three or four groups, leave this unset so that additional columns can be added on wide screens.&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;3&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;number&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;Renders grouped content in a column layout.&amp;quot;,&lt;br /&gt;
	&amp;quot;paramOrder&amp;quot;: [&lt;br /&gt;
		&amp;quot;1&amp;quot;,&lt;br /&gt;
		&amp;quot;min width&amp;quot;,&lt;br /&gt;
		&amp;quot;columns&amp;quot;&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;!-- Template/module categories and interwiki links go here --&amp;gt;&lt;br /&gt;
[[Category:Utility templates]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon/doc&amp;diff=1585685</id>
		<title>Module:Game icon/doc</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon/doc&amp;diff=1585685"/>
		<updated>2026-10-29T21:21:28Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: Created page with &amp;quot;{{documentation subpage}}  This module implements {{tl|Game icon}}, the wiki&amp;#039;s universal icon template. It handles SMW lookups and argument processing before shelling out to Module:Icon to perform the actual rendering.  &amp;lt;includeonly&amp;gt; &amp;lt;!-- Template/module categories and interwiki links go here --&amp;gt; Category:Template implementation modules &amp;lt;/includeonly&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{documentation subpage}}&lt;br /&gt;
&lt;br /&gt;
This module implements {{tl|Game icon}}, the wiki&#039;s universal icon template. It handles SMW lookups and argument processing before shelling out to [[Module:Icon]] to perform the actual rendering.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;!-- Template/module categories and interwiki links go here --&amp;gt;&lt;br /&gt;
[[Category:Template implementation modules]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Game_icon_format/doc&amp;diff=1585684</id>
		<title>Template:Game icon format/doc</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Game_icon_format/doc&amp;diff=1585684"/>
		<updated>2026-10-29T21:20:12Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: add deprecation notice now that Template:Game icon has been reimplemented in Lua&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{documentation subpage}}&lt;br /&gt;
{{deprecated|The primary calling template, {{tl|Game icon}}, has been converted to Lua, so this template should no longer be in use. [[User:Erin Umbreon|Erin Umbreon]] &amp;lt;small&amp;gt;(she/it &amp;amp;bull; [[User talk:Erin Umbreon|talk]])&amp;lt;/small&amp;gt; 21:19, 29 October 2026 (UTC)}}&lt;br /&gt;
{{lua|Module:Icon}}&lt;br /&gt;
&lt;br /&gt;
SMW formatting template for rendering the {{tl|Game icon}} of the result of an arbitrary &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#ask}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; query.&lt;br /&gt;
&lt;br /&gt;
Invoke with &amp;lt;code&amp;gt;named args=yes&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;link=none&amp;lt;/code&amp;gt;. Parameters:&lt;br /&gt;
&lt;br /&gt;
* Pagename&lt;br /&gt;
* Has context&lt;br /&gt;
* Has game icon&lt;br /&gt;
* Has game icon frame type&lt;br /&gt;
* Has canonical name&lt;br /&gt;
* Has dye channels&lt;br /&gt;
&lt;br /&gt;
The query &amp;lt;code&amp;gt;userparam&amp;lt;/code&amp;gt; can be used to pass additional parameters that aren&#039;t part of the query. If used, it should contain the following parameters from {{tl|Game icon}}, with no extra whitespace, separated by semicolon: &amp;lt;code&amp;gt;text;size;hq;qty;wrap;original_pagename&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* text: Text override for the label. Leave blank to use canonical name; pass &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; to omit label.&lt;br /&gt;
* size: One of small, mid, big&lt;br /&gt;
* hq: For items, renders high-quality item.&lt;br /&gt;
* qty: For items, renders a specific quantity or range of quantities.&lt;br /&gt;
* wrap: Controls text wrapping within item label.&lt;br /&gt;
* original_pagename: The way the icon link was originally specified, &#039;&#039;before&#039;&#039; redirects are resolved (as opposed to the &amp;quot;Pagename&amp;quot; query param which is &#039;&#039;after&#039;&#039; redirects are resolved). Used to ensure the link text and target remains exactly as typed, but if this is empty then the &amp;quot;Pagename&amp;quot; query param is used instead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;!-- Template/module categories and interwiki links go here --&amp;gt;&lt;br /&gt;
[[Category:Semantic result templates]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Game_icon/doc&amp;diff=1585683</id>
		<title>Template:Game icon/doc</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Game_icon/doc&amp;diff=1585683"/>
		<updated>2026-10-29T21:18:09Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: update implementation reference after Lua conversion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{documentation subpage}}&lt;br /&gt;
{{lua|Module:Game icon}}&lt;br /&gt;
&lt;br /&gt;
 {&amp;lt;nowiki/&amp;gt;{&#039;&#039;&#039;game icon&#039;&#039;&#039;|&#039;&#039;page&#039;&#039;|&#039;&#039;text&#039;&#039;|size=|alt=|hq=|qty=|wrap=}}&lt;br /&gt;
&lt;br /&gt;
Links to something in the game and displays its icon alongside the link. This template supports basically anything - items, actions, traits, quests, and anything else that uses [[Property:Has game icon]]. &lt;br /&gt;
&lt;br /&gt;
This template can also be used via the shortcut {{tlx|i}} (for &amp;quot;icon&amp;quot;) - prefer the shortcut for brevity, especially when there are lots of icons in a single section.&lt;br /&gt;
&lt;br /&gt;
This template uses a Semantic MediaWiki query to retrieve icon information from the given page. Handling of the query result is handled by {{tl|game icon format}}, which in turn invokes {{function link|Module:Icon#renderGameIconWithLabel}} to actually render the icon.&lt;br /&gt;
&lt;br /&gt;
Note that this template queries the given page for its attributes. It is designed for ease of use in text, but &#039;&#039;&#039;it should be avoided in semantically generated lists&#039;&#039;&#039;. If you are creating a table generated by a semantic query, the query should retrieve all the necessary icon data (see &amp;quot;Prerequisites&amp;quot; below), and pass each element&#039;s values directly to the formatting templates or functions (such as {{function link|Module:Icon#renderGameIcon}}). That will avoid generating additional queries for every element in the list (a.k.a. &amp;quot;[https://medium.com/databases-in-simple-words/the-n-1-database-query-problem-a-simple-explanation-and-solutions-ef11751aef8a N + 1]&amp;quot; queries).&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
In order for {{tl|game icon}} to work with a given page, the page needs a [[Property:Has game icon|Has game icon]] value and either:&lt;br /&gt;
*  a [[Property:Has context|Has context]] value (example: [[Special:Browse/:Doman-5FIron-5FDaggers |Doman Iron Daggers]])&lt;br /&gt;
OR&lt;br /&gt;
* a [[Property:Has game icon frame type|Has game icon frame type]] value (example: [[Special:Browse/:Mount-5FSpeed|Mount Speed]])&lt;br /&gt;
&lt;br /&gt;
[[Property:Has game icon|Has game icon]] and [[Property:Has context|Has context]] should be set by the relevant infobox. For pages without an infobox, such as [[Mount Speed]], {{tl|Lead icon}} should be used to specify the relevant icon and icon frame type for the page. &lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
=== Base parameters ===&lt;br /&gt;
; &#039;&#039;name&#039;&#039; (unnamed parameter 1)&lt;br /&gt;
: Item name. Defaults to &amp;quot;Item&amp;quot;.&lt;br /&gt;
; &#039;&#039;text&#039;&#039; (unnamed parameter 2)&lt;br /&gt;
; alt&lt;br /&gt;
: Optional. Link text; defaults to [[Property:Has canonical name|canonical name]]. Set to &#039;&#039;&#039;x&#039;&#039;&#039; to prevent link text from appearing. Unnamed parameter 2 has precedence over &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; named parameter.&lt;br /&gt;
; size&lt;br /&gt;
: Optional. Can be &#039;&#039;&#039;small&#039;&#039;&#039; (default), &#039;&#039;&#039;mid&#039;&#039;&#039;, or &#039;&#039;&#039;big&#039;&#039;&#039;.&lt;br /&gt;
; wrap&lt;br /&gt;
: Set to anything to force text to wrap. Generally only used in infoboxes. Will not wrap text by default.&lt;br /&gt;
&lt;br /&gt;
=== Item parameters ===&lt;br /&gt;
; hq&lt;br /&gt;
: Optional. Displays a {{HQ}} [[high quality]] item.&lt;br /&gt;
&lt;br /&gt;
=== Item/currency parameters ===&lt;br /&gt;
; qty&lt;br /&gt;
: Optional. Quantity of currency or items, displayed between icon and text. Mostly used by {{tl|Vendor table row}} to display vendor/exchange costs. Accepts a number or a hyphenated range.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;!-- Template categories go here --&amp;gt;&lt;br /&gt;
[[Category:Icon templates]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Template Data ==&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Page&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Target page&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Link text&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Text displayed in the link. Defaults to the linked page&#039;s canonical name or pagename. Use \&amp;quot;x\&amp;quot; to hide the link text and display only the icon.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;line&amp;quot;,&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;alt&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;hq&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;HQ&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;For items only. Shows the high quality version of the item in the icon.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
			&amp;quot;autovalue&amp;quot;: &amp;quot;0&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;size&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Size&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Display size of the icon.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;suggestedvalues&amp;quot;: [&lt;br /&gt;
				&amp;quot;small&amp;quot;,&lt;br /&gt;
				&amp;quot;mid&amp;quot;,&lt;br /&gt;
				&amp;quot;big&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;small&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;qty&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Quantity&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;For items and currencies only. Quantity of currency or items represented. Accepts a number or a hyphenated range.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;wrap&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Wrap&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Force link text to wrap. Generally only used in other templates like infoboxes.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;Links to something in the game and displays its icon alongside the link.&amp;quot;,&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;inline&amp;quot;,&lt;br /&gt;
	&amp;quot;paramOrder&amp;quot;: [&lt;br /&gt;
		&amp;quot;1&amp;quot;,&lt;br /&gt;
		&amp;quot;2&amp;quot;,&lt;br /&gt;
		&amp;quot;size&amp;quot;,&lt;br /&gt;
		&amp;quot;hq&amp;quot;,&lt;br /&gt;
		&amp;quot;qty&amp;quot;,&lt;br /&gt;
		&amp;quot;wrap&amp;quot;&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Game_icon&amp;diff=1585682</id>
		<title>Template:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Game_icon&amp;diff=1585682"/>
		<updated>2026-10-29T21:17:43Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: convert implementation to Lua at Module:Game icon&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:Game icon|main}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Items ===&lt;br /&gt;
* {{i|Raisins}} is produced from {{tlx|i|Raisins}}&lt;br /&gt;
* {{i|Raisins|size=small}} is produced from {{tlx|i|Raisins|size{{=}}small}}&lt;br /&gt;
* {{i|Raisins|size=mid}} is produced from {{tlx|i|Raisins|size{{=}}mid}}&lt;br /&gt;
* {{i|Raisins|size=big}} is produced from {{tlx|i|Raisins|size{{=}}big}}&lt;br /&gt;
* {{i|Raisins|Fruit}} is produced from {{tlx|i|Raisins|Fruit}}&lt;br /&gt;
* {{i|Raisins|x}} is produced from {{tlx|i|Raisins|x}}&lt;br /&gt;
* {{i|Raisins|alt=Fruit}} is produced from {{tlx|i|Raisins|alt{{=}}Fruit}}&lt;br /&gt;
* {{i|Raisins|x|alt=Fruit}} is produced from {{tlx|i|Raisins|x|alt{{=}}Fruit}} (parameter 2 takes precedence over &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt;)&lt;br /&gt;
* {{i|Raisins|hq=1}} is produced from {{tlx|i|Raisins|hq{{=}}1}}&lt;br /&gt;
* {{i|Adventuring Sweater|size=big}} is produced from {{tlx|i|Adventuring Sweater|size{{=}}big}} (dye slots)&lt;br /&gt;
* {{i|Wind-up Mystel}} is produced from {{tlx|i|Wind-up Mystel}} (minion)&lt;br /&gt;
* {{i|Amber Draught Chocobo}} is produced from {{tlx|i|Amber Draught Chocobo}} (mount)&lt;br /&gt;
* {{i|Blue Gatherers&#039; Scrip Token|qty=5-10}} is produced from {{tlx|i|Blue Gatherers&#039; Scrip Token|qty{{=}}5-10}} (item quantity + ranges)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;This is an example a paragraph with the {{i|Raisins}} item in it.&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is an example a paragraph with the {{i|Raisins}} item in it.&lt;br /&gt;
&lt;br /&gt;
=== Other frame icons ===&lt;br /&gt;
* {{i|Quick Nock}} is produced from {{tlx|i|Quick Nock}} (actions)&lt;br /&gt;
* {{i|Duty Support|size=mid}} is produced from {{tlx|i|Duty Support|size{{=}}mid}} (system actions that use {{tl|Lead icon}}&lt;br /&gt;
* {{i|Shucked, Not Stirred|size=big}} is produced from {{tlx|i|Shucked, Not Stirred|size{{=}}big}} (achievement)&lt;br /&gt;
* {{i|Enhanced Quick Nock|size=big}} is produced from {{tlx|i|Enhanced Quick Nock|size=big}} (traits)&lt;br /&gt;
&lt;br /&gt;
=== Currencies ===&lt;br /&gt;
* {{i|Gil|size=big}} is produced from {{tlx|i|Gil|size{{=}}big}}&lt;br /&gt;
* {{i|Gil|x|qty=1000-2000}} is produced from {{tlx|i|Gil|qty{{=}}1000-2000}} (currency range with name hidden)&lt;br /&gt;
* {{i|Allagan Tomestone of Mnemonics|x|qty=500}} + {{i|Universal Tomestone 3.0|qty=1}} (mixing currencies and tokens, as in {{tl|Vendor table row}})&lt;br /&gt;
&lt;br /&gt;
Probably easier to use {{tl|currency}} for most things still&lt;br /&gt;
&lt;br /&gt;
=== Quests ===&lt;br /&gt;
* {{i|To the Bannock}} is produced from {{tlx|i|To the Bannock}}&lt;br /&gt;
* {{i|So You Want to Be a Lancer|size=big}} is produced from {{tlx|i|So You Want to Be a Lancer|size{{=}}big}}&lt;br /&gt;
===Achievements===&lt;br /&gt;
&amp;lt;pre&amp;gt;{{i|Skyward Gemstone II}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{i|Skyward Gemstone II}}&lt;br /&gt;
===Duties===&lt;br /&gt;
&amp;lt;pre&amp;gt;{{i|Sastasha}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{i|Sastasha}}&lt;br /&gt;
&amp;lt;pre&amp;gt;{{i|Occult Crescent}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{i|Occult Crescent}} (uses {{tl|lead icon}} but should not be a frame icon)&lt;br /&gt;
===FATEs/Critical Engagements===&lt;br /&gt;
&amp;lt;pre&amp;gt;{{i|The Dalriada}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{i|The Dalriada}}&lt;br /&gt;
===Enemies===&lt;br /&gt;
&amp;lt;pre&amp;gt;{{i|Antelope Doe}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{i|Antelope Doe}}&lt;br /&gt;
&amp;lt;pre&amp;gt;{{i|Jungle Coeurl}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{i|Jungle Coeurl}}&lt;br /&gt;
===Weather===&lt;br /&gt;
&amp;lt;pre&amp;gt;{{i|Clear Skies}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{i|Clear Skies}}&lt;br /&gt;
===Icon missing===&lt;br /&gt;
&amp;lt;pre&amp;gt;{{i|The Black Shroud}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{i|The Black Shroud}}&lt;br /&gt;
===Invalid page===&lt;br /&gt;
&amp;lt;pre&amp;gt;{{i|invalid page}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{i|invalid page}}&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585681</id>
		<title>Module:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585681"/>
		<updated>2026-10-29T21:17:20Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: don&amp;#039;t attempt to call a frame function with a table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local Icon = require(&amp;quot;Module:Icon&amp;quot;)&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
  local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
  -- attempt to fetch SMW data&lt;br /&gt;
  local page = (mw.smw.ask({&lt;br /&gt;
    (&amp;quot;[[%s]]&amp;quot;):format(args[1]),&lt;br /&gt;
    &amp;quot;?=Pagename#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has context&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has canonical name&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has dye channels&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon frame type&amp;quot;,&lt;br /&gt;
  }) or {})[1] -- only first result; if query is invalid treat as no result&lt;br /&gt;
&lt;br /&gt;
  -- render broken link for nonexistant pages&lt;br /&gt;
  if not page then&lt;br /&gt;
    return Icon.gameIconWithLabel({&lt;br /&gt;
      text = args[2] or args.alt or args[1],&lt;br /&gt;
      link = args[1],&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- get the logical name of the thing being linked&lt;br /&gt;
  local canonicalName = page[&amp;quot;Has canonical name&amp;quot;]&lt;br /&gt;
  if not canonicalName or canonicalName == &amp;quot;&amp;quot; then&lt;br /&gt;
    canonicalName = args[1]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- compute final label text and alt text based on user value&lt;br /&gt;
  local textParam = args[2] or args.alt  -- 2 takes precedence over alt&lt;br /&gt;
  local text = canonicalName&lt;br /&gt;
  local alt = canonicalName&lt;br /&gt;
  if textParam == &amp;quot;x&amp;quot; then&lt;br /&gt;
    text = &amp;quot;&amp;quot;&lt;br /&gt;
    -- alt remains the canonical name for screen readers&lt;br /&gt;
  elseif textParam and textParam ~= &amp;quot;&amp;quot; then&lt;br /&gt;
    -- use provided label as both label and alt&lt;br /&gt;
    text = textParam&lt;br /&gt;
    alt = textParam&lt;br /&gt;
  end&lt;br /&gt;
  -- if no text param was given, canonical name is used for both&lt;br /&gt;
&lt;br /&gt;
  -- yippee&lt;br /&gt;
  return Icon.gameIconWithLabel({&lt;br /&gt;
    -- SMW data&lt;br /&gt;
    icon = page[&amp;quot;Has game icon&amp;quot;],&lt;br /&gt;
    frameType = page[&amp;quot;Has game icon frame type&amp;quot;],&lt;br /&gt;
    type = page[&amp;quot;Has context&amp;quot;],&lt;br /&gt;
    dyeCount = page[&amp;quot;Has dye channels&amp;quot;] or 0,&lt;br /&gt;
&lt;br /&gt;
    -- computed parameters&lt;br /&gt;
    text = text,&lt;br /&gt;
    alt = alt,&lt;br /&gt;
&lt;br /&gt;
    -- other passthrough parameters&lt;br /&gt;
    link = args[1],&lt;br /&gt;
    size = args.size,&lt;br /&gt;
    hq = yesno(args.hq),&lt;br /&gt;
    qty = args.qty,&lt;br /&gt;
    allowWrap = yesno(args.wrap),&lt;br /&gt;
  })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585680</id>
		<title>Module:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585680"/>
		<updated>2026-10-29T21:15:56Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: Handle invalid input more gracefully&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local Icon = require(&amp;quot;Module:Icon&amp;quot;)&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
  local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
  -- attempt to fetch SMW data&lt;br /&gt;
  local page = (mw.smw.ask({&lt;br /&gt;
    (&amp;quot;[[%s]]&amp;quot;):format(args[1]),&lt;br /&gt;
    &amp;quot;?=Pagename#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has context&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has canonical name&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has dye channels&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon frame type&amp;quot;,&lt;br /&gt;
  }) or {})[1] -- only first result; if query is invalid treat as no result&lt;br /&gt;
&lt;br /&gt;
  -- render broken link for nonexistant pages&lt;br /&gt;
  if not page then&lt;br /&gt;
    return Icon.renderGameIconWithLabel({&lt;br /&gt;
      text = args[2] or args.alt or args[1],&lt;br /&gt;
      link = args[1],&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- get the logical name of the thing being linked&lt;br /&gt;
  local canonicalName = page[&amp;quot;Has canonical name&amp;quot;]&lt;br /&gt;
  if not canonicalName or canonicalName == &amp;quot;&amp;quot; then&lt;br /&gt;
    canonicalName = args[1]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- compute final label text and alt text based on user value&lt;br /&gt;
  local textParam = args[2] or args.alt  -- 2 takes precedence over alt&lt;br /&gt;
  local text = canonicalName&lt;br /&gt;
  local alt = canonicalName&lt;br /&gt;
  if textParam == &amp;quot;x&amp;quot; then&lt;br /&gt;
    text = &amp;quot;&amp;quot;&lt;br /&gt;
    -- alt remains the canonical name for screen readers&lt;br /&gt;
  elseif textParam and textParam ~= &amp;quot;&amp;quot; then&lt;br /&gt;
    -- use provided label as both label and alt&lt;br /&gt;
    text = textParam&lt;br /&gt;
    alt = textParam&lt;br /&gt;
  end&lt;br /&gt;
  -- if no text param was given, canonical name is used for both&lt;br /&gt;
&lt;br /&gt;
  -- yippee&lt;br /&gt;
  return Icon.gameIconWithLabel({&lt;br /&gt;
    -- SMW data&lt;br /&gt;
    icon = page[&amp;quot;Has game icon&amp;quot;],&lt;br /&gt;
    frameType = page[&amp;quot;Has game icon frame type&amp;quot;],&lt;br /&gt;
    type = page[&amp;quot;Has context&amp;quot;],&lt;br /&gt;
    dyeCount = page[&amp;quot;Has dye channels&amp;quot;] or 0,&lt;br /&gt;
&lt;br /&gt;
    -- computed parameters&lt;br /&gt;
    text = text,&lt;br /&gt;
    alt = alt,&lt;br /&gt;
&lt;br /&gt;
    -- other passthrough parameters&lt;br /&gt;
    link = args[1],&lt;br /&gt;
    size = args.size,&lt;br /&gt;
    hq = yesno(args.hq),&lt;br /&gt;
    qty = args.qty,&lt;br /&gt;
    allowWrap = yesno(args.wrap),&lt;br /&gt;
  })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=User:Erin_Umbreon/Sandbox&amp;diff=1585679</id>
		<title>User:Erin Umbreon/Sandbox</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=User:Erin_Umbreon/Sandbox&amp;diff=1585679"/>
		<updated>2026-10-29T21:13:05Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NEWSECTIONLINK__&lt;br /&gt;
{{hatnote|This user &#039;&#039;&#039;does not know what she is doing&#039;&#039;&#039;.}}&lt;br /&gt;
&lt;br /&gt;
== Test case: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;ref&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; in {{tl|Dialogue}} ==&lt;br /&gt;
&lt;br /&gt;
{{dialogue|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Y&#039;shtola: Hello!&amp;lt;ref&amp;gt;hehehehe&amp;lt;/ref&amp;gt;&lt;br /&gt;
Y&#039;shtola: Goodbye!&lt;br /&gt;
&#039;&#039;The WoL eats some {{i|Xibruq Pibil}}&amp;lt;ref&amp;gt;It was tasty.&amp;lt;/ref&amp;gt;. Everyone goes home and eats dinner together.&#039;&#039;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
! debug stuff&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{{#invoke:Sandbox/Nowiki behavior testing|testRefPreprocessStripMarkerStuff}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[User:Erin Umbreon|Erin Umbreon]] &amp;lt;small&amp;gt;(she/it &amp;amp;bull; [[User talk:Erin Umbreon|talk]])&amp;lt;/small&amp;gt; 02:46, 18 October 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Older experiments ==&lt;br /&gt;
&lt;br /&gt;
[[Special:Diff/|yeag]]&lt;br /&gt;
&lt;br /&gt;
{{/Noticebox&lt;br /&gt;
| title = High-end content&lt;br /&gt;
| color = red&lt;br /&gt;
| content =&lt;br /&gt;
The Bahamut raids have difficulty comparable to [[Savage raids]] and do not feature in any [[Duty Roulette|roulette]]s. They should not be queued via [[Duty Finder]]. Players should treat these raids as high-end content and form parties in [[Party Finder]] instead, [[unsync]]ing for easier completion if desired.}}&lt;br /&gt;
{{/Noticebox&lt;br /&gt;
| title = Future content&lt;br /&gt;
| color = green&lt;br /&gt;
| content = The subject of this article is currently in development, and is not yet available to players. It is expected to be released in [[patch 8.0]].&lt;br /&gt;
}}&lt;br /&gt;
{{/Noticebox&lt;br /&gt;
| title = Retired content&lt;br /&gt;
| color = blue&lt;br /&gt;
| content = The subject of this article was retired or removed from the game, and is no longer available to players. It was removed in [[patch 5.1]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[redlink]]&lt;br /&gt;
&lt;br /&gt;
i hate it here:&lt;br /&gt;
{{#tag:a|{{#invoke:Icon|renderGameIcon|frameType=standard|icon=File:Bluespirit longbow icon1.png|link=}}|href=&amp;quot;https://example.com&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
{{Markup example|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{dialogue|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
1st Maniple Centurion: yes&lt;br /&gt;
&amp;amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- testing if {{#set}} in {{#if}} condition works for whitespace escaping --&amp;gt;&lt;br /&gt;
{{#if:&lt;br /&gt;
  {{#set:Test property thingy aaa|yeet dab}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 Multi-purpose Fiberboard {{Item icon|Bluespirit Longbow|My Favorite Bow Ever}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px dashed currentcolor; padding:1em&amp;quot;&amp;gt;&lt;br /&gt;
All characters defined by the icon font:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family:&#039;EasonPro&#039;&amp;quot;&amp;gt;what&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
asdf asdf asdf asdf asdf asdf&amp;lt;br&amp;gt;&lt;br /&gt;
asdf asdf asdf asdf asdf asdf&amp;lt;br&amp;gt;&lt;br /&gt;
asdf {{status effect|doom}} [[Doom]] {{status effect|buff|well fed}} [[Well Fed]]&amp;lt;br&amp;gt;&lt;br /&gt;
asdf ghjk ghjk ghjk ghjk ghjk ghjk&amp;lt;br&amp;gt;&lt;br /&gt;
asdf ghjk {{status effect|doom}} [[Doom]] {{status effect|buff|well fed}} [[Well Fed]]&amp;lt;br&amp;gt;&lt;br /&gt;
asdf ghjk ghjk ghjk ghjk ghjk ghjk&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* asdf asdf asdf asdf asdf asdf&lt;br /&gt;
* asdf asdf asdf asdf asdf asdf&lt;br /&gt;
* asdf {{status effect|doom}} [[Doom]] {{status effect|buff|well fed}} [[Well Fed]]&lt;br /&gt;
* asdf ghjk ghjk ghjk ghjk ghjk ghjk&lt;br /&gt;
* asdf ghjk {{status effect|doom}} [[Doom]] {{status effect|buff|well fed}} [[Well Fed]]&lt;br /&gt;
* asdf ghjk ghjk ghjk ghjk ghjk ghjk&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
== {{status effect|doom}} Doom {{status effect|buff|well fed}} Well Fed ==&lt;br /&gt;
=== {{status effect|doom}} Doom {{status effect|buff|well fed}} Well Fed ===&lt;br /&gt;
==== {{status effect|doom}} Doom {{status effect|buff|well fed}} Well Fed ====&lt;br /&gt;
===== {{status effect|doom}} Doom {{status effect|buff|well fed}} Well Fed =====&lt;br /&gt;
====== {{status effect|doom}} Doom {{status effect|buff|well fed}} Well Fed ======&lt;br /&gt;
&lt;br /&gt;
 asdf asdf asdf asdf asdf asdf&lt;br /&gt;
 asdf asdf asdf asdf asdf asdf&lt;br /&gt;
 asdf {{status effect|doom}} [[Doom]] {{status effect|buff|well fed}} [[Well Fed]]&lt;br /&gt;
 asdf ghjk ghjk ghjk ghjk ghjk ghjk&lt;br /&gt;
 asdf ghjk {{status effect|doom}} [[Doom]] {{status effect|buff|well fed}} [[Well Fed]]&lt;br /&gt;
 asdf ghjk ghjk ghjk ghjk ghjk ghjk&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Icon&lt;br /&gt;
! Name&lt;br /&gt;
|-&lt;br /&gt;
| {{status effect|doom}}&lt;br /&gt;
| Doom&lt;br /&gt;
|-&lt;br /&gt;
| {{status effect|buff|well fed}}&lt;br /&gt;
| Well Fed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Testing multi-column layout  ==&lt;br /&gt;
&lt;br /&gt;
{{#invoke:Sandbox/heading columns|main|1=&lt;br /&gt;
===Glamour===&lt;br /&gt;
* {{i|The Faces We Wear - Thick-rimmed Goggles}}&lt;br /&gt;
* {{i|Cactuar Pajama Shirt}}&lt;br /&gt;
* {{i|Chocobo Pajama Eye Mask}}&lt;br /&gt;
===Other shit===&lt;br /&gt;
* a;lskd&lt;br /&gt;
* hfkljsdhglkjshdfg&lt;br /&gt;
=== Third shit ===&lt;br /&gt;
* hkjdhsflkghls&lt;br /&gt;
* kljdhflkjh&lt;br /&gt;
}} [[User:Erin Umbreon|Erin Umbreon]] &amp;lt;small&amp;gt;(she/it &amp;amp;bull; [[User talk:Erin Umbreon|talk]])&amp;lt;/small&amp;gt; 20:46, 28 October 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Testing SMW markers in visual editor - Lua- vs. parser function-based templates ==&lt;br /&gt;
&lt;br /&gt;
Via [[Module:Game icon]]: {{#invoke:Game icon|main|Exarchic Longbow|size=big}}&lt;br /&gt;
&lt;br /&gt;
Via {{Tl|game icon}}: {{I|Exarchic Longbow}}&lt;br /&gt;
&lt;br /&gt;
- [[User:Erin Umbreon|Erin Umbreon]] &amp;lt;small&amp;gt;(she/it &amp;amp;bull; [[User talk:Erin Umbreon|talk]])&amp;lt;/small&amp;gt; 18:51, 29 October 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Sandbox/game_icon_SMW_marker_lua_test&amp;diff=1585678</id>
		<title>Module:Sandbox/game icon SMW marker lua test</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Sandbox/game_icon_SMW_marker_lua_test&amp;diff=1585678"/>
		<updated>2026-10-29T21:11:45Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: Erin Umbreon moved page Module:Sandbox/game icon SMW marker lua test to Module:Game icon: un-sandbox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return require [[Module:Game icon]]&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585677</id>
		<title>Module:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585677"/>
		<updated>2026-10-29T21:11:45Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: Erin Umbreon moved page Module:Sandbox/game icon SMW marker lua test to Module:Game icon: un-sandbox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local Icon = require(&amp;quot;Module:Icon&amp;quot;)&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
  local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
  -- attempt to fetch SMW data&lt;br /&gt;
  local page = mw.smw.ask({&lt;br /&gt;
    (&amp;quot;[[%s]]&amp;quot;):format(args[1]),&lt;br /&gt;
    &amp;quot;?=Pagename#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has context&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has canonical name&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has dye channels&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon frame type&amp;quot;,&lt;br /&gt;
  })[1] -- only first result&lt;br /&gt;
&lt;br /&gt;
  -- render broken link for nonexistant pages&lt;br /&gt;
  if not page then&lt;br /&gt;
    return Icon.renderGameIconWithLabel({&lt;br /&gt;
      text = args[2] or args.alt or args[1],&lt;br /&gt;
      link = args[1],&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- get the logical name of the thing being linked&lt;br /&gt;
  local canonicalName = page[&amp;quot;Has canonical name&amp;quot;]&lt;br /&gt;
  if not canonicalName or canonicalName == &amp;quot;&amp;quot; then&lt;br /&gt;
    canonicalName = args[1]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- compute final label text and alt text based on user value&lt;br /&gt;
  local textParam = args[2] or args.alt  -- 2 takes precedence over alt&lt;br /&gt;
  local text = canonicalName&lt;br /&gt;
  local alt = canonicalName&lt;br /&gt;
  if textParam == &amp;quot;x&amp;quot; then&lt;br /&gt;
    text = &amp;quot;&amp;quot;&lt;br /&gt;
    -- alt remains the canonical name for screen readers&lt;br /&gt;
  elseif textParam and textParam ~= &amp;quot;&amp;quot; then&lt;br /&gt;
    -- use provided label as both label and alt&lt;br /&gt;
    text = textParam&lt;br /&gt;
    alt = textParam&lt;br /&gt;
  end&lt;br /&gt;
  -- if no text param was given, canonical name is used for both&lt;br /&gt;
&lt;br /&gt;
  -- yippee&lt;br /&gt;
  return Icon.gameIconWithLabel({&lt;br /&gt;
    -- SMW data&lt;br /&gt;
    icon = page[&amp;quot;Has game icon&amp;quot;],&lt;br /&gt;
    frameType = page[&amp;quot;Has game icon frame type&amp;quot;],&lt;br /&gt;
    type = page[&amp;quot;Has context&amp;quot;],&lt;br /&gt;
    dyeCount = page[&amp;quot;Has dye channels&amp;quot;] or 0,&lt;br /&gt;
&lt;br /&gt;
    -- computed parameters&lt;br /&gt;
    text = text,&lt;br /&gt;
    alt = alt,&lt;br /&gt;
&lt;br /&gt;
    -- other passthrough parameters&lt;br /&gt;
    link = args[1],&lt;br /&gt;
    size = args.size,&lt;br /&gt;
    hq = yesno(args.hq),&lt;br /&gt;
    qty = args.qty,&lt;br /&gt;
    allowWrap = yesno(args.wrap),&lt;br /&gt;
  })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585676</id>
		<title>Module:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585676"/>
		<updated>2026-10-29T21:10:02Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local Icon = require(&amp;quot;Module:Icon&amp;quot;)&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
  local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
  -- attempt to fetch SMW data&lt;br /&gt;
  local page = mw.smw.ask({&lt;br /&gt;
    (&amp;quot;[[%s]]&amp;quot;):format(args[1]),&lt;br /&gt;
    &amp;quot;?=Pagename#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has context&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has canonical name&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has dye channels&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon frame type&amp;quot;,&lt;br /&gt;
  })[1] -- only first result&lt;br /&gt;
&lt;br /&gt;
  -- render broken link for nonexistant pages&lt;br /&gt;
  if not page then&lt;br /&gt;
    return Icon.renderGameIconWithLabel({&lt;br /&gt;
      text = args[2] or args.alt or args[1],&lt;br /&gt;
      link = args[1],&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- get the logical name of the thing being linked&lt;br /&gt;
  local canonicalName = page[&amp;quot;Has canonical name&amp;quot;]&lt;br /&gt;
  if not canonicalName or canonicalName == &amp;quot;&amp;quot; then&lt;br /&gt;
    canonicalName = args[1]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- compute final label text and alt text based on user value&lt;br /&gt;
  local textParam = args[2] or args.alt  -- 2 takes precedence over alt&lt;br /&gt;
  local text = canonicalName&lt;br /&gt;
  local alt = canonicalName&lt;br /&gt;
  if textParam == &amp;quot;x&amp;quot; then&lt;br /&gt;
    text = &amp;quot;&amp;quot;&lt;br /&gt;
    -- alt remains the canonical name for screen readers&lt;br /&gt;
  elseif textParam and textParam ~= &amp;quot;&amp;quot; then&lt;br /&gt;
    -- use provided label as both label and alt&lt;br /&gt;
    text = textParam&lt;br /&gt;
    alt = textParam&lt;br /&gt;
  end&lt;br /&gt;
  -- if no text param was given, canonical name is used for both&lt;br /&gt;
&lt;br /&gt;
  -- yippee&lt;br /&gt;
  return Icon.gameIconWithLabel({&lt;br /&gt;
    -- SMW data&lt;br /&gt;
    icon = page[&amp;quot;Has game icon&amp;quot;],&lt;br /&gt;
    frameType = page[&amp;quot;Has game icon frame type&amp;quot;],&lt;br /&gt;
    type = page[&amp;quot;Has context&amp;quot;],&lt;br /&gt;
    dyeCount = page[&amp;quot;Has dye channels&amp;quot;] or 0,&lt;br /&gt;
&lt;br /&gt;
    -- computed parameters&lt;br /&gt;
    text = text,&lt;br /&gt;
    alt = alt,&lt;br /&gt;
&lt;br /&gt;
    -- other passthrough parameters&lt;br /&gt;
    link = args[1],&lt;br /&gt;
    size = args.size,&lt;br /&gt;
    hq = yesno(args.hq),&lt;br /&gt;
    qty = args.qty,&lt;br /&gt;
    allowWrap = yesno(args.wrap),&lt;br /&gt;
  })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585675</id>
		<title>Module:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585675"/>
		<updated>2026-10-29T21:08:16Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local Icon = require(&amp;quot;Module:Icon&amp;quot;)&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
  local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
  -- attempt to fetch SMW data&lt;br /&gt;
  local page = mw.smw.ask({&lt;br /&gt;
    (&amp;quot;[[%s]]&amp;quot;):format(args[1]),&lt;br /&gt;
    &amp;quot;?=Pagename#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has context&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has canonical name&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has dye channels&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon frame type&amp;quot;,&lt;br /&gt;
  })[1] -- only first result&lt;br /&gt;
  mw.logObject(page)&lt;br /&gt;
&lt;br /&gt;
  -- render broken link for nonexistant pages&lt;br /&gt;
  if not page then&lt;br /&gt;
    return Icon.renderGameIconWithLabel({&lt;br /&gt;
      text = args[2] or args.alt or args[1],&lt;br /&gt;
      link = args[1],&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- get the logical name of the thing being linked&lt;br /&gt;
  local canonicalName = page[&amp;quot;Has canonical name&amp;quot;]&lt;br /&gt;
  if not canonicalName or canonicalName == &amp;quot;&amp;quot; then&lt;br /&gt;
    canonicalName = args[1]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- compute final label text and alt text based on user value&lt;br /&gt;
  local textParam = args[2] or args.alt  -- 2 takes precedence over alt&lt;br /&gt;
  local text = canonicalName&lt;br /&gt;
  local alt = canonicalName&lt;br /&gt;
  if textParam == &amp;quot;x&amp;quot; then&lt;br /&gt;
    text = &amp;quot;&amp;quot;&lt;br /&gt;
    -- alt remains the canonical name for screen readers&lt;br /&gt;
  elseif textParam and textParam ~= &amp;quot;&amp;quot; then&lt;br /&gt;
    -- use provided label as both label and alt&lt;br /&gt;
    text = textParam&lt;br /&gt;
    alt = textParam&lt;br /&gt;
  end&lt;br /&gt;
  -- if no text param was given, canonical name is used for both&lt;br /&gt;
&lt;br /&gt;
  -- yippee&lt;br /&gt;
  local iconArgs = {&lt;br /&gt;
    -- SMW data&lt;br /&gt;
    icon = page[&amp;quot;Has game icon&amp;quot;],&lt;br /&gt;
    frameType = page[&amp;quot;Has game icon frame type&amp;quot;],&lt;br /&gt;
    type = page[&amp;quot;Has context&amp;quot;],&lt;br /&gt;
    dyeCount = page[&amp;quot;Has dye channels&amp;quot;] or 0,&lt;br /&gt;
&lt;br /&gt;
    -- computed parameters&lt;br /&gt;
    text = text,&lt;br /&gt;
    alt = alt,&lt;br /&gt;
&lt;br /&gt;
    -- other passthrough parameters&lt;br /&gt;
    link = args[1],&lt;br /&gt;
    size = args.size,&lt;br /&gt;
    hq = yesno(args.hq),&lt;br /&gt;
    qty = args.qty,&lt;br /&gt;
    allowWrap = yesno(args.wrap),&lt;br /&gt;
  }&lt;br /&gt;
  mw.logObject(iconArgs)&lt;br /&gt;
&lt;br /&gt;
  return Icon.gameIconWithLabel(iconArgs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585674</id>
		<title>Module:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585674"/>
		<updated>2026-10-29T21:04:49Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local Icon = require(&amp;quot;Module:Icon&amp;quot;)&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
  local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
  -- attempt to fetch SMW data&lt;br /&gt;
  local page = mw.smw.ask({&lt;br /&gt;
    (&amp;quot;[[%s]]&amp;quot;):format(args[1]),&lt;br /&gt;
    &amp;quot;?=Pagename#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has context&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has canonical name&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has dye channels&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon frame type&amp;quot;,&lt;br /&gt;
  })[1] -- only first result&lt;br /&gt;
  mw.logObject(page)&lt;br /&gt;
&lt;br /&gt;
  -- render broken link for nonexistant pages&lt;br /&gt;
  if not page then&lt;br /&gt;
    return Icon.renderGameIconWithLabel({&lt;br /&gt;
      text = args[2] or args.alt or args[1],&lt;br /&gt;
      link = args[1],&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- get the logical name of the thing being linked&lt;br /&gt;
  local canonicalName = page[&amp;quot;Has canonical name&amp;quot;]&lt;br /&gt;
  if not canonicalName or canonicalName == &amp;quot;&amp;quot; then&lt;br /&gt;
    canonicalName = args[1]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- compute final label text and alt text based on user value&lt;br /&gt;
  local textParam = args[2] or args.alt  -- 2 takes precedence over alt&lt;br /&gt;
  local text = canonicalName&lt;br /&gt;
  local alt = canonicalName&lt;br /&gt;
  if textParam == &amp;quot;x&amp;quot; then&lt;br /&gt;
    text = &amp;quot;&amp;quot;&lt;br /&gt;
    -- alt remains the canonical name for screen readers&lt;br /&gt;
  elseif textParam and textParam ~= &amp;quot;&amp;quot; then&lt;br /&gt;
    -- use provided label as both label and alt&lt;br /&gt;
    text = textParam&lt;br /&gt;
    alt = textParam&lt;br /&gt;
  end&lt;br /&gt;
  -- if no text param was given, canonical name is used for both&lt;br /&gt;
&lt;br /&gt;
  -- yippee&lt;br /&gt;
  local iconArgs = {&lt;br /&gt;
    -- SMW data&lt;br /&gt;
    icon = page[&amp;quot;Has game icon&amp;quot;],&lt;br /&gt;
    frameType = page[&amp;quot;Has game icon frame type&amp;quot;],&lt;br /&gt;
    type = page[&amp;quot;Has context&amp;quot;],&lt;br /&gt;
    dyeCount = page[&amp;quot;Has dye channels&amp;quot;] or 0,&lt;br /&gt;
&lt;br /&gt;
    -- computed parameters&lt;br /&gt;
    text = text,&lt;br /&gt;
    alt = alt,&lt;br /&gt;
&lt;br /&gt;
    -- other passthrough parameters&lt;br /&gt;
    link = args.link,&lt;br /&gt;
    size = args.size,&lt;br /&gt;
    hq = yesno(args.hq),&lt;br /&gt;
    qty = args.qty,&lt;br /&gt;
    allowWrap = yesno(args.wrap),&lt;br /&gt;
  }&lt;br /&gt;
  mw.logObject(iconArgs)&lt;br /&gt;
&lt;br /&gt;
  return Icon.gameIconWithLabel(iconArgs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585673</id>
		<title>Module:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585673"/>
		<updated>2026-10-29T21:01:21Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local Icon = require(&amp;quot;Module:Icon&amp;quot;)&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
  local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
  -- attempt to fetch SMW data&lt;br /&gt;
  local page = mw.smw.ask({&lt;br /&gt;
    (&amp;quot;[[%s]]&amp;quot;):format(args[1]),&lt;br /&gt;
    &amp;quot;?=Pagename#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has context&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has canonical name&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has dye channels&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon frame type&amp;quot;,&lt;br /&gt;
  })[1] -- only first result&lt;br /&gt;
  mw.logObject(page)&lt;br /&gt;
&lt;br /&gt;
  -- render broken link for nonexistant pages&lt;br /&gt;
  if not page then&lt;br /&gt;
    return Icon.renderGameIconWithLabel({&lt;br /&gt;
      text = args[2] or args.alt or args[1],&lt;br /&gt;
      link = args[1],&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- get the logical name of the thing being linked&lt;br /&gt;
  local canonicalName = page[&amp;quot;Has canonical name&amp;quot;]&lt;br /&gt;
  if not canonicalName or canonicalName == &amp;quot;&amp;quot; then&lt;br /&gt;
    canonicalName = args[1]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- compute final label text and alt text based on user value&lt;br /&gt;
  local textParam = args[2] or args.alt  -- 2 takes precedence over alt&lt;br /&gt;
  local text = canonicalName&lt;br /&gt;
  local alt = canonicalName&lt;br /&gt;
  if textParam == &amp;quot;x&amp;quot; then&lt;br /&gt;
    text = &amp;quot;&amp;quot;&lt;br /&gt;
    -- alt remains the canonical name for screen readers&lt;br /&gt;
  elseif textParam and textParam ~= &amp;quot;&amp;quot; then&lt;br /&gt;
    -- use provided label as both label and alt&lt;br /&gt;
    text = textParam&lt;br /&gt;
    alt = textParam&lt;br /&gt;
  end&lt;br /&gt;
  -- if no text param was given, canonical name is used for both&lt;br /&gt;
&lt;br /&gt;
  -- yippee&lt;br /&gt;
  local iconArgs = {&lt;br /&gt;
    -- SMW data&lt;br /&gt;
    icon = page[&amp;quot;Has game icon&amp;quot;],&lt;br /&gt;
    frameType = page[&amp;quot;Has game icon frame type&amp;quot;],&lt;br /&gt;
    type = page[&amp;quot;Has context&amp;quot;],&lt;br /&gt;
    dyeChannels = page[&amp;quot;Has dye channels&amp;quot;] or 0,&lt;br /&gt;
&lt;br /&gt;
    -- computed parameters&lt;br /&gt;
    text = text,&lt;br /&gt;
    alt = alt,&lt;br /&gt;
&lt;br /&gt;
    -- other passthrough parameters&lt;br /&gt;
    link = args.link,&lt;br /&gt;
    size = args.size,&lt;br /&gt;
    hq = yesno(args.hq),&lt;br /&gt;
    qty = args.qty,&lt;br /&gt;
    allowWrap = args.wrap,&lt;br /&gt;
  }&lt;br /&gt;
  mw.logObject(iconArgs)&lt;br /&gt;
&lt;br /&gt;
  return Icon.gameIconWithLabel(iconArgs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585672</id>
		<title>Module:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585672"/>
		<updated>2026-10-29T21:00:43Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local Icon = require(&amp;quot;Module:Icon&amp;quot;)&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
  local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
  -- attempt to fetch SMW data&lt;br /&gt;
  local page = mw.smw.ask({&lt;br /&gt;
    (&amp;quot;[[%s]]&amp;quot;):format(args[1]),&lt;br /&gt;
    &amp;quot;?=Pagename#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has context&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has canonical name&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has dye channels&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon frame type&amp;quot;,&lt;br /&gt;
  })[1] -- only first result&lt;br /&gt;
  mw.logObject(page)&lt;br /&gt;
&lt;br /&gt;
  -- render broken link for nonexistant pages&lt;br /&gt;
  if not page then&lt;br /&gt;
    return Icon.renderGameIconWithLabel({&lt;br /&gt;
      text = args[2] or args.alt or args[1],&lt;br /&gt;
      link = args[1],&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- get the logical name of the thing being linked&lt;br /&gt;
  local canonical_name = page[&amp;quot;Has canonical name&amp;quot;]&lt;br /&gt;
  if not canonical_name or canonical_name == &amp;quot;&amp;quot; then&lt;br /&gt;
    canonical_name = args[1]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- compute final label text and alt text based on user value&lt;br /&gt;
  local text_param = args[2] or args.alt  -- 2 takes precedence over alt&lt;br /&gt;
  local text = canonical_name&lt;br /&gt;
  local alt = canonical_name&lt;br /&gt;
  if text_param == &amp;quot;x&amp;quot; then&lt;br /&gt;
    text = &amp;quot;&amp;quot;&lt;br /&gt;
    -- alt remains the canonical name for screen readers&lt;br /&gt;
  elseif text_param and text_param ~= &amp;quot;&amp;quot; then&lt;br /&gt;
    -- use provided label as both label and alt&lt;br /&gt;
    text = text_param&lt;br /&gt;
    alt = text_param&lt;br /&gt;
  end&lt;br /&gt;
  -- if no text param was given, canonical name is used for both&lt;br /&gt;
&lt;br /&gt;
  -- yippee&lt;br /&gt;
  local icon_args = {&lt;br /&gt;
    -- SMW data&lt;br /&gt;
    icon = page[&amp;quot;Has game icon&amp;quot;],&lt;br /&gt;
    frameType = page[&amp;quot;Has game icon frame type&amp;quot;],&lt;br /&gt;
    type = page[&amp;quot;Has context&amp;quot;],&lt;br /&gt;
    dyeChannels = page[&amp;quot;Has dye channels&amp;quot;] or 0,&lt;br /&gt;
&lt;br /&gt;
    -- computed parameters&lt;br /&gt;
    text = text,&lt;br /&gt;
    alt = alt,&lt;br /&gt;
&lt;br /&gt;
    -- other passthrough parameters&lt;br /&gt;
    link = args.link,&lt;br /&gt;
    size = args.size,&lt;br /&gt;
    hq = yesno(args.hq),&lt;br /&gt;
    qty = args.qty,&lt;br /&gt;
    allowWrap = args.wrap,&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return Icon.gameIconWithLabel(icon_args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585671</id>
		<title>Module:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585671"/>
		<updated>2026-10-29T20:58:52Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local Icon = require(&amp;quot;Module:Icon&amp;quot;)&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
  local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
  -- attempt to fetch SMW data&lt;br /&gt;
  local page = mw.smw.ask({&lt;br /&gt;
    (&amp;quot;[[%s]]&amp;quot;):format(args[1]),&lt;br /&gt;
    &amp;quot;?=Pagename#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has context&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has canonical name&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has dye channels&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon frame type&amp;quot;,&lt;br /&gt;
  })[1] -- only first result&lt;br /&gt;
  mw.logObject(page)&lt;br /&gt;
&lt;br /&gt;
  -- render broken link for nonexistant pages&lt;br /&gt;
  if not page then&lt;br /&gt;
    return Icon.renderGameIconWithLabel({&lt;br /&gt;
      text = args[2] or args.alt or args[1],&lt;br /&gt;
      link = args[1],&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- get the logical name of the thing being linked&lt;br /&gt;
  local canonical_name = page[&amp;quot;Has canonical name&amp;quot;]&lt;br /&gt;
  if not canonical_name or canonical_name == &amp;quot;&amp;quot; then&lt;br /&gt;
    canonical_name = args[1]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- compute final label text and alt text based on user value&lt;br /&gt;
  local text_param = args[2] or args.alt  -- 2 takes precedence over alt&lt;br /&gt;
  local text = canonical_name&lt;br /&gt;
  local alt = canonical_name&lt;br /&gt;
  if text_param == &amp;quot;x&amp;quot; then&lt;br /&gt;
    text = &amp;quot;&amp;quot;&lt;br /&gt;
    -- alt remains the canonical name for screen readers&lt;br /&gt;
  elseif text_param and text_param ~= &amp;quot;&amp;quot; then&lt;br /&gt;
    -- use provided label as both label and alt&lt;br /&gt;
    text = text_param&lt;br /&gt;
    alt = text_param&lt;br /&gt;
  end&lt;br /&gt;
  -- if no text param was given, canonical name is used for both&lt;br /&gt;
&lt;br /&gt;
  -- yippee&lt;br /&gt;
  return Icon.gameIconWithLabel({&lt;br /&gt;
    -- SMW data&lt;br /&gt;
    icon = page[&amp;quot;Has game icon&amp;quot;],&lt;br /&gt;
    frameType = page[&amp;quot;Has game icon frame type&amp;quot;],&lt;br /&gt;
    type = page[&amp;quot;Has context&amp;quot;],&lt;br /&gt;
    dyeChannels = page[&amp;quot;Has dye channels&amp;quot;] or 0,&lt;br /&gt;
&lt;br /&gt;
    -- computed parameters&lt;br /&gt;
    text = text,&lt;br /&gt;
    alt = alt,&lt;br /&gt;
&lt;br /&gt;
    -- other passthrough parameters&lt;br /&gt;
    link = args.link,&lt;br /&gt;
    size = args.size,&lt;br /&gt;
    hq = yesno(args.hq),&lt;br /&gt;
    qty = args.qty,&lt;br /&gt;
    allowWrap = args.wrap,&lt;br /&gt;
  })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585670</id>
		<title>Module:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585670"/>
		<updated>2026-10-29T20:58:15Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: testing more shit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local Icon = require(&amp;quot;Module:Icon&amp;quot;)&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
  local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
  -- attempt to fetch SMW data&lt;br /&gt;
  local page = mw.smw.ask({&lt;br /&gt;
    (&amp;quot;[[%s]]&amp;quot;):format(args[1]),&lt;br /&gt;
    &amp;quot;?=Pagename#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has context&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has canonical name&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has dye channels&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon frame type&amp;quot;,&lt;br /&gt;
  })[1] -- only first result&lt;br /&gt;
  mw.logObject(page)&lt;br /&gt;
&lt;br /&gt;
  -- render broken link for nonexistant pages&lt;br /&gt;
  if not page then&lt;br /&gt;
    return Icon.renderGameIconWithLabel({&lt;br /&gt;
      text = args[2] or args.alt or args[1],&lt;br /&gt;
      link = args[1],&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- get the logical name of the thing being linked&lt;br /&gt;
  local canonical_name = page[&amp;quot;Has canonical name&amp;quot;]&lt;br /&gt;
  if not canonical_name or canonical_name == &amp;quot;&amp;quot; then&lt;br /&gt;
    canonical_name = args[1]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- compute final label text and alt text based on user value&lt;br /&gt;
  local text_param = args[2] or args.alt  -- 2 takes precedence over alt&lt;br /&gt;
  local text = canonical_name&lt;br /&gt;
  local alt = canonical_name&lt;br /&gt;
  if text_param == &amp;quot;x&amp;quot; then&lt;br /&gt;
    text = &amp;quot;&amp;quot;&lt;br /&gt;
    -- alt remains the canonical name for screen readers&lt;br /&gt;
  elseif text_param and text_param ~= &amp;quot;&amp;quot; then&lt;br /&gt;
    -- use provided label as both label and alt&lt;br /&gt;
    text = text_param&lt;br /&gt;
    alt = text_param&lt;br /&gt;
  end&lt;br /&gt;
  -- if no text param was given, canonical name is used for both&lt;br /&gt;
&lt;br /&gt;
  -- yippee&lt;br /&gt;
  return Icon.gameIconWithLabel({&lt;br /&gt;
    -- SMW data&lt;br /&gt;
    icon = thing[&amp;quot;Has game icon&amp;quot;],&lt;br /&gt;
    frameType = thing[&amp;quot;Has game icon frame type&amp;quot;],&lt;br /&gt;
    type = thing[&amp;quot;Has context&amp;quot;],&lt;br /&gt;
    dyeChannels = thing[&amp;quot;Has dye channels&amp;quot;] or 0,&lt;br /&gt;
&lt;br /&gt;
    -- computed parameters&lt;br /&gt;
    text = text,&lt;br /&gt;
    alt = alt,&lt;br /&gt;
&lt;br /&gt;
    -- other passthrough parameters&lt;br /&gt;
    link = args.link,&lt;br /&gt;
    size = args.size,&lt;br /&gt;
    hq = yesno(args.hq),&lt;br /&gt;
    qty = args.qty,&lt;br /&gt;
    allowWrap = args.wrap,&lt;br /&gt;
  })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Quotation&amp;diff=1585658</id>
		<title>Template:Quotation</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Quotation&amp;diff=1585658"/>
		<updated>2026-10-29T19:34:22Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: use &amp;lt;div&amp;gt; instead of &amp;lt;p&amp;gt; to exclude entire quotation from naive article preview scrapers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;blockquote class=&amp;quot;quotation-box&amp;quot; style=&amp;quot;padding: 0em 2em 0em 1em; margin: 1em 0em 1em;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;line-height: 1.53846em;&amp;quot;&amp;gt;&lt;br /&gt;
{{{2|Quoted text.}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;text-align: right; font-size: 0.9em; font-style:italic; margin-top:0;&amp;quot;&amp;gt;— {{ #switch: {{ lc: {{{1|}}} }}&lt;br /&gt;
| game     = In-game description&lt;br /&gt;
| website  = Official website&lt;br /&gt;
| #default = {{{1|Quotation source}}}&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&lt;br /&gt;
{{#if: {{{3|}}}|&amp;lt;div style=&amp;quot;margin-bottom:0;&amp;quot;&amp;gt;{{{3|}}}&amp;lt;/div&amp;gt;|}}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
{{markup example|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{Quotation|Someone|&lt;br /&gt;
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum feugiat auctor lectus, nec convallis lorem feugiat vel. Nunc bibendum neque est, vel feugiat risus eleifend a. Ut semper turpis a urna vehicula vehicula. Duis pulvinar consequat diam, in egestas mauris. Morbi aliquet volutpat nisl a venenatis. Aliquam et nisi dolor. Etiam viverra malesuada ante non venenatis. Nulla ultrices mattis accumsan. Aliquam blandit auctor varius. Ut placerat nunc nec dui interdum, ultrices pharetra diam sodales. Mauris id egestas libero. Maecenas consequat ante sit amet consequat pharetra. &lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=User:Erin_Umbreon/Sandbox&amp;diff=1585656</id>
		<title>User:Erin Umbreon/Sandbox</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=User:Erin_Umbreon/Sandbox&amp;diff=1585656"/>
		<updated>2026-10-29T19:06:04Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: /* a */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NEWSECTIONLINK__&lt;br /&gt;
{{hatnote|This user &#039;&#039;&#039;does not know what she is doing&#039;&#039;&#039;.}}&lt;br /&gt;
&lt;br /&gt;
== Test case: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;ref&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; in {{tl|Dialogue}} ==&lt;br /&gt;
&lt;br /&gt;
{{dialogue|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Y&#039;shtola: Hello!&amp;lt;ref&amp;gt;hehehehe&amp;lt;/ref&amp;gt;&lt;br /&gt;
Y&#039;shtola: Goodbye!&lt;br /&gt;
&#039;&#039;The WoL eats some {{i|Xibruq Pibil}}&amp;lt;ref&amp;gt;It was tasty.&amp;lt;/ref&amp;gt;. Everyone goes home and eats dinner together.&#039;&#039;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
! debug stuff&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{{#invoke:Sandbox/Nowiki behavior testing|testRefPreprocessStripMarkerStuff}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[User:Erin Umbreon|Erin Umbreon]] &amp;lt;small&amp;gt;(she/it &amp;amp;bull; [[User talk:Erin Umbreon|talk]])&amp;lt;/small&amp;gt; 02:46, 18 October 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Older experiments ==&lt;br /&gt;
&lt;br /&gt;
[[Special:Diff/|yeag]]&lt;br /&gt;
&lt;br /&gt;
{{/Noticebox&lt;br /&gt;
| title = High-end content&lt;br /&gt;
| color = red&lt;br /&gt;
| content =&lt;br /&gt;
The Bahamut raids have difficulty comparable to [[Savage raids]] and do not feature in any [[Duty Roulette|roulette]]s. They should not be queued via [[Duty Finder]]. Players should treat these raids as high-end content and form parties in [[Party Finder]] instead, [[unsync]]ing for easier completion if desired.}}&lt;br /&gt;
{{/Noticebox&lt;br /&gt;
| title = Future content&lt;br /&gt;
| color = green&lt;br /&gt;
| content = The subject of this article is currently in development, and is not yet available to players. It is expected to be released in [[patch 8.0]].&lt;br /&gt;
}}&lt;br /&gt;
{{/Noticebox&lt;br /&gt;
| title = Retired content&lt;br /&gt;
| color = blue&lt;br /&gt;
| content = The subject of this article was retired or removed from the game, and is no longer available to players. It was removed in [[patch 5.1]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[redlink]]&lt;br /&gt;
&lt;br /&gt;
i hate it here:&lt;br /&gt;
{{#tag:a|{{#invoke:Icon|renderGameIcon|frameType=standard|icon=File:Bluespirit longbow icon1.png|link=}}|href=&amp;quot;https://example.com&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
{{Markup example|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{dialogue|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
1st Maniple Centurion: yes&lt;br /&gt;
&amp;amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- testing if {{#set}} in {{#if}} condition works for whitespace escaping --&amp;gt;&lt;br /&gt;
{{#if:&lt;br /&gt;
  {{#set:Test property thingy aaa|yeet dab}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 Multi-purpose Fiberboard {{Item icon|Bluespirit Longbow|My Favorite Bow Ever}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px dashed currentcolor; padding:1em&amp;quot;&amp;gt;&lt;br /&gt;
All characters defined by the icon font:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family:&#039;EasonPro&#039;&amp;quot;&amp;gt;what&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
asdf asdf asdf asdf asdf asdf&amp;lt;br&amp;gt;&lt;br /&gt;
asdf asdf asdf asdf asdf asdf&amp;lt;br&amp;gt;&lt;br /&gt;
asdf {{status effect|doom}} [[Doom]] {{status effect|buff|well fed}} [[Well Fed]]&amp;lt;br&amp;gt;&lt;br /&gt;
asdf ghjk ghjk ghjk ghjk ghjk ghjk&amp;lt;br&amp;gt;&lt;br /&gt;
asdf ghjk {{status effect|doom}} [[Doom]] {{status effect|buff|well fed}} [[Well Fed]]&amp;lt;br&amp;gt;&lt;br /&gt;
asdf ghjk ghjk ghjk ghjk ghjk ghjk&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* asdf asdf asdf asdf asdf asdf&lt;br /&gt;
* asdf asdf asdf asdf asdf asdf&lt;br /&gt;
* asdf {{status effect|doom}} [[Doom]] {{status effect|buff|well fed}} [[Well Fed]]&lt;br /&gt;
* asdf ghjk ghjk ghjk ghjk ghjk ghjk&lt;br /&gt;
* asdf ghjk {{status effect|doom}} [[Doom]] {{status effect|buff|well fed}} [[Well Fed]]&lt;br /&gt;
* asdf ghjk ghjk ghjk ghjk ghjk ghjk&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
== {{status effect|doom}} Doom {{status effect|buff|well fed}} Well Fed ==&lt;br /&gt;
=== {{status effect|doom}} Doom {{status effect|buff|well fed}} Well Fed ===&lt;br /&gt;
==== {{status effect|doom}} Doom {{status effect|buff|well fed}} Well Fed ====&lt;br /&gt;
===== {{status effect|doom}} Doom {{status effect|buff|well fed}} Well Fed =====&lt;br /&gt;
====== {{status effect|doom}} Doom {{status effect|buff|well fed}} Well Fed ======&lt;br /&gt;
&lt;br /&gt;
 asdf asdf asdf asdf asdf asdf&lt;br /&gt;
 asdf asdf asdf asdf asdf asdf&lt;br /&gt;
 asdf {{status effect|doom}} [[Doom]] {{status effect|buff|well fed}} [[Well Fed]]&lt;br /&gt;
 asdf ghjk ghjk ghjk ghjk ghjk ghjk&lt;br /&gt;
 asdf ghjk {{status effect|doom}} [[Doom]] {{status effect|buff|well fed}} [[Well Fed]]&lt;br /&gt;
 asdf ghjk ghjk ghjk ghjk ghjk ghjk&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Icon&lt;br /&gt;
! Name&lt;br /&gt;
|-&lt;br /&gt;
| {{status effect|doom}}&lt;br /&gt;
| Doom&lt;br /&gt;
|-&lt;br /&gt;
| {{status effect|buff|well fed}}&lt;br /&gt;
| Well Fed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Testing multi-column layout  ==&lt;br /&gt;
&lt;br /&gt;
{{#invoke:Sandbox/heading columns|main|1=&lt;br /&gt;
===Glamour===&lt;br /&gt;
* {{i|The Faces We Wear - Thick-rimmed Goggles}}&lt;br /&gt;
* {{i|Cactuar Pajama Shirt}}&lt;br /&gt;
* {{i|Chocobo Pajama Eye Mask}}&lt;br /&gt;
===Other shit===&lt;br /&gt;
* a;lskd&lt;br /&gt;
* hfkljsdhglkjshdfg&lt;br /&gt;
=== Third shit ===&lt;br /&gt;
* hkjdhsflkghls&lt;br /&gt;
* kljdhflkjh&lt;br /&gt;
}} [[User:Erin Umbreon|Erin Umbreon]] &amp;lt;small&amp;gt;(she/it &amp;amp;bull; [[User talk:Erin Umbreon|talk]])&amp;lt;/small&amp;gt; 20:46, 28 October 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
== a ==&lt;br /&gt;
&lt;br /&gt;
thing: {{#invoke:Sandbox/game icon SMW marker lua test|main|1=Bluespirit Longbow}}&lt;br /&gt;
&lt;br /&gt;
- [[User:Erin Umbreon|Erin Umbreon]] &amp;lt;small&amp;gt;(she/it &amp;amp;bull; [[User talk:Erin Umbreon|talk]])&amp;lt;/small&amp;gt; 18:51, 29 October 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585655</id>
		<title>Module:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585655"/>
		<updated>2026-10-29T19:05:52Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- test file to see if performing SMW queries in Lua instead of via parser&lt;br /&gt;
-- functions allows us to avoid having [[SMW::off]] markers in visual editor&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
--[=[ original query:&lt;br /&gt;
&lt;br /&gt;
{{#show:{{#titleparts:{{{1|}}}}}&lt;br /&gt;
|?=#Pagename&lt;br /&gt;
|?Has context&lt;br /&gt;
|?Has game icon#&lt;br /&gt;
|?Has canonical name&lt;br /&gt;
|?Has dye channels&lt;br /&gt;
|?Has game icon frame type&lt;br /&gt;
| format = plainlist&lt;br /&gt;
| link = none&lt;br /&gt;
| named args = yes&lt;br /&gt;
| template = Game icon format&lt;br /&gt;
| userparam = {{{2|{{{alt|}}}}}};{{{size|}}};{{{hq|}}};{{{qty|}}};{{{wrap|}}};{{#titleparts:{{{1|}}}}}&lt;br /&gt;
| default = {{#invoke:Icon|renderGameIconWithLabel|text={{{2|{{{alt|{{{1|}}}}}}}}}|link={{{1|}}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
  local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
  local name = args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
  mw.log(&amp;quot;Name: &amp;quot; .. name)&lt;br /&gt;
  mw.log(&amp;quot;Formatted name: &amp;quot; .. (&amp;quot;[[%s]]&amp;quot;):format(name))&lt;br /&gt;
&lt;br /&gt;
  local thing = mw.smw.ask({&lt;br /&gt;
    (&amp;quot;[[%s]]&amp;quot;):format(name),&lt;br /&gt;
    &amp;quot;?=Pagename#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has context&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has canonical name&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has dye channels&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon frame type&amp;quot;,&lt;br /&gt;
  })[1]&lt;br /&gt;
&lt;br /&gt;
  if not thing then&lt;br /&gt;
    return &amp;quot;wot&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
--  thing.Pagename = thing[&amp;quot;&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
  mw.logObject(thing)&lt;br /&gt;
&lt;br /&gt;
  -- assemble userparam&lt;br /&gt;
  local text = args[2] or args.alt or &amp;quot;&amp;quot;&lt;br /&gt;
  local size = args.size or &amp;quot;&amp;quot;&lt;br /&gt;
  local hq = args.hq or &amp;quot;&amp;quot;&lt;br /&gt;
  local qty = args.qty or &amp;quot;&amp;quot;&lt;br /&gt;
  local wrap = args.wrap or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  local userparam = (&amp;quot;%s;%s;%s;%s;%s;%s&amp;quot;):format(text, size, hq, qty, wrap, name)&lt;br /&gt;
&lt;br /&gt;
  return frame:expandTemplate({&lt;br /&gt;
    title = &amp;quot;Template:Game icon format&amp;quot;,&lt;br /&gt;
    args = thing,&lt;br /&gt;
  })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585654</id>
		<title>Module:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585654"/>
		<updated>2026-10-29T19:05:21Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- test file to see if performing SMW queries in Lua instead of via parser&lt;br /&gt;
-- functions allows us to avoid having [[SMW::off]] markers in visual editor&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
--[=[ original query:&lt;br /&gt;
&lt;br /&gt;
{{#show:{{#titleparts:{{{1|}}}}}&lt;br /&gt;
|?=#Pagename&lt;br /&gt;
|?Has context&lt;br /&gt;
|?Has game icon#&lt;br /&gt;
|?Has canonical name&lt;br /&gt;
|?Has dye channels&lt;br /&gt;
|?Has game icon frame type&lt;br /&gt;
| format = plainlist&lt;br /&gt;
| link = none&lt;br /&gt;
| named args = yes&lt;br /&gt;
| template = Game icon format&lt;br /&gt;
| userparam = {{{2|{{{alt|}}}}}};{{{size|}}};{{{hq|}}};{{{qty|}}};{{{wrap|}}};{{#titleparts:{{{1|}}}}}&lt;br /&gt;
| default = {{#invoke:Icon|renderGameIconWithLabel|text={{{2|{{{alt|{{{1|}}}}}}}}}|link={{{1|}}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
  local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
  local name = args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
  mw.log(&amp;quot;Name: &amp;quot; .. name)&lt;br /&gt;
  mw.log(&amp;quot;Formatted name: &amp;quot; .. (&amp;quot;[[%s]]&amp;quot;):format(name))&lt;br /&gt;
&lt;br /&gt;
  local thing = mw.smw.ask({&lt;br /&gt;
    (&amp;quot;[[%s]]&amp;quot;):format(name),&lt;br /&gt;
    &amp;quot;?=Pagename#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has context&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has canonical name&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has dye channels&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon frame type&amp;quot;,&lt;br /&gt;
  })[1]&lt;br /&gt;
&lt;br /&gt;
  if not thing then&lt;br /&gt;
    return &amp;quot;wot&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  thing.Pagename = thing[&amp;quot;&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
  mw.logObject(thing)&lt;br /&gt;
&lt;br /&gt;
  -- assemble userparam&lt;br /&gt;
  local text = args[2] or args.alt or &amp;quot;&amp;quot;&lt;br /&gt;
  local size = args.size or &amp;quot;&amp;quot;&lt;br /&gt;
  local hq = args.hq or &amp;quot;&amp;quot;&lt;br /&gt;
  local qty = args.qty or &amp;quot;&amp;quot;&lt;br /&gt;
  local wrap = args.wrap or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  local userparam = (&amp;quot;%s;%s;%s;%s;%s;%s&amp;quot;):format(text, size, hq, qty, wrap, name)&lt;br /&gt;
&lt;br /&gt;
  return frame:expandTemplate({&lt;br /&gt;
    title = &amp;quot;Template:Game icon format&amp;quot;,&lt;br /&gt;
    args = thing,&lt;br /&gt;
  })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585653</id>
		<title>Module:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585653"/>
		<updated>2026-10-29T19:04:56Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- test file to see if performing SMW queries in Lua instead of via parser&lt;br /&gt;
-- functions allows us to avoid having [[SMW::off]] markers in visual editor&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
--[=[ original query:&lt;br /&gt;
&lt;br /&gt;
{{#show:{{#titleparts:{{{1|}}}}}&lt;br /&gt;
|?=#Pagename&lt;br /&gt;
|?Has context&lt;br /&gt;
|?Has game icon#&lt;br /&gt;
|?Has canonical name&lt;br /&gt;
|?Has dye channels&lt;br /&gt;
|?Has game icon frame type&lt;br /&gt;
| format = plainlist&lt;br /&gt;
| link = none&lt;br /&gt;
| named args = yes&lt;br /&gt;
| template = Game icon format&lt;br /&gt;
| userparam = {{{2|{{{alt|}}}}}};{{{size|}}};{{{hq|}}};{{{qty|}}};{{{wrap|}}};{{#titleparts:{{{1|}}}}}&lt;br /&gt;
| default = {{#invoke:Icon|renderGameIconWithLabel|text={{{2|{{{alt|{{{1|}}}}}}}}}|link={{{1|}}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
  local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
  local name = args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
  mw.log(&amp;quot;Name: &amp;quot; .. name)&lt;br /&gt;
  mw.log(&amp;quot;Formatted name: &amp;quot; .. (&amp;quot;[[%s]]&amp;quot;):format(name))&lt;br /&gt;
&lt;br /&gt;
  local thing = mw.smw.ask({&lt;br /&gt;
    (&amp;quot;[[%s]]&amp;quot;):format(name),&lt;br /&gt;
--    &amp;quot;?=#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has context&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has canonical name&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has dye channels&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon frame type&amp;quot;,&lt;br /&gt;
  })&lt;br /&gt;
&lt;br /&gt;
  if not thing then&lt;br /&gt;
    return &amp;quot;wot&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  thing.Pagename = thing[&amp;quot;&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
  mw.logObject(thing)&lt;br /&gt;
&lt;br /&gt;
  -- assemble userparam&lt;br /&gt;
  local text = args[2] or args.alt or &amp;quot;&amp;quot;&lt;br /&gt;
  local size = args.size or &amp;quot;&amp;quot;&lt;br /&gt;
  local hq = args.hq or &amp;quot;&amp;quot;&lt;br /&gt;
  local qty = args.qty or &amp;quot;&amp;quot;&lt;br /&gt;
  local wrap = args.wrap or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  local userparam = (&amp;quot;%s;%s;%s;%s;%s;%s&amp;quot;):format(text, size, hq, qty, wrap, name)&lt;br /&gt;
&lt;br /&gt;
  return frame:expandTemplate({&lt;br /&gt;
    title = &amp;quot;Template:Game icon format&amp;quot;,&lt;br /&gt;
    args = thing,&lt;br /&gt;
  })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585652</id>
		<title>Module:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585652"/>
		<updated>2026-10-29T19:04:33Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- test file to see if performing SMW queries in Lua instead of via parser&lt;br /&gt;
-- functions allows us to avoid having [[SMW::off]] markers in visual editor&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
--[=[ original query:&lt;br /&gt;
&lt;br /&gt;
{{#show:{{#titleparts:{{{1|}}}}}&lt;br /&gt;
|?=#Pagename&lt;br /&gt;
|?Has context&lt;br /&gt;
|?Has game icon#&lt;br /&gt;
|?Has canonical name&lt;br /&gt;
|?Has dye channels&lt;br /&gt;
|?Has game icon frame type&lt;br /&gt;
| format = plainlist&lt;br /&gt;
| link = none&lt;br /&gt;
| named args = yes&lt;br /&gt;
| template = Game icon format&lt;br /&gt;
| userparam = {{{2|{{{alt|}}}}}};{{{size|}}};{{{hq|}}};{{{qty|}}};{{{wrap|}}};{{#titleparts:{{{1|}}}}}&lt;br /&gt;
| default = {{#invoke:Icon|renderGameIconWithLabel|text={{{2|{{{alt|{{{1|}}}}}}}}}|link={{{1|}}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
  local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
  local name = args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
  mw.log(&amp;quot;Name: &amp;quot; .. name)&lt;br /&gt;
  mw.log(&amp;quot;Formatted name: &amp;quot; .. (&amp;quot;[[%s]]&amp;quot;):format(name))&lt;br /&gt;
&lt;br /&gt;
  local thing = mw.smw.ask({&lt;br /&gt;
    (&amp;quot;[[%s]]&amp;quot;):format(name),&lt;br /&gt;
--    &amp;quot;?=#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has context&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has canonical name&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has dye channels&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon frame type&amp;quot;,&lt;br /&gt;
  })[0]&lt;br /&gt;
&lt;br /&gt;
  if not thing then&lt;br /&gt;
    return &amp;quot;wot&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  thing.Pagename = thing[&amp;quot;&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
  mw.logObject(thing)&lt;br /&gt;
&lt;br /&gt;
  -- assemble userparam&lt;br /&gt;
  local text = args[2] or args.alt or &amp;quot;&amp;quot;&lt;br /&gt;
  local size = args.size or &amp;quot;&amp;quot;&lt;br /&gt;
  local hq = args.hq or &amp;quot;&amp;quot;&lt;br /&gt;
  local qty = args.qty or &amp;quot;&amp;quot;&lt;br /&gt;
  local wrap = args.wrap or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  local userparam = (&amp;quot;%s;%s;%s;%s;%s;%s&amp;quot;):format(text, size, hq, qty, wrap, name)&lt;br /&gt;
&lt;br /&gt;
  return frame:expandTemplate({&lt;br /&gt;
    title = &amp;quot;Template:Game icon format&amp;quot;,&lt;br /&gt;
    args = thing,&lt;br /&gt;
  })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585651</id>
		<title>Module:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585651"/>
		<updated>2026-10-29T19:04:06Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- test file to see if performing SMW queries in Lua instead of via parser&lt;br /&gt;
-- functions allows us to avoid having [[SMW::off]] markers in visual editor&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
--[=[ original query:&lt;br /&gt;
&lt;br /&gt;
{{#show:{{#titleparts:{{{1|}}}}}&lt;br /&gt;
|?=#Pagename&lt;br /&gt;
|?Has context&lt;br /&gt;
|?Has game icon#&lt;br /&gt;
|?Has canonical name&lt;br /&gt;
|?Has dye channels&lt;br /&gt;
|?Has game icon frame type&lt;br /&gt;
| format = plainlist&lt;br /&gt;
| link = none&lt;br /&gt;
| named args = yes&lt;br /&gt;
| template = Game icon format&lt;br /&gt;
| userparam = {{{2|{{{alt|}}}}}};{{{size|}}};{{{hq|}}};{{{qty|}}};{{{wrap|}}};{{#titleparts:{{{1|}}}}}&lt;br /&gt;
| default = {{#invoke:Icon|renderGameIconWithLabel|text={{{2|{{{alt|{{{1|}}}}}}}}}|link={{{1|}}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
  local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
  local name = args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
  mw.log(&amp;quot;Name: &amp;quot; .. name)&lt;br /&gt;
  mw.log(&amp;quot;Formatted name: &amp;quot; .. (&amp;quot;[[%s]]&amp;quot;):format(name))&lt;br /&gt;
&lt;br /&gt;
  local thing = mw.smw.ask({&lt;br /&gt;
    (&amp;quot;[[%s]]&amp;quot;):format(name),&lt;br /&gt;
    &amp;quot;?=#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has context&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has canonical name&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has dye channels&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon frame type&amp;quot;,&lt;br /&gt;
  })[0]&lt;br /&gt;
&lt;br /&gt;
  if not thing then&lt;br /&gt;
    return &amp;quot;wot&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  thing.Pagename = thing[&amp;quot;&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
  mw.logObject(thing)&lt;br /&gt;
&lt;br /&gt;
  -- assemble userparam&lt;br /&gt;
  local text = args[2] or args.alt or &amp;quot;&amp;quot;&lt;br /&gt;
  local size = args.size or &amp;quot;&amp;quot;&lt;br /&gt;
  local hq = args.hq or &amp;quot;&amp;quot;&lt;br /&gt;
  local qty = args.qty or &amp;quot;&amp;quot;&lt;br /&gt;
  local wrap = args.wrap or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  local userparam = (&amp;quot;%s;%s;%s;%s;%s;%s&amp;quot;):format(text, size, hq, qty, wrap, name)&lt;br /&gt;
&lt;br /&gt;
  return frame:expandTemplate({&lt;br /&gt;
    title = &amp;quot;Template:Game icon format&amp;quot;,&lt;br /&gt;
    args = thing,&lt;br /&gt;
  })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585650</id>
		<title>Module:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585650"/>
		<updated>2026-10-29T19:03:46Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- test file to see if performing SMW queries in Lua instead of via parser&lt;br /&gt;
-- functions allows us to avoid having [[SMW::off]] markers in visual editor&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
--[=[ original query:&lt;br /&gt;
&lt;br /&gt;
{{#show:{{#titleparts:{{{1|}}}}}&lt;br /&gt;
|?=#Pagename&lt;br /&gt;
|?Has context&lt;br /&gt;
|?Has game icon#&lt;br /&gt;
|?Has canonical name&lt;br /&gt;
|?Has dye channels&lt;br /&gt;
|?Has game icon frame type&lt;br /&gt;
| format = plainlist&lt;br /&gt;
| link = none&lt;br /&gt;
| named args = yes&lt;br /&gt;
| template = Game icon format&lt;br /&gt;
| userparam = {{{2|{{{alt|}}}}}};{{{size|}}};{{{hq|}}};{{{qty|}}};{{{wrap|}}};{{#titleparts:{{{1|}}}}}&lt;br /&gt;
| default = {{#invoke:Icon|renderGameIconWithLabel|text={{{2|{{{alt|{{{1|}}}}}}}}}|link={{{1|}}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
  local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
  local name = args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
  mw.log(&amp;quot;Name: &amp;quot; .. name)&lt;br /&gt;
  mw.log(&amp;quot;Formatted name: &amp;quot; .. (&amp;quot;[[%s]]&amp;quot;):format(name))&lt;br /&gt;
&lt;br /&gt;
  local thing = mw.smw.ask({&lt;br /&gt;
    (&amp;quot;[[%s]]&amp;quot;):format(name),&lt;br /&gt;
    &amp;quot;?=#Pagename&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has context&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has canonical name&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has dye channels&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon frame type&amp;quot;,&lt;br /&gt;
  })[0]&lt;br /&gt;
&lt;br /&gt;
  if not thing then&lt;br /&gt;
    return &amp;quot;wot&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  mw.logObject(thing)&lt;br /&gt;
&lt;br /&gt;
  -- assemble userparam&lt;br /&gt;
  local text = args[2] or args.alt or &amp;quot;&amp;quot;&lt;br /&gt;
  local size = args.size or &amp;quot;&amp;quot;&lt;br /&gt;
  local hq = args.hq or &amp;quot;&amp;quot;&lt;br /&gt;
  local qty = args.qty or &amp;quot;&amp;quot;&lt;br /&gt;
  local wrap = args.wrap or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  local userparam = (&amp;quot;%s;%s;%s;%s;%s;%s&amp;quot;):format(text, size, hq, qty, wrap, name)&lt;br /&gt;
&lt;br /&gt;
  return frame:expandTemplate({&lt;br /&gt;
    title = &amp;quot;Template:Game icon format&amp;quot;,&lt;br /&gt;
    args = thing,&lt;br /&gt;
  })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585649</id>
		<title>Module:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585649"/>
		<updated>2026-10-29T19:03:31Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- test file to see if performing SMW queries in Lua instead of via parser&lt;br /&gt;
-- functions allows us to avoid having [[SMW::off]] markers in visual editor&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
--[=[ original query:&lt;br /&gt;
&lt;br /&gt;
{{#show:{{#titleparts:{{{1|}}}}}&lt;br /&gt;
|?=#Pagename&lt;br /&gt;
|?Has context&lt;br /&gt;
|?Has game icon#&lt;br /&gt;
|?Has canonical name&lt;br /&gt;
|?Has dye channels&lt;br /&gt;
|?Has game icon frame type&lt;br /&gt;
| format = plainlist&lt;br /&gt;
| link = none&lt;br /&gt;
| named args = yes&lt;br /&gt;
| template = Game icon format&lt;br /&gt;
| userparam = {{{2|{{{alt|}}}}}};{{{size|}}};{{{hq|}}};{{{qty|}}};{{{wrap|}}};{{#titleparts:{{{1|}}}}}&lt;br /&gt;
| default = {{#invoke:Icon|renderGameIconWithLabel|text={{{2|{{{alt|{{{1|}}}}}}}}}|link={{{1|}}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
  local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
  local name = args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
  mw.log(&amp;quot;Name: &amp;quot; .. name)&lt;br /&gt;
  mw.log(&amp;quot;Formatted name: &amp;quot; .. (&amp;quot;[[%s]]&amp;quot;):format(name))&lt;br /&gt;
&lt;br /&gt;
  local thing = mw.smw.ask({&lt;br /&gt;
    (&amp;quot;[[%s]]&amp;quot;):format(name),&lt;br /&gt;
    &amp;quot;?=Pagename#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has context&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has canonical name&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has dye channels&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon frame type&amp;quot;,&lt;br /&gt;
  })[0]&lt;br /&gt;
&lt;br /&gt;
  if not thing then&lt;br /&gt;
    return &amp;quot;wot&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  mw.logObject(thing)&lt;br /&gt;
&lt;br /&gt;
  -- assemble userparam&lt;br /&gt;
  local text = args[2] or args.alt or &amp;quot;&amp;quot;&lt;br /&gt;
  local size = args.size or &amp;quot;&amp;quot;&lt;br /&gt;
  local hq = args.hq or &amp;quot;&amp;quot;&lt;br /&gt;
  local qty = args.qty or &amp;quot;&amp;quot;&lt;br /&gt;
  local wrap = args.wrap or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  local userparam = (&amp;quot;%s;%s;%s;%s;%s;%s&amp;quot;):format(text, size, hq, qty, wrap, name)&lt;br /&gt;
&lt;br /&gt;
  return frame:expandTemplate({&lt;br /&gt;
    title = &amp;quot;Template:Game icon format&amp;quot;,&lt;br /&gt;
    args = thing,&lt;br /&gt;
  })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585648</id>
		<title>Module:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585648"/>
		<updated>2026-10-29T19:01:58Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- test file to see if performing SMW queries in Lua instead of via parser&lt;br /&gt;
-- functions allows us to avoid having [[SMW::off]] markers in visual editor&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
--[=[ original query:&lt;br /&gt;
&lt;br /&gt;
{{#show:{{#titleparts:{{{1|}}}}}&lt;br /&gt;
|?=Pagename&lt;br /&gt;
|?Has context&lt;br /&gt;
|?Has game icon#&lt;br /&gt;
|?Has canonical name&lt;br /&gt;
|?Has dye channels&lt;br /&gt;
|?Has game icon frame type&lt;br /&gt;
| format = plainlist&lt;br /&gt;
| link = none&lt;br /&gt;
| named args = yes&lt;br /&gt;
| template = Game icon format&lt;br /&gt;
| userparam = {{{2|{{{alt|}}}}}};{{{size|}}};{{{hq|}}};{{{qty|}}};{{{wrap|}}};{{#titleparts:{{{1|}}}}}&lt;br /&gt;
| default = {{#invoke:Icon|renderGameIconWithLabel|text={{{2|{{{alt|{{{1|}}}}}}}}}|link={{{1|}}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
  local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
  local name = args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
  mw.log(&amp;quot;Name: &amp;quot; .. name)&lt;br /&gt;
  mw.log(&amp;quot;Formatted name: &amp;quot; .. (&amp;quot;[[%s]]&amp;quot;):format(name))&lt;br /&gt;
&lt;br /&gt;
  local thing = mw.smw.ask({&lt;br /&gt;
    (&amp;quot;[[%s]]&amp;quot;):format(name),&lt;br /&gt;
    &amp;quot;?#=Pagename&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has context&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has canonical name&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has dye channels&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon frame type&amp;quot;,&lt;br /&gt;
  })[0]&lt;br /&gt;
&lt;br /&gt;
  if not thing then&lt;br /&gt;
    return &amp;quot;wot&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  mw.logObject(thing)&lt;br /&gt;
&lt;br /&gt;
  -- assemble userparam&lt;br /&gt;
  local text = args[2] or args.alt or &amp;quot;&amp;quot;&lt;br /&gt;
  local size = args.size or &amp;quot;&amp;quot;&lt;br /&gt;
  local hq = args.hq or &amp;quot;&amp;quot;&lt;br /&gt;
  local qty = args.qty or &amp;quot;&amp;quot;&lt;br /&gt;
  local wrap = args.wrap or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  local userparam = (&amp;quot;%s;%s;%s;%s;%s;%s&amp;quot;):format(text, size, hq, qty, wrap, name)&lt;br /&gt;
&lt;br /&gt;
  return frame:expandTemplate({&lt;br /&gt;
    title = &amp;quot;Template:Game icon format&amp;quot;,&lt;br /&gt;
    args = thing,&lt;br /&gt;
  })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585647</id>
		<title>Module:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585647"/>
		<updated>2026-10-29T19:01:34Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- test file to see if performing SMW queries in Lua instead of via parser&lt;br /&gt;
-- functions allows us to avoid having [[SMW::off]] markers in visual editor&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
--[=[ original query:&lt;br /&gt;
&lt;br /&gt;
{{#show:{{#titleparts:{{{1|}}}}}&lt;br /&gt;
|?=Pagename&lt;br /&gt;
|?Has context&lt;br /&gt;
|?Has game icon#&lt;br /&gt;
|?Has canonical name&lt;br /&gt;
|?Has dye channels&lt;br /&gt;
|?Has game icon frame type&lt;br /&gt;
| format = plainlist&lt;br /&gt;
| link = none&lt;br /&gt;
| named args = yes&lt;br /&gt;
| template = Game icon format&lt;br /&gt;
| userparam = {{{2|{{{alt|}}}}}};{{{size|}}};{{{hq|}}};{{{qty|}}};{{{wrap|}}};{{#titleparts:{{{1|}}}}}&lt;br /&gt;
| default = {{#invoke:Icon|renderGameIconWithLabel|text={{{2|{{{alt|{{{1|}}}}}}}}}|link={{{1|}}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
  local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
  local name = args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
  mw.log(&amp;quot;Name: &amp;quot; .. name)&lt;br /&gt;
  mw.log(&amp;quot;Formatted name: &amp;quot; .. (&amp;quot;[[%s]]&amp;quot;):format(name))&lt;br /&gt;
&lt;br /&gt;
  local thing = mw.smw.ask({&lt;br /&gt;
    (&amp;quot;[[%s]]&amp;quot;):format(name),&lt;br /&gt;
    &amp;quot;?=Pagename#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has context&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has canonical name&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has dye channels&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon frame type&amp;quot;,&lt;br /&gt;
  })[0]&lt;br /&gt;
&lt;br /&gt;
  if not thing then&lt;br /&gt;
    return &amp;quot;wot&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  mw.logObject(thing)&lt;br /&gt;
&lt;br /&gt;
  -- assemble userparam&lt;br /&gt;
  local text = args[2] or args.alt or &amp;quot;&amp;quot;&lt;br /&gt;
  local size = args.size or &amp;quot;&amp;quot;&lt;br /&gt;
  local hq = args.hq or &amp;quot;&amp;quot;&lt;br /&gt;
  local qty = args.qty or &amp;quot;&amp;quot;&lt;br /&gt;
  local wrap = args.wrap or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  local userparam = (&amp;quot;%s;%s;%s;%s;%s;%s&amp;quot;):format(text, size, hq, qty, wrap, name)&lt;br /&gt;
&lt;br /&gt;
  return frame:expandTemplate({&lt;br /&gt;
    title = &amp;quot;Template:Game icon format&amp;quot;,&lt;br /&gt;
    args = thing,&lt;br /&gt;
  })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585646</id>
		<title>Module:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585646"/>
		<updated>2026-10-29T18:57:03Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- test file to see if performing SMW queries in Lua instead of via parser&lt;br /&gt;
-- functions allows us to avoid having [[SMW::off]] markers in visual editor&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
--[=[ original query:&lt;br /&gt;
&lt;br /&gt;
{{#show:{{#titleparts:{{{1|}}}}}&lt;br /&gt;
|?=Pagename&lt;br /&gt;
|?Has context&lt;br /&gt;
|?Has game icon#&lt;br /&gt;
|?Has canonical name&lt;br /&gt;
|?Has dye channels&lt;br /&gt;
|?Has game icon frame type&lt;br /&gt;
| format = plainlist&lt;br /&gt;
| link = none&lt;br /&gt;
| named args = yes&lt;br /&gt;
| template = Game icon format&lt;br /&gt;
| userparam = {{{2|{{{alt|}}}}}};{{{size|}}};{{{hq|}}};{{{qty|}}};{{{wrap|}}};{{#titleparts:{{{1|}}}}}&lt;br /&gt;
| default = {{#invoke:Icon|renderGameIconWithLabel|text={{{2|{{{alt|{{{1|}}}}}}}}}|link={{{1|}}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
  local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
  local name = args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
  mw.log(&amp;quot;Name: &amp;quot; .. name)&lt;br /&gt;
  mw.log(&amp;quot;Formatted name: &amp;quot; .. (&amp;quot;[[%s]]&amp;quot;):format(name))&lt;br /&gt;
&lt;br /&gt;
  local thing = mw.smw.ask({&lt;br /&gt;
    (&amp;quot;[[%s]]&amp;quot;):format(name),&lt;br /&gt;
    &amp;quot;?=Pagename&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has context&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has canonical name&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has dye channels&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon frame type&amp;quot;,&lt;br /&gt;
  })&lt;br /&gt;
&lt;br /&gt;
  mw.logObject(thing)&lt;br /&gt;
&lt;br /&gt;
  -- assemble userparam&lt;br /&gt;
  local text = args[2] or args.alt or &amp;quot;&amp;quot;&lt;br /&gt;
  local size = args.size or &amp;quot;&amp;quot;&lt;br /&gt;
  local hq = args.hq or &amp;quot;&amp;quot;&lt;br /&gt;
  local qty = args.qty or &amp;quot;&amp;quot;&lt;br /&gt;
  local wrap = args.wrap or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  local userparam = (&amp;quot;%s;%s;%s;%s;%s;%s&amp;quot;):format(text, size, hq, qty, wrap, name)&lt;br /&gt;
&lt;br /&gt;
  return userparam&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585645</id>
		<title>Module:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585645"/>
		<updated>2026-10-29T18:55:54Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- test file to see if performing SMW queries in Lua instead of via parser&lt;br /&gt;
-- functions allows us to avoid having [[SMW::off]] markers in visual editor&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
--[=[ original query:&lt;br /&gt;
&lt;br /&gt;
{{#show:{{#titleparts:{{{1|}}}}}&lt;br /&gt;
|?=Pagename&lt;br /&gt;
|?Has context&lt;br /&gt;
|?Has game icon#&lt;br /&gt;
|?Has canonical name&lt;br /&gt;
|?Has dye channels&lt;br /&gt;
|?Has game icon frame type&lt;br /&gt;
| format = plainlist&lt;br /&gt;
| link = none&lt;br /&gt;
| named args = yes&lt;br /&gt;
| template = Game icon format&lt;br /&gt;
| userparam = {{{2|{{{alt|}}}}}};{{{size|}}};{{{hq|}}};{{{qty|}}};{{{wrap|}}};{{#titleparts:{{{1|}}}}}&lt;br /&gt;
| default = {{#invoke:Icon|renderGameIconWithLabel|text={{{2|{{{alt|{{{1|}}}}}}}}}|link={{{1|}}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
  local args = getArgs(frame, {parentOnly = true})&lt;br /&gt;
&lt;br /&gt;
  local name = args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
  mw.log(&amp;quot;Name: &amp;quot; .. name)&lt;br /&gt;
  mw.log(&amp;quot;Formatted name: &amp;quot; .. (&amp;quot;[[%s]]&amp;quot;):format(name))&lt;br /&gt;
&lt;br /&gt;
  local thing = mw.smw.ask({&lt;br /&gt;
    (&amp;quot;[[%s]]&amp;quot;):format(name),&lt;br /&gt;
    &amp;quot;?=Pagename&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has context&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has canonical name&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has dye channels&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon frame type&amp;quot;,&lt;br /&gt;
  })&lt;br /&gt;
&lt;br /&gt;
  mw.logObject(thing)&lt;br /&gt;
&lt;br /&gt;
  -- assemble userparam&lt;br /&gt;
  local text = args[2] or args.alt or &amp;quot;&amp;quot;&lt;br /&gt;
  local size = args.size or &amp;quot;&amp;quot;&lt;br /&gt;
  local hq = args.hq or &amp;quot;&amp;quot;&lt;br /&gt;
  local qty = args.qty or &amp;quot;&amp;quot;&lt;br /&gt;
  local wrap = args.wrap or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  local userparam = (&amp;quot;%s;%s;%s;%s;%s;%s&amp;quot;):format(text, size, hq, qty, wrap, name)&lt;br /&gt;
&lt;br /&gt;
  return userparam&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585644</id>
		<title>Module:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585644"/>
		<updated>2026-10-29T18:53:07Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- test file to see if performing SMW queries in Lua instead of via parser&lt;br /&gt;
-- functions allows us to avoid having [[SMW::off]] markers in visual editor&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
--[=[ original query:&lt;br /&gt;
&lt;br /&gt;
{{#show:{{#titleparts:{{{1|}}}}}&lt;br /&gt;
|?=Pagename&lt;br /&gt;
|?Has context&lt;br /&gt;
|?Has game icon#&lt;br /&gt;
|?Has canonical name&lt;br /&gt;
|?Has dye channels&lt;br /&gt;
|?Has game icon frame type&lt;br /&gt;
| format = plainlist&lt;br /&gt;
| link = none&lt;br /&gt;
| named args = yes&lt;br /&gt;
| template = Game icon format&lt;br /&gt;
| userparam = {{{2|{{{alt|}}}}}};{{{size|}}};{{{hq|}}};{{{qty|}}};{{{wrap|}}};{{#titleparts:{{{1|}}}}}&lt;br /&gt;
| default = {{#invoke:Icon|renderGameIconWithLabel|text={{{2|{{{alt|{{{1|}}}}}}}}}|link={{{1|}}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
  local args = getArgs(frame, {parentOnly = true})&lt;br /&gt;
&lt;br /&gt;
  local name = args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
  mw.log(&amp;quot;Name: &amp;quot; .. name)&lt;br /&gt;
  mw.log(&amp;quot;Formatted name: &amp;quot; .. (&amp;quot;[[%s]]&amp;quot;):format(name))&lt;br /&gt;
&lt;br /&gt;
  local thing = mw.smw.ask({&lt;br /&gt;
    (&amp;quot;[[%s]]&amp;quot;):format(name),&lt;br /&gt;
    &amp;quot;?=Pagename&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has context&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has canonical name&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has dye channels&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon frame type&amp;quot;,&lt;br /&gt;
  })&lt;br /&gt;
&lt;br /&gt;
  mw.logObject(thing)&lt;br /&gt;
&lt;br /&gt;
  -- assemble userparam&lt;br /&gt;
  local text = args[2] or args.alt or &amp;quot;&amp;quot;&lt;br /&gt;
  local size = args.size or &amp;quot;&amp;quot;&lt;br /&gt;
  local hq = args.hq or &amp;quot;&amp;quot;&lt;br /&gt;
  local qty = args.qty or &amp;quot;&amp;quot;&lt;br /&gt;
  local wrap = args.wrap or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  local userparam = (&amp;quot;%s;%s;%s;%s;%s;%s&amp;quot;):format(text, size, hq, qty, wrap, titleparts_1)&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=User:Erin_Umbreon/Sandbox&amp;diff=1585642</id>
		<title>User:Erin Umbreon/Sandbox</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=User:Erin_Umbreon/Sandbox&amp;diff=1585642"/>
		<updated>2026-10-29T18:51:31Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: /* a */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NEWSECTIONLINK__&lt;br /&gt;
{{hatnote|This user &#039;&#039;&#039;does not know what she is doing&#039;&#039;&#039;.}}&lt;br /&gt;
&lt;br /&gt;
== Test case: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;ref&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; in {{tl|Dialogue}} ==&lt;br /&gt;
&lt;br /&gt;
{{dialogue|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Y&#039;shtola: Hello!&amp;lt;ref&amp;gt;hehehehe&amp;lt;/ref&amp;gt;&lt;br /&gt;
Y&#039;shtola: Goodbye!&lt;br /&gt;
&#039;&#039;The WoL eats some {{i|Xibruq Pibil}}&amp;lt;ref&amp;gt;It was tasty.&amp;lt;/ref&amp;gt;. Everyone goes home and eats dinner together.&#039;&#039;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
! debug stuff&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{{#invoke:Sandbox/Nowiki behavior testing|testRefPreprocessStripMarkerStuff}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[User:Erin Umbreon|Erin Umbreon]] &amp;lt;small&amp;gt;(she/it &amp;amp;bull; [[User talk:Erin Umbreon|talk]])&amp;lt;/small&amp;gt; 02:46, 18 October 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Older experiments ==&lt;br /&gt;
&lt;br /&gt;
[[Special:Diff/|yeag]]&lt;br /&gt;
&lt;br /&gt;
{{/Noticebox&lt;br /&gt;
| title = High-end content&lt;br /&gt;
| color = red&lt;br /&gt;
| content =&lt;br /&gt;
The Bahamut raids have difficulty comparable to [[Savage raids]] and do not feature in any [[Duty Roulette|roulette]]s. They should not be queued via [[Duty Finder]]. Players should treat these raids as high-end content and form parties in [[Party Finder]] instead, [[unsync]]ing for easier completion if desired.}}&lt;br /&gt;
{{/Noticebox&lt;br /&gt;
| title = Future content&lt;br /&gt;
| color = green&lt;br /&gt;
| content = The subject of this article is currently in development, and is not yet available to players. It is expected to be released in [[patch 8.0]].&lt;br /&gt;
}}&lt;br /&gt;
{{/Noticebox&lt;br /&gt;
| title = Retired content&lt;br /&gt;
| color = blue&lt;br /&gt;
| content = The subject of this article was retired or removed from the game, and is no longer available to players. It was removed in [[patch 5.1]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[redlink]]&lt;br /&gt;
&lt;br /&gt;
i hate it here:&lt;br /&gt;
{{#tag:a|{{#invoke:Icon|renderGameIcon|frameType=standard|icon=File:Bluespirit longbow icon1.png|link=}}|href=&amp;quot;https://example.com&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
{{Markup example|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{dialogue|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
1st Maniple Centurion: yes&lt;br /&gt;
&amp;amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- testing if {{#set}} in {{#if}} condition works for whitespace escaping --&amp;gt;&lt;br /&gt;
{{#if:&lt;br /&gt;
  {{#set:Test property thingy aaa|yeet dab}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 Multi-purpose Fiberboard {{Item icon|Bluespirit Longbow|My Favorite Bow Ever}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px dashed currentcolor; padding:1em&amp;quot;&amp;gt;&lt;br /&gt;
All characters defined by the icon font:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family:&#039;EasonPro&#039;&amp;quot;&amp;gt;what&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
asdf asdf asdf asdf asdf asdf&amp;lt;br&amp;gt;&lt;br /&gt;
asdf asdf asdf asdf asdf asdf&amp;lt;br&amp;gt;&lt;br /&gt;
asdf {{status effect|doom}} [[Doom]] {{status effect|buff|well fed}} [[Well Fed]]&amp;lt;br&amp;gt;&lt;br /&gt;
asdf ghjk ghjk ghjk ghjk ghjk ghjk&amp;lt;br&amp;gt;&lt;br /&gt;
asdf ghjk {{status effect|doom}} [[Doom]] {{status effect|buff|well fed}} [[Well Fed]]&amp;lt;br&amp;gt;&lt;br /&gt;
asdf ghjk ghjk ghjk ghjk ghjk ghjk&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* asdf asdf asdf asdf asdf asdf&lt;br /&gt;
* asdf asdf asdf asdf asdf asdf&lt;br /&gt;
* asdf {{status effect|doom}} [[Doom]] {{status effect|buff|well fed}} [[Well Fed]]&lt;br /&gt;
* asdf ghjk ghjk ghjk ghjk ghjk ghjk&lt;br /&gt;
* asdf ghjk {{status effect|doom}} [[Doom]] {{status effect|buff|well fed}} [[Well Fed]]&lt;br /&gt;
* asdf ghjk ghjk ghjk ghjk ghjk ghjk&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
== {{status effect|doom}} Doom {{status effect|buff|well fed}} Well Fed ==&lt;br /&gt;
=== {{status effect|doom}} Doom {{status effect|buff|well fed}} Well Fed ===&lt;br /&gt;
==== {{status effect|doom}} Doom {{status effect|buff|well fed}} Well Fed ====&lt;br /&gt;
===== {{status effect|doom}} Doom {{status effect|buff|well fed}} Well Fed =====&lt;br /&gt;
====== {{status effect|doom}} Doom {{status effect|buff|well fed}} Well Fed ======&lt;br /&gt;
&lt;br /&gt;
 asdf asdf asdf asdf asdf asdf&lt;br /&gt;
 asdf asdf asdf asdf asdf asdf&lt;br /&gt;
 asdf {{status effect|doom}} [[Doom]] {{status effect|buff|well fed}} [[Well Fed]]&lt;br /&gt;
 asdf ghjk ghjk ghjk ghjk ghjk ghjk&lt;br /&gt;
 asdf ghjk {{status effect|doom}} [[Doom]] {{status effect|buff|well fed}} [[Well Fed]]&lt;br /&gt;
 asdf ghjk ghjk ghjk ghjk ghjk ghjk&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Icon&lt;br /&gt;
! Name&lt;br /&gt;
|-&lt;br /&gt;
| {{status effect|doom}}&lt;br /&gt;
| Doom&lt;br /&gt;
|-&lt;br /&gt;
| {{status effect|buff|well fed}}&lt;br /&gt;
| Well Fed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Testing multi-column layout  ==&lt;br /&gt;
&lt;br /&gt;
{{#invoke:Sandbox/heading columns|main|1=&lt;br /&gt;
===Glamour===&lt;br /&gt;
* {{i|The Faces We Wear - Thick-rimmed Goggles}}&lt;br /&gt;
* {{i|Cactuar Pajama Shirt}}&lt;br /&gt;
* {{i|Chocobo Pajama Eye Mask}}&lt;br /&gt;
===Other shit===&lt;br /&gt;
* a;lskd&lt;br /&gt;
* hfkljsdhglkjshdfg&lt;br /&gt;
=== Third shit ===&lt;br /&gt;
* hkjdhsflkghls&lt;br /&gt;
* kljdhflkjh&lt;br /&gt;
}} [[User:Erin Umbreon|Erin Umbreon]] &amp;lt;small&amp;gt;(she/it &amp;amp;bull; [[User talk:Erin Umbreon|talk]])&amp;lt;/small&amp;gt; 20:46, 28 October 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
== a ==&lt;br /&gt;
&lt;br /&gt;
thing: {{#invoke:Sandbox/game icon SMW marker lua test|main|Bluespirit Longbow}}&lt;br /&gt;
&lt;br /&gt;
- [[User:Erin Umbreon|Erin Umbreon]] &amp;lt;small&amp;gt;(she/it &amp;amp;bull; [[User talk:Erin Umbreon|talk]])&amp;lt;/small&amp;gt; 18:51, 29 October 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585641</id>
		<title>Module:Game icon</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Game_icon&amp;diff=1585641"/>
		<updated>2026-10-29T18:49:07Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: Created page with &amp;quot;-- test file to see if performing SMW queries in Lua instead of via parser -- functions allows us to avoid having SMW::off markers in visual editor  local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs local yesno = require(&amp;quot;Module:Yesno&amp;quot;)  local p = {}  function p.main(frame) --[=[ original query:  {{#show:{{#titleparts:{{{1|}}}}} |?=Pagename |?Has context |?Has game icon# |?Has canonical name |?Has dye channels |?Has game icon frame type | format = plainlist | link...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- test file to see if performing SMW queries in Lua instead of via parser&lt;br /&gt;
-- functions allows us to avoid having [[SMW::off]] markers in visual editor&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
--[=[ original query:&lt;br /&gt;
&lt;br /&gt;
{{#show:{{#titleparts:{{{1|}}}}}&lt;br /&gt;
|?=Pagename&lt;br /&gt;
|?Has context&lt;br /&gt;
|?Has game icon#&lt;br /&gt;
|?Has canonical name&lt;br /&gt;
|?Has dye channels&lt;br /&gt;
|?Has game icon frame type&lt;br /&gt;
| format = plainlist&lt;br /&gt;
| link = none&lt;br /&gt;
| named args = yes&lt;br /&gt;
| template = Game icon format&lt;br /&gt;
| userparam = {{{2|{{{alt|}}}}}};{{{size|}}};{{{hq|}}};{{{qty|}}};{{{wrap|}}};{{#titleparts:{{{1|}}}}}&lt;br /&gt;
| default = {{#invoke:Icon|renderGameIconWithLabel|text={{{2|{{{alt|{{{1|}}}}}}}}}|link={{{1|}}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
  local args = getArgs(frame, {parentOnly = true})&lt;br /&gt;
&lt;br /&gt;
  local titleparts_1 = frame:callParserFunction(&#039;#titleparts&#039;, {args[1] or &amp;quot;&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
  local thing = mw.smw.ask({&lt;br /&gt;
    (&amp;quot;[[%s]]&amp;quot;):format(titleparts_1),&lt;br /&gt;
    &amp;quot;?=Pagename&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has context&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon#&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has canonical name&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has dye channels&amp;quot;,&lt;br /&gt;
    &amp;quot;?Has game icon frame type&amp;quot;,&lt;br /&gt;
  })&lt;br /&gt;
&lt;br /&gt;
  mw.log(titleparts_1)&lt;br /&gt;
  mw.logObject(thing)&lt;br /&gt;
&lt;br /&gt;
  -- assemble userparam&lt;br /&gt;
  local text = args[2] or args.alt or &amp;quot;&amp;quot;&lt;br /&gt;
  local size = args.size or &amp;quot;&amp;quot;&lt;br /&gt;
  local hq = args.hq or &amp;quot;&amp;quot;&lt;br /&gt;
  local qty = args.qty or &amp;quot;&amp;quot;&lt;br /&gt;
  local wrap = args.wrap or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  local userparam = (&amp;quot;%s;%s;%s;%s;%s;%s&amp;quot;):format(text, size, hq, qty, wrap, titleparts_1)&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Grouped_columns/doc&amp;diff=1585507</id>
		<title>Module:Grouped columns/doc</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Grouped_columns/doc&amp;diff=1585507"/>
		<updated>2026-10-29T04:58:21Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: Created page with &amp;quot;{{documentation subpage}}  Implements {{tl|Grouped columns}}.  &amp;lt;includeonly&amp;gt; &amp;lt;!-- Template/module categories and interwiki links go here --&amp;gt; Category:Template implementation modules &amp;lt;/includeonly&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{documentation subpage}}&lt;br /&gt;
&lt;br /&gt;
Implements {{tl|Grouped columns}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;!-- Template/module categories and interwiki links go here --&amp;gt;&lt;br /&gt;
[[Category:Template implementation modules]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Grouped_columns&amp;diff=1585386</id>
		<title>Module:Grouped columns</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Grouped_columns&amp;diff=1585386"/>
		<updated>2026-10-29T00:32:47Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: fix trailing whitespace&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
  local args = getArgs(frame, {parentOnly = true})&lt;br /&gt;
  local columnMinWidth = tonumber(args[&amp;quot;min width&amp;quot;]) or 24&lt;br /&gt;
  local maxColumns = tonumber(args.columns)&lt;br /&gt;
&lt;br /&gt;
  local wrapper = mw.html.create(&amp;quot;div&amp;quot;):css({&lt;br /&gt;
    [&amp;quot;column-width&amp;quot;] = (&amp;quot;%dem&amp;quot;):format(columnMinWidth),&lt;br /&gt;
    [&amp;quot;column-count&amp;quot;] = maxColumns and tostring(maxColumns) or nil,&lt;br /&gt;
  })&lt;br /&gt;
&lt;br /&gt;
  local group_start = [[&amp;lt;div style=&amp;quot;break-inside:avoid-column;border-top:1px solid transparent;margin-top:-1px&amp;quot;&amp;gt;]]&lt;br /&gt;
  local group_end = [[&amp;lt;/div&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
  local lines = (args[1] .. &amp;quot;\n&amp;quot;):gmatch(&amp;quot;(.-)\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  local grouped_lines = group_start&lt;br /&gt;
  for line in lines do&lt;br /&gt;
    -- when we encounter a heading, close current group and open a new one&lt;br /&gt;
    -- however, if the initial group has no content yet (i.e. first line of&lt;br /&gt;
    -- input is a heading), do not close the empty initial group&lt;br /&gt;
    if line:match(&amp;quot;^=&amp;quot;) and grouped_lines ~= group_start then&lt;br /&gt;
      -- also trim any trailing whitespace from the end of the old group&lt;br /&gt;
      grouped_lines = grouped_lines:gsub(&#039;%s-$&#039;, &#039;&#039;)&lt;br /&gt;
      -- close the group and open the next one&lt;br /&gt;
      grouped_lines = grouped_lines .. &amp;quot;\n&amp;quot; .. group_end .. &amp;quot;\n&amp;quot; .. group_start&lt;br /&gt;
    end&lt;br /&gt;
    -- add line to current group&lt;br /&gt;
    grouped_lines = grouped_lines .. &amp;quot;\n&amp;quot; .. line&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- trim trailing whitespace and close group&lt;br /&gt;
  grouped_lines = grouped_lines:gsub(&#039;%s-$&#039;, &#039;&#039;)&lt;br /&gt;
  grouped_lines = grouped_lines .. &amp;quot;\n&amp;quot; .. group_end&lt;br /&gt;
&lt;br /&gt;
  wrapper:wikitext(grouped_lines)&lt;br /&gt;
  return tostring(wrapper)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Keybound_Coffer&amp;diff=1585357</id>
		<title>Keybound Coffer</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Keybound_Coffer&amp;diff=1585357"/>
		<updated>2026-10-28T22:04:43Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: use qty param of Template:Contains&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Item infobox&lt;br /&gt;
| name = Keybound Coffer&lt;br /&gt;
| icon = keybound coffer icon1.png&lt;br /&gt;
| image = &lt;br /&gt;
| description = A small wooden lockbox lined with a glamorous gold trim, awarded to Keybound Brawler challengers.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Contains a random prize item.&lt;br /&gt;
| type = other&lt;br /&gt;
| effects = &lt;br /&gt;
| effects-hq = &lt;br /&gt;
| material-type = Miscellany&lt;br /&gt;
| unique = &lt;br /&gt;
| untradable = y&lt;br /&gt;
| unsellable = y&lt;br /&gt;
| market-prohibited = y&lt;br /&gt;
| dyeable = &lt;br /&gt;
| dye-count = &lt;br /&gt;
| desynthesizable = &lt;br /&gt;
| desynth-class = &lt;br /&gt;
| rarity = white&lt;br /&gt;
| level = &lt;br /&gt;
| ilvl = 1&lt;br /&gt;
| race = &lt;br /&gt;
| gender = &lt;br /&gt;
| recast = &lt;br /&gt;
| recast-hq = &lt;br /&gt;
| cost = &lt;br /&gt;
| value = &lt;br /&gt;
| value-hq = &lt;br /&gt;
| seals = &lt;br /&gt;
| patch = 7.55&lt;br /&gt;
| id-edb = &lt;br /&gt;
| id-gt = 52450&lt;br /&gt;
}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
==Acquisition==&lt;br /&gt;
*{{game icon|Keybound Brawler}} (Clear)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Please do not remove acquisition templates that display no results. Those will display the relevant data if additional sources are added in the future.--&amp;gt;&lt;br /&gt;
{{vendor list|hideIfEmpty=y}}&lt;br /&gt;
&lt;br /&gt;
==Potential Contents==&lt;br /&gt;
{{section-stub|reason=Work-in-progress. See [https://xivstats.com/coffer?territory=1&amp;amp;coffer=52450 here] for an automatically crowdsourced list.}}&lt;br /&gt;
&lt;br /&gt;
{{Grouped columns|1=&lt;br /&gt;
&lt;br /&gt;
===Weapons===&lt;br /&gt;
====[[Adamant Weapons]]====&lt;br /&gt;
*{{contains|Adamant Hanger}}&lt;br /&gt;
*{{contains|Adamant Longbow}}&lt;br /&gt;
*{{contains|Adamant Bastard Sword}}&lt;br /&gt;
*{{contains|Adamant Codex}}&lt;br /&gt;
*{{contains|Adamant Pistol}}&lt;br /&gt;
*{{contains|Adamant Chakrams}}&lt;br /&gt;
*{{contains|Adamant Knuckles}}&lt;br /&gt;
*{{contains|Adamant Cleavers}}&lt;br /&gt;
*{{contains|Adamant Blade}}&lt;br /&gt;
*{{contains|Adamant Scutum}}&lt;br /&gt;
*{{contains|Adamant Rod}}&lt;br /&gt;
&lt;br /&gt;
====[[Rubellux Weapons]]====&lt;br /&gt;
*{{contains|Rubellux Cesti}}&lt;br /&gt;
*{{contains|Rubellux Codex}}&lt;br /&gt;
*{{contains|Rubellux Partisan}}&lt;br /&gt;
*{{contains|Rubellux Index}}&lt;br /&gt;
*{{contains|Rubellux Sawback}}&lt;br /&gt;
*{{contains|Rubellux Cane}}&lt;br /&gt;
&lt;br /&gt;
====[[Smaragdine Weapons]]====&lt;br /&gt;
*{{contains|Smaragdine Bastard Sword}}&lt;br /&gt;
*{{contains|Smaragdine Cleavers}}&lt;br /&gt;
*{{contains|Smaragdine Longbow}}&lt;br /&gt;
*{{contains|Smaragdine Chakrams}}&lt;br /&gt;
*{{contains|Smaragdine Cane}}&lt;br /&gt;
*{{contains|Smaragdine Partisan}}&lt;br /&gt;
&lt;br /&gt;
===Glamour===&lt;br /&gt;
*{{contains|The Faces We Wear - Thick-rimmed Goggles}}&lt;br /&gt;
*{{contains|Cactuar Pajama Shirt}}&lt;br /&gt;
*{{contains|Cactuar Pajama Slippers}}&lt;br /&gt;
*{{contains|Chocobo Pajama Eye Mask}}&lt;br /&gt;
*{{contains|Chocobo Pajama Shirt}}&lt;br /&gt;
*{{contains|Chocobo Pajama Bottoms}}&lt;br /&gt;
*{{contains|Plain Pajama Eye Mask}}&lt;br /&gt;
*{{contains|Plain Pajama Slippers}}&lt;br /&gt;
*{{contains|Martial Artist&#039;s Sleeveless Vest}}&lt;br /&gt;
*{{contains|Martial Artist&#039;s Slops}}&lt;br /&gt;
*{{contains|Martial Artist&#039;s Pumps}}&lt;br /&gt;
&lt;br /&gt;
===Housing Items===&lt;br /&gt;
*{{contains|Masonwork Interior Wall}}&lt;br /&gt;
*{{contains|Tatami Loft}}&lt;br /&gt;
*{{contains|Manor Fireplace}}&lt;br /&gt;
*{{contains|Manor Sofa}}&lt;br /&gt;
*{{contains|Swag Valance}}&lt;br /&gt;
*{{contains|Potted Dragon Tree}}&lt;br /&gt;
*{{contains|Oriental Bathtub}}&lt;br /&gt;
*{{contains|Indoor Oriental Waterfall}}&lt;br /&gt;
*{{contains|The Unending Journey}}&lt;br /&gt;
*{{contains|Fat Cat Sofa}}&lt;br /&gt;
*{{contains|Company Chest}}&lt;br /&gt;
*{{contains|Ivy Pillar}}&lt;br /&gt;
*{{contains|Nymian Wall Lantern}}&lt;br /&gt;
*{{contains|Table Orchestrion}}&lt;br /&gt;
*{{contains|Wooden Staircase Bookshelf}}&lt;br /&gt;
&lt;br /&gt;
===Dyes===&lt;br /&gt;
*{{contains|General-purpose Jet Black Dye}}&lt;br /&gt;
*{{contains|General-purpose Pure White Dye}}&lt;br /&gt;
*{{contains|General-purpose Pastel Green Dye}}&lt;br /&gt;
*{{contains|General-purpose Pastel Purple Dye}}&lt;br /&gt;
*{{contains|General-purpose Metallic Gold Dye}}&lt;br /&gt;
*{{contains|General-purpose Metallic Green Dye}}&lt;br /&gt;
*{{contains|General-purpose Dark Red Dye}}&lt;br /&gt;
*{{contains|General-purpose Dark Green Dye}}&lt;br /&gt;
*{{contains|General-purpose Dark Purple Dye}}&lt;br /&gt;
*{{contains|General-purpose Dark Blue Dye}}&lt;br /&gt;
&lt;br /&gt;
===Consumables===&lt;br /&gt;
*{{contains|Clam Cake}}&lt;br /&gt;
*{{contains|Rock-fisted Popoto Salad}} {{HQ}}&lt;br /&gt;
*{{contains|Rock-fisted Popoto Stew}} {{HQ}}&lt;br /&gt;
*{{contains|Prune-packed Fruitcake}} {{HQ}}&lt;br /&gt;
*{{contains|Prune Ponzecake}} {{HQ}}&lt;br /&gt;
*{{contains|Nachos}} {{HQ}}&lt;br /&gt;
*{{contains|Popoto Potage}} {{HQ}}&lt;br /&gt;
*{{contains|Rroneek au Gratin}} {{HQ}}&lt;br /&gt;
*{{contains|Goldentail Pie}} {{HQ}}&lt;br /&gt;
*{{contains|All i Pebre}} {{HQ}}&lt;br /&gt;
&lt;br /&gt;
===Materia===&lt;br /&gt;
*{{contains|Craftsman&#039;s Competence Materia XI}}&lt;br /&gt;
*{{contains|Gatherer&#039;s Grasp Materia XI}}&lt;br /&gt;
*{{contains|Gatherer&#039;s Guerdon Materia XI}}&lt;br /&gt;
*{{contains|Gatherer&#039;s Guile Materia XII}}&lt;br /&gt;
*{{contains|Heavens&#039; Eye Materia XII}}&lt;br /&gt;
*{{contains|Savage Might Materia XI}}&lt;br /&gt;
*{{contains|Piety Materia XI}}&lt;br /&gt;
*{{contains|Quicktongue Materia XII}}&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
*{{contains|Allagan Platinum Piece}}&lt;br /&gt;
*{{contains|Clear Demimateria III}}&lt;br /&gt;
*{{contains|Clear Demimateria II}}&lt;br /&gt;
*{{contains|Clear Demimateria I}}&lt;br /&gt;
*{{contains|Gold Saucer Aetheryte Ticket|qty=3}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Random containers nav}}&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Keybound_Coffer&amp;diff=1585356</id>
		<title>Keybound Coffer</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Keybound_Coffer&amp;diff=1585356"/>
		<updated>2026-10-28T22:04:14Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: use Template:Grouped columns instead of tables&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Item infobox&lt;br /&gt;
| name = Keybound Coffer&lt;br /&gt;
| icon = keybound coffer icon1.png&lt;br /&gt;
| image = &lt;br /&gt;
| description = A small wooden lockbox lined with a glamorous gold trim, awarded to Keybound Brawler challengers.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Contains a random prize item.&lt;br /&gt;
| type = other&lt;br /&gt;
| effects = &lt;br /&gt;
| effects-hq = &lt;br /&gt;
| material-type = Miscellany&lt;br /&gt;
| unique = &lt;br /&gt;
| untradable = y&lt;br /&gt;
| unsellable = y&lt;br /&gt;
| market-prohibited = y&lt;br /&gt;
| dyeable = &lt;br /&gt;
| dye-count = &lt;br /&gt;
| desynthesizable = &lt;br /&gt;
| desynth-class = &lt;br /&gt;
| rarity = white&lt;br /&gt;
| level = &lt;br /&gt;
| ilvl = 1&lt;br /&gt;
| race = &lt;br /&gt;
| gender = &lt;br /&gt;
| recast = &lt;br /&gt;
| recast-hq = &lt;br /&gt;
| cost = &lt;br /&gt;
| value = &lt;br /&gt;
| value-hq = &lt;br /&gt;
| seals = &lt;br /&gt;
| patch = 7.55&lt;br /&gt;
| id-edb = &lt;br /&gt;
| id-gt = 52450&lt;br /&gt;
}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
==Acquisition==&lt;br /&gt;
*{{game icon|Keybound Brawler}} (Clear)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Please do not remove acquisition templates that display no results. Those will display the relevant data if additional sources are added in the future.--&amp;gt;&lt;br /&gt;
{{vendor list|hideIfEmpty=y}}&lt;br /&gt;
&lt;br /&gt;
==Potential Contents==&lt;br /&gt;
{{section-stub|reason=Work-in-progress. See [https://xivstats.com/coffer?territory=1&amp;amp;coffer=52450 here] for an automatically crowdsourced list.}}&lt;br /&gt;
&lt;br /&gt;
{{Grouped columns|1=&lt;br /&gt;
&lt;br /&gt;
===Weapons===&lt;br /&gt;
====[[Adamant Weapons]]====&lt;br /&gt;
*{{contains|Adamant Hanger}}&lt;br /&gt;
*{{contains|Adamant Longbow}}&lt;br /&gt;
*{{contains|Adamant Bastard Sword}}&lt;br /&gt;
*{{contains|Adamant Codex}}&lt;br /&gt;
*{{contains|Adamant Pistol}}&lt;br /&gt;
*{{contains|Adamant Chakrams}}&lt;br /&gt;
*{{contains|Adamant Knuckles}}&lt;br /&gt;
*{{contains|Adamant Cleavers}}&lt;br /&gt;
*{{contains|Adamant Blade}}&lt;br /&gt;
*{{contains|Adamant Scutum}}&lt;br /&gt;
*{{contains|Adamant Rod}}&lt;br /&gt;
&lt;br /&gt;
====[[Rubellux Weapons]]====&lt;br /&gt;
*{{contains|Rubellux Cesti}}&lt;br /&gt;
*{{contains|Rubellux Codex}}&lt;br /&gt;
*{{contains|Rubellux Partisan}}&lt;br /&gt;
*{{contains|Rubellux Index}}&lt;br /&gt;
*{{contains|Rubellux Sawback}}&lt;br /&gt;
*{{contains|Rubellux Cane}}&lt;br /&gt;
&lt;br /&gt;
====[[Smaragdine Weapons]]====&lt;br /&gt;
*{{contains|Smaragdine Bastard Sword}}&lt;br /&gt;
*{{contains|Smaragdine Cleavers}}&lt;br /&gt;
*{{contains|Smaragdine Longbow}}&lt;br /&gt;
*{{contains|Smaragdine Chakrams}}&lt;br /&gt;
*{{contains|Smaragdine Cane}}&lt;br /&gt;
*{{contains|Smaragdine Partisan}}&lt;br /&gt;
&lt;br /&gt;
===Glamour===&lt;br /&gt;
*{{contains|The Faces We Wear - Thick-rimmed Goggles}}&lt;br /&gt;
*{{contains|Cactuar Pajama Shirt}}&lt;br /&gt;
*{{contains|Cactuar Pajama Slippers}}&lt;br /&gt;
*{{contains|Chocobo Pajama Eye Mask}}&lt;br /&gt;
*{{contains|Chocobo Pajama Shirt}}&lt;br /&gt;
*{{contains|Chocobo Pajama Bottoms}}&lt;br /&gt;
*{{contains|Plain Pajama Eye Mask}}&lt;br /&gt;
*{{contains|Plain Pajama Slippers}}&lt;br /&gt;
*{{contains|Martial Artist&#039;s Sleeveless Vest}}&lt;br /&gt;
*{{contains|Martial Artist&#039;s Slops}}&lt;br /&gt;
*{{contains|Martial Artist&#039;s Pumps}}&lt;br /&gt;
&lt;br /&gt;
===Housing Items===&lt;br /&gt;
*{{contains|Masonwork Interior Wall}}&lt;br /&gt;
*{{contains|Tatami Loft}}&lt;br /&gt;
*{{contains|Manor Fireplace}}&lt;br /&gt;
*{{contains|Manor Sofa}}&lt;br /&gt;
*{{contains|Swag Valance}}&lt;br /&gt;
*{{contains|Potted Dragon Tree}}&lt;br /&gt;
*{{contains|Oriental Bathtub}}&lt;br /&gt;
*{{contains|Indoor Oriental Waterfall}}&lt;br /&gt;
*{{contains|The Unending Journey}}&lt;br /&gt;
*{{contains|Fat Cat Sofa}}&lt;br /&gt;
*{{contains|Company Chest}}&lt;br /&gt;
*{{contains|Ivy Pillar}}&lt;br /&gt;
*{{contains|Nymian Wall Lantern}}&lt;br /&gt;
*{{contains|Table Orchestrion}}&lt;br /&gt;
*{{contains|Wooden Staircase Bookshelf}}&lt;br /&gt;
&lt;br /&gt;
===Dyes===&lt;br /&gt;
*{{contains|General-purpose Jet Black Dye}}&lt;br /&gt;
*{{contains|General-purpose Pure White Dye}}&lt;br /&gt;
*{{contains|General-purpose Pastel Green Dye}}&lt;br /&gt;
*{{contains|General-purpose Pastel Purple Dye}}&lt;br /&gt;
*{{contains|General-purpose Metallic Gold Dye}}&lt;br /&gt;
*{{contains|General-purpose Metallic Green Dye}}&lt;br /&gt;
*{{contains|General-purpose Dark Red Dye}}&lt;br /&gt;
*{{contains|General-purpose Dark Green Dye}}&lt;br /&gt;
*{{contains|General-purpose Dark Purple Dye}}&lt;br /&gt;
*{{contains|General-purpose Dark Blue Dye}}&lt;br /&gt;
&lt;br /&gt;
===Consumables===&lt;br /&gt;
*{{contains|Clam Cake}}&lt;br /&gt;
*{{contains|Rock-fisted Popoto Salad}} {{HQ}}&lt;br /&gt;
*{{contains|Rock-fisted Popoto Stew}} {{HQ}}&lt;br /&gt;
*{{contains|Prune-packed Fruitcake}} {{HQ}}&lt;br /&gt;
*{{contains|Prune Ponzecake}} {{HQ}}&lt;br /&gt;
*{{contains|Nachos}} {{HQ}}&lt;br /&gt;
*{{contains|Popoto Potage}} {{HQ}}&lt;br /&gt;
*{{contains|Rroneek au Gratin}} {{HQ}}&lt;br /&gt;
*{{contains|Goldentail Pie}} {{HQ}}&lt;br /&gt;
*{{contains|All i Pebre}} {{HQ}}&lt;br /&gt;
&lt;br /&gt;
===Materia===&lt;br /&gt;
*{{contains|Craftsman&#039;s Competence Materia XI}}&lt;br /&gt;
*{{contains|Gatherer&#039;s Grasp Materia XI}}&lt;br /&gt;
*{{contains|Gatherer&#039;s Guerdon Materia XI}}&lt;br /&gt;
*{{contains|Gatherer&#039;s Guile Materia XII}}&lt;br /&gt;
*{{contains|Heavens&#039; Eye Materia XII}}&lt;br /&gt;
*{{contains|Savage Might Materia XI}}&lt;br /&gt;
*{{contains|Piety Materia XI}}&lt;br /&gt;
*{{contains|Quicktongue Materia XII}}&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
*{{contains|Allagan Platinum Piece}}&lt;br /&gt;
*{{contains|Clear Demimateria III}}&lt;br /&gt;
*{{contains|Clear Demimateria II}}&lt;br /&gt;
*{{contains|Clear Demimateria I}}&lt;br /&gt;
*{{contains|Gold Saucer Aetheryte Ticket}} x3&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Random containers nav}}&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Contains&amp;diff=1585354</id>
		<title>Template:Contains</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Contains&amp;diff=1585354"/>
		<updated>2026-10-28T21:57:28Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: support passing qty parameter through to Template:Game icon&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{game icon|{{{1|Item}}}|{{{2|}}}|qty={{{qty|}}}}}{{#set:Contains item={{{1|}}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Identifies what item is received upon opening a [[container]]. Sets the [[Property:Contains item]] property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{{Contains|&amp;lt;item name&amp;gt;}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
; &#039;&#039;unnamed parameter&#039;&#039; 1&lt;br /&gt;
: Required. Name of the item.&lt;br /&gt;
; &#039;&#039;unnamed parameter&#039;&#039; 2&lt;br /&gt;
: Optional. Link text to display. Defaults to &amp;lt;Item name&amp;gt;. Do not use this to pluralize the name.&lt;br /&gt;
; qty&lt;br /&gt;
: Optional. Quantity of contained items, passed through to {{tl|Game icon}}. This is &#039;&#039;not&#039;&#039; currently saved as part of semantic data, it is only used for display.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
* {{contains|Intelligence Materia I}} is produced from &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{contains|Intelligence Materia I}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* {{contains|Clear Demimateria II}} is produced from &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{contains|Clear Demimateria II}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* {{contains|Gold Saucer Aetheryte Ticket|qty=3}} is produced from &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{contains|Gold Saucer Aetheryte Ticket|qty=3}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also==&lt;br /&gt;
* {{tl|contained in}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Data templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Grouped_columns/doc&amp;diff=1585348</id>
		<title>Template:Grouped columns/doc</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Grouped_columns/doc&amp;diff=1585348"/>
		<updated>2026-10-28T21:48:16Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: document why &amp;lt;code&amp;gt;1=&amp;lt;/code&amp;gt; is used&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{documentation subpage}}&lt;br /&gt;
{{lua|Module:Grouped columns}}&lt;br /&gt;
&lt;br /&gt;
 {&amp;lt;nowiki/&amp;gt;{&#039;&#039;&#039;Grouped columns&#039;&#039;&#039;|&#039;&#039;min width&#039;&#039;=|&#039;&#039;columns&#039;&#039;=|1=&lt;br /&gt;
 ...&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
Renders grouped content in a column layout. The inner content should be simple content such as paragraphs or lists, broken up with headings that separate groups. The layout guarantees that each group is not split between multiple columns.&lt;br /&gt;
&lt;br /&gt;
This template is mostly useful for breaking up long lists with multiple groups, such as drop lists (where there&#039;s a group for each category of item that can drop - gear, housing items, minions, etc).&lt;br /&gt;
&lt;br /&gt;
Note the use of the explicit &amp;lt;code&amp;gt;1=&amp;lt;/code&amp;gt; name for the content parameter; omitting this and passing content as a typical unnamed parameter will result in mishandled &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt; characters and broken output.&lt;br /&gt;
&lt;br /&gt;
== Template data ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Content&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Multiline wikitext content to display within the columns. Headings are used to define groups; within groups can live simple content such as lists or paragraphs.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;unbalanced-wikitext&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;min width&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Minimum width&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Minimum width of each column, in CSS &amp;lt;code&amp;gt;em&amp;lt;/code&amp;gt; units which scale with the user&#039;s font size. The default value of &#039;&#039;&#039;24&#039;&#039;&#039; results in a three-column layout on typical desktop displays.&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;16&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;number&amp;quot;,&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;24&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;columns&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Maximum columns&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Maximum number of columns to use. This should only be set when the number of total groups is small, to allow them to grow larger than the minimum column width when extra horizontal space is available. For more than three or four groups, leave this unset so that additional columns can be added on wide screens.&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;3&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;number&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;Renders grouped content in a column layout.&amp;quot;,&lt;br /&gt;
	&amp;quot;paramOrder&amp;quot;: [&lt;br /&gt;
		&amp;quot;min width&amp;quot;,&lt;br /&gt;
		&amp;quot;columns&amp;quot;,&lt;br /&gt;
		&amp;quot;1&amp;quot;&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;!-- Template/module categories and interwiki links go here --&amp;gt;&lt;br /&gt;
[[Category:Utility templates]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Grouped_columns/doc&amp;diff=1585347</id>
		<title>Template:Grouped columns/doc</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Grouped_columns/doc&amp;diff=1585347"/>
		<updated>2026-10-28T21:46:18Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: Created page with &amp;quot;{{documentation subpage}} {{lua|Module:Grouped columns}}   {&amp;lt;nowiki/&amp;gt;{&amp;#039;&amp;#039;&amp;#039;Grouped columns&amp;#039;&amp;#039;&amp;#039;|&amp;#039;&amp;#039;min width&amp;#039;&amp;#039;=|&amp;#039;&amp;#039;columns&amp;#039;&amp;#039;=|1=  ...  }}  Renders grouped content in a column layout. The inner content should be simple content such as paragraphs or lists, broken up with headings that separate groups. The layout guarantees that each group is not split between multiple columns.  This template is mostly useful for breaking up long lists with multiple groups, such as drop lists (wh...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{documentation subpage}}&lt;br /&gt;
{{lua|Module:Grouped columns}}&lt;br /&gt;
&lt;br /&gt;
 {&amp;lt;nowiki/&amp;gt;{&#039;&#039;&#039;Grouped columns&#039;&#039;&#039;|&#039;&#039;min width&#039;&#039;=|&#039;&#039;columns&#039;&#039;=|1=&lt;br /&gt;
 ...&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
Renders grouped content in a column layout. The inner content should be simple content such as paragraphs or lists, broken up with headings that separate groups. The layout guarantees that each group is not split between multiple columns.&lt;br /&gt;
&lt;br /&gt;
This template is mostly useful for breaking up long lists with multiple groups, such as drop lists (where there&#039;s a group for each category of item that can drop - gear, housing items, minions, etc).&lt;br /&gt;
&lt;br /&gt;
== Template data ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Content&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Multiline wikitext content to display within the columns. Headings are used to define groups; within groups can live simple content such as lists or paragraphs.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;unbalanced-wikitext&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;min width&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Minimum width&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Minimum width of each column, in CSS &amp;lt;code&amp;gt;em&amp;lt;/code&amp;gt; units which scale with the user&#039;s font size. The default value of &#039;&#039;&#039;24&#039;&#039;&#039; results in a three-column layout on typical desktop displays.&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;16&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;number&amp;quot;,&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;24&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;columns&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Maximum columns&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Maximum number of columns to use. This should only be set when the number of total groups is small, to allow them to grow larger than the minimum column width when extra horizontal space is available. For more than three or four groups, leave this unset so that additional columns can be added on wide screens.&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;3&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;number&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;Renders grouped content in a column layout.&amp;quot;,&lt;br /&gt;
	&amp;quot;paramOrder&amp;quot;: [&lt;br /&gt;
		&amp;quot;min width&amp;quot;,&lt;br /&gt;
		&amp;quot;columns&amp;quot;,&lt;br /&gt;
		&amp;quot;1&amp;quot;&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;!-- Template/module categories and interwiki links go here --&amp;gt;&lt;br /&gt;
[[Category:Utility templates]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Grouped_columns&amp;diff=1585338</id>
		<title>Template:Grouped columns</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Grouped_columns&amp;diff=1585338"/>
		<updated>2026-10-28T21:33:06Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:Grouped columns|main}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Put categories on the doc page, not here! --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Grouped columns|1=&lt;br /&gt;
===A===&lt;br /&gt;
* 1&lt;br /&gt;
* 2&lt;br /&gt;
* 3&lt;br /&gt;
===B===&lt;br /&gt;
* 4&lt;br /&gt;
* 5&lt;br /&gt;
===C===&lt;br /&gt;
* 6&lt;br /&gt;
===D===&lt;br /&gt;
* 7&lt;br /&gt;
* 8&lt;br /&gt;
* 9&lt;br /&gt;
* 10&lt;br /&gt;
* 11&lt;br /&gt;
* 12&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Grouped columns|1=&lt;br /&gt;
===A===&lt;br /&gt;
* 1&lt;br /&gt;
* 2&lt;br /&gt;
* 3&lt;br /&gt;
===B===&lt;br /&gt;
* 4&lt;br /&gt;
* 5&lt;br /&gt;
===C===&lt;br /&gt;
* 6&lt;br /&gt;
===D===&lt;br /&gt;
* 7&lt;br /&gt;
* 8&lt;br /&gt;
* 9&lt;br /&gt;
* 10&lt;br /&gt;
* 11&lt;br /&gt;
* 12&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Grouped columns|min width=10|columns=|1=&lt;br /&gt;
===A===&lt;br /&gt;
* 1&lt;br /&gt;
* 2&lt;br /&gt;
* 3&lt;br /&gt;
===B===&lt;br /&gt;
* 4&lt;br /&gt;
* 5&lt;br /&gt;
===C===&lt;br /&gt;
* 6&lt;br /&gt;
===D===&lt;br /&gt;
* 7&lt;br /&gt;
* 8&lt;br /&gt;
* 9&lt;br /&gt;
* 10&lt;br /&gt;
* 11&lt;br /&gt;
* 12&lt;br /&gt;
===E===&lt;br /&gt;
* 13&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Grouped columns|min width=10|columns=|1=&lt;br /&gt;
===A===&lt;br /&gt;
* 1&lt;br /&gt;
* 2&lt;br /&gt;
* 3&lt;br /&gt;
===B===&lt;br /&gt;
* 4&lt;br /&gt;
* 5&lt;br /&gt;
===C===&lt;br /&gt;
* 6&lt;br /&gt;
===D===&lt;br /&gt;
* 7&lt;br /&gt;
* 8&lt;br /&gt;
* 9&lt;br /&gt;
* 10&lt;br /&gt;
* 11&lt;br /&gt;
* 12&lt;br /&gt;
===E===&lt;br /&gt;
* 13&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Grouped_columns&amp;diff=1585337</id>
		<title>Module:Grouped columns</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Grouped_columns&amp;diff=1585337"/>
		<updated>2026-10-28T21:29:33Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
  local args = getArgs(frame, {parentOnly = true})&lt;br /&gt;
  local columnMinWidth = tonumber(args[&amp;quot;min width&amp;quot;]) or 24&lt;br /&gt;
  local maxColumns = tonumber(args.columns)&lt;br /&gt;
&lt;br /&gt;
  local wrapper = mw.html.create(&amp;quot;div&amp;quot;):css({&lt;br /&gt;
    [&amp;quot;column-width&amp;quot;] = (&amp;quot;%dem&amp;quot;):format(columnMinWidth),&lt;br /&gt;
    [&amp;quot;column-count&amp;quot;] = maxColumns and tostring(maxColumns) or nil,&lt;br /&gt;
  })&lt;br /&gt;
&lt;br /&gt;
  local group_start = [[&amp;lt;div style=&amp;quot;break-inside:avoid-column;border-top:1px solid transparent;margin-top:-1px&amp;quot;&amp;gt;]]&lt;br /&gt;
  local group_end = [[&amp;lt;/div&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
  local lines = (args[1] .. &amp;quot;\n&amp;quot;):gmatch(&amp;quot;(.-)\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  local grouped_lines = group_start&lt;br /&gt;
  for line in lines do&lt;br /&gt;
    if line:match(&amp;quot;^=&amp;quot;) then&lt;br /&gt;
      -- close current group and open a new one&lt;br /&gt;
      -- however, if the initial group has no content yet (i.e. first line of input is a heading),&lt;br /&gt;
      --   do not close the empty initial group&lt;br /&gt;
      if grouped_lines ~= group_start then&lt;br /&gt;
        grouped_lines = grouped_lines .. &amp;quot;\n&amp;quot; .. group_end .. &amp;quot;\n&amp;quot; .. group_start&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
    grouped_lines = grouped_lines .. &amp;quot;\n&amp;quot; .. line&lt;br /&gt;
  end&lt;br /&gt;
  grouped_lines = grouped_lines .. &amp;quot;\n&amp;quot; .. group_end&lt;br /&gt;
&lt;br /&gt;
  wrapper:wikitext(grouped_lines)&lt;br /&gt;
  return tostring(wrapper)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Grouped_columns&amp;diff=1585334</id>
		<title>Template:Grouped columns</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Template:Grouped_columns&amp;diff=1585334"/>
		<updated>2026-10-28T21:25:20Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: Created page with &amp;quot;&amp;lt;includeonly&amp;gt;{{#invoke:Grouped columns|main}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt; {{documentation}} &amp;lt;!-- Put categories on the doc page, not here! --&amp;gt; &amp;lt;/noinclude&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:Grouped columns|main}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Put categories on the doc page, not here! --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Sandbox/heading_columns&amp;diff=1585333</id>
		<title>Module:Sandbox/heading columns</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Sandbox/heading_columns&amp;diff=1585333"/>
		<updated>2026-10-28T21:24:25Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: Erin Umbreon moved page Module:Sandbox/heading columns to Module:Grouped columns: un-sandbox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return require [[Module:Grouped columns]]&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
	<entry>
		<id>https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Grouped_columns&amp;diff=1585332</id>
		<title>Module:Grouped columns</title>
		<link rel="alternate" type="text/html" href="https://ffxiv.consolegameswiki.com/mediawiki/index.php?title=Module:Grouped_columns&amp;diff=1585332"/>
		<updated>2026-10-28T21:24:25Z</updated>

		<summary type="html">&lt;p&gt;Erin Umbreon: Erin Umbreon moved page Module:Sandbox/heading columns to Module:Grouped columns: un-sandbox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
  local args = getArgs(frame, {parentOnly = true})&lt;br /&gt;
  local columnMinWidth = tonumber(args[&amp;quot;min width&amp;quot;]) or 24&lt;br /&gt;
  local maxColumns = tonumber(args.columns)&lt;br /&gt;
&lt;br /&gt;
  local wrapper = mw.html.create(&amp;quot;div&amp;quot;):css({&lt;br /&gt;
    [&amp;quot;column-width&amp;quot;] = (&amp;quot;%dem&amp;quot;):format(columnMinWidth),&lt;br /&gt;
    [&amp;quot;column-count&amp;quot;] = maxColumns and tostring(maxColumns) or nil,&lt;br /&gt;
  })&lt;br /&gt;
&lt;br /&gt;
  local group_start = [[&amp;lt;div style=&amp;quot;break-inside:avoid-column;border-top:1px solid transparent;margin-top:-1px&amp;quot;&amp;gt;]]&lt;br /&gt;
  local group_end = [[&amp;lt;/div&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
  local lines = (frame.args[1] .. &amp;quot;\n&amp;quot;):gmatch(&amp;quot;(.-)\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  local grouped_lines = group_start&lt;br /&gt;
  for line in lines do&lt;br /&gt;
    if line:match(&amp;quot;^=&amp;quot;) then&lt;br /&gt;
      -- close current group and open a new one&lt;br /&gt;
      -- however, if the initial group has no content yet (i.e. first line of input is a heading),&lt;br /&gt;
      --   do not close the empty initial group&lt;br /&gt;
      if grouped_lines ~= group_start then&lt;br /&gt;
        grouped_lines = grouped_lines .. &amp;quot;\n&amp;quot; .. group_end .. &amp;quot;\n&amp;quot; .. group_start&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
    grouped_lines = grouped_lines .. &amp;quot;\n&amp;quot; .. line&lt;br /&gt;
  end&lt;br /&gt;
  grouped_lines = grouped_lines .. &amp;quot;\n&amp;quot; .. group_end&lt;br /&gt;
&lt;br /&gt;
  wrapper:wikitext(grouped_lines)&lt;br /&gt;
  return tostring(wrapper)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Erin Umbreon</name></author>
	</entry>
</feed>