<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://drifters-almanac.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mildew</id>
	<title>Drifters Almanac - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://drifters-almanac.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mildew"/>
	<link rel="alternate" type="text/html" href="https://drifters-almanac.com/Special:Contributions/Mildew"/>
	<updated>2026-05-17T10:13:30Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Module:MobVariants&amp;diff=3343</id>
		<title>Module:MobVariants</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Module:MobVariants&amp;diff=3343"/>
		<updated>2026-03-27T21:50:42Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local variantKeys = { &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
local function trim(s)&lt;br /&gt;
    if not s then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    return mw.text.trim(s)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasValue(s)&lt;br /&gt;
    return trim(s) ~= &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function splitAndSort(raw, delimiter)&lt;br /&gt;
    delimiter = delimiter or &amp;quot;,&amp;quot;&lt;br /&gt;
    local results = {}&lt;br /&gt;
&lt;br /&gt;
    if not hasValue(raw) then&lt;br /&gt;
        return results&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local items = mw.text.split(raw, delimiter)&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        local value = trim(item)&lt;br /&gt;
        if value ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            table.insert(results, value)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.sort(results, function(a, b)&lt;br /&gt;
        return mw.ustring.lower(a) &amp;lt; mw.ustring.lower(b)&lt;br /&gt;
    end)&lt;br /&gt;
&lt;br /&gt;
    return results&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeBulletedList(items)&lt;br /&gt;
    if not items or #items == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local itemCount = #items&lt;br /&gt;
    local columnCount = 1&lt;br /&gt;
&lt;br /&gt;
    if itemCount &amp;gt;= 16 then&lt;br /&gt;
        columnCount = 3&lt;br /&gt;
    elseif itemCount &amp;gt;= 8 then&lt;br /&gt;
        columnCount = 2&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local output = {&lt;br /&gt;
        string.format(&#039;&amp;lt;div style=&amp;quot;column-count: %d; column-gap: 1.5em;&amp;quot;&amp;gt;&#039;, columnCount),&lt;br /&gt;
        &#039;&amp;lt;ul style=&amp;quot;margin: 0; padding-left: 1.5em;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        table.insert(output, string.format(&#039;&amp;lt;li style=&amp;quot;break-inside: avoid;&amp;quot;&amp;gt;[[%s]]&amp;lt;/li&amp;gt;&#039;, item))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/ul&amp;gt;&#039;)&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeBulletedListCompact(items)&lt;br /&gt;
    if not items or #items == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local itemCount = #items&lt;br /&gt;
    local columnCount = 1&lt;br /&gt;
&lt;br /&gt;
    if itemCount &amp;gt;= 8 then&lt;br /&gt;
        columnCount = 2&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local output = {&lt;br /&gt;
        string.format(&#039;&amp;lt;div style=&amp;quot;column-count: %d; column-gap: 2em;&amp;quot;&amp;gt;&#039;, columnCount),&lt;br /&gt;
        &#039;&amp;lt;ul style=&amp;quot;margin: 0; padding-left: 1.2em;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        table.insert(output, string.format(&#039;&amp;lt;li style=&amp;quot;break-inside: avoid;&amp;quot;&amp;gt;[[%s]]&amp;lt;/li&amp;gt;&#039;, item))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/ul&amp;gt;&#039;)&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeInlineList(items)&lt;br /&gt;
    if not items or #items == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local linked = {}&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        table.insert(linked, string.format(&#039;[[%s]]&#039;, item))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat(linked, &amp;quot;, &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatLevelRange(low, high)&lt;br /&gt;
    low = trim(low)&lt;br /&gt;
    high = trim(high)&lt;br /&gt;
&lt;br /&gt;
    if low ~= &amp;quot;&amp;quot; and high ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        if low == high then&lt;br /&gt;
            return low&lt;br /&gt;
        end&lt;br /&gt;
        return low .. &amp;quot; - &amp;quot; .. high&lt;br /&gt;
    elseif low ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        return low&lt;br /&gt;
    elseif high ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        return high&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function collectVariants(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local variants = {}&lt;br /&gt;
&lt;br /&gt;
    for _, key in ipairs(variantKeys) do&lt;br /&gt;
        local region = trim(args[&amp;quot;region_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local levelLow = trim(args[&amp;quot;level_low_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local levelHigh = trim(args[&amp;quot;level_high_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local lootRaw = trim(args[&amp;quot;loot_table_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local harvestRaw = trim(args[&amp;quot;harvest_table_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        local hasData =&lt;br /&gt;
            region ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            levelLow ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            levelHigh ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            lootRaw ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            harvestRaw ~= &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        if hasData then&lt;br /&gt;
            table.insert(variants, {&lt;br /&gt;
                key = key,&lt;br /&gt;
                region = region,&lt;br /&gt;
                levelLow = levelLow,&lt;br /&gt;
                levelHigh = levelHigh,&lt;br /&gt;
                levelDisplay = formatLevelRange(levelLow, levelHigh),&lt;br /&gt;
                lootItems = splitAndSort(lootRaw, &amp;quot;,&amp;quot;),&lt;br /&gt;
                harvestItems = splitAndSort(harvestRaw, &amp;quot;,&amp;quot;)&lt;br /&gt;
            })&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return variants&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderSingleVariant(variant)&lt;br /&gt;
    local output = {}&lt;br /&gt;
&lt;br /&gt;
    local details = {}&lt;br /&gt;
    if variant.region ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(details, &amp;quot;&#039;&#039;&#039;Region:&#039;&#039;&#039; &amp;quot; .. variant.region)&lt;br /&gt;
    end&lt;br /&gt;
    if variant.levelDisplay ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(details, &amp;quot;&#039;&#039;&#039;Level:&#039;&#039;&#039; &amp;quot; .. variant.levelDisplay)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if #details &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, table.concat(details, &amp;quot;&amp;lt;br /&amp;gt;\n&amp;quot;))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if variant.harvestItems and #variant.harvestItems &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;==Harvest==&#039;)&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, makeBulletedList(variant.harvestItems))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if variant.lootItems and #variant.lootItems &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;==Drops==&#039;)&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, makeBulletedList(variant.lootItems))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderMultipleVariants(variants)&lt;br /&gt;
    local output = {}&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;==Variants==&#039;)&lt;br /&gt;
    table.insert(output, &#039;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Region&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Level&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Harvest&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Drops&#039;)&lt;br /&gt;
&lt;br /&gt;
    for _, variant in ipairs(variants) do&lt;br /&gt;
        local region = variant.region ~= &amp;quot;&amp;quot; and variant.region or &amp;quot;—&amp;quot;&lt;br /&gt;
        local level = variant.levelDisplay ~= &amp;quot;&amp;quot; and variant.levelDisplay or &amp;quot;—&amp;quot;&lt;br /&gt;
        local harvest = (#variant.harvestItems &amp;gt; 0) and makeBulletedListCompact(variant.harvestItems) or &amp;quot;—&amp;quot;&lt;br /&gt;
        local loot = (#variant.lootItems &amp;gt; 0) and makeBulletedListCompact(variant.lootItems) or &amp;quot;—&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        table.insert(output, &#039;|-&#039;)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. region)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. level)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. harvest)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. loot)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;|}&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.render(frame)&lt;br /&gt;
    local variants = collectVariants(frame)&lt;br /&gt;
&lt;br /&gt;
    if #variants == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    elseif #variants == 1 then&lt;br /&gt;
        return renderSingleVariant(variants[1])&lt;br /&gt;
    else&lt;br /&gt;
        return renderMultipleVariants(variants)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Module:MobVariants&amp;diff=3342</id>
		<title>Module:MobVariants</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Module:MobVariants&amp;diff=3342"/>
		<updated>2026-03-27T21:48:13Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local variantKeys = { &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
local function trim(s)&lt;br /&gt;
    if not s then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    return mw.text.trim(s)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasValue(s)&lt;br /&gt;
    return trim(s) ~= &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function splitAndSort(raw, delimiter)&lt;br /&gt;
    delimiter = delimiter or &amp;quot;,&amp;quot;&lt;br /&gt;
    local results = {}&lt;br /&gt;
&lt;br /&gt;
    if not hasValue(raw) then&lt;br /&gt;
        return results&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local items = mw.text.split(raw, delimiter)&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        local value = trim(item)&lt;br /&gt;
        if value ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            table.insert(results, value)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.sort(results, function(a, b)&lt;br /&gt;
        return mw.ustring.lower(a) &amp;lt; mw.ustring.lower(b)&lt;br /&gt;
    end)&lt;br /&gt;
&lt;br /&gt;
    return results&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeBulletedList(items)&lt;br /&gt;
    if not items or #items == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local itemCount = #items&lt;br /&gt;
    local columnCount = 1&lt;br /&gt;
&lt;br /&gt;
    if itemCount &amp;gt;= 16 then&lt;br /&gt;
        columnCount = 3&lt;br /&gt;
    elseif itemCount &amp;gt;= 8 then&lt;br /&gt;
        columnCount = 2&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local output = {&lt;br /&gt;
        string.format(&#039;&amp;lt;div style=&amp;quot;column-count: %d; column-gap: 0.5em;&amp;quot;&amp;gt;&#039;, columnCount),&lt;br /&gt;
        &#039;&amp;lt;ul style=&amp;quot;margin: 0; padding-left: 0.5em;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        table.insert(output, string.format(&#039;&amp;lt;li style=&amp;quot;break-inside: avoid;&amp;quot;&amp;gt;[[%s]]&amp;lt;/li&amp;gt;&#039;, item))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/ul&amp;gt;&#039;)&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeBulletedListCompact(items)&lt;br /&gt;
    if not items or #items == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local itemCount = #items&lt;br /&gt;
    local columnCount = 1&lt;br /&gt;
&lt;br /&gt;
    if itemCount &amp;gt;= 8 then&lt;br /&gt;
        columnCount = 2&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local output = {&lt;br /&gt;
        string.format(&#039;&amp;lt;div style=&amp;quot;column-count: %d; column-gap: 2em;&amp;quot;&amp;gt;&#039;, columnCount),&lt;br /&gt;
        &#039;&amp;lt;ul style=&amp;quot;margin: 0; padding-left: 1.2em;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        table.insert(output, string.format(&#039;&amp;lt;li style=&amp;quot;break-inside: avoid;&amp;quot;&amp;gt;[[%s]]&amp;lt;/li&amp;gt;&#039;, item))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/ul&amp;gt;&#039;)&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeInlineList(items)&lt;br /&gt;
    if not items or #items == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local linked = {}&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        table.insert(linked, string.format(&#039;[[%s]]&#039;, item))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat(linked, &amp;quot;, &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatLevelRange(low, high)&lt;br /&gt;
    low = trim(low)&lt;br /&gt;
    high = trim(high)&lt;br /&gt;
&lt;br /&gt;
    if low ~= &amp;quot;&amp;quot; and high ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        if low == high then&lt;br /&gt;
            return low&lt;br /&gt;
        end&lt;br /&gt;
        return low .. &amp;quot; - &amp;quot; .. high&lt;br /&gt;
    elseif low ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        return low&lt;br /&gt;
    elseif high ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        return high&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function collectVariants(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local variants = {}&lt;br /&gt;
&lt;br /&gt;
    for _, key in ipairs(variantKeys) do&lt;br /&gt;
        local region = trim(args[&amp;quot;region_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local levelLow = trim(args[&amp;quot;level_low_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local levelHigh = trim(args[&amp;quot;level_high_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local lootRaw = trim(args[&amp;quot;loot_table_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local harvestRaw = trim(args[&amp;quot;harvest_table_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        local hasData =&lt;br /&gt;
            region ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            levelLow ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            levelHigh ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            lootRaw ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            harvestRaw ~= &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        if hasData then&lt;br /&gt;
            table.insert(variants, {&lt;br /&gt;
                key = key,&lt;br /&gt;
                region = region,&lt;br /&gt;
                levelLow = levelLow,&lt;br /&gt;
                levelHigh = levelHigh,&lt;br /&gt;
                levelDisplay = formatLevelRange(levelLow, levelHigh),&lt;br /&gt;
                lootItems = splitAndSort(lootRaw, &amp;quot;,&amp;quot;),&lt;br /&gt;
                harvestItems = splitAndSort(harvestRaw, &amp;quot;,&amp;quot;)&lt;br /&gt;
            })&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return variants&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderSingleVariant(variant)&lt;br /&gt;
    local output = {}&lt;br /&gt;
&lt;br /&gt;
    local details = {}&lt;br /&gt;
    if variant.region ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(details, &amp;quot;&#039;&#039;&#039;Region:&#039;&#039;&#039; &amp;quot; .. variant.region)&lt;br /&gt;
    end&lt;br /&gt;
    if variant.levelDisplay ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(details, &amp;quot;&#039;&#039;&#039;Level:&#039;&#039;&#039; &amp;quot; .. variant.levelDisplay)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if #details &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, table.concat(details, &amp;quot;&amp;lt;br /&amp;gt;\n&amp;quot;))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if variant.harvestItems and #variant.harvestItems &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;==Harvest==&#039;)&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, makeBulletedList(variant.harvestItems))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if variant.lootItems and #variant.lootItems &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;==Drops==&#039;)&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, makeBulletedList(variant.lootItems))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderMultipleVariants(variants)&lt;br /&gt;
    local output = {}&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;==Variants==&#039;)&lt;br /&gt;
    table.insert(output, &#039;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Region&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Level&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Harvest&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Drops&#039;)&lt;br /&gt;
&lt;br /&gt;
    for _, variant in ipairs(variants) do&lt;br /&gt;
        local region = variant.region ~= &amp;quot;&amp;quot; and variant.region or &amp;quot;—&amp;quot;&lt;br /&gt;
        local level = variant.levelDisplay ~= &amp;quot;&amp;quot; and variant.levelDisplay or &amp;quot;—&amp;quot;&lt;br /&gt;
        local harvest = (#variant.harvestItems &amp;gt; 0) and makeBulletedListCompact(variant.harvestItems) or &amp;quot;—&amp;quot;&lt;br /&gt;
        local loot = (#variant.lootItems &amp;gt; 0) and makeBulletedListCompact(variant.lootItems) or &amp;quot;—&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        table.insert(output, &#039;|-&#039;)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. region)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. level)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. harvest)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. loot)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;|}&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.render(frame)&lt;br /&gt;
    local variants = collectVariants(frame)&lt;br /&gt;
&lt;br /&gt;
    if #variants == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    elseif #variants == 1 then&lt;br /&gt;
        return renderSingleVariant(variants[1])&lt;br /&gt;
    else&lt;br /&gt;
        return renderMultipleVariants(variants)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Module:MobVariants&amp;diff=3341</id>
		<title>Module:MobVariants</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Module:MobVariants&amp;diff=3341"/>
		<updated>2026-03-27T21:47:49Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local variantKeys = { &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
local function trim(s)&lt;br /&gt;
    if not s then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    return mw.text.trim(s)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasValue(s)&lt;br /&gt;
    return trim(s) ~= &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function splitAndSort(raw, delimiter)&lt;br /&gt;
    delimiter = delimiter or &amp;quot;,&amp;quot;&lt;br /&gt;
    local results = {}&lt;br /&gt;
&lt;br /&gt;
    if not hasValue(raw) then&lt;br /&gt;
        return results&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local items = mw.text.split(raw, delimiter)&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        local value = trim(item)&lt;br /&gt;
        if value ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            table.insert(results, value)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.sort(results, function(a, b)&lt;br /&gt;
        return mw.ustring.lower(a) &amp;lt; mw.ustring.lower(b)&lt;br /&gt;
    end)&lt;br /&gt;
&lt;br /&gt;
    return results&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeBulletedList(items)&lt;br /&gt;
    if not items or #items == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local itemCount = #items&lt;br /&gt;
    local columnCount = 1&lt;br /&gt;
&lt;br /&gt;
    if itemCount &amp;gt;= 16 then&lt;br /&gt;
        columnCount = 3&lt;br /&gt;
    elseif itemCount &amp;gt;= 8 then&lt;br /&gt;
        columnCount = 2&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local output = {&lt;br /&gt;
        string.format(&#039;&amp;lt;div style=&amp;quot;column-count: %d; column-gap: 0.5em;&amp;quot;&amp;gt;&#039;, columnCount),&lt;br /&gt;
        &#039;&amp;lt;ul style=&amp;quot;margin: 0; padding-left: 1.2em;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        table.insert(output, string.format(&#039;&amp;lt;li style=&amp;quot;break-inside: avoid;&amp;quot;&amp;gt;[[%s]]&amp;lt;/li&amp;gt;&#039;, item))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/ul&amp;gt;&#039;)&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeBulletedListCompact(items)&lt;br /&gt;
    if not items or #items == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local itemCount = #items&lt;br /&gt;
    local columnCount = 1&lt;br /&gt;
&lt;br /&gt;
    if itemCount &amp;gt;= 8 then&lt;br /&gt;
        columnCount = 2&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local output = {&lt;br /&gt;
        string.format(&#039;&amp;lt;div style=&amp;quot;column-count: %d; column-gap: 2em;&amp;quot;&amp;gt;&#039;, columnCount),&lt;br /&gt;
        &#039;&amp;lt;ul style=&amp;quot;margin: 0; padding-left: 1.2em;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        table.insert(output, string.format(&#039;&amp;lt;li style=&amp;quot;break-inside: avoid;&amp;quot;&amp;gt;[[%s]]&amp;lt;/li&amp;gt;&#039;, item))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/ul&amp;gt;&#039;)&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeInlineList(items)&lt;br /&gt;
    if not items or #items == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local linked = {}&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        table.insert(linked, string.format(&#039;[[%s]]&#039;, item))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat(linked, &amp;quot;, &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatLevelRange(low, high)&lt;br /&gt;
    low = trim(low)&lt;br /&gt;
    high = trim(high)&lt;br /&gt;
&lt;br /&gt;
    if low ~= &amp;quot;&amp;quot; and high ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        if low == high then&lt;br /&gt;
            return low&lt;br /&gt;
        end&lt;br /&gt;
        return low .. &amp;quot; - &amp;quot; .. high&lt;br /&gt;
    elseif low ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        return low&lt;br /&gt;
    elseif high ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        return high&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function collectVariants(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local variants = {}&lt;br /&gt;
&lt;br /&gt;
    for _, key in ipairs(variantKeys) do&lt;br /&gt;
        local region = trim(args[&amp;quot;region_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local levelLow = trim(args[&amp;quot;level_low_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local levelHigh = trim(args[&amp;quot;level_high_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local lootRaw = trim(args[&amp;quot;loot_table_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local harvestRaw = trim(args[&amp;quot;harvest_table_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        local hasData =&lt;br /&gt;
            region ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            levelLow ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            levelHigh ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            lootRaw ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            harvestRaw ~= &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        if hasData then&lt;br /&gt;
            table.insert(variants, {&lt;br /&gt;
                key = key,&lt;br /&gt;
                region = region,&lt;br /&gt;
                levelLow = levelLow,&lt;br /&gt;
                levelHigh = levelHigh,&lt;br /&gt;
                levelDisplay = formatLevelRange(levelLow, levelHigh),&lt;br /&gt;
                lootItems = splitAndSort(lootRaw, &amp;quot;,&amp;quot;),&lt;br /&gt;
                harvestItems = splitAndSort(harvestRaw, &amp;quot;,&amp;quot;)&lt;br /&gt;
            })&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return variants&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderSingleVariant(variant)&lt;br /&gt;
    local output = {}&lt;br /&gt;
&lt;br /&gt;
    local details = {}&lt;br /&gt;
    if variant.region ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(details, &amp;quot;&#039;&#039;&#039;Region:&#039;&#039;&#039; &amp;quot; .. variant.region)&lt;br /&gt;
    end&lt;br /&gt;
    if variant.levelDisplay ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(details, &amp;quot;&#039;&#039;&#039;Level:&#039;&#039;&#039; &amp;quot; .. variant.levelDisplay)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if #details &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, table.concat(details, &amp;quot;&amp;lt;br /&amp;gt;\n&amp;quot;))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if variant.harvestItems and #variant.harvestItems &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;==Harvest==&#039;)&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, makeBulletedList(variant.harvestItems))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if variant.lootItems and #variant.lootItems &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;==Drops==&#039;)&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, makeBulletedList(variant.lootItems))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderMultipleVariants(variants)&lt;br /&gt;
    local output = {}&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;==Variants==&#039;)&lt;br /&gt;
    table.insert(output, &#039;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Region&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Level&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Harvest&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Drops&#039;)&lt;br /&gt;
&lt;br /&gt;
    for _, variant in ipairs(variants) do&lt;br /&gt;
        local region = variant.region ~= &amp;quot;&amp;quot; and variant.region or &amp;quot;—&amp;quot;&lt;br /&gt;
        local level = variant.levelDisplay ~= &amp;quot;&amp;quot; and variant.levelDisplay or &amp;quot;—&amp;quot;&lt;br /&gt;
        local harvest = (#variant.harvestItems &amp;gt; 0) and makeBulletedListCompact(variant.harvestItems) or &amp;quot;—&amp;quot;&lt;br /&gt;
        local loot = (#variant.lootItems &amp;gt; 0) and makeBulletedListCompact(variant.lootItems) or &amp;quot;—&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        table.insert(output, &#039;|-&#039;)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. region)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. level)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. harvest)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. loot)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;|}&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.render(frame)&lt;br /&gt;
    local variants = collectVariants(frame)&lt;br /&gt;
&lt;br /&gt;
    if #variants == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    elseif #variants == 1 then&lt;br /&gt;
        return renderSingleVariant(variants[1])&lt;br /&gt;
    else&lt;br /&gt;
        return renderMultipleVariants(variants)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Module:MobVariants&amp;diff=3340</id>
		<title>Module:MobVariants</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Module:MobVariants&amp;diff=3340"/>
		<updated>2026-03-27T21:47:08Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local variantKeys = { &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
local function trim(s)&lt;br /&gt;
    if not s then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    return mw.text.trim(s)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasValue(s)&lt;br /&gt;
    return trim(s) ~= &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function splitAndSort(raw, delimiter)&lt;br /&gt;
    delimiter = delimiter or &amp;quot;,&amp;quot;&lt;br /&gt;
    local results = {}&lt;br /&gt;
&lt;br /&gt;
    if not hasValue(raw) then&lt;br /&gt;
        return results&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local items = mw.text.split(raw, delimiter)&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        local value = trim(item)&lt;br /&gt;
        if value ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            table.insert(results, value)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.sort(results, function(a, b)&lt;br /&gt;
        return mw.ustring.lower(a) &amp;lt; mw.ustring.lower(b)&lt;br /&gt;
    end)&lt;br /&gt;
&lt;br /&gt;
    return results&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeBulletedList(items)&lt;br /&gt;
    if not items or #items == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local itemCount = #items&lt;br /&gt;
    local columnCount = 1&lt;br /&gt;
&lt;br /&gt;
    if itemCount &amp;gt;= 16 then&lt;br /&gt;
        columnCount = 3&lt;br /&gt;
    elseif itemCount &amp;gt;= 8 then&lt;br /&gt;
        columnCount = 2&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local output = {&lt;br /&gt;
        string.format(&#039;&amp;lt;div style=&amp;quot;column-count: %d; column-gap: 1em;&amp;quot;&amp;gt;&#039;, columnCount),&lt;br /&gt;
        &#039;&amp;lt;ul style=&amp;quot;margin: 0; padding-left: 1.2em;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        table.insert(output, string.format(&#039;&amp;lt;li style=&amp;quot;break-inside: avoid;&amp;quot;&amp;gt;[[%s]]&amp;lt;/li&amp;gt;&#039;, item))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/ul&amp;gt;&#039;)&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeBulletedListCompact(items)&lt;br /&gt;
    if not items or #items == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local itemCount = #items&lt;br /&gt;
    local columnCount = 1&lt;br /&gt;
&lt;br /&gt;
    if itemCount &amp;gt;= 8 then&lt;br /&gt;
        columnCount = 2&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local output = {&lt;br /&gt;
        string.format(&#039;&amp;lt;div style=&amp;quot;column-count: %d; column-gap: 2em;&amp;quot;&amp;gt;&#039;, columnCount),&lt;br /&gt;
        &#039;&amp;lt;ul style=&amp;quot;margin: 0; padding-left: 1.2em;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        table.insert(output, string.format(&#039;&amp;lt;li style=&amp;quot;break-inside: avoid;&amp;quot;&amp;gt;[[%s]]&amp;lt;/li&amp;gt;&#039;, item))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/ul&amp;gt;&#039;)&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeInlineList(items)&lt;br /&gt;
    if not items or #items == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local linked = {}&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        table.insert(linked, string.format(&#039;[[%s]]&#039;, item))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat(linked, &amp;quot;, &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatLevelRange(low, high)&lt;br /&gt;
    low = trim(low)&lt;br /&gt;
    high = trim(high)&lt;br /&gt;
&lt;br /&gt;
    if low ~= &amp;quot;&amp;quot; and high ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        if low == high then&lt;br /&gt;
            return low&lt;br /&gt;
        end&lt;br /&gt;
        return low .. &amp;quot; - &amp;quot; .. high&lt;br /&gt;
    elseif low ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        return low&lt;br /&gt;
    elseif high ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        return high&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function collectVariants(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local variants = {}&lt;br /&gt;
&lt;br /&gt;
    for _, key in ipairs(variantKeys) do&lt;br /&gt;
        local region = trim(args[&amp;quot;region_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local levelLow = trim(args[&amp;quot;level_low_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local levelHigh = trim(args[&amp;quot;level_high_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local lootRaw = trim(args[&amp;quot;loot_table_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local harvestRaw = trim(args[&amp;quot;harvest_table_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        local hasData =&lt;br /&gt;
            region ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            levelLow ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            levelHigh ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            lootRaw ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            harvestRaw ~= &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        if hasData then&lt;br /&gt;
            table.insert(variants, {&lt;br /&gt;
                key = key,&lt;br /&gt;
                region = region,&lt;br /&gt;
                levelLow = levelLow,&lt;br /&gt;
                levelHigh = levelHigh,&lt;br /&gt;
                levelDisplay = formatLevelRange(levelLow, levelHigh),&lt;br /&gt;
                lootItems = splitAndSort(lootRaw, &amp;quot;,&amp;quot;),&lt;br /&gt;
                harvestItems = splitAndSort(harvestRaw, &amp;quot;,&amp;quot;)&lt;br /&gt;
            })&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return variants&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderSingleVariant(variant)&lt;br /&gt;
    local output = {}&lt;br /&gt;
&lt;br /&gt;
    local details = {}&lt;br /&gt;
    if variant.region ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(details, &amp;quot;&#039;&#039;&#039;Region:&#039;&#039;&#039; &amp;quot; .. variant.region)&lt;br /&gt;
    end&lt;br /&gt;
    if variant.levelDisplay ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(details, &amp;quot;&#039;&#039;&#039;Level:&#039;&#039;&#039; &amp;quot; .. variant.levelDisplay)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if #details &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, table.concat(details, &amp;quot;&amp;lt;br /&amp;gt;\n&amp;quot;))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if variant.harvestItems and #variant.harvestItems &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;==Harvest==&#039;)&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, makeBulletedList(variant.harvestItems))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if variant.lootItems and #variant.lootItems &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;==Drops==&#039;)&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, makeBulletedList(variant.lootItems))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderMultipleVariants(variants)&lt;br /&gt;
    local output = {}&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;==Variants==&#039;)&lt;br /&gt;
    table.insert(output, &#039;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Region&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Level&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Harvest&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Drops&#039;)&lt;br /&gt;
&lt;br /&gt;
    for _, variant in ipairs(variants) do&lt;br /&gt;
        local region = variant.region ~= &amp;quot;&amp;quot; and variant.region or &amp;quot;—&amp;quot;&lt;br /&gt;
        local level = variant.levelDisplay ~= &amp;quot;&amp;quot; and variant.levelDisplay or &amp;quot;—&amp;quot;&lt;br /&gt;
        local harvest = (#variant.harvestItems &amp;gt; 0) and makeBulletedListCompact(variant.harvestItems) or &amp;quot;—&amp;quot;&lt;br /&gt;
        local loot = (#variant.lootItems &amp;gt; 0) and makeBulletedListCompact(variant.lootItems) or &amp;quot;—&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        table.insert(output, &#039;|-&#039;)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. region)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. level)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. harvest)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. loot)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;|}&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.render(frame)&lt;br /&gt;
    local variants = collectVariants(frame)&lt;br /&gt;
&lt;br /&gt;
    if #variants == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    elseif #variants == 1 then&lt;br /&gt;
        return renderSingleVariant(variants[1])&lt;br /&gt;
    else&lt;br /&gt;
        return renderMultipleVariants(variants)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Module:MobVariants&amp;diff=3339</id>
		<title>Module:MobVariants</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Module:MobVariants&amp;diff=3339"/>
		<updated>2026-03-27T21:46:28Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local variantKeys = { &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
local function trim(s)&lt;br /&gt;
    if not s then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    return mw.text.trim(s)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasValue(s)&lt;br /&gt;
    return trim(s) ~= &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function splitAndSort(raw, delimiter)&lt;br /&gt;
    delimiter = delimiter or &amp;quot;,&amp;quot;&lt;br /&gt;
    local results = {}&lt;br /&gt;
&lt;br /&gt;
    if not hasValue(raw) then&lt;br /&gt;
        return results&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local items = mw.text.split(raw, delimiter)&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        local value = trim(item)&lt;br /&gt;
        if value ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            table.insert(results, value)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.sort(results, function(a, b)&lt;br /&gt;
        return mw.ustring.lower(a) &amp;lt; mw.ustring.lower(b)&lt;br /&gt;
    end)&lt;br /&gt;
&lt;br /&gt;
    return results&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeBulletedList(items)&lt;br /&gt;
    if not items or #items == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local itemCount = #items&lt;br /&gt;
    local columnCount = 1&lt;br /&gt;
&lt;br /&gt;
    if itemCount &amp;gt;= 16 then&lt;br /&gt;
        columnCount = 3&lt;br /&gt;
    elseif itemCount &amp;gt;= 8 then&lt;br /&gt;
        columnCount = 2&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local output = {&lt;br /&gt;
        string.format(&#039;&amp;lt;div style=&amp;quot;column-count: %d; column-gap: 2em;&amp;quot;&amp;gt;&#039;, columnCount),&lt;br /&gt;
        &#039;&amp;lt;ul style=&amp;quot;margin: 0; padding-left: 1.2em;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        table.insert(output, string.format(&#039;&amp;lt;li style=&amp;quot;break-inside: avoid;&amp;quot;&amp;gt;[[%s]]&amp;lt;/li&amp;gt;&#039;, item))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/ul&amp;gt;&#039;)&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeBulletedListCompact(items)&lt;br /&gt;
    if not items or #items == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local itemCount = #items&lt;br /&gt;
    local columnCount = 1&lt;br /&gt;
&lt;br /&gt;
    if itemCount &amp;gt;= 8 then&lt;br /&gt;
        columnCount = 2&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local output = {&lt;br /&gt;
        string.format(&#039;&amp;lt;div style=&amp;quot;column-count: %d; column-gap: 2em;&amp;quot;&amp;gt;&#039;, columnCount),&lt;br /&gt;
        &#039;&amp;lt;ul style=&amp;quot;margin: 0; padding-left: 1.2em;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        table.insert(output, string.format(&#039;&amp;lt;li style=&amp;quot;break-inside: avoid;&amp;quot;&amp;gt;[[%s]]&amp;lt;/li&amp;gt;&#039;, item))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/ul&amp;gt;&#039;)&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeInlineList(items)&lt;br /&gt;
    if not items or #items == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local linked = {}&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        table.insert(linked, string.format(&#039;[[%s]]&#039;, item))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat(linked, &amp;quot;, &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatLevelRange(low, high)&lt;br /&gt;
    low = trim(low)&lt;br /&gt;
    high = trim(high)&lt;br /&gt;
&lt;br /&gt;
    if low ~= &amp;quot;&amp;quot; and high ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        if low == high then&lt;br /&gt;
            return low&lt;br /&gt;
        end&lt;br /&gt;
        return low .. &amp;quot; - &amp;quot; .. high&lt;br /&gt;
    elseif low ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        return low&lt;br /&gt;
    elseif high ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        return high&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function collectVariants(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local variants = {}&lt;br /&gt;
&lt;br /&gt;
    for _, key in ipairs(variantKeys) do&lt;br /&gt;
        local region = trim(args[&amp;quot;region_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local levelLow = trim(args[&amp;quot;level_low_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local levelHigh = trim(args[&amp;quot;level_high_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local lootRaw = trim(args[&amp;quot;loot_table_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local harvestRaw = trim(args[&amp;quot;harvest_table_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        local hasData =&lt;br /&gt;
            region ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            levelLow ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            levelHigh ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            lootRaw ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            harvestRaw ~= &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        if hasData then&lt;br /&gt;
            table.insert(variants, {&lt;br /&gt;
                key = key,&lt;br /&gt;
                region = region,&lt;br /&gt;
                levelLow = levelLow,&lt;br /&gt;
                levelHigh = levelHigh,&lt;br /&gt;
                levelDisplay = formatLevelRange(levelLow, levelHigh),&lt;br /&gt;
                lootItems = splitAndSort(lootRaw, &amp;quot;,&amp;quot;),&lt;br /&gt;
                harvestItems = splitAndSort(harvestRaw, &amp;quot;,&amp;quot;)&lt;br /&gt;
            })&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return variants&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderSingleVariant(variant)&lt;br /&gt;
    local output = {}&lt;br /&gt;
&lt;br /&gt;
    local details = {}&lt;br /&gt;
    if variant.region ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(details, &amp;quot;&#039;&#039;&#039;Region:&#039;&#039;&#039; &amp;quot; .. variant.region)&lt;br /&gt;
    end&lt;br /&gt;
    if variant.levelDisplay ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(details, &amp;quot;&#039;&#039;&#039;Level:&#039;&#039;&#039; &amp;quot; .. variant.levelDisplay)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if #details &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, table.concat(details, &amp;quot;&amp;lt;br /&amp;gt;\n&amp;quot;))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if variant.harvestItems and #variant.harvestItems &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;==Harvest==&#039;)&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, makeBulletedList(variant.harvestItems))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if variant.lootItems and #variant.lootItems &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;==Drops==&#039;)&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, makeBulletedList(variant.lootItems))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderMultipleVariants(variants)&lt;br /&gt;
    local output = {}&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;==Variants==&#039;)&lt;br /&gt;
    table.insert(output, &#039;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Region&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Level&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Harvest&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Drops&#039;)&lt;br /&gt;
&lt;br /&gt;
    for _, variant in ipairs(variants) do&lt;br /&gt;
        local region = variant.region ~= &amp;quot;&amp;quot; and variant.region or &amp;quot;—&amp;quot;&lt;br /&gt;
        local level = variant.levelDisplay ~= &amp;quot;&amp;quot; and variant.levelDisplay or &amp;quot;—&amp;quot;&lt;br /&gt;
        local harvest = (#variant.harvestItems &amp;gt; 0) and makeBulletedListCompact(variant.harvestItems) or &amp;quot;—&amp;quot;&lt;br /&gt;
        local loot = (#variant.lootItems &amp;gt; 0) and makeBulletedListCompact(variant.lootItems) or &amp;quot;—&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        table.insert(output, &#039;|-&#039;)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. region)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. level)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. harvest)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. loot)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;|}&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.render(frame)&lt;br /&gt;
    local variants = collectVariants(frame)&lt;br /&gt;
&lt;br /&gt;
    if #variants == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    elseif #variants == 1 then&lt;br /&gt;
        return renderSingleVariant(variants[1])&lt;br /&gt;
    else&lt;br /&gt;
        return renderMultipleVariants(variants)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Module:MobVariants&amp;diff=3338</id>
		<title>Module:MobVariants</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Module:MobVariants&amp;diff=3338"/>
		<updated>2026-03-27T21:29:46Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local variantKeys = { &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
local function trim(s)&lt;br /&gt;
    if not s then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    return mw.text.trim(s)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasValue(s)&lt;br /&gt;
    return trim(s) ~= &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function splitAndSort(raw, delimiter)&lt;br /&gt;
    delimiter = delimiter or &amp;quot;,&amp;quot;&lt;br /&gt;
    local results = {}&lt;br /&gt;
&lt;br /&gt;
    if not hasValue(raw) then&lt;br /&gt;
        return results&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local items = mw.text.split(raw, delimiter)&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        local value = trim(item)&lt;br /&gt;
        if value ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            table.insert(results, value)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.sort(results, function(a, b)&lt;br /&gt;
        return mw.ustring.lower(a) &amp;lt; mw.ustring.lower(b)&lt;br /&gt;
    end)&lt;br /&gt;
&lt;br /&gt;
    return results&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeBulletedList(items)&lt;br /&gt;
    if not items or #items == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local output = { &#039;&amp;lt;ul style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039; }&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        table.insert(output, string.format(&#039;&amp;lt;li&amp;gt;[[%s]]&amp;lt;/li&amp;gt;&#039;, item))&lt;br /&gt;
    end&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/ul&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeBulletedListCompact(items)&lt;br /&gt;
    if not items or #items == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local itemCount = #items&lt;br /&gt;
    local columnCount = 1&lt;br /&gt;
&lt;br /&gt;
    if itemCount &amp;gt;= 8 then&lt;br /&gt;
        columnCount = 2&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local output = {&lt;br /&gt;
        string.format(&#039;&amp;lt;div style=&amp;quot;column-count: %d; column-gap: 2em;&amp;quot;&amp;gt;&#039;, columnCount),&lt;br /&gt;
        &#039;&amp;lt;ul style=&amp;quot;margin: 0; padding-left: 1.2em;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        table.insert(output, string.format(&#039;&amp;lt;li style=&amp;quot;break-inside: avoid;&amp;quot;&amp;gt;[[%s]]&amp;lt;/li&amp;gt;&#039;, item))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/ul&amp;gt;&#039;)&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeInlineList(items)&lt;br /&gt;
    if not items or #items == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local linked = {}&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        table.insert(linked, string.format(&#039;[[%s]]&#039;, item))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat(linked, &amp;quot;, &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatLevelRange(low, high)&lt;br /&gt;
    low = trim(low)&lt;br /&gt;
    high = trim(high)&lt;br /&gt;
&lt;br /&gt;
    if low ~= &amp;quot;&amp;quot; and high ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        if low == high then&lt;br /&gt;
            return low&lt;br /&gt;
        end&lt;br /&gt;
        return low .. &amp;quot; - &amp;quot; .. high&lt;br /&gt;
    elseif low ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        return low&lt;br /&gt;
    elseif high ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        return high&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function collectVariants(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local variants = {}&lt;br /&gt;
&lt;br /&gt;
    for _, key in ipairs(variantKeys) do&lt;br /&gt;
        local region = trim(args[&amp;quot;region_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local levelLow = trim(args[&amp;quot;level_low_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local levelHigh = trim(args[&amp;quot;level_high_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local lootRaw = trim(args[&amp;quot;loot_table_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local harvestRaw = trim(args[&amp;quot;harvest_table_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        local hasData =&lt;br /&gt;
            region ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            levelLow ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            levelHigh ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            lootRaw ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            harvestRaw ~= &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        if hasData then&lt;br /&gt;
            table.insert(variants, {&lt;br /&gt;
                key = key,&lt;br /&gt;
                region = region,&lt;br /&gt;
                levelLow = levelLow,&lt;br /&gt;
                levelHigh = levelHigh,&lt;br /&gt;
                levelDisplay = formatLevelRange(levelLow, levelHigh),&lt;br /&gt;
                lootItems = splitAndSort(lootRaw, &amp;quot;,&amp;quot;),&lt;br /&gt;
                harvestItems = splitAndSort(harvestRaw, &amp;quot;,&amp;quot;)&lt;br /&gt;
            })&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return variants&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderSingleVariant(variant)&lt;br /&gt;
    local output = {}&lt;br /&gt;
&lt;br /&gt;
    local details = {}&lt;br /&gt;
    if variant.region ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(details, &amp;quot;&#039;&#039;&#039;Region:&#039;&#039;&#039; &amp;quot; .. variant.region)&lt;br /&gt;
    end&lt;br /&gt;
    if variant.levelDisplay ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(details, &amp;quot;&#039;&#039;&#039;Level:&#039;&#039;&#039; &amp;quot; .. variant.levelDisplay)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if #details &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, table.concat(details, &amp;quot;&amp;lt;br /&amp;gt;\n&amp;quot;))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if variant.harvestItems and #variant.harvestItems &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;==Harvest==&#039;)&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, makeBulletedList(variant.harvestItems))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if variant.lootItems and #variant.lootItems &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;==Drops==&#039;)&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, makeBulletedList(variant.lootItems))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderMultipleVariants(variants)&lt;br /&gt;
    local output = {}&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;==Variants==&#039;)&lt;br /&gt;
    table.insert(output, &#039;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Region&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Level&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Harvest&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Drops&#039;)&lt;br /&gt;
&lt;br /&gt;
    for _, variant in ipairs(variants) do&lt;br /&gt;
        local region = variant.region ~= &amp;quot;&amp;quot; and variant.region or &amp;quot;—&amp;quot;&lt;br /&gt;
        local level = variant.levelDisplay ~= &amp;quot;&amp;quot; and variant.levelDisplay or &amp;quot;—&amp;quot;&lt;br /&gt;
        local harvest = (#variant.harvestItems &amp;gt; 0) and makeBulletedListCompact(variant.harvestItems) or &amp;quot;—&amp;quot;&lt;br /&gt;
        local loot = (#variant.lootItems &amp;gt; 0) and makeBulletedListCompact(variant.lootItems) or &amp;quot;—&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        table.insert(output, &#039;|-&#039;)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. region)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. level)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. harvest)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. loot)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;|}&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.render(frame)&lt;br /&gt;
    local variants = collectVariants(frame)&lt;br /&gt;
&lt;br /&gt;
    if #variants == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    elseif #variants == 1 then&lt;br /&gt;
        return renderSingleVariant(variants[1])&lt;br /&gt;
    else&lt;br /&gt;
        return renderMultipleVariants(variants)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Module:MobVariants&amp;diff=3337</id>
		<title>Module:MobVariants</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Module:MobVariants&amp;diff=3337"/>
		<updated>2026-03-27T21:23:40Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local variantKeys = { &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
local function trim(s)&lt;br /&gt;
    if not s then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    return mw.text.trim(s)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasValue(s)&lt;br /&gt;
    return trim(s) ~= &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function splitAndSort(raw, delimiter)&lt;br /&gt;
    delimiter = delimiter or &amp;quot;,&amp;quot;&lt;br /&gt;
    local results = {}&lt;br /&gt;
&lt;br /&gt;
    if not hasValue(raw) then&lt;br /&gt;
        return results&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local items = mw.text.split(raw, delimiter)&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        local value = trim(item)&lt;br /&gt;
        if value ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            table.insert(results, value)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.sort(results, function(a, b)&lt;br /&gt;
        return mw.ustring.lower(a) &amp;lt; mw.ustring.lower(b)&lt;br /&gt;
    end)&lt;br /&gt;
&lt;br /&gt;
    return results&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeBulletedList(items)&lt;br /&gt;
    if not items or #items == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local output = { &#039;&amp;lt;ul style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039; }&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        table.insert(output, string.format(&#039;&amp;lt;li&amp;gt;[[%s]]&amp;lt;/li&amp;gt;&#039;, item))&lt;br /&gt;
    end&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/ul&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeBulletedListCompact(items)&lt;br /&gt;
    if not items or #items == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local output = { &#039;&amp;lt;ul style=&amp;quot;margin: 0; padding-left: 1.2em;&amp;quot;&amp;gt;&#039; }&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        table.insert(output, string.format(&#039;&amp;lt;li&amp;gt;[[%s]]&amp;lt;/li&amp;gt;&#039;, item))&lt;br /&gt;
    end&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/ul&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeInlineList(items)&lt;br /&gt;
    if not items or #items == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local linked = {}&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        table.insert(linked, string.format(&#039;[[%s]]&#039;, item))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat(linked, &amp;quot;, &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatLevelRange(low, high)&lt;br /&gt;
    low = trim(low)&lt;br /&gt;
    high = trim(high)&lt;br /&gt;
&lt;br /&gt;
    if low ~= &amp;quot;&amp;quot; and high ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        if low == high then&lt;br /&gt;
            return low&lt;br /&gt;
        end&lt;br /&gt;
        return low .. &amp;quot; - &amp;quot; .. high&lt;br /&gt;
    elseif low ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        return low&lt;br /&gt;
    elseif high ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        return high&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function collectVariants(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local variants = {}&lt;br /&gt;
&lt;br /&gt;
    for _, key in ipairs(variantKeys) do&lt;br /&gt;
        local region = trim(args[&amp;quot;region_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local levelLow = trim(args[&amp;quot;level_low_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local levelHigh = trim(args[&amp;quot;level_high_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local lootRaw = trim(args[&amp;quot;loot_table_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local harvestRaw = trim(args[&amp;quot;harvest_table_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        local hasData =&lt;br /&gt;
            region ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            levelLow ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            levelHigh ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            lootRaw ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            harvestRaw ~= &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        if hasData then&lt;br /&gt;
            table.insert(variants, {&lt;br /&gt;
                key = key,&lt;br /&gt;
                region = region,&lt;br /&gt;
                levelLow = levelLow,&lt;br /&gt;
                levelHigh = levelHigh,&lt;br /&gt;
                levelDisplay = formatLevelRange(levelLow, levelHigh),&lt;br /&gt;
                lootItems = splitAndSort(lootRaw, &amp;quot;,&amp;quot;),&lt;br /&gt;
                harvestItems = splitAndSort(harvestRaw, &amp;quot;,&amp;quot;)&lt;br /&gt;
            })&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return variants&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderSingleVariant(variant)&lt;br /&gt;
    local output = {}&lt;br /&gt;
&lt;br /&gt;
    local details = {}&lt;br /&gt;
    if variant.region ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(details, &amp;quot;&#039;&#039;&#039;Region:&#039;&#039;&#039; &amp;quot; .. variant.region)&lt;br /&gt;
    end&lt;br /&gt;
    if variant.levelDisplay ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(details, &amp;quot;&#039;&#039;&#039;Level:&#039;&#039;&#039; &amp;quot; .. variant.levelDisplay)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if #details &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, table.concat(details, &amp;quot;&amp;lt;br /&amp;gt;\n&amp;quot;))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if variant.harvestItems and #variant.harvestItems &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;==Harvest==&#039;)&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, makeBulletedList(variant.harvestItems))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if variant.lootItems and #variant.lootItems &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;==Drops==&#039;)&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, makeBulletedList(variant.lootItems))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderMultipleVariants(variants)&lt;br /&gt;
    local output = {}&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;==Variants==&#039;)&lt;br /&gt;
    table.insert(output, &#039;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Region&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Level&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Harvest&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Drops&#039;)&lt;br /&gt;
&lt;br /&gt;
    for _, variant in ipairs(variants) do&lt;br /&gt;
        local region = variant.region ~= &amp;quot;&amp;quot; and variant.region or &amp;quot;—&amp;quot;&lt;br /&gt;
        local level = variant.levelDisplay ~= &amp;quot;&amp;quot; and variant.levelDisplay or &amp;quot;—&amp;quot;&lt;br /&gt;
        local harvest = (#variant.harvestItems &amp;gt; 0) and makeBulletedListCompact(variant.harvestItems) or &amp;quot;—&amp;quot;&lt;br /&gt;
        local loot = (#variant.lootItems &amp;gt; 0) and makeBulletedListCompact(variant.lootItems) or &amp;quot;—&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        table.insert(output, &#039;|-&#039;)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. region)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. level)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. harvest)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. loot)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;|}&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.render(frame)&lt;br /&gt;
    local variants = collectVariants(frame)&lt;br /&gt;
&lt;br /&gt;
    if #variants == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    elseif #variants == 1 then&lt;br /&gt;
        return renderSingleVariant(variants[1])&lt;br /&gt;
    else&lt;br /&gt;
        return renderMultipleVariants(variants)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Template:Mob_Prototype&amp;diff=3336</id>
		<title>Template:Mob Prototype</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Template:Mob_Prototype&amp;diff=3336"/>
		<updated>2026-03-27T21:15:13Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mob-template&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;includeonly&amp;gt;{{DISPLAYTITLE:{{{mob_name}}}}}&amp;lt;/includeonly&amp;gt; --&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;{{{mob_name|{{PAGENAME}}}}}&#039;&#039;&#039;&lt;br /&gt;
{{#if:{{{mob_image|}}}|[[File:{{{mob_image}}}|thumb|{{{mob_name}}}]]|[[File:Image_Placeholder.png|thumb|Image Needed]]}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
       OVERVIEW           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;==Overview==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{{zone|}}}|&#039;&#039;&#039;Location:&#039;&#039;&#039; [[{{{zone|}}}]]&amp;lt;br /&amp;gt;&lt;br /&gt;
}}{{#if:{{{mob_family|}}}|&#039;&#039;&#039;Family: [[{{{mob_family}}}]]&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
}}{{#if:{{{level_low|}}}|&#039;&#039;&#039;Level:&#039;&#039;&#039; {{{level_low}}}{{#if:{{{level_high|}}}| - {{{level_high|}}}}}&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
     MOB VARIANT DATA       &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
{{#invoke:MobVariants|render&lt;br /&gt;
|region_a={{{region_a|}}}&lt;br /&gt;
|level_low_a={{{level_low_a|}}}&lt;br /&gt;
|level_high_a={{{level_high_a|}}}&lt;br /&gt;
|loot_table_a={{{loot_table_a|}}}&lt;br /&gt;
|harvest_table_a={{{harvest_table_a|}}}&lt;br /&gt;
|region_b={{{region_b|}}}&lt;br /&gt;
|level_low_b={{{level_low_b|}}}&lt;br /&gt;
|level_high_b={{{level_high_b|}}}&lt;br /&gt;
|loot_table_b={{{loot_table_b|}}}&lt;br /&gt;
|harvest_table_b={{{harvest_table_b|}}}&lt;br /&gt;
|region_c={{{region_c|}}}&lt;br /&gt;
|level_low_c={{{level_low_c|}}}&lt;br /&gt;
|level_high_c={{{level_high_c|}}}&lt;br /&gt;
|loot_table_c={{{loot_table_c|}}}&lt;br /&gt;
|harvest_table_c={{{harvest_table_c|}}}&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
          NOTES           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{notes|}}}|&lt;br /&gt;
{{Notes&lt;br /&gt;
|notes={{{notes|}}}&lt;br /&gt;
}}}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
        CATEGORIES        &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;&amp;lt;includeonly&amp;gt;[[Category:Mobs]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
{{#if:{{{mob_family|}}}|[[Category:{{{mob_family}}} Mobs]]}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;display:none&amp;quot;&amp;gt;&lt;br /&gt;
[[Location::{{{zone|}}}]]&lt;br /&gt;
[[Mob family::{{{mob_family|}}}]]&lt;br /&gt;
[[Level (low)::{{{level_low|}}}]]&lt;br /&gt;
[[Level (high)::{{{level_high|}}}]]&lt;br /&gt;
{{#arraymap:{{{loot_table_a|}}}|,|x|[[Loot Table A::x]]}}&lt;br /&gt;
&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;{{#default_form:Mob}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Template:Mob_Prototype&amp;diff=3335</id>
		<title>Template:Mob Prototype</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Template:Mob_Prototype&amp;diff=3335"/>
		<updated>2026-03-27T21:13:53Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mob-template&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;includeonly&amp;gt;{{DISPLAYTITLE:{{{mob_name}}}}}&amp;lt;/includeonly&amp;gt; --&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;{{{mob_name|{{PAGENAME}}}}}&#039;&#039;&#039;&lt;br /&gt;
{{#if:{{{mob_image|}}}|[[File:{{{mob_image}}}|thumb|{{{mob_name}}}]]|[[File:Image_Placeholder.png|thumb|Image Needed]]}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
       OVERVIEW           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;==Overview==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{{zone|}}}|&#039;&#039;&#039;Location:&#039;&#039;&#039; [[{{{zone|}}}]]&amp;lt;br /&amp;gt;&lt;br /&gt;
}}{{#if:{{{mob_family|}}}|&#039;&#039;&#039;Family: [[{{{mob_family}}}]]&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
}}{{#if:{{{level_low|}}}|&#039;&#039;&#039;Level:&#039;&#039;&#039; {{{level_low}}}{{#if:{{{level_high|}}}| - {{{level_high|}}}}}&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
     MOB VARIANT DATA       &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;&amp;lt;/div&amp;gt;{{#invoke:MobVariants|render&lt;br /&gt;
|region_a={{{region_a|}}}&lt;br /&gt;
|level_low_a={{{level_low_a|}}}&lt;br /&gt;
|level_high_a={{{level_high_a|}}}&lt;br /&gt;
|loot_table_a={{{loot_table_a|}}}&lt;br /&gt;
|harvest_table_a={{{harvest_table_a|}}}&lt;br /&gt;
|region_b={{{region_b|}}}&lt;br /&gt;
|level_low_b={{{level_low_b|}}}&lt;br /&gt;
|level_high_b={{{level_high_b|}}}&lt;br /&gt;
|loot_table_b={{{loot_table_b|}}}&lt;br /&gt;
|harvest_table_b={{{harvest_table_b|}}}&lt;br /&gt;
|region_c={{{region_c|}}}&lt;br /&gt;
|level_low_c={{{level_low_c|}}}&lt;br /&gt;
|level_high_c={{{level_high_c|}}}&lt;br /&gt;
|loot_table_c={{{loot_table_c|}}}&lt;br /&gt;
|harvest_table_c={{{harvest_table_c|}}}&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
          NOTES           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{notes|}}}|&lt;br /&gt;
{{Notes&lt;br /&gt;
|notes={{{notes|}}}&lt;br /&gt;
}}}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
        CATEGORIES        &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;&amp;lt;includeonly&amp;gt;[[Category:Mobs]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
{{#if:{{{mob_family|}}}|[[Category:{{{mob_family}}} Mobs]]}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;display:none&amp;quot;&amp;gt;&lt;br /&gt;
[[Location::{{{zone|}}}]]&lt;br /&gt;
[[Mob family::{{{mob_family|}}}]]&lt;br /&gt;
[[Level (low)::{{{level_low|}}}]]&lt;br /&gt;
[[Level (high)::{{{level_high|}}}]]&lt;br /&gt;
{{#arraymap:{{{loot_table_a|}}}|,|x|[[Loot Table A::x]]}}&lt;br /&gt;
&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;{{#default_form:Mob}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Form:Mob_Prototype&amp;diff=3334</id>
		<title>Form:Mob Prototype</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Form:Mob_Prototype&amp;diff=3334"/>
		<updated>2026-03-27T21:10:39Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{for template|Mob Prototype}}}&lt;br /&gt;
&lt;br /&gt;
==General Mob Details==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Name:&#039;&#039;&#039; {{{field|mob_name|input type=text|mandatory|autocapitalize=words}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mob Image:&#039;&#039;&#039; {{{field|mob_image|input type=text|uploadable|image preview|size=60}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zone:&#039;&#039;&#039; {{{field|zone|input type=dropdown|size=40|property=Location|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mob Family:&#039;&#039;&#039; {{{field|mob_family|input type=dropdown|property=Mob family|existing values only}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Mob Type A==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Region:&#039;&#039;&#039; {{{field|region_a|input type=dropdown|property=Region|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (Low):&#039;&#039;&#039; {{{field|level_low_a|input type=dropdown|property=Level (low)|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (High):&#039;&#039;&#039; {{{field|level_high_a|input type=dropdown|property=Level (high)|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Drops:&#039;&#039;&#039; {{{field|loot_table_a|input type=tokens|size=60|property=Loot Table A|values from category=Misc Items}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Harvest Yield:&#039;&#039;&#039; {{{field|harvest_table_a|input type=tokens|size=60|property=Harvest Table A|values from category=Raw Components}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Mob Type B==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Region:&#039;&#039;&#039; {{{field|region_b|input type=dropdown|property=Region|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (Low):&#039;&#039;&#039; {{{field|level_low_b|input type=dropdown|property=Level (low)|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (High):&#039;&#039;&#039; {{{field|level_high_b|input type=dropdown|property=Level (high)|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Drops:&#039;&#039;&#039; {{{field|loot_table_b|input type=tokens|size=60|property=Loot Table B|values from category=Misc Items}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Harvest Yield:&#039;&#039;&#039; {{{field|harvest_table_b|input type=tokens|size=60|property=Harvest Table B|values from category=Raw Components}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Mob Type C==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Region:&#039;&#039;&#039; {{{field|region_c|input type=dropdown|property=Region|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (Low):&#039;&#039;&#039; {{{field|level_low_c|input type=dropdown|property=Level (low)|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (High):&#039;&#039;&#039; {{{field|level_high_c|input type=dropdown|property=Level (high)|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Drops:&#039;&#039;&#039; {{{field|loot_table_c|input type=tokens|size=60|property=Loot Table C|values from category=Misc Items}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Harvest Yield:&#039;&#039;&#039; {{{field|harvest_table_c|input type=tokens|size=60|property=Harvest Table C|values from category=Raw Components}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{NotesForm}}&lt;br /&gt;
&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&lt;br /&gt;
{{{standard input|summary}}}&lt;br /&gt;
{{{standard input|minor edit}}}{{{standard input|watch}}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{{standard input|save}}}{{{standard input|preview}}}{{{standard input|cancel}}}&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Form:Mob_Prototype&amp;diff=3333</id>
		<title>Form:Mob Prototype</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Form:Mob_Prototype&amp;diff=3333"/>
		<updated>2026-03-27T21:08:56Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{for template|Mob Prototype}}}&lt;br /&gt;
&lt;br /&gt;
==General Mob Details==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Name:&#039;&#039;&#039; {{{field|mob_name|input type=text|mandatory|autocapitalize=words}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mob Image:&#039;&#039;&#039; {{{field|mob_image|input type=text|uploadable|image preview|size=60}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zone:&#039;&#039;&#039; {{{field|zone|input type=dropdown|size=40|property=Location|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mob Family:&#039;&#039;&#039; {{{field|mob_family|input type=dropdown|property=Mob family|existing values only}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Mob Type A==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Region:&#039;&#039;&#039; {{{field|region_a|input type=dropdown|property=Region|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (Low):&#039;&#039;&#039; {{{field|level_low_a|input type=dropdown|property=Level (low) A|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (High):&#039;&#039;&#039; {{{field|level_high_a|input type=dropdown|property=Level (high) A|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Drops:&#039;&#039;&#039; {{{field|loot_table_a|input type=tokens|size=60|property=Loot Table A|values from category=Misc Items}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Harvest Yield:&#039;&#039;&#039; {{{field|harvest_table_a|input type=tokens|size=60|property=Harvest Table A|values from category=Raw Components}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Mob Type B==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Region:&#039;&#039;&#039; {{{field|region_b|input type=dropdown|property=Region|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (Low):&#039;&#039;&#039; {{{field|level_low_b|input type=dropdown|property=Level (low) B|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (High):&#039;&#039;&#039; {{{field|level_high_b|input type=dropdown|property=Level (high) B|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Drops:&#039;&#039;&#039; {{{field|loot_table_b|input type=tokens|size=60|property=Loot Table B|values from category=Misc Items}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Harvest Yield:&#039;&#039;&#039; {{{field|harvest_table_b|input type=tokens|size=60|property=Harvest Table B|values from category=Raw Components}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Mob Type C==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Region:&#039;&#039;&#039; {{{field|region_c|input type=dropdown|property=Region|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (Low):&#039;&#039;&#039; {{{field|level_low_c|input type=dropdown|property=Level (low) C|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (High):&#039;&#039;&#039; {{{field|level_high_c|input type=dropdown|property=Level (high) C|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Drops:&#039;&#039;&#039; {{{field|loot_table_c|input type=tokens|size=60|property=Loot Table C|values from category=Misc Items}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Harvest Yield:&#039;&#039;&#039; {{{field|harvest_table_c|input type=tokens|size=60|property=Harvest Table C|values from category=Raw Components}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{NotesForm}}&lt;br /&gt;
&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&lt;br /&gt;
{{{standard input|summary}}}&lt;br /&gt;
{{{standard input|minor edit}}}{{{standard input|watch}}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{{standard input|save}}}{{{standard input|preview}}}{{{standard input|cancel}}}&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Form:Mob_Prototype&amp;diff=3332</id>
		<title>Form:Mob Prototype</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Form:Mob_Prototype&amp;diff=3332"/>
		<updated>2026-03-27T21:04:12Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{for template|Mob Prototype}}}&lt;br /&gt;
&lt;br /&gt;
==General Mob Details==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Name:&#039;&#039;&#039; {{{field|mob_name|input type=text|mandatory|autocapitalize=words}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mob Image:&#039;&#039;&#039; {{{field|mob_image|input type=text|uploadable|image preview|size=60}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zone:&#039;&#039;&#039; {{{field|zone|input type=dropdown|size=40|property=Location|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mob Family:&#039;&#039;&#039; {{{field|mob_family|input type=dropdown|property=Mob family|existing values only}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Mob Type A==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Region:&#039;&#039;&#039; {{{field|region_a|input type=dropdown|property=Region A|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (Low):&#039;&#039;&#039; {{{field|level_low_a|input type=dropdown|property=Level (low) A|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (High):&#039;&#039;&#039; {{{field|level_high_a|input type=dropdown|property=Level (high) A|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Drops:&#039;&#039;&#039; {{{field|loot_table_a|input type=tokens|size=60|property=Loot Table A|values from category=Misc Items}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Harvest Yield:&#039;&#039;&#039; {{{field|harvest_table_a|input type=tokens|size=60|property=Harvest Table A|values from category=Raw Components}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Mob Type B==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Region:&#039;&#039;&#039; {{{field|region_b|input type=dropdown|property=Region B|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (Low):&#039;&#039;&#039; {{{field|level_low_b|input type=dropdown|property=Level (low) B|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (High):&#039;&#039;&#039; {{{field|level_high_b|input type=dropdown|property=Level (high) B|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Drops:&#039;&#039;&#039; {{{field|loot_table_b|input type=tokens|size=60|property=Loot Table B|values from category=Misc Items}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Harvest Yield:&#039;&#039;&#039; {{{field|harvest_table_b|input type=tokens|size=60|property=Harvest Table B|values from category=Raw Components}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Mob Type C==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Region:&#039;&#039;&#039; {{{field|region_c|input type=dropdown|property=Region C|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (Low):&#039;&#039;&#039; {{{field|level_low_c|input type=dropdown|property=Level (low) C|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (High):&#039;&#039;&#039; {{{field|level_high_c|input type=dropdown|property=Level (high) C|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Drops:&#039;&#039;&#039; {{{field|loot_table_c|input type=tokens|size=60|property=Loot Table C|values from category=Misc Items}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Harvest Yield:&#039;&#039;&#039; {{{field|harvest_table_c|input type=tokens|size=60|property=Harvest Table C|values from category=Raw Components}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{NotesForm}}&lt;br /&gt;
&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&lt;br /&gt;
{{{standard input|summary}}}&lt;br /&gt;
{{{standard input|minor edit}}}{{{standard input|watch}}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{{standard input|save}}}{{{standard input|preview}}}{{{standard input|cancel}}}&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Template:Mob_Prototype&amp;diff=3331</id>
		<title>Template:Mob Prototype</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Template:Mob_Prototype&amp;diff=3331"/>
		<updated>2026-03-27T21:00:56Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mob-template&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;includeonly&amp;gt;{{DISPLAYTITLE:{{{mob_name}}}}}&amp;lt;/includeonly&amp;gt; --&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;{{{mob_name|{{PAGENAME}}}}}&#039;&#039;&#039;&lt;br /&gt;
{{#if:{{{mob_image|}}}|[[File:{{{mob_image}}}|thumb|{{{mob_name}}}]]|[[File:Image_Placeholder.png|thumb|Image Needed]]}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
       OVERVIEW           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;==Overview==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{{zone|}}}|&#039;&#039;&#039;Location:&#039;&#039;&#039; [[{{{zone|}}}]]&amp;lt;br /&amp;gt;&lt;br /&gt;
}}{{#if:{{{mob_family|}}}|&#039;&#039;&#039;Family: [[{{{mob_family}}}]]&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
}}{{#if:{{{level_low|}}}|&#039;&#039;&#039;Level:&#039;&#039;&#039; {{{level_low}}}{{#if:{{{level_high|}}}| - {{{level_high|}}}}}&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
     MOB VARIANT DATA       &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#invoke:MobVariants|render&lt;br /&gt;
|region_a={{{region_a|}}}&lt;br /&gt;
|level_low_a={{{level_low_a|}}}&lt;br /&gt;
|level_high_a={{{level_high_a|}}}&lt;br /&gt;
|loot_table_a={{{loot_table_a|}}}&lt;br /&gt;
|harvest_table_a={{{harvest_table_a|}}}&lt;br /&gt;
|region_b={{{region_b|}}}&lt;br /&gt;
|level_low_b={{{level_low_b|}}}&lt;br /&gt;
|level_high_b={{{level_high_b|}}}&lt;br /&gt;
|loot_table_b={{{loot_table_b|}}}&lt;br /&gt;
|harvest_table_b={{{harvest_table_b|}}}&lt;br /&gt;
|region_c={{{region_c|}}}&lt;br /&gt;
|level_low_c={{{level_low_c|}}}&lt;br /&gt;
|level_high_c={{{level_high_c|}}}&lt;br /&gt;
|loot_table_c={{{loot_table_c|}}}&lt;br /&gt;
|harvest_table_c={{{harvest_table_c|}}}&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
          NOTES           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{notes|}}}|&lt;br /&gt;
{{Notes&lt;br /&gt;
|notes={{{notes|}}}&lt;br /&gt;
}}}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
        CATEGORIES        &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;&amp;lt;includeonly&amp;gt;[[Category:Mobs]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
{{#if:{{{mob_family|}}}|[[Category:{{{mob_family}}} Mobs]]}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;display:none&amp;quot;&amp;gt;&lt;br /&gt;
[[Location::{{{zone|}}}]]&lt;br /&gt;
[[Mob family::{{{mob_family|}}}]]&lt;br /&gt;
[[Level (low)::{{{level_low|}}}]]&lt;br /&gt;
[[Level (high)::{{{level_high|}}}]]&lt;br /&gt;
{{#arraymap:{{{loot_table_a|}}}|,|x|[[Loot Table A::x]]}}&lt;br /&gt;
&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;{{#default_form:Mob}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Module:MobVariants&amp;diff=3330</id>
		<title>Module:MobVariants</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Module:MobVariants&amp;diff=3330"/>
		<updated>2026-03-27T20:55:25Z</updated>

		<summary type="html">&lt;p&gt;Mildew: Created page with &amp;quot;local p = {}  local variantKeys = { &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot; }  local function trim(s)     if not s then         return &amp;quot;&amp;quot;     end     return mw.text.trim(s) end  local function hasValue(s)     return trim(s) ~= &amp;quot;&amp;quot; end  local function splitAndSort(raw, delimiter)     delimiter = delimiter or &amp;quot;,&amp;quot;     local results = {}      if not hasValue(raw) then         return results     end      local items = mw.text.split(raw, delimiter)     for _, item in ipairs(items) do         local value...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local variantKeys = { &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
local function trim(s)&lt;br /&gt;
    if not s then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    return mw.text.trim(s)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasValue(s)&lt;br /&gt;
    return trim(s) ~= &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function splitAndSort(raw, delimiter)&lt;br /&gt;
    delimiter = delimiter or &amp;quot;,&amp;quot;&lt;br /&gt;
    local results = {}&lt;br /&gt;
&lt;br /&gt;
    if not hasValue(raw) then&lt;br /&gt;
        return results&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local items = mw.text.split(raw, delimiter)&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        local value = trim(item)&lt;br /&gt;
        if value ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            table.insert(results, value)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.sort(results, function(a, b)&lt;br /&gt;
        return mw.ustring.lower(a) &amp;lt; mw.ustring.lower(b)&lt;br /&gt;
    end)&lt;br /&gt;
&lt;br /&gt;
    return results&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeBulletedList(items)&lt;br /&gt;
    if not items or #items == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local output = { &#039;&amp;lt;ul style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039; }&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        table.insert(output, string.format(&#039;&amp;lt;li&amp;gt;[[%s]]&amp;lt;/li&amp;gt;&#039;, item))&lt;br /&gt;
    end&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/ul&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeInlineList(items)&lt;br /&gt;
    if not items or #items == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local linked = {}&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
        table.insert(linked, string.format(&#039;[[%s]]&#039;, item))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat(linked, &amp;quot;, &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatLevelRange(low, high)&lt;br /&gt;
    low = trim(low)&lt;br /&gt;
    high = trim(high)&lt;br /&gt;
&lt;br /&gt;
    if low ~= &amp;quot;&amp;quot; and high ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        if low == high then&lt;br /&gt;
            return low&lt;br /&gt;
        end&lt;br /&gt;
        return low .. &amp;quot; - &amp;quot; .. high&lt;br /&gt;
    elseif low ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        return low&lt;br /&gt;
    elseif high ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        return high&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function collectVariants(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local variants = {}&lt;br /&gt;
&lt;br /&gt;
    for _, key in ipairs(variantKeys) do&lt;br /&gt;
        local region = trim(args[&amp;quot;region_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local levelLow = trim(args[&amp;quot;level_low_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local levelHigh = trim(args[&amp;quot;level_high_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local lootRaw = trim(args[&amp;quot;loot_table_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
        local harvestRaw = trim(args[&amp;quot;harvest_table_&amp;quot; .. key] or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        local hasData =&lt;br /&gt;
            region ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            levelLow ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            levelHigh ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            lootRaw ~= &amp;quot;&amp;quot; or&lt;br /&gt;
            harvestRaw ~= &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        if hasData then&lt;br /&gt;
            table.insert(variants, {&lt;br /&gt;
                key = key,&lt;br /&gt;
                region = region,&lt;br /&gt;
                levelLow = levelLow,&lt;br /&gt;
                levelHigh = levelHigh,&lt;br /&gt;
                levelDisplay = formatLevelRange(levelLow, levelHigh),&lt;br /&gt;
                lootItems = splitAndSort(lootRaw, &amp;quot;,&amp;quot;),&lt;br /&gt;
                harvestItems = splitAndSort(harvestRaw, &amp;quot;,&amp;quot;)&lt;br /&gt;
            })&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return variants&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderSingleVariant(variant)&lt;br /&gt;
    local output = {}&lt;br /&gt;
&lt;br /&gt;
    local details = {}&lt;br /&gt;
    if variant.region ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(details, &amp;quot;&#039;&#039;&#039;Region:&#039;&#039;&#039; &amp;quot; .. variant.region)&lt;br /&gt;
    end&lt;br /&gt;
    if variant.levelDisplay ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(details, &amp;quot;&#039;&#039;&#039;Level:&#039;&#039;&#039; &amp;quot; .. variant.levelDisplay)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if #details &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, table.concat(details, &amp;quot;&amp;lt;br /&amp;gt;\n&amp;quot;))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if variant.harvestItems and #variant.harvestItems &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;==Harvest==&#039;)&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, makeBulletedList(variant.harvestItems))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if variant.lootItems and #variant.lootItems &amp;gt; 0 then&lt;br /&gt;
        table.insert(output, &#039;==Drops==&#039;)&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(output, makeBulletedList(variant.lootItems))&lt;br /&gt;
        table.insert(output, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderMultipleVariants(variants)&lt;br /&gt;
    local output = {}&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;==Variants==&#039;)&lt;br /&gt;
    table.insert(output, &#039;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Region&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Level&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Harvest&#039;)&lt;br /&gt;
    table.insert(output, &#039;! Drops&#039;)&lt;br /&gt;
&lt;br /&gt;
    for _, variant in ipairs(variants) do&lt;br /&gt;
        local region = variant.region ~= &amp;quot;&amp;quot; and variant.region or &amp;quot;—&amp;quot;&lt;br /&gt;
        local level = variant.levelDisplay ~= &amp;quot;&amp;quot; and variant.levelDisplay or &amp;quot;—&amp;quot;&lt;br /&gt;
        local harvest = (#variant.harvestItems &amp;gt; 0) and makeInlineList(variant.harvestItems) or &amp;quot;—&amp;quot;&lt;br /&gt;
        local loot = (#variant.lootItems &amp;gt; 0) and makeInlineList(variant.lootItems) or &amp;quot;—&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        table.insert(output, &#039;|-&#039;)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. region)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. level)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. harvest)&lt;br /&gt;
        table.insert(output, &#039;| &#039; .. loot)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;|}&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.render(frame)&lt;br /&gt;
    local variants = collectVariants(frame)&lt;br /&gt;
&lt;br /&gt;
    if #variants == 0 then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    elseif #variants == 1 then&lt;br /&gt;
        return renderSingleVariant(variants[1])&lt;br /&gt;
    else&lt;br /&gt;
        return renderMultipleVariants(variants)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Template:Mob_Prototype&amp;diff=3329</id>
		<title>Template:Mob Prototype</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Template:Mob_Prototype&amp;diff=3329"/>
		<updated>2026-03-27T20:03:21Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mob-template&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;includeonly&amp;gt;{{DISPLAYTITLE:{{{mob_name}}}}}&amp;lt;/includeonly&amp;gt; --&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;{{{mob_name|{{PAGENAME}}}}}&#039;&#039;&#039;&lt;br /&gt;
{{#if:{{{mob_image|}}}|[[File:{{{mob_image}}}|thumb|{{{mob_name}}}]]|[[File:Image_Placeholder.png|thumb|Image Needed]]}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
       OVERVIEW           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;==Overview==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{{zone|}}}|&#039;&#039;&#039;Location:&#039;&#039;&#039; [[{{{zone|}}}]]&amp;lt;br /&amp;gt;&lt;br /&gt;
}}{{#if:{{{mob_family|}}}|&#039;&#039;&#039;Family: [[{{{mob_family}}}]]&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
}}{{#if:{{{level_low|}}}|&#039;&#039;&#039;Level:&#039;&#039;&#039; {{{level_low}}}{{#if:{{{level_high|}}}| - {{{level_high|}}}}}&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
       HARVEST       &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;&amp;lt;!--{{#ifexpr:{{#ask:[[Harvested from::{{PAGENAME}}]]|format=count}} &amp;gt; 0|&lt;br /&gt;
==Harvest==&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
{{#ask:&lt;br /&gt;
[[Harvested from::{{PAGENAME}}]]&lt;br /&gt;
|format=ul&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}--&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
        DROPS         &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{loot_table_a|}}}|&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Drops==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:SortedItemLinks|fromDelimited|1={{{loot_table_a}}}|delimiter=, }}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
          NOTES           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{notes|}}}|&lt;br /&gt;
{{Notes&lt;br /&gt;
|notes={{{notes|}}}&lt;br /&gt;
}}}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
        CATEGORIES        &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;&amp;lt;includeonly&amp;gt;[[Category:Mobs]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
{{#if:{{{mob_family|}}}|[[Category:{{{mob_family}}} Mobs]]}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;display:none&amp;quot;&amp;gt;&lt;br /&gt;
[[Location::{{{zone|}}}]]&lt;br /&gt;
[[Mob family::{{{mob_family|}}}]]&lt;br /&gt;
[[Level (low)::{{{level_low|}}}]]&lt;br /&gt;
[[Level (high)::{{{level_high|}}}]]&lt;br /&gt;
{{#arraymap:{{{loot_table_a|}}}|,|x|[[Loot Table A::x]]}}&lt;br /&gt;
&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;{{#default_form:Mob}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Template:Mob_Prototype&amp;diff=3328</id>
		<title>Template:Mob Prototype</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Template:Mob_Prototype&amp;diff=3328"/>
		<updated>2026-03-27T20:02:15Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mob-template&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;includeonly&amp;gt;{{DISPLAYTITLE:{{{mob_name}}}}}&amp;lt;/includeonly&amp;gt; --&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;{{{mob_name|{{PAGENAME}}}}}&#039;&#039;&#039;&lt;br /&gt;
{{#if:{{{mob_image|}}}|[[File:{{{mob_image}}}|thumb|{{{mob_name}}}]]|[[File:Image_Placeholder.png|thumb|Image Needed]]}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
       OVERVIEW           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;==Overview==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{{zone|}}}|&#039;&#039;&#039;Location:&#039;&#039;&#039; [[{{{zone|}}}]]&amp;lt;br /&amp;gt;&lt;br /&gt;
}}{{#if:{{{mob_family|}}}|&#039;&#039;&#039;Family: [[{{{mob_family}}}]]&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
}}{{#if:{{{level_low|}}}|&#039;&#039;&#039;Level:&#039;&#039;&#039; {{{level_low}}}{{#if:{{{level_high|}}}| - {{{level_high|}}}}}&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
       HARVEST       &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;&amp;lt;!--{{#ifexpr:{{#ask:[[Harvested from::{{PAGENAME}}]]|format=count}} &amp;gt; 0|&lt;br /&gt;
==Harvest==&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
{{#ask:&lt;br /&gt;
[[Harvested from::{{PAGENAME}}]]&lt;br /&gt;
|format=ul&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}--&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
        DROPS         &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{loot_table_a|}}}|&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Drops==&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
{{#invoke:SortedItemLinks|fromDelimited|1={{{loot_table_a}}}|delimiter=, }}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
          NOTES           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{notes|}}}|&lt;br /&gt;
{{Notes&lt;br /&gt;
|notes={{{notes|}}}&lt;br /&gt;
}}}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
        CATEGORIES        &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;&amp;lt;includeonly&amp;gt;[[Category:Mobs]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
{{#if:{{{mob_family|}}}|[[Category:{{{mob_family}}} Mobs]]}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;display:none&amp;quot;&amp;gt;&lt;br /&gt;
[[Location::{{{zone|}}}]]&lt;br /&gt;
[[Mob family::{{{mob_family|}}}]]&lt;br /&gt;
[[Level (low)::{{{level_low|}}}]]&lt;br /&gt;
[[Level (high)::{{{level_high|}}}]]&lt;br /&gt;
{{#arraymap:{{{loot_table_a|}}}|,|x|[[Loot Table A::x]]}}&lt;br /&gt;
&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;{{#default_form:Mob}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Template:Mob_Prototype&amp;diff=3327</id>
		<title>Template:Mob Prototype</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Template:Mob_Prototype&amp;diff=3327"/>
		<updated>2026-03-27T19:56:01Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mob-template&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;includeonly&amp;gt;{{DISPLAYTITLE:{{{mob_name}}}}}&amp;lt;/includeonly&amp;gt; --&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;{{{mob_name|{{PAGENAME}}}}}&#039;&#039;&#039;&lt;br /&gt;
{{#if:{{{mob_image|}}}|[[File:{{{mob_image}}}|thumb|{{{mob_name}}}]]|[[File:Image_Placeholder.png|thumb|Image Needed]]}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
       OVERVIEW           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;==Overview==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{{zone|}}}|&#039;&#039;&#039;Location:&#039;&#039;&#039; [[{{{zone|}}}]]&amp;lt;br /&amp;gt;&lt;br /&gt;
}}{{#if:{{{mob_family|}}}|&#039;&#039;&#039;Family: [[{{{mob_family}}}]]&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
}}{{#if:{{{level_low|}}}|&#039;&#039;&#039;Level:&#039;&#039;&#039; {{{level_low}}}{{#if:{{{level_high|}}}| - {{{level_high|}}}}}&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
       HARVEST       &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;&amp;lt;!--{{#ifexpr:{{#ask:[[Harvested from::{{PAGENAME}}]]|format=count}} &amp;gt; 0|&lt;br /&gt;
==Harvest==&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
{{#ask:&lt;br /&gt;
[[Harvested from::{{PAGENAME}}]]&lt;br /&gt;
|format=ul&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}--&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
        DROPS         &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{loot_table_a|}}}|&lt;br /&gt;
&amp;lt;nowiki&amp;gt;==Drops Drops Drops==&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
{{#invoke:SortedItemLinks|fromDelimited|1={{{loot_table_a}}}|delimiter=, }}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
          NOTES           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{notes|}}}|&lt;br /&gt;
{{Notes&lt;br /&gt;
|notes={{{notes|}}}&lt;br /&gt;
}}}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
        CATEGORIES        &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;&amp;lt;includeonly&amp;gt;[[Category:Mobs]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
{{#if:{{{mob_family|}}}|[[Category:{{{mob_family}}} Mobs]]}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;display:none&amp;quot;&amp;gt;&lt;br /&gt;
[[Location::{{{zone|}}}]]&lt;br /&gt;
[[Mob family::{{{mob_family|}}}]]&lt;br /&gt;
[[Level (low)::{{{level_low|}}}]]&lt;br /&gt;
[[Level (high)::{{{level_high|}}}]]&lt;br /&gt;
{{#arraymap:{{{loot_table_a|}}}|,|x|[[Loot Table A::x]]}}&lt;br /&gt;
&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;{{#default_form:Mob}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Template:Mob_Prototype&amp;diff=3326</id>
		<title>Template:Mob Prototype</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Template:Mob_Prototype&amp;diff=3326"/>
		<updated>2026-03-27T19:55:12Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mob-template&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;includeonly&amp;gt;{{DISPLAYTITLE:{{{mob_name}}}}}&amp;lt;/includeonly&amp;gt; --&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;{{{mob_name|{{PAGENAME}}}}}&#039;&#039;&#039;&lt;br /&gt;
{{#if:{{{mob_image|}}}|[[File:{{{mob_image}}}|thumb|{{{mob_name}}}]]|[[File:Image_Placeholder.png|thumb|Image Needed]]}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
       OVERVIEW           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;==Overview==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{{zone|}}}|&#039;&#039;&#039;Location:&#039;&#039;&#039; [[{{{zone|}}}]]&amp;lt;br /&amp;gt;&lt;br /&gt;
}}{{#if:{{{mob_family|}}}|&#039;&#039;&#039;Family: [[{{{mob_family}}}]]&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
}}{{#if:{{{level_low|}}}|&#039;&#039;&#039;Level:&#039;&#039;&#039; {{{level_low}}}{{#if:{{{level_high|}}}| - {{{level_high|}}}}}&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
       HARVEST       &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;&amp;lt;!--{{#ifexpr:{{#ask:[[Harvested from::{{PAGENAME}}]]|format=count}} &amp;gt; 0|&lt;br /&gt;
==Harvest==&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
{{#ask:&lt;br /&gt;
[[Harvested from::{{PAGENAME}}]]&lt;br /&gt;
|format=ul&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}--&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
        DROPS         &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{loot_table_a|}}}|&lt;br /&gt;
&amp;lt;nowiki&amp;gt;==Drops==&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
{{#invoke:SortedItemLinks|fromDelimited|1={{{loot_table_a}}}|delimiter=, }}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
          NOTES           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{notes|}}}|&lt;br /&gt;
{{Notes&lt;br /&gt;
|notes={{{notes|}}}&lt;br /&gt;
}}}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
        CATEGORIES        &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;&amp;lt;includeonly&amp;gt;[[Category:Mobs]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
{{#if:{{{mob_family|}}}|[[Category:{{{mob_family}}} Mobs]]}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;display:none&amp;quot;&amp;gt;&lt;br /&gt;
[[Location::{{{zone|}}}]]&lt;br /&gt;
[[Mob family::{{{mob_family|}}}]]&lt;br /&gt;
[[Level (low)::{{{level_low|}}}]]&lt;br /&gt;
[[Level (high)::{{{level_high|}}}]]&lt;br /&gt;
{{#arraymap:{{{loot_table_a|}}}|,|x|[[Loot Table A::x]]}}&lt;br /&gt;
&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;{{#default_form:Mob}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Form:Mob_Prototype&amp;diff=3325</id>
		<title>Form:Mob Prototype</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Form:Mob_Prototype&amp;diff=3325"/>
		<updated>2026-03-27T19:51:58Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{for template|Mob Prototype}}}&lt;br /&gt;
&lt;br /&gt;
==General Mob Details==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Name:&#039;&#039;&#039; {{{field|mob_name|input type=text|mandatory|autocapitalize=words}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mob Image:&#039;&#039;&#039; {{{field|mob_image|input type=text|uploadable|image preview|size=60}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zone:&#039;&#039;&#039; {{{field|zone|input type=dropdown|size=40|property=Location|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mob Family:&#039;&#039;&#039; {{{field|mob_family|input type=dropdown|property=Mob family|existing values only}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Mob Type A==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Region:&#039;&#039;&#039; {{{field|region_a|input type=dropdown|property=Region|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (Low):&#039;&#039;&#039; {{{field|level_low_a|input type=dropdown|property=Level (low)|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (High):&#039;&#039;&#039; {{{field|level_high_a|input type=dropdown|property=Level (high)|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Drops:&#039;&#039;&#039; {{{field|loot_table_a|input type=tokens|size=60|property=Loot Table A|values from category=Misc Items}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Harvest Yield:&#039;&#039;&#039; {{{field|harvest_table_a|input type=tokens|size=60|property=Harvest Table A|values from category=Raw Components}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{NotesForm}}&lt;br /&gt;
&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&lt;br /&gt;
{{{standard input|summary}}}&lt;br /&gt;
{{{standard input|minor edit}}}{{{standard input|watch}}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{{standard input|save}}}{{{standard input|preview}}}{{{standard input|cancel}}}&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Form:Mob_Prototype&amp;diff=3324</id>
		<title>Form:Mob Prototype</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Form:Mob_Prototype&amp;diff=3324"/>
		<updated>2026-03-27T19:50:17Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{for template|Mob}}}&lt;br /&gt;
&lt;br /&gt;
==General Mob Details==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Name:&#039;&#039;&#039; {{{field|mob_name|input type=text|mandatory|autocapitalize=words}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mob Image:&#039;&#039;&#039; {{{field|mob_image|input type=text|uploadable|image preview|size=60}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zone:&#039;&#039;&#039; {{{field|zone|input type=dropdown|size=40|property=Location|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mob Family:&#039;&#039;&#039; {{{field|mob_family|input type=dropdown|property=Mob family|existing values only}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Mob Type A==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Region:&#039;&#039;&#039; {{{field|region_a|input type=dropdown|property=Region|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (Low):&#039;&#039;&#039; {{{field|level_low_a|input type=dropdown|property=Level (low)|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (High):&#039;&#039;&#039; {{{field|level_high_a|input type=dropdown|property=Level (high)|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Drops:&#039;&#039;&#039; {{{field|loot_table_a|input type=tokens|size=60|property=Loot Table A|values from category=Misc Items}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Harvest Yield:&#039;&#039;&#039; {{{field|harvest_table_a|input type=tokens|size=60|property=Harvest Table A|values from category=Raw Components}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{NotesForm}}&lt;br /&gt;
&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&lt;br /&gt;
{{{standard input|summary}}}&lt;br /&gt;
{{{standard input|minor edit}}}{{{standard input|watch}}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{{standard input|save}}}{{{standard input|preview}}}{{{standard input|cancel}}}&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Template:Mob_Prototype&amp;diff=3323</id>
		<title>Template:Mob Prototype</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Template:Mob_Prototype&amp;diff=3323"/>
		<updated>2026-03-27T19:47:20Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mob-template&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;includeonly&amp;gt;{{DISPLAYTITLE:{{{mob_name}}}}}&amp;lt;/includeonly&amp;gt; --&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;{{{mob_name|{{PAGENAME}}}}}&#039;&#039;&#039;&lt;br /&gt;
{{#if:{{{mob_image|}}}|[[File:{{{mob_image}}}|thumb|{{{mob_name}}}]]|[[File:Image_Placeholder.png|thumb|Image Needed]]}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
       OVERVIEW           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;==Overview==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{{zone|}}}|&#039;&#039;&#039;Location:&#039;&#039;&#039; [[{{{zone|}}}]]&amp;lt;br /&amp;gt;&lt;br /&gt;
}}{{#if:{{{mob_family|}}}|&#039;&#039;&#039;Family: [[{{{mob_family}}}]]&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
}}{{#if:{{{level_low|}}}|&#039;&#039;&#039;Level:&#039;&#039;&#039; {{{level_low}}}{{#if:{{{level_high|}}}| - {{{level_high|}}}}}&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
       HARVEST       &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;&amp;lt;!--{{#ifexpr:{{#ask:[[Harvested from::{{PAGENAME}}]]|format=count}} &amp;gt; 0|&lt;br /&gt;
==Harvest==&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
{{#ask:&lt;br /&gt;
[[Harvested from::{{PAGENAME}}]]&lt;br /&gt;
|format=ul&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}--&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
        DROPS         &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{loot_table_a|}}}|&lt;br /&gt;
==Drops==&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
{{#invoke:SortedItemLinks|fromDelimited|1={{{loot_table_a}}}|delimiter=, }}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
          NOTES           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{notes|}}}|&lt;br /&gt;
{{Notes&lt;br /&gt;
|notes={{{notes|}}}&lt;br /&gt;
}}}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
        CATEGORIES        &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;&amp;lt;includeonly&amp;gt;[[Category:Mobs]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
{{#if:{{{mob_family|}}}|[[Category:{{{mob_family}}} Mobs]]}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;display:none&amp;quot;&amp;gt;&lt;br /&gt;
[[Location::{{{zone|}}}]]&lt;br /&gt;
[[Mob family::{{{mob_family|}}}]]&lt;br /&gt;
[[Level (low)::{{{level_low|}}}]]&lt;br /&gt;
[[Level (high)::{{{level_high|}}}]]&lt;br /&gt;
{{#arraymap:{{{loot_table_a|}}}|,|x|[[Loot Table A::x]]}}&lt;br /&gt;
&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;{{#default_form:Mob}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Property:Loot_Table_A&amp;diff=3322</id>
		<title>Property:Loot Table A</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Property:Loot_Table_A&amp;diff=3322"/>
		<updated>2026-03-27T19:45:53Z</updated>

		<summary type="html">&lt;p&gt;Mildew: Created a property of type Page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a property of type [[Has type::Page]].&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Template:Mob_Prototype&amp;diff=3321</id>
		<title>Template:Mob Prototype</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Template:Mob_Prototype&amp;diff=3321"/>
		<updated>2026-03-27T19:36:16Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mob-template&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;includeonly&amp;gt;{{DISPLAYTITLE:{{{mob_name}}}}}&amp;lt;/includeonly&amp;gt; --&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;{{{mob_name|{{PAGENAME}}}}}&#039;&#039;&#039;&lt;br /&gt;
{{#if:{{{mob_image|}}}|[[File:{{{mob_image}}}|thumb|{{{mob_name}}}]]|[[File:Image_Placeholder.png|thumb|Image Needed]]}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
       OVERVIEW           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;==Overview==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{{zone|}}}|&#039;&#039;&#039;Location:&#039;&#039;&#039; [[{{{zone|}}}]]&amp;lt;br /&amp;gt;&lt;br /&gt;
}}{{#if:{{{mob_family|}}}|&#039;&#039;&#039;Family: [[{{{mob_family}}}]]&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
}}{{#if:{{{level_low|}}}|&#039;&#039;&#039;Level:&#039;&#039;&#039; {{{level_low}}}{{#if:{{{level_high|}}}| - {{{level_high|}}}}}&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
       HARVEST       &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;&amp;lt;!--{{#ifexpr:{{#ask:[[Harvested from::{{PAGENAME}}]]|format=count}} &amp;gt; 0|&lt;br /&gt;
==Harvest==&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
{{#ask:&lt;br /&gt;
[[Harvested from::{{PAGENAME}}]]&lt;br /&gt;
|format=ul&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}--&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
        DROPS         &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{loot_table_a}}}|&lt;br /&gt;
==Drops==&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
{{#invoke:SortedItemLinks|fromDelimited|1={{{loot_table_a}}}|delimiter=, }}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
          NOTES           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{notes|}}}|&lt;br /&gt;
{{Notes&lt;br /&gt;
|notes={{{notes|}}}&lt;br /&gt;
}}}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
        CATEGORIES        &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;&amp;lt;includeonly&amp;gt;[[Category:Mobs]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
{{#if:{{{mob_family|}}}|[[Category:{{{mob_family}}} Mobs]]}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;display:none&amp;quot;&amp;gt;&lt;br /&gt;
[[Location::{{{zone|}}}]]&lt;br /&gt;
[[Mob family::{{{mob_family|}}}]]&lt;br /&gt;
[[Level (low)::{{{level_low|}}}]]&lt;br /&gt;
[[Level (high)::{{{level_high|}}}]]&lt;br /&gt;
&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;{{#default_form:Mob}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Module:SortedItemLinks&amp;diff=3320</id>
		<title>Module:SortedItemLinks</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Module:SortedItemLinks&amp;diff=3320"/>
		<updated>2026-03-27T19:27:04Z</updated>

		<summary type="html">&lt;p&gt;Mildew: Created page with &amp;quot;local p = {}  -- Return a sorted &amp;lt;ul&amp;gt; of wiki links from a comma-delimited list of item pages function p.fromDelimited(frame)     local raw = frame.args[1] or &amp;quot;&amp;quot;     local delimiter = frame.args.delimiter or &amp;quot;,&amp;quot;     local items = mw.text.split(raw, delimiter)      local entries = {}      for _, entry in ipairs(items) do         local pageName = mw.text.trim(entry)         if pageName ~= &amp;quot;&amp;quot; then             table.insert(entries, pageName)         end     end      -- Sort...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Return a sorted &amp;lt;ul&amp;gt; of wiki links from a comma-delimited list of item pages&lt;br /&gt;
function p.fromDelimited(frame)&lt;br /&gt;
    local raw = frame.args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
    local delimiter = frame.args.delimiter or &amp;quot;,&amp;quot;&lt;br /&gt;
    local items = mw.text.split(raw, delimiter)&lt;br /&gt;
&lt;br /&gt;
    local entries = {}&lt;br /&gt;
&lt;br /&gt;
    for _, entry in ipairs(items) do&lt;br /&gt;
        local pageName = mw.text.trim(entry)&lt;br /&gt;
        if pageName ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            table.insert(entries, pageName)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Sort alphabetically, case-insensitive&lt;br /&gt;
    table.sort(entries, function(a, b)&lt;br /&gt;
        return mw.ustring.lower(a) &amp;lt; mw.ustring.lower(b)&lt;br /&gt;
    end)&lt;br /&gt;
&lt;br /&gt;
    local output = { &#039;&amp;lt;ul style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039; }&lt;br /&gt;
&lt;br /&gt;
    for _, pageName in ipairs(entries) do&lt;br /&gt;
        table.insert(output, string.format(&#039;&amp;lt;li&amp;gt;[[%s]]&amp;lt;/li&amp;gt;&#039;, pageName))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/ul&amp;gt;&#039;)&lt;br /&gt;
    return table.concat(output, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Form:Mob_Prototype&amp;diff=3319</id>
		<title>Form:Mob Prototype</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Form:Mob_Prototype&amp;diff=3319"/>
		<updated>2026-03-27T15:23:06Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{for template|Mob}}}&lt;br /&gt;
&lt;br /&gt;
==General Mob Details==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Name:&#039;&#039;&#039; {{{field|mob_name|input type=text|mandatory|autocapitalize=words}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mob Image:&#039;&#039;&#039; {{{field|mob_image|input type=text|uploadable|image preview|size=60}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zone:&#039;&#039;&#039; {{{field|zone|input type=dropdown|size=40|property=Location|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mob Family:&#039;&#039;&#039; {{{field|mob_family|input type=dropdown|property=Mob family|existing values only}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Mob Type A==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Region:&#039;&#039;&#039; {{{field|region_a|input type=dropdown|property=Region|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (Low):&#039;&#039;&#039; {{{field|level_low_a|input type=dropdown|property=Level (low)|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (High):&#039;&#039;&#039; {{{field|level_high_a|input type=dropdown|property=Level (high)|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Drops:&#039;&#039;&#039; {{{field|loot_table_a|input type=tokens|size=60|property=Loot Table A|values from category=Misc Items}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Harvest Yield:&#039;&#039;&#039; {{{field|harvest_table_a|input type=tokens|size=60|property=Harvest Table A|values from category=Raw Components}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Mob Type B==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Region:&#039;&#039;&#039; {{{field|region_b|input type=dropdown|property=Region|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (Low):&#039;&#039;&#039; {{{field|level_low_b|input type=dropdown|property=Level (low)|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (High):&#039;&#039;&#039; {{{field|level_high_b|input type=dropdown|property=Level (high)|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Drops:&#039;&#039;&#039; {{{field|loot_table_b|input type=tokens|size=60|property=Loot Table A|values from category=Misc Items}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Harvest Yield:&#039;&#039;&#039; {{{field|harvest_table_b|input type=tokens|size=60|property=Harvest Table A|values from category=Raw Components}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{NotesForm}}&lt;br /&gt;
&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&lt;br /&gt;
{{{standard input|summary}}}&lt;br /&gt;
{{{standard input|minor edit}}}{{{standard input|watch}}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{{standard input|save}}}{{{standard input|preview}}}{{{standard input|cancel}}}&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Property:Region&amp;diff=3318</id>
		<title>Property:Region</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Property:Region&amp;diff=3318"/>
		<updated>2026-03-27T15:12:51Z</updated>

		<summary type="html">&lt;p&gt;Mildew: Created a property of type Text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a property of type [[Has type::Text]].&lt;br /&gt;
&lt;br /&gt;
The allowed values for this property are:&lt;br /&gt;
* [[Allows value::North]]&lt;br /&gt;
* [[Allows value::South]]&lt;br /&gt;
* [[Allows value::East]]&lt;br /&gt;
* [[Allows value::West]]&lt;br /&gt;
* [[Allows value::Near Monolith]]&lt;br /&gt;
* [[Allows value::Near Ruins]]&lt;br /&gt;
* [[Allows value::Outside Ember Vein]]&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Form:Mob_Prototype&amp;diff=3317</id>
		<title>Form:Mob Prototype</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Form:Mob_Prototype&amp;diff=3317"/>
		<updated>2026-03-26T16:11:21Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{for template|Mob}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; font-weight: bold; margin-top: 1em;&amp;quot;&amp;gt;Mob Details&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Name:&#039;&#039;&#039; {{{field|mob_name|input type=text|mandatory|autocapitalize=words}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mob Image:&#039;&#039;&#039; {{{field|mob_image|input type=text|uploadable|image preview|size=60}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zone:&#039;&#039;&#039; {{{field|zone|input type=dropdown|size=40|property=Location|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mob Family:&#039;&#039;&#039; {{{field|mob_family|input type=dropdown|property=Mob family|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Repeatable Section:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Region:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Level (Low):&#039;&#039;&#039; {{{field|level_low|input type=dropdown|property=Level (low)|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (High):&#039;&#039;&#039; {{{field|level_high|input type=dropdown|property=Level (high)|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Drops:&#039;&#039;&#039; {{{field|loot_table_a|input type=tokens|size=60|property=Loot Table A|values from category=Misc Items}}}&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{NotesForm}}&lt;br /&gt;
&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&lt;br /&gt;
{{{standard input|summary}}}&lt;br /&gt;
{{{standard input|minor edit}}}{{{standard input|watch}}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{{standard input|save}}}{{{standard input|preview}}}{{{standard input|cancel}}}&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Template:Mob_Prototype&amp;diff=3316</id>
		<title>Template:Mob Prototype</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Template:Mob_Prototype&amp;diff=3316"/>
		<updated>2026-03-06T16:42:54Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mob-template&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;includeonly&amp;gt;{{DISPLAYTITLE:{{{mob_name}}}}}&amp;lt;/includeonly&amp;gt; --&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;{{{mob_name|{{PAGENAME}}}}}&#039;&#039;&#039;&lt;br /&gt;
{{#if:{{{mob_image|}}}|[[File:{{{mob_image}}}|thumb|{{{mob_name}}}]]|[[File:Image_Placeholder.png|thumb|Image Needed]]}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
       OVERVIEW           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;==Overview==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{{zone|}}}|&#039;&#039;&#039;Location:&#039;&#039;&#039; [[{{{zone|}}}]]&amp;lt;br /&amp;gt;&lt;br /&gt;
}}{{#if:{{{mob_family|}}}|&#039;&#039;&#039;Family: [[{{{mob_family}}}]]&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
}}{{#if:{{{level_low|}}}|&#039;&#039;&#039;Level:&#039;&#039;&#039; {{{level_low}}}{{#if:{{{level_high|}}}| - {{{level_high|}}}}}&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
       HARVEST       &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#ifexpr:{{#ask:[[Harvested from::{{PAGENAME}}]]|format=count}} &amp;gt; 0|&lt;br /&gt;
==Harvest==&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
{{#ask:&lt;br /&gt;
[[Harvested from::{{PAGENAME}}]]&lt;br /&gt;
|format=ul&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
        DROPS         &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#ifexpr:{{#ask:[[Dropped by::{{PAGENAME}}]]|format=count}} &amp;gt; 0|&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; font-weight: bold; margin-top: 1em;&amp;quot;&amp;gt;Drops&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
{{#ask:&lt;br /&gt;
[[Dropped by::{{PAGENAME}}]]&lt;br /&gt;
|format=ul&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
          NOTES           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{notes|}}}|&lt;br /&gt;
{{Notes&lt;br /&gt;
|notes={{{notes|}}}&lt;br /&gt;
}}}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
        CATEGORIES        &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;&amp;lt;includeonly&amp;gt;[[Category:Mobs]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
{{#if:{{{mob_family|}}}|[[Category:{{{mob_family}}} Mobs]]}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;display:none&amp;quot;&amp;gt;&lt;br /&gt;
[[Location::{{{zone|}}}]]&lt;br /&gt;
[[Mob family::{{{mob_family|}}}]]&lt;br /&gt;
[[Level (low)::{{{level_low|}}}]]&lt;br /&gt;
[[Level (high)::{{{level_high|}}}]]&lt;br /&gt;
&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;{{#default_form:Mob}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Form:Mob_Prototype&amp;diff=3315</id>
		<title>Form:Mob Prototype</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Form:Mob_Prototype&amp;diff=3315"/>
		<updated>2026-03-06T16:42:46Z</updated>

		<summary type="html">&lt;p&gt;Mildew: Protected &amp;quot;Form:Mob Prototype&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{for template|Mob}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; font-weight: bold; margin-top: 1em;&amp;quot;&amp;gt;Mob Details&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Name:&#039;&#039;&#039; {{{field|mob_name|input type=text|mandatory|autocapitalize=words}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mob Image:&#039;&#039;&#039; {{{field|mob_image|input type=text|uploadable|image preview|size=60}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; {{{field|zone|input type=dropdown|size=40|property=Location|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mob Family:&#039;&#039;&#039; {{{field|mob_family|input type=dropdown|property=Mob family|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Level (Low):&#039;&#039;&#039; {{{field|level_low|input type=dropdown|property=Level (low)|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (High):&#039;&#039;&#039; {{{field|level_high|input type=dropdown|property=Level (high)|existing values only}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{NotesForm}}&lt;br /&gt;
&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&lt;br /&gt;
{{{standard input|summary}}}&lt;br /&gt;
{{{standard input|minor edit}}}{{{standard input|watch}}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{{standard input|save}}}{{{standard input|preview}}}{{{standard input|cancel}}}&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Form:Mob_Prototype&amp;diff=3314</id>
		<title>Form:Mob Prototype</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Form:Mob_Prototype&amp;diff=3314"/>
		<updated>2026-03-06T16:42:35Z</updated>

		<summary type="html">&lt;p&gt;Mildew: Created page with &amp;quot;{{{for template|Mob}}}  &amp;lt;div style=&amp;quot;font-size: 1.2em; font-weight: bold; margin-top: 1em;&amp;quot;&amp;gt;Mob Details&amp;lt;/div&amp;gt; &amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt; &amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;  &amp;#039;&amp;#039;&amp;#039;Name:&amp;#039;&amp;#039;&amp;#039; {{{field|mob_name|input type=text|mandatory|autocapitalize=words}}}  &amp;#039;&amp;#039;&amp;#039;Mob Image:&amp;#039;&amp;#039;&amp;#039; {{{field|mob_image|input type=text|uploadable|image preview|size=60}}}  &amp;#039;&amp;#039;&amp;#039;Location:&amp;#039;&amp;#039;&amp;#039; {{{field|zone|input type=dropdown|size=40|property=Location|existing values only}}}  &amp;#039;&amp;#039;&amp;#039;Mob F...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{for template|Mob}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; font-weight: bold; margin-top: 1em;&amp;quot;&amp;gt;Mob Details&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Name:&#039;&#039;&#039; {{{field|mob_name|input type=text|mandatory|autocapitalize=words}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mob Image:&#039;&#039;&#039; {{{field|mob_image|input type=text|uploadable|image preview|size=60}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; {{{field|zone|input type=dropdown|size=40|property=Location|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mob Family:&#039;&#039;&#039; {{{field|mob_family|input type=dropdown|property=Mob family|existing values only}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Level (Low):&#039;&#039;&#039; {{{field|level_low|input type=dropdown|property=Level (low)|existing values only}}}&lt;br /&gt;
&#039;&#039;&#039;Level (High):&#039;&#039;&#039; {{{field|level_high|input type=dropdown|property=Level (high)|existing values only}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{NotesForm}}&lt;br /&gt;
&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&lt;br /&gt;
{{{standard input|summary}}}&lt;br /&gt;
{{{standard input|minor edit}}}{{{standard input|watch}}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{{standard input|save}}}{{{standard input|preview}}}{{{standard input|cancel}}}&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Create_Center&amp;diff=3300</id>
		<title>Create Center</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Create_Center&amp;diff=3300"/>
		<updated>2026-03-05T15:58:50Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Hero banner --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;&lt;br /&gt;
  border: 2px solid #4a774a;&lt;br /&gt;
  background-color: #1c1c1c;&lt;br /&gt;
  color: #ccc;&lt;br /&gt;
  padding: 1.5em;&lt;br /&gt;
  border-radius: 8px;&lt;br /&gt;
  margin-bottom: 1.5em;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
&amp;quot;&amp;gt;&lt;br /&gt;
  🛠️ &amp;lt;strong&amp;gt;Welcome to the Create Center!&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  Here you can create new pages for quickly and easily.&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;em&amp;gt;New discoveries keep our world alive.&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Accordion wrapper --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-accordion&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Weapon panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;⚔️ Create a Weapon&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the weapon.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Newhaven Copper Sword/Rough Light Leather&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Weapon&lt;br /&gt;
| placeholder=New_Weapon_Name&lt;br /&gt;
| button text=Create Weapon Page&lt;br /&gt;
| size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Armor panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🦺 Create Armor&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the armor piece.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Newhaven Copper Helmet/Rough Light Leather&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Armor&lt;br /&gt;
| placeholder=New_Armor_Name&lt;br /&gt;
| button text=Create Armor Page&lt;br /&gt;
| size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Accessory panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;💍 Create an Accessory&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the accessory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Accessory&lt;br /&gt;
| placeholder=New_Accessory_Name&lt;br /&gt;
| button text=Create Accessory Page&lt;br /&gt;
| size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Shield panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🛡️ Create a Shield&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the shield.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Newhaven Copper Buckler/Rough Light Leather&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Shield&lt;br /&gt;
| placeholder=New_Shield_Name&lt;br /&gt;
| button text=Create Shield Page&lt;br /&gt;
| size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Offhand Accessory panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;✴️ Create an Offhand Accessory&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Offhand Accessory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Highlands Pine Banner/Highlands Ramie Cloth&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Offhand&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Offhand_Accessory_Name&lt;br /&gt;
|button text=Create Offhand Accessory Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ammo panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🏹 Create Ammo&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Ammo.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Flatlands Arrow/Highlands Silver Ingot&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Ammo&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Ammo_Name&lt;br /&gt;
|button text=Create Ammo Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Throwing Ammo panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🎯 Create Throwing Ammo&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Throwing Ammo.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Highlands Kunai/Highlands Silver Ingot&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=ThrowingAmmo&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Throwing_Ammo_Name&lt;br /&gt;
|button text=Create Throwing Ammo Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Tool panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🛠️ Create a Tool&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Tool.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Bronze Pickaxe/Highlands Maple Wood&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Tool&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Tool_Name&lt;br /&gt;
|button text=Create Tool Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Consumable panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🧪 Create a Consumable&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Consumable.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Smoked Crab Meat Slab/Aromatic Spice&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Consumable&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Consumable_Name&lt;br /&gt;
|button text=Create Consumable Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Augment panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🧬 Create an Augment&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Augment.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Copper Armor Bracing/Fair Thick Leather&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Augment&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Augment_Name&lt;br /&gt;
|button text=Create Augment Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Equipment Set panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🧩 Create an Equipment Set&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Set.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;&#039;&#039;Set Name (Set)&#039;&#039;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Salt Luck (Set)&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=EquipmentSet&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Equipment_Set_Name&lt;br /&gt;
|button text=Create Equipment Set Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Reagent panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;💉 Create a Reagent&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Reagent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;&#039;&#039;Item Name&#039;&#039; exactly as it appears in-game.&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Weak Numbing Agent&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Reagent&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Reagent_Name&lt;br /&gt;
|button text=Create Reagent Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Resource Node panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;💎 Create a Resource Node&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Resource Node.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=ResourceNode&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Resource_Node_Name&lt;br /&gt;
|button text=Create Resource Node Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Raw Component panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🌿 Create a Raw Component&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Not all items that say &amp;quot;Raw Component&amp;quot; use this form.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Only items used in refining recipes should be added here.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Raw Component.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=RawComponent&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Raw_Component_Name&lt;br /&gt;
|button text=Create Raw Component Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Refining Recipe panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;⚗️ Create a Refining Recipe&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Refining Recipe.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Copper Ingot Recipe&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=RefiningRecipe&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Refining_Recipe_Name&lt;br /&gt;
|button text=Create Refining Recipe Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Refined Component panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🧵 Create a Refined Component&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;These are any items used in crafting recipes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Refined Component.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=RefinedComponent&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Refined_Component_Name&lt;br /&gt;
|button text=Create Refined Component Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Crafting Recipe panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🔨 Create a Crafting Recipe&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Crafting Recipe.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Imbued Copper Greaves Recipe&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=CraftingRecipe&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Crafting_Recipe_Name&lt;br /&gt;
|button text=Create Crafting Recipe Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Recipe Book panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;📜 Create a Recipe Book&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Recipe Book.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;DON&#039;T INCLUDE THE COLON AFTER &amp;quot;RECIPE&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Recipe Imbued Lean Leather Boots&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=RecipeBook&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Recipe_Book_Name&lt;br /&gt;
|button text=Create Recipe Book Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Misc Item panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;📦 Create a Misc Item&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Item.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;This includes &amp;quot;vendor trash&amp;quot; and &amp;quot;quest items&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=MiscItem&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Misc_Item_Name&lt;br /&gt;
|button text=Create Misc Item Page&lt;br /&gt;
|size=40&lt;br /&gt;
|autocompete on category=Misc Items&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Mob panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🐀 Create a Mob&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Mob.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To keep track of mobs that use the same name across multiple zones, we use subpages.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Mob/Doe/Newhaven_Valley&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The main page &amp;quot;Mob/Doe&amp;quot; will have links to the subpages.&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Mob/&amp;lt;Name&amp;gt;/&amp;lt;Zone&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Mob&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=Mob/New_Mob_Name&lt;br /&gt;
|button text=Create Mob Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Named Mob panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🐉 Create a Named Mob&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Named Mob.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: NamedMob/Misha&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Named Mob/&amp;lt;Name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=NamedMob&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=Named Mob/New_Named_Mob_Name&lt;br /&gt;
|button text=Create Named Mob Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- World Boss panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;💀 Create a World Boss&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the World Boss.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: World Boss/Stryga&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;World Boss/&amp;lt;Name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Coming Soon.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=WorldBoss&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=World Boss/New_World_Boss_Name&lt;br /&gt;
|button text=Create World Boss Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Zone panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🌍 Create a Zone&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Zone.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Leave out any punctuation such as &#039; or -&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Aquifer Karst&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Zone&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Zone_Name&lt;br /&gt;
|button text=Create Zone Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Create_Center&amp;diff=3299</id>
		<title>Create Center</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Create_Center&amp;diff=3299"/>
		<updated>2026-03-05T15:47:44Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Hero banner --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;&lt;br /&gt;
  border: 2px solid #4a774a;&lt;br /&gt;
  background-color: #1c1c1c;&lt;br /&gt;
  color: #ccc;&lt;br /&gt;
  padding: 1.5em;&lt;br /&gt;
  border-radius: 8px;&lt;br /&gt;
  margin-bottom: 1.5em;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
&amp;quot;&amp;gt;&lt;br /&gt;
  🛠️ &amp;lt;strong&amp;gt;Welcome to the Create Center!&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  Here you can create new pages for quickly and easily.&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;em&amp;gt;New discoveries keep our world alive.&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Accordion wrapper --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-accordion&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Weapon panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;⚔️ Create a Weapon&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the weapon.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Newhaven Copper Sword/Rough Light Leather&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Weapon&lt;br /&gt;
| placeholder=New_Weapon_Name&lt;br /&gt;
| button text=Create Weapon Page&lt;br /&gt;
| size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Armor panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🦺 Create Armor&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the armor piece.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Newhaven Copper Helmet/Rough Light Leather&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Armor&lt;br /&gt;
| placeholder=New_Armor_Name&lt;br /&gt;
| button text=Create Armor Page&lt;br /&gt;
| size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Accessory panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;💍 Create an Accessory&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the accessory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Accessory&lt;br /&gt;
| placeholder=New_Accessory_Name&lt;br /&gt;
| button text=Create Accessory Page&lt;br /&gt;
| size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Shield panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🛡️ Create a Shield&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the shield.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Newhaven Copper Buckler/Rough Light Leather&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Shield&lt;br /&gt;
| placeholder=New_Shield_Name&lt;br /&gt;
| button text=Create Shield Page&lt;br /&gt;
| size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Offhand Accessory panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;✴️ Create an Offhand Accessory&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Offhand Accessory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Highlands Pine Banner/Highlands Ramie Cloth&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Offhand&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Offhand_Accessory_Name&lt;br /&gt;
|button text=Create Offhand Accessory Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ammo panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🏹 Create Ammo&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Ammo.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Flatlands Arrow/Highlands Silver Ingot&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Ammo&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Ammo_Name&lt;br /&gt;
|button text=Create Ammo Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Throwing Ammo panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🎯 Create Throwing Ammo&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Throwing Ammo.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Highlands Kunai/Highlands Silver Ingot&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=ThrowingAmmo&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Throwing_Ammo_Name&lt;br /&gt;
|button text=Create Throwing Ammo Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Tool panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🛠️ Create a Tool&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Tool.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Bronze Pickaxe/Highlands Maple Wood&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Tool&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Tool_Name&lt;br /&gt;
|button text=Create Tool Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Consumable panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🧪 Create a Consumable&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Consumable.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Smoked Crab Meat Slab/Aromatic Spice&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Consumable&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Consumable_Name&lt;br /&gt;
|button text=Create Consumable Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Augment panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🧬 Create an Augment&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Augment.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Copper Armor Bracing/Fair Thick Leather&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Augment&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Augment_Name&lt;br /&gt;
|button text=Create Augment Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Equipment Set panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🧩 Create an Equipment Set&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Set.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;&#039;&#039;Set Name (Set)&#039;&#039;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Salt Luck (Set)&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=EquipmentSet&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Equipment_Set_Name&lt;br /&gt;
|button text=Create Equipment Set Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Reagent panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;💉 Create a Reagent&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Reagent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;&#039;&#039;Item Name&#039;&#039; exactly as it appears in-game.&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Weak Numbing Agent&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Reagent&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Reagent_Name&lt;br /&gt;
|button text=Create Reagent Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Resource Node panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;💎 Create a Resource Node&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Resource Node.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=ResourceNode&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Resource_Node_Name&lt;br /&gt;
|button text=Create Resource Node Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Raw Component panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🌿 Create a Raw Component&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Not all items that say &amp;quot;Raw Component&amp;quot; use this form.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Only items used in refining recipes should be added here.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Raw Component.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=RawComponent&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Raw_Component_Name&lt;br /&gt;
|button text=Create Raw Component Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Refining Recipe panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;⚗️ Create a Refining Recipe&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Refining Recipe.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Copper Ingot Recipe&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=RefiningRecipe&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Refining_Recipe_Name&lt;br /&gt;
|button text=Create Refining Recipe Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Refined Component panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🧵 Create a Refined Component&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;These are any items used in crafting recipes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Refined Component.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=RefinedComponent&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Refined_Component_Name&lt;br /&gt;
|button text=Create Refined Component Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Crafting Recipe panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🔨 Create a Crafting Recipe&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Crafting Recipe.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Imbued Copper Greaves Recipe&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=CraftingRecipe&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Crafting_Recipe_Name&lt;br /&gt;
|button text=Create Crafting Recipe Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Recipe Book panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;📜 Create a Recipe Book&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Recipe Book.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;DON&#039;T INCLUDE THE COLON AFTER &amp;quot;RECIPE&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Recipe Imbued Lean Leather Boots&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=RecipeBook&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Recipe_Book_Name&lt;br /&gt;
|button text=Create Recipe Book Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Misc Item panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;📦 Create a Misc Item&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Item.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;This includes &amp;quot;vendor trash&amp;quot; and &amp;quot;quest items&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=MiscItem&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Misc_Item_Name&lt;br /&gt;
|button text=Create Misc Item Page&lt;br /&gt;
|size=40&lt;br /&gt;
| autocompete on category=Misc Items&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Mob panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🐀 Create a Mob&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Mob.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To keep track of mobs that use the same name across multiple zones, we use subpages.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Mob/Doe/Newhaven_Valley&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The main page &amp;quot;Mob/Doe&amp;quot; will have links to the subpages.&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Mob/&amp;lt;Name&amp;gt;/&amp;lt;Zone&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Mob&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=Mob/New_Mob_Name&lt;br /&gt;
|button text=Create Mob Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Named Mob panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🐉 Create a Named Mob&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Named Mob.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: NamedMob/Misha&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Named Mob/&amp;lt;Name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=NamedMob&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=Named Mob/New_Named_Mob_Name&lt;br /&gt;
|button text=Create Named Mob Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- World Boss panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;💀 Create a World Boss&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the World Boss.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: World Boss/Stryga&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;World Boss/&amp;lt;Name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Coming Soon.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=WorldBoss&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=World Boss/New_World_Boss_Name&lt;br /&gt;
|button text=Create World Boss Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Zone panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🌍 Create a Zone&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Zone.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Leave out any punctuation such as &#039; or -&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Aquifer Karst&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Zone&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Zone_Name&lt;br /&gt;
|button text=Create Zone Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Category:Misc_Items&amp;diff=3298</id>
		<title>Category:Misc Items</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Category:Misc_Items&amp;diff=3298"/>
		<updated>2026-03-05T15:44:30Z</updated>

		<summary type="html">&lt;p&gt;Mildew: Created page with &amp;quot;These items are commonly referred to as &amp;quot;Vendor Trash&amp;quot; or items that have no other purpose other than to sell.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These items are commonly referred to as &amp;quot;Vendor Trash&amp;quot; or items that have no other purpose other than to sell.&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Create_Center&amp;diff=3297</id>
		<title>Create Center</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Create_Center&amp;diff=3297"/>
		<updated>2026-03-05T15:43:06Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Hero banner --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;&lt;br /&gt;
  border: 2px solid #4a774a;&lt;br /&gt;
  background-color: #1c1c1c;&lt;br /&gt;
  color: #ccc;&lt;br /&gt;
  padding: 1.5em;&lt;br /&gt;
  border-radius: 8px;&lt;br /&gt;
  margin-bottom: 1.5em;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
&amp;quot;&amp;gt;&lt;br /&gt;
  🛠️ &amp;lt;strong&amp;gt;Welcome to the Create Center!&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  Here you can create new pages for quickly and easily.&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;em&amp;gt;New discoveries keep our world alive.&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Accordion wrapper --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-accordion&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Weapon panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;⚔️ Create a Weapon&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the weapon.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Newhaven Copper Sword/Rough Light Leather&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Weapon&lt;br /&gt;
| placeholder=New_Weapon_Name&lt;br /&gt;
| button text=Create Weapon Page&lt;br /&gt;
| size=40&lt;br /&gt;
| autocompete on category=Misc Items&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Armor panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🦺 Create Armor&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the armor piece.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Newhaven Copper Helmet/Rough Light Leather&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Armor&lt;br /&gt;
| placeholder=New_Armor_Name&lt;br /&gt;
| button text=Create Armor Page&lt;br /&gt;
| size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Accessory panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;💍 Create an Accessory&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the accessory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Accessory&lt;br /&gt;
| placeholder=New_Accessory_Name&lt;br /&gt;
| button text=Create Accessory Page&lt;br /&gt;
| size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Shield panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🛡️ Create a Shield&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the shield.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Newhaven Copper Buckler/Rough Light Leather&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Shield&lt;br /&gt;
| placeholder=New_Shield_Name&lt;br /&gt;
| button text=Create Shield Page&lt;br /&gt;
| size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Offhand Accessory panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;✴️ Create an Offhand Accessory&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Offhand Accessory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Highlands Pine Banner/Highlands Ramie Cloth&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Offhand&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Offhand_Accessory_Name&lt;br /&gt;
|button text=Create Offhand Accessory Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ammo panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🏹 Create Ammo&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Ammo.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Flatlands Arrow/Highlands Silver Ingot&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Ammo&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Ammo_Name&lt;br /&gt;
|button text=Create Ammo Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Throwing Ammo panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🎯 Create Throwing Ammo&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Throwing Ammo.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Highlands Kunai/Highlands Silver Ingot&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=ThrowingAmmo&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Throwing_Ammo_Name&lt;br /&gt;
|button text=Create Throwing Ammo Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Tool panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🛠️ Create a Tool&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Tool.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Bronze Pickaxe/Highlands Maple Wood&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Tool&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Tool_Name&lt;br /&gt;
|button text=Create Tool Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Consumable panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🧪 Create a Consumable&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Consumable.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Smoked Crab Meat Slab/Aromatic Spice&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Consumable&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Consumable_Name&lt;br /&gt;
|button text=Create Consumable Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Augment panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🧬 Create an Augment&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Augment.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Item Name/Secondary Material&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Copper Armor Bracing/Fair Thick Leather&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Augment&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Augment_Name&lt;br /&gt;
|button text=Create Augment Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Equipment Set panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🧩 Create an Equipment Set&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Set.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;&#039;&#039;Set Name (Set)&#039;&#039;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Salt Luck (Set)&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=EquipmentSet&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Equipment_Set_Name&lt;br /&gt;
|button text=Create Equipment Set Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Reagent panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;💉 Create a Reagent&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Reagent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;&#039;&#039;Item Name&#039;&#039; exactly as it appears in-game.&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Weak Numbing Agent&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Reagent&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Reagent_Name&lt;br /&gt;
|button text=Create Reagent Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Resource Node panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;💎 Create a Resource Node&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Resource Node.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=ResourceNode&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Resource_Node_Name&lt;br /&gt;
|button text=Create Resource Node Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Raw Component panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🌿 Create a Raw Component&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Not all items that say &amp;quot;Raw Component&amp;quot; use this form.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Only items used in refining recipes should be added here.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Raw Component.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=RawComponent&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Raw_Component_Name&lt;br /&gt;
|button text=Create Raw Component Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Refining Recipe panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;⚗️ Create a Refining Recipe&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Refining Recipe.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Copper Ingot Recipe&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=RefiningRecipe&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Refining_Recipe_Name&lt;br /&gt;
|button text=Create Refining Recipe Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Refined Component panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🧵 Create a Refined Component&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;These are any items used in crafting recipes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Refined Component.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=RefinedComponent&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Refined_Component_Name&lt;br /&gt;
|button text=Create Refined Component Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Crafting Recipe panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🔨 Create a Crafting Recipe&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Crafting Recipe.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Imbued Copper Greaves Recipe&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=CraftingRecipe&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Crafting_Recipe_Name&lt;br /&gt;
|button text=Create Crafting Recipe Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Recipe Book panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;📜 Create a Recipe Book&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Recipe Book.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;DON&#039;T INCLUDE THE COLON AFTER &amp;quot;RECIPE&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Recipe Imbued Lean Leather Boots&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=RecipeBook&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Recipe_Book_Name&lt;br /&gt;
|button text=Create Recipe Book Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Misc Item panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;📦 Create a Misc Item&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Item.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;This includes &amp;quot;vendor trash&amp;quot; and &amp;quot;quest items&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=MiscItem&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Misc_Item_Name&lt;br /&gt;
|button text=Create Misc Item Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Mob panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🐀 Create a Mob&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Mob.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To keep track of mobs that use the same name across multiple zones, we use subpages.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Mob/Doe/Newhaven_Valley&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The main page &amp;quot;Mob/Doe&amp;quot; will have links to the subpages.&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Mob/&amp;lt;Name&amp;gt;/&amp;lt;Zone&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Mob&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=Mob/New_Mob_Name&lt;br /&gt;
|button text=Create Mob Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Named Mob panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🐉 Create a Named Mob&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Named Mob.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: NamedMob/Misha&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;Named Mob/&amp;lt;Name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=NamedMob&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=Named Mob/New_Named_Mob_Name&lt;br /&gt;
|button text=Create Named Mob Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- World Boss panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;💀 Create a World Boss&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the World Boss.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: World Boss/Stryga&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Format:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;World Boss/&amp;lt;Name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Coming Soon.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=WorldBoss&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=World Boss/New_World_Boss_Name&lt;br /&gt;
|button text=Create World Boss Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Zone panel --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed cc-panel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cc-header&amp;quot;&amp;gt;🌍 Create a Zone&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter the name of the Zone.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Leave out any punctuation such as &#039; or -&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Example: Aquifer Karst&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; max-width:400px;&amp;quot;&amp;gt;&lt;br /&gt;
{{#forminput:&lt;br /&gt;
form=Zone&lt;br /&gt;
|no autofocus&lt;br /&gt;
|placeholder=New_Zone_Name&lt;br /&gt;
|button text=Create Zone Page&lt;br /&gt;
|size=40&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Tattered_Carcass_Part&amp;diff=3296</id>
		<title>Tattered Carcass Part</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Tattered_Carcass_Part&amp;diff=3296"/>
		<updated>2026-02-20T20:43:45Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RawComponent&lt;br /&gt;
|name=Tattered Carcass Part&lt;br /&gt;
|tooltip_image=Tattered Carcass Part.png&lt;br /&gt;
|category=Scrap&lt;br /&gt;
|component_level_min=1&lt;br /&gt;
|harvested_from=Mob/Forest Quillback, Mob/Shoat, Mob/Brown Bear Cub, Mob/Doe/Newhaven Valley, Mob/Young Buck, Mob/Doe/Newhaven Valley/Outside City Gates&lt;br /&gt;
|sell_price_copper=10&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Coarse_Lean_Carcass_Part&amp;diff=3295</id>
		<title>Coarse Lean Carcass Part</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Coarse_Lean_Carcass_Part&amp;diff=3295"/>
		<updated>2026-02-20T20:41:24Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RawComponent&lt;br /&gt;
|name=Coarse Lean Carcass Part&lt;br /&gt;
|tooltip_image=Coarse Lean Carcass Part.png&lt;br /&gt;
|category=Lean Carcass&lt;br /&gt;
|component_level_min=1&lt;br /&gt;
|component_level_max=10&lt;br /&gt;
|harvested_from=Mob/Forest Quillback, Mob/Young Buck, Mob/Shoat, Mob/Brown Bear Cub, Mob/Doe/Newhaven Valley, Mob/Doe/Newhaven Valley/Outside City Gates&lt;br /&gt;
|dropped_by=Mob/Smuggler Woodsman&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Mob/Doe/Newhaven_Valley/Outside_City_Gates&amp;diff=3294</id>
		<title>Mob/Doe/Newhaven Valley/Outside City Gates</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Mob/Doe/Newhaven_Valley/Outside_City_Gates&amp;diff=3294"/>
		<updated>2026-02-20T20:26:30Z</updated>

		<summary type="html">&lt;p&gt;Mildew: Created page with &amp;quot;{{Mob |mob_name=Doe |mob_image=Doe.png |zone=Newhaven Valley |mob_family=Doe |level_low=5 }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Mob&lt;br /&gt;
|mob_name=Doe&lt;br /&gt;
|mob_image=Doe.png&lt;br /&gt;
|zone=Newhaven Valley&lt;br /&gt;
|mob_family=Doe&lt;br /&gt;
|level_low=5&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Template:Zone&amp;diff=3293</id>
		<title>Template:Zone</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Template:Zone&amp;diff=3293"/>
		<updated>2026-02-20T20:20:15Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;zone-template&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{DISPLAYTITLE:{{{zone_name}}}}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;{{{zone_name|{{PAGENAME}}}}}&#039;&#039;&#039;&lt;br /&gt;
{{#if:{{{zone_map|}}}|[[File:{{{zone_map}}}|thumb|{{{zone_name}}}]]|[[File:Image_Placeholder.png|thumb|Map Image Needed]]}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
       OVERVIEW           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{zone_intro|}}}|&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; font-weight: bold; margin-top: 1em;&amp;quot;&amp;gt;Overview&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{{zone_intro|}}}&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
       CONNECTIONS          &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{connections|}}}|&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; font-weight: bold; margin-top: 1em;&amp;quot;&amp;gt;Connections&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:ListLinks|fromDelimited|1={{{connections}}}|delimiter=, }}&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
         QUESTS           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{quests|}}}|&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; font-weight: bold; margin-top: 1em;&amp;quot;&amp;gt;Quests&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:QuestLinks|fromDelimited|1={{{quests}}}|delimiter=, }}&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
      RESOURCE NODES      &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#ifexpr:{{#ask:[[Category:Resource Nodes]][[Location::{{PAGENAME}}]]|format=count}} &amp;gt; 0|&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; font-weight: bold; margin-top: 1em;&amp;quot;&amp;gt;Resource Nodes&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:ListLinks|fromDelimited|1={{#ask:[[Category:Resource Nodes]][[Location::{{PAGENAME}}]]|format=plainlist|link=none}}|delimiter=, }}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
      NAMED MOBS      &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#ifexpr:{{#ask:[[Category:Named Mobs]][[Location::{{PAGENAME}}]]|format=count}} &amp;gt; 0|&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; font-weight: bold; margin-top: 1em;&amp;quot;&amp;gt;Named Mobs&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:SmartMobLinks|fromDelimited|1={{#ask:[[Category:Named Mobs]][[Location::{{PAGENAME}}]]|format=plainlist|link=none}}|delimiter=, }}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
      COMMON MOBS      &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#ifexpr:{{#ask:[[Category:Mobs|+depth=0]][[Location::{{PAGENAME}}]]|format=count}} &amp;gt; 0|&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; font-weight: bold; margin-top: 1em;&amp;quot;&amp;gt;Common Mobs&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{#invoke:SmartMobLinks|fromDelimited|1={{#ask:[[Category:Mobs|+depth=0]][[Location::{{PAGENAME}}]]|format=plainlist|link=none}}|delimiter=, }} --&amp;gt;&lt;br /&gt;
{{#invoke:ZoneMobLinks|fromDelimited|1={{#ask:[[Category:Mobs|+depth=0]][[Location::{{PAGENAME}}]]|format=plainlist|link=none}}|delimiter=, }}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
        CATEGORIES        &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;&amp;lt;includeonly&amp;gt;[[Category:Zones]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;display:none&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;{{#default_form:Zone}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Module:ZoneMobLinks&amp;diff=3292</id>
		<title>Module:ZoneMobLinks</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Module:ZoneMobLinks&amp;diff=3292"/>
		<updated>2026-02-20T20:18:47Z</updated>

		<summary type="html">&lt;p&gt;Mildew: Created page with &amp;quot;local p = {}  -- Return a &amp;lt;ul&amp;gt; of wiki links from a comma-delimited list of mob paths. -- Accepts: --   Mob/Mob Name --   Mob/Mob Name/Zone Name --   Mob/Mob Name/Zone Name/Location within Zone (or deeper) -- Display label: --   Mob Name (Location)   -- ignores Zone Name entirely --   Mob Name              -- if no location present function p.fromDelimited(frame)     local raw = frame.args[1] or &amp;quot;&amp;quot;     local delimiter = frame.args.delimiter or &amp;quot;,&amp;quot;     local items = mw.te...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Return a &amp;lt;ul&amp;gt; of wiki links from a comma-delimited list of mob paths.&lt;br /&gt;
-- Accepts:&lt;br /&gt;
--   Mob/Mob Name&lt;br /&gt;
--   Mob/Mob Name/Zone Name&lt;br /&gt;
--   Mob/Mob Name/Zone Name/Location within Zone (or deeper)&lt;br /&gt;
-- Display label:&lt;br /&gt;
--   Mob Name (Location)   -- ignores Zone Name entirely&lt;br /&gt;
--   Mob Name              -- if no location present&lt;br /&gt;
function p.fromDelimited(frame)&lt;br /&gt;
    local raw = frame.args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
    local delimiter = frame.args.delimiter or &amp;quot;,&amp;quot;&lt;br /&gt;
    local items = mw.text.split(raw, delimiter)&lt;br /&gt;
    local output = { &#039;&amp;lt;ul style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&#039; }&lt;br /&gt;
&lt;br /&gt;
    for _, entry in ipairs(items) do&lt;br /&gt;
        local fullPath = mw.text.trim(entry)&lt;br /&gt;
        if fullPath ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            local parts = mw.text.split(fullPath, &amp;quot;/&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            -- Optional prefix: &amp;quot;Mob&amp;quot; or &amp;quot;Named Mob&amp;quot;&lt;br /&gt;
            local prefix = parts[1]&lt;br /&gt;
            local hasPrefix = (prefix == &amp;quot;Mob&amp;quot; or prefix == &amp;quot;Named Mob&amp;quot;)&lt;br /&gt;
            local baseIndex = hasPrefix and 2 or 1  -- mob name index&lt;br /&gt;
&lt;br /&gt;
            local mobName = parts[baseIndex] or fullPath&lt;br /&gt;
&lt;br /&gt;
            -- Structure after mob name:&lt;br /&gt;
            -- parts[baseIndex+1] = zone (ignored in label)&lt;br /&gt;
            -- parts[baseIndex+2...] = location (displayed)&lt;br /&gt;
            local location = &amp;quot;&amp;quot;&lt;br /&gt;
            local locStart = baseIndex + 2&lt;br /&gt;
            if #parts &amp;gt;= locStart then&lt;br /&gt;
                local locParts = {}&lt;br /&gt;
                for i = locStart, #parts do&lt;br /&gt;
                    if parts[i] and parts[i] ~= &amp;quot;&amp;quot; then&lt;br /&gt;
                        table.insert(locParts, parts[i])&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                location = table.concat(locParts, &amp;quot;/&amp;quot;)&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            local label = mobName&lt;br /&gt;
            if location ~= &amp;quot;&amp;quot; then&lt;br /&gt;
                label = string.format(&amp;quot;%s (%s)&amp;quot;, mobName, location)&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            -- Star marker for named mobs, appended after the link&lt;br /&gt;
            local marker = &amp;quot;&amp;quot;&lt;br /&gt;
            if prefix == &amp;quot;Named Mob&amp;quot; then&lt;br /&gt;
                marker = &amp;quot; ★&amp;quot;&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            table.insert(output, string.format(&#039;&amp;lt;li&amp;gt;[[%s|%s]]%s&amp;lt;/li&amp;gt;&#039;, fullPath, label, marker))&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(output, &#039;&amp;lt;/ul&amp;gt;&#039;)&lt;br /&gt;
    return table.concat(output, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Template:Zone&amp;diff=3291</id>
		<title>Template:Zone</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Template:Zone&amp;diff=3291"/>
		<updated>2026-02-20T20:03:36Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;zone-template&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{DISPLAYTITLE:{{{zone_name}}}}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;{{{zone_name|{{PAGENAME}}}}}&#039;&#039;&#039;&lt;br /&gt;
{{#if:{{{zone_map|}}}|[[File:{{{zone_map}}}|thumb|{{{zone_name}}}]]|[[File:Image_Placeholder.png|thumb|Map Image Needed]]}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
       OVERVIEW           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{zone_intro|}}}|&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; font-weight: bold; margin-top: 1em;&amp;quot;&amp;gt;Overview&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{{zone_intro|}}}&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
       CONNECTIONS          &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{connections|}}}|&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; font-weight: bold; margin-top: 1em;&amp;quot;&amp;gt;Connections&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:ListLinks|fromDelimited|1={{{connections}}}|delimiter=, }}&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
         QUESTS           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{quests|}}}|&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; font-weight: bold; margin-top: 1em;&amp;quot;&amp;gt;Quests&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:QuestLinks|fromDelimited|1={{{quests}}}|delimiter=, }}&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
      RESOURCE NODES      &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#ifexpr:{{#ask:[[Category:Resource Nodes]][[Location::{{PAGENAME}}]]|format=count}} &amp;gt; 0|&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; font-weight: bold; margin-top: 1em;&amp;quot;&amp;gt;Resource Nodes&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:ListLinks|fromDelimited|1={{#ask:[[Category:Resource Nodes]][[Location::{{PAGENAME}}]]|format=plainlist|link=none}}|delimiter=, }}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
      NAMED MOBS      &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#ifexpr:{{#ask:[[Category:Named Mobs]][[Location::{{PAGENAME}}]]|format=count}} &amp;gt; 0|&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; font-weight: bold; margin-top: 1em;&amp;quot;&amp;gt;Named Mobs&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:SmartMobLinks|fromDelimited|1={{#ask:[[Category:Named Mobs]][[Location::{{PAGENAME}}]]|format=plainlist|link=none}}|delimiter=, }}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
      COMMON MOBS      &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#ifexpr:{{#ask:[[Category:Mobs|+depth=0]][[Location::{{PAGENAME}}]]|format=count}} &amp;gt; 0|&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; font-weight: bold; margin-top: 1em;&amp;quot;&amp;gt;Common Mobs&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:SmartMobLinks|fromDelimited|1={{#ask:[[Category:Mobs|+depth=0]][[Location::{{PAGENAME}}]]|format=plainlist|link=none}}|delimiter=, }}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
        CATEGORIES        &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;&amp;lt;includeonly&amp;gt;[[Category:Zones]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;display:none&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;{{#default_form:Zone}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Template:Zone&amp;diff=3290</id>
		<title>Template:Zone</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Template:Zone&amp;diff=3290"/>
		<updated>2026-02-20T20:01:57Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;zone-template&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{DISPLAYTITLE:{{{zone_name}}}}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;{{{zone_name|{{PAGENAME}}}}}&#039;&#039;&#039;&lt;br /&gt;
{{#if:{{{zone_map|}}}|[[File:{{{zone_map}}}|thumb|{{{zone_name}}}]]|[[File:Image_Placeholder.png|thumb|Map Image Needed]]}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
       OVERVIEW           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{zone_intro|}}}|&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; font-weight: bold; margin-top: 1em;&amp;quot;&amp;gt;Overview&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{{zone_intro|}}}&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
       CONNECTIONS          &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{connections|}}}|&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; font-weight: bold; margin-top: 1em;&amp;quot;&amp;gt;Connections&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:ListLinks|fromDelimited|1={{{connections}}}|delimiter=, }}&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
         QUESTS           &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#if:{{{quests|}}}|&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; font-weight: bold; margin-top: 1em;&amp;quot;&amp;gt;Quests&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:QuestLinks|fromDelimited|1={{{quests}}}|delimiter=, }}&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
      RESOURCE NODES      &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#ifexpr:{{#ask:[[Category:Resource Nodes]][[Location::{{PAGENAME}}]]|format=count}} &amp;gt; 0|&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; font-weight: bold; margin-top: 1em;&amp;quot;&amp;gt;Resource Nodes&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:ListLinks|fromDelimited|1={{#ask:[[Category:Resource Nodes]][[Location::{{PAGENAME}}]]|format=plainlist|link=none}}|delimiter=, }}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
      NAMED MOBS      &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#ifexpr:{{#ask:[[Category:Named Mobs]][[Location::{{PAGENAME}}]]|format=count}} &amp;gt; 0|&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; font-weight: bold; margin-top: 1em;&amp;quot;&amp;gt;Named Mobs&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:SmartMobLinks|fromDelimited|1={{#ask:[[Category:Named Mobs]][[Location::{{PAGENAME}}]]|format=plainlist|link=none}}|delimiter=, }}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
      COMMON MOBS      &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;{{#ifexpr:{{#ask:[[Category:Mobs|+depth=0]][[Location::{{PAGENAME}}]]|format=count}} &amp;gt; 0|&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.2em; font-weight: bold; margin-top: 1em;&amp;quot;&amp;gt;Common Mobs&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr style=&amp;quot;border: 0; border-top: 1px solid #555;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{#invoke:SmartMobLinks|fromDelimited|1={{#ask:[[Category:Mobs|+depth=0]][[Location::{{PAGENAME}}]]|format=plainlist|link=none}}|delimiter=, }} --&amp;gt;&lt;br /&gt;
{{#invoke:SmartMobLinks|fromDelimited|1={{#ask:[[Category:Mobs]][[Location::{{PAGENAME}}]]|format=plainlist|link=none}}|delimiter=, }}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
==========================&lt;br /&gt;
        CATEGORIES        &lt;br /&gt;
==========================&lt;br /&gt;
--&amp;gt;&amp;lt;includeonly&amp;gt;[[Category:Zones]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;display:none&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;{{#default_form:Zone}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Main_Page&amp;diff=3289</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Main_Page&amp;diff=3289"/>
		<updated>2026-02-11T16:14:39Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border: 1px solid #555; background-color: #1c1c1c; padding: 1em; border-radius: 6px; text-align: center; margin-bottom: 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.8em;&amp;quot;&amp;gt;🛡️ Welcome to &#039;&#039;&#039;Drifter&#039;s Almanac&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;A comprehensive and encyclopedic compendium of all things Embers Adrift.&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 📖 Quick Links ==&lt;br /&gt;
&lt;br /&gt;
* [[Create Center|Create a New Page]] (Coming Along)&lt;br /&gt;
* [[Help Desk|Ask a Question]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🌎 Explore the Almanac ==&lt;br /&gt;
&lt;br /&gt;
Browse the growing archives:&lt;br /&gt;
&lt;br /&gt;
* [[Getting Started]] (Coming Soon)&lt;br /&gt;
* [[Professions]] (Skeletal)&lt;br /&gt;
* [[Items]] (Skeletal)&lt;br /&gt;
* [[Beastiary]] (Skeletal)&lt;br /&gt;
* [[Zones]] (Ready for Content)&lt;br /&gt;
* [[Quests]] (Coming Soon)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🧹 Community Hub ==&lt;br /&gt;
&lt;br /&gt;
Get involved:&lt;br /&gt;
&lt;br /&gt;
* [[:Special:RecentChanges|Recent Changes]]&lt;br /&gt;
* [[:Special:WantedPages|Pages Needing Attention]]&lt;br /&gt;
* [[:Special:AllPages|Browse All Pages]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🎲 Feeling Adventurous? ==&lt;br /&gt;
&lt;br /&gt;
[https://drifters-almanac.com/index.php/Special:Random Go to a Random Page!]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 0.9em; text-align: center; margin-top: 2em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Thank you for every discovery shared.&#039;&#039; 🔥&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Roles&amp;diff=3288</id>
		<title>Roles</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Roles&amp;diff=3288"/>
		<updated>2026-02-11T16:14:19Z</updated>

		<summary type="html">&lt;p&gt;Mildew: Replaced content with &amp;quot;Base roles have been removed as an option in the New Player Experience.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Base roles have been removed as an option in the New Player Experience.&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Cragscale_Caverns&amp;diff=3287</id>
		<title>Cragscale Caverns</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Cragscale_Caverns&amp;diff=3287"/>
		<updated>2025-11-06T00:47:53Z</updated>

		<summary type="html">&lt;p&gt;Mildew: Created page with &amp;quot;{{Zone |zone_name=Cragscale Caverns |connections=Redshore Ridge }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Zone&lt;br /&gt;
|zone_name=Cragscale Caverns&lt;br /&gt;
|connections=Redshore Ridge&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Mob/Terradile_Toxspitter&amp;diff=3286</id>
		<title>Mob/Terradile Toxspitter</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Mob/Terradile_Toxspitter&amp;diff=3286"/>
		<updated>2025-11-05T18:33:58Z</updated>

		<summary type="html">&lt;p&gt;Mildew: Created page with &amp;quot;{{Mob |mob_name=Terradile Toxspitter |mob_image=Terradile Toxspitter GP.png |zone=Grizzled Peaks |mob_family=Terradile }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Mob&lt;br /&gt;
|mob_name=Terradile Toxspitter&lt;br /&gt;
|mob_image=Terradile Toxspitter GP.png&lt;br /&gt;
|zone=Grizzled Peaks&lt;br /&gt;
|mob_family=Terradile&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=File:Terradile_Toxspitter_GP.png&amp;diff=3285</id>
		<title>File:Terradile Toxspitter GP.png</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=File:Terradile_Toxspitter_GP.png&amp;diff=3285"/>
		<updated>2025-11-05T18:33:52Z</updated>

		<summary type="html">&lt;p&gt;Mildew: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Mob/Terradile_Sprinter&amp;diff=3284</id>
		<title>Mob/Terradile Sprinter</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Mob/Terradile_Sprinter&amp;diff=3284"/>
		<updated>2025-11-05T18:33:03Z</updated>

		<summary type="html">&lt;p&gt;Mildew: Created page with &amp;quot;{{Mob |mob_name=Terradile Sprinter |zone=Grizzled Peaks |mob_family=Terradile }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Mob&lt;br /&gt;
|mob_name=Terradile Sprinter&lt;br /&gt;
|zone=Grizzled Peaks&lt;br /&gt;
|mob_family=Terradile&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Mob/Terradile_Bloodhunter&amp;diff=3283</id>
		<title>Mob/Terradile Bloodhunter</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Mob/Terradile_Bloodhunter&amp;diff=3283"/>
		<updated>2025-11-05T18:32:40Z</updated>

		<summary type="html">&lt;p&gt;Mildew: Created page with &amp;quot;{{Mob |mob_name=Terradile Bloodhunter |zone=Grizzled Peaks |mob_family=Terradile }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Mob&lt;br /&gt;
|mob_name=Terradile Bloodhunter&lt;br /&gt;
|zone=Grizzled Peaks&lt;br /&gt;
|mob_family=Terradile&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Mob/Heartglow_Emberfly&amp;diff=3282</id>
		<title>Mob/Heartglow Emberfly</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Mob/Heartglow_Emberfly&amp;diff=3282"/>
		<updated>2025-11-05T18:31:50Z</updated>

		<summary type="html">&lt;p&gt;Mildew: Created page with &amp;quot;{{Mob |mob_name=Heartglow Emberfly |zone=Grizzled Peaks |mob_family=Emberfly }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Mob&lt;br /&gt;
|mob_name=Heartglow Emberfly&lt;br /&gt;
|zone=Grizzled Peaks&lt;br /&gt;
|mob_family=Emberfly&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
	<entry>
		<id>https://drifters-almanac.com/index.php?title=Mob/Bursting_Emberfly&amp;diff=3281</id>
		<title>Mob/Bursting Emberfly</title>
		<link rel="alternate" type="text/html" href="https://drifters-almanac.com/index.php?title=Mob/Bursting_Emberfly&amp;diff=3281"/>
		<updated>2025-11-05T18:31:16Z</updated>

		<summary type="html">&lt;p&gt;Mildew: Created page with &amp;quot;{{Mob |mob_name=Bursting Emberfly |zone=Grizzled Peaks |mob_family=Emberfly }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Mob&lt;br /&gt;
|mob_name=Bursting Emberfly&lt;br /&gt;
|zone=Grizzled Peaks&lt;br /&gt;
|mob_family=Emberfly&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mildew</name></author>
	</entry>
</feed>