<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://fs.playcodex.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Webmaster</id>
	<title>Firestone Idle Rpg Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://fs.playcodex.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Webmaster"/>
	<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Spezial:Beitr%C3%A4ge/Webmaster"/>
	<updated>2026-04-21T05:27:40Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Modul:Get&amp;diff=242</id>
		<title>Modul:Get</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Modul:Get&amp;diff=242"/>
		<updated>2025-12-10T03:21:07Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Modul:Get&lt;br /&gt;
-- Allgemeiner Zugriff auf strukturierte Daten (Item/Event/Hero/Guardian/…)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local DATA_MODULE = &#039;Modul:Get/Data&#039;&lt;br /&gt;
local data = require(DATA_MODULE)&lt;br /&gt;
&lt;br /&gt;
local ustr    = mw.ustring&lt;br /&gt;
local textlib = mw.text&lt;br /&gt;
&lt;br /&gt;
local DEFAULT_TOOLTIP_MAX = 140&lt;br /&gt;
&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
-- Datei-Existenz prüfen → Dateiname (mit Endung) oder nil&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function fileExists(name)&lt;br /&gt;
    if not name or name == &#039;&#039; then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local function check(n)&lt;br /&gt;
        local titleObj = mw.title.makeTitle(&#039;File&#039;, n)&lt;br /&gt;
        if not titleObj then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
        local fileObj = titleObj.file&lt;br /&gt;
        if fileObj and fileObj.exists then&lt;br /&gt;
            return titleObj.text    -- z.B. &amp;quot;CurrencyGold.png&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- 1. Versuch: Name wie er übergeben wird&lt;br /&gt;
    local found = check(name)&lt;br /&gt;
    if found then&lt;br /&gt;
        return found&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- 2. Versuch: wenn keine Endung angegeben → .png anhängen&lt;br /&gt;
    if not name:match(&#039;%.&#039;) then&lt;br /&gt;
        found = check(name .. &#039;.png&#039;)&lt;br /&gt;
        if found then&lt;br /&gt;
            return found&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
-- Platzhalter / Basics&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- $1 → title&lt;br /&gt;
local function applyPlaceholder(text, title)&lt;br /&gt;
    if not text or text == &#039;&#039; then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return text:gsub(&#039;%$1&#039;, function()&lt;br /&gt;
        return title or &#039;&#039;&lt;br /&gt;
    end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Nur Link bauen, KEIN Tooltip&lt;br /&gt;
local function buildLabel(labelText, linkTarget)&lt;br /&gt;
    if not labelText or labelText == &#039;&#039; then&lt;br /&gt;
        return &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if linkTarget and linkTarget ~= &#039;&#039; then&lt;br /&gt;
        if linkTarget:match(&#039;^%[%[&#039;) or linkTarget:match(&#039;^%[&#039;) then&lt;br /&gt;
            -- bereits fertiger Wiki-/Externer Link&lt;br /&gt;
            return linkTarget&lt;br /&gt;
        else&lt;br /&gt;
            return &#039;[[&#039; .. linkTarget .. &#039;|&#039; .. labelText .. &#039;]]&#039;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return labelText&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Keys normalisieren: trim, lower, Leerzeichen → _&lt;br /&gt;
local function normalizeKey(key)&lt;br /&gt;
    if not key then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    key = textlib.trim(tostring(key))&lt;br /&gt;
    if key == &#039;&#039; then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    key = ustr.lower(key)&lt;br /&gt;
    key = key:gsub(&#039;[%s_]+&#039;, &#039;_&#039;)&lt;br /&gt;
    return key&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Datensatz-Namen (Item/Items, Hero/Heroes…) normalisieren&lt;br /&gt;
local function normalizeDatasetKey(datasetRaw)&lt;br /&gt;
    local datasetKey = normalizeKey(datasetRaw)&lt;br /&gt;
    if not datasetKey then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if datasetKey == &#039;items&#039; then&lt;br /&gt;
        datasetKey = &#039;item&#039;&lt;br /&gt;
    elseif datasetKey == &#039;events&#039; then&lt;br /&gt;
        datasetKey = &#039;event&#039;&lt;br /&gt;
    elseif datasetKey == &#039;heroes&#039; then&lt;br /&gt;
        datasetKey = &#039;hero&#039;&lt;br /&gt;
    elseif datasetKey == &#039;guardians&#039; then&lt;br /&gt;
        datasetKey = &#039;guardian&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return datasetKey&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
-- Markup → Plaintext (für Tooltip)&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function stripMarkup(str)&lt;br /&gt;
    if not str or str == &#039;&#039; then&lt;br /&gt;
        return &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
    str = tostring(str)&lt;br /&gt;
&lt;br /&gt;
    -- interne Links [[Seite|Label]] / [[Seite]]&lt;br /&gt;
    str = str:gsub(&#039;%[%[([^%]|]+)|([^%]]+)%]%]&#039;, &#039;%2&#039;)&lt;br /&gt;
    str = str:gsub(&#039;%[%[([^%]]+)%]%]&#039;, &#039;%1&#039;)&lt;br /&gt;
&lt;br /&gt;
    -- externe Links [url Label]&lt;br /&gt;
    str = str:gsub(&#039;%[[^%s%]]+%s+([^%]]+)%]&#039;, &#039;%1&#039;)&lt;br /&gt;
&lt;br /&gt;
    -- Hervorhebungen&lt;br /&gt;
    str = str:gsub(&amp;quot;&#039;&#039;+&amp;quot;, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
    -- Templates {{...}}&lt;br /&gt;
    str = str:gsub(&#039;{{.-}}&#039;, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
    -- HTML-Tags&lt;br /&gt;
    str = str:gsub(&#039;&amp;lt;.-&amp;gt;&#039;, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
    -- Whitespace normalisieren&lt;br /&gt;
    str = str:gsub(&#039;%s+&#039;, &#039; &#039;)&lt;br /&gt;
    if textlib and textlib.trim then&lt;br /&gt;
        str = textlib.trim(str)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function shorten(str, max)&lt;br /&gt;
    str = stripMarkup(str)&lt;br /&gt;
    max = tonumber(max) or 0&lt;br /&gt;
&lt;br /&gt;
    if max &amp;lt;= 0 or ustr.len(str) &amp;lt;= max then&lt;br /&gt;
        return str&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local cut = ustr.sub(str, 1, max)&lt;br /&gt;
    local lastSpace = ustr.find(cut, &#039; [^ ]*$&#039;)&lt;br /&gt;
    if lastSpace and lastSpace &amp;gt; max * 0.6 then&lt;br /&gt;
        cut = ustr.sub(cut, 1, lastSpace - 1)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return cut .. &#039;…&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
-- Bildauflösung&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function getImageName(raw, title)&lt;br /&gt;
    local imgName&lt;br /&gt;
&lt;br /&gt;
    if raw.img then&lt;br /&gt;
        imgName = fileExists(raw.img)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if not imgName and title then&lt;br /&gt;
        imgName = fileExists(title)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return imgName&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
-- fs-tip Tooltip (wie früher in Modul:Item)&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function buildTooltip(label, title, desc, imgName, linkTarget, max)&lt;br /&gt;
    max = tonumber(max) or DEFAULT_TOOLTIP_MAX&lt;br /&gt;
    desc = desc or &#039;&#039;&lt;br /&gt;
    local shortDesc = shorten(desc, max)&lt;br /&gt;
    local hasImg    = imgName and imgName ~= &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    local out = {}&lt;br /&gt;
&lt;br /&gt;
    -- Wrapper&lt;br /&gt;
    table.insert(out, &#039;&amp;lt;span class=&amp;quot;fs-tip&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    -- sichtbares Label&lt;br /&gt;
    if label and label ~= &#039;&#039; then&lt;br /&gt;
        table.insert(out, label)&lt;br /&gt;
    else&lt;br /&gt;
        if linkTarget and linkTarget ~= &#039;&#039; then&lt;br /&gt;
            table.insert(out, &#039;[[&#039; .. linkTarget .. &#039;|&#039; .. (title or &#039;&#039;) .. &#039;]]&#039;)&lt;br /&gt;
        else&lt;br /&gt;
            table.insert(out, title or &#039;&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Tooltip-Content&lt;br /&gt;
    table.insert(out, &#039;&amp;lt;span class=&amp;quot;content&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    if hasImg then&lt;br /&gt;
        table.insert(out, &#039;&amp;lt;span class=&amp;quot;box&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(out, &#039;[[Datei:&#039; .. imgName .. &#039;|48x48px]]&#039;)&lt;br /&gt;
        table.insert(out, &#039;&amp;lt;span class=&amp;quot;text&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    else&lt;br /&gt;
        table.insert(out, &#039;&amp;lt;span class=&amp;quot;text&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Titel&lt;br /&gt;
    table.insert(out, &#039;&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    table.insert(out, title or &#039;&#039;)&lt;br /&gt;
    table.insert(out, &#039;&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    -- Beschreibung&lt;br /&gt;
    if shortDesc ~= &#039;&#039; then&lt;br /&gt;
        table.insert(out, &#039;&amp;lt;span class=&amp;quot;desc&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(out, shortDesc)&lt;br /&gt;
        table.insert(out, &#039;&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Close .text&lt;br /&gt;
    table.insert(out, &#039;&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    -- Close .box, falls Icon&lt;br /&gt;
    if hasImg then&lt;br /&gt;
        table.insert(out, &#039;&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Close .content + .fs-tip&lt;br /&gt;
    table.insert(out, &#039;&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
    table.insert(out, &#039;&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(out)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
-- Hauptfunktion&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args       = frame.args&lt;br /&gt;
    local datasetRaw = args.dataset or args[1]&lt;br /&gt;
    local method     = args.method  or args[2] or &#039;link&#039;&lt;br /&gt;
    local keyRaw     = args.key     or args[3]&lt;br /&gt;
&lt;br /&gt;
    -- neue Steuerung: Tooltip nur, wenn tip=1 (oder yes/true)&lt;br /&gt;
    local tipFlag = (args.tip == &#039;1&#039; or args.tip == &#039;yes&#039; or args.tip == &#039;true&#039; or args.tooltip == &#039;1&#039;)&lt;br /&gt;
    local tipMax  = tonumber(args.max or args.len or args.limit) or DEFAULT_TOOLTIP_MAX&lt;br /&gt;
&lt;br /&gt;
    local datasetKey = normalizeDatasetKey(datasetRaw)&lt;br /&gt;
    local key        = normalizeKey(keyRaw)&lt;br /&gt;
&lt;br /&gt;
    if not datasetKey or not key then&lt;br /&gt;
        return &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local group = data[datasetKey]&lt;br /&gt;
    if not group then&lt;br /&gt;
        return keyRaw or &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local raw = group[key]&lt;br /&gt;
    if not raw then&lt;br /&gt;
        return keyRaw or &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local displayKey = keyRaw or key&lt;br /&gt;
    local title      = raw.title or displayKey&lt;br /&gt;
    local short      = raw.short or title&lt;br /&gt;
&lt;br /&gt;
    -- Platzhalter anwenden&lt;br /&gt;
    local desc = applyPlaceholder(raw.desc, title)&lt;br /&gt;
    local link = applyPlaceholder(raw.link, title)&lt;br /&gt;
&lt;br /&gt;
    method = tostring(method):lower()&lt;br /&gt;
&lt;br /&gt;
    -- kleines Lazy-Getter für Bildname, damit wir nicht doppelt suchen&lt;br /&gt;
    local resolvedImgName&lt;br /&gt;
    local function imgName()&lt;br /&gt;
        if resolvedImgName == nil then&lt;br /&gt;
            resolvedImgName = getImageName(raw, title)&lt;br /&gt;
        end&lt;br /&gt;
        return resolvedImgName&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- -------------- Methoden --------------&lt;br /&gt;
&lt;br /&gt;
    if method == &#039;title&#039; then&lt;br /&gt;
        if tipFlag then&lt;br /&gt;
            return buildTooltip(nil, title, desc, imgName(), link, tipMax)&lt;br /&gt;
        end&lt;br /&gt;
        return buildLabel(title, nil)&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;short&#039; then&lt;br /&gt;
        if tipFlag then&lt;br /&gt;
            -- Label: Kurzname, Inhaltstitel: voller Titel&lt;br /&gt;
            return buildTooltip(short, title, desc, imgName(), link, tipMax)&lt;br /&gt;
        end&lt;br /&gt;
        return buildLabel(short, nil)&lt;br /&gt;
&lt;br /&gt;
	elseif method == &#039;link&#039; then&lt;br /&gt;
	    local label = buildLabel(short, link)&lt;br /&gt;
	&lt;br /&gt;
	    if tipFlag then&lt;br /&gt;
	        return buildTooltip(label, title, desc, imgName(), link, tipMax)&lt;br /&gt;
	    end&lt;br /&gt;
	    return label&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;tooltip&#039; then&lt;br /&gt;
        -- explizit nur Tooltip&lt;br /&gt;
        return buildTooltip(short, title, desc, imgName(), link, tipMax)&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;img&#039; then&lt;br /&gt;
        local name = imgName()&lt;br /&gt;
        if not name then&lt;br /&gt;
            return &#039;&#039;&lt;br /&gt;
        end&lt;br /&gt;
        return name&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;desc&#039; then&lt;br /&gt;
        return desc or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    else&lt;br /&gt;
        -- Fallback: wie &amp;quot;link&amp;quot;&lt;br /&gt;
        if tipFlag then&lt;br /&gt;
            return buildTooltip(short, title, desc, imgName(), link, tipMax)&lt;br /&gt;
        end&lt;br /&gt;
        return buildLabel(short, link)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Get&amp;diff=241</id>
		<title>Vorlage:Get</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Get&amp;diff=241"/>
		<updated>2025-12-10T03:04:55Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#ifeq: {{lc:{{{method|{{{2|link}}}}}}}} | img&lt;br /&gt;
 |[[File:{{#invoke:Get|main&lt;br /&gt;
      |dataset = {{{dataset|{{{1|}}}}}}&lt;br /&gt;
      |method  = img&lt;br /&gt;
      |key     = {{{key|{{{3|}}}}}}&lt;br /&gt;
  }}]]&lt;br /&gt;
|{{#invoke:Get|main&lt;br /&gt;
      |dataset  = {{{dataset|{{{1|}}}}}}&lt;br /&gt;
      |method   = {{{method|{{{2|link}}}}}}&lt;br /&gt;
      |key      = {{{key|{{{3|}}}}}}&lt;br /&gt;
      |tip     = {{{tip|{{{tooltip|}}}}}}&lt;br /&gt;
      |max     = {{{max|{{{len|{{{limit|}}}}}}}}}&lt;br /&gt;
   }}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Dokumentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Modul:Get&amp;diff=240</id>
		<title>Modul:Get</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Modul:Get&amp;diff=240"/>
		<updated>2025-12-10T03:02:21Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Modul:Get&lt;br /&gt;
-- Allgemeiner Zugriff auf strukturierte Daten (Item/Event/Hero/Guardian/…)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local DATA_MODULE = &#039;Modul:Get/Data&#039;&lt;br /&gt;
local data = require(DATA_MODULE)&lt;br /&gt;
&lt;br /&gt;
local ustr    = mw.ustring&lt;br /&gt;
local textlib = mw.text&lt;br /&gt;
&lt;br /&gt;
local DEFAULT_TOOLTIP_MAX = 140&lt;br /&gt;
&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
-- Datei-Existenz prüfen → Dateiname (mit Endung) oder nil&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function fileExists(name)&lt;br /&gt;
    if not name or name == &#039;&#039; then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local function check(n)&lt;br /&gt;
        local titleObj = mw.title.makeTitle(&#039;File&#039;, n)&lt;br /&gt;
        if not titleObj then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
        local fileObj = titleObj.file&lt;br /&gt;
        if fileObj and fileObj.exists then&lt;br /&gt;
            return titleObj.text    -- z.B. &amp;quot;CurrencyGold.png&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- 1. Versuch: Name wie er übergeben wird&lt;br /&gt;
    local found = check(name)&lt;br /&gt;
    if found then&lt;br /&gt;
        return found&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- 2. Versuch: wenn keine Endung angegeben → .png anhängen&lt;br /&gt;
    if not name:match(&#039;%.&#039;) then&lt;br /&gt;
        found = check(name .. &#039;.png&#039;)&lt;br /&gt;
        if found then&lt;br /&gt;
            return found&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
-- Platzhalter / Basics&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- $1 → title&lt;br /&gt;
local function applyPlaceholder(text, title)&lt;br /&gt;
    if not text or text == &#039;&#039; then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return text:gsub(&#039;%$1&#039;, function()&lt;br /&gt;
        return title or &#039;&#039;&lt;br /&gt;
    end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Nur Link bauen, KEIN Tooltip&lt;br /&gt;
local function buildLabel(labelText, linkTarget)&lt;br /&gt;
    if not labelText or labelText == &#039;&#039; then&lt;br /&gt;
        return &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if linkTarget and linkTarget ~= &#039;&#039; then&lt;br /&gt;
        if linkTarget:match(&#039;^%[%[&#039;) or linkTarget:match(&#039;^%[&#039;) then&lt;br /&gt;
            -- bereits fertiger Wiki-/Externer Link&lt;br /&gt;
            return linkTarget&lt;br /&gt;
        else&lt;br /&gt;
            return &#039;[[&#039; .. linkTarget .. &#039;|&#039; .. labelText .. &#039;]]&#039;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return labelText&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Keys normalisieren: trim, lower, Leerzeichen → _&lt;br /&gt;
local function normalizeKey(key)&lt;br /&gt;
    if not key then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    key = textlib.trim(tostring(key))&lt;br /&gt;
    if key == &#039;&#039; then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    key = ustr.lower(key)&lt;br /&gt;
    key = key:gsub(&#039;[%s_]+&#039;, &#039;_&#039;)&lt;br /&gt;
    return key&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Datensatz-Namen (Item/Items, Hero/Heroes…) normalisieren&lt;br /&gt;
local function normalizeDatasetKey(datasetRaw)&lt;br /&gt;
    local datasetKey = normalizeKey(datasetRaw)&lt;br /&gt;
    if not datasetKey then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if datasetKey == &#039;items&#039; then&lt;br /&gt;
        datasetKey = &#039;item&#039;&lt;br /&gt;
    elseif datasetKey == &#039;events&#039; then&lt;br /&gt;
        datasetKey = &#039;event&#039;&lt;br /&gt;
    elseif datasetKey == &#039;heroes&#039; then&lt;br /&gt;
        datasetKey = &#039;hero&#039;&lt;br /&gt;
    elseif datasetKey == &#039;guardians&#039; then&lt;br /&gt;
        datasetKey = &#039;guardian&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return datasetKey&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
-- Markup → Plaintext (für Tooltip)&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function stripMarkup(str)&lt;br /&gt;
    if not str or str == &#039;&#039; then&lt;br /&gt;
        return &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
    str = tostring(str)&lt;br /&gt;
&lt;br /&gt;
    -- interne Links [[Seite|Label]] / [[Seite]]&lt;br /&gt;
    str = str:gsub(&#039;%[%[([^%]|]+)|([^%]]+)%]%]&#039;, &#039;%2&#039;)&lt;br /&gt;
    str = str:gsub(&#039;%[%[([^%]]+)%]%]&#039;, &#039;%1&#039;)&lt;br /&gt;
&lt;br /&gt;
    -- externe Links [url Label]&lt;br /&gt;
    str = str:gsub(&#039;%[[^%s%]]+%s+([^%]]+)%]&#039;, &#039;%1&#039;)&lt;br /&gt;
&lt;br /&gt;
    -- Hervorhebungen&lt;br /&gt;
    str = str:gsub(&amp;quot;&#039;&#039;+&amp;quot;, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
    -- Templates {{...}}&lt;br /&gt;
    str = str:gsub(&#039;{{.-}}&#039;, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
    -- HTML-Tags&lt;br /&gt;
    str = str:gsub(&#039;&amp;lt;.-&amp;gt;&#039;, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
    -- Whitespace normalisieren&lt;br /&gt;
    str = str:gsub(&#039;%s+&#039;, &#039; &#039;)&lt;br /&gt;
    if textlib and textlib.trim then&lt;br /&gt;
        str = textlib.trim(str)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function shorten(str, max)&lt;br /&gt;
    str = stripMarkup(str)&lt;br /&gt;
    max = tonumber(max) or 0&lt;br /&gt;
&lt;br /&gt;
    if max &amp;lt;= 0 or ustr.len(str) &amp;lt;= max then&lt;br /&gt;
        return str&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local cut = ustr.sub(str, 1, max)&lt;br /&gt;
    local lastSpace = ustr.find(cut, &#039; [^ ]*$&#039;)&lt;br /&gt;
    if lastSpace and lastSpace &amp;gt; max * 0.6 then&lt;br /&gt;
        cut = ustr.sub(cut, 1, lastSpace - 1)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return cut .. &#039;…&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
-- Bildauflösung&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function getImageName(raw, title)&lt;br /&gt;
    local imgName&lt;br /&gt;
&lt;br /&gt;
    if raw.img then&lt;br /&gt;
        imgName = fileExists(raw.img)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if not imgName and title then&lt;br /&gt;
        imgName = fileExists(title)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return imgName&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
-- fs-tip Tooltip (wie früher in Modul:Item)&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function buildTooltip(label, title, desc, imgName, linkTarget, max)&lt;br /&gt;
    max = tonumber(max) or DEFAULT_TOOLTIP_MAX&lt;br /&gt;
    desc = desc or &#039;&#039;&lt;br /&gt;
    local shortDesc = shorten(desc, max)&lt;br /&gt;
    local hasImg    = imgName and imgName ~= &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    local out = {}&lt;br /&gt;
&lt;br /&gt;
    -- Wrapper&lt;br /&gt;
    table.insert(out, &#039;&amp;lt;span class=&amp;quot;fs-tip&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    -- sichtbares Label&lt;br /&gt;
    if label and label ~= &#039;&#039; then&lt;br /&gt;
        table.insert(out, label)&lt;br /&gt;
    else&lt;br /&gt;
        if linkTarget and linkTarget ~= &#039;&#039; then&lt;br /&gt;
            table.insert(out, &#039;[[&#039; .. linkTarget .. &#039;|&#039; .. (title or &#039;&#039;) .. &#039;]]&#039;)&lt;br /&gt;
        else&lt;br /&gt;
            table.insert(out, title or &#039;&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Tooltip-Content&lt;br /&gt;
    table.insert(out, &#039;&amp;lt;span class=&amp;quot;content&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    if hasImg then&lt;br /&gt;
        table.insert(out, &#039;&amp;lt;span class=&amp;quot;box&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(out, &#039;[[Datei:&#039; .. imgName .. &#039;|48x48px]]&#039;)&lt;br /&gt;
        table.insert(out, &#039;&amp;lt;span class=&amp;quot;text&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    else&lt;br /&gt;
        table.insert(out, &#039;&amp;lt;span class=&amp;quot;text&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Titel&lt;br /&gt;
    table.insert(out, &#039;&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    table.insert(out, title or &#039;&#039;)&lt;br /&gt;
    table.insert(out, &#039;&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    -- Beschreibung&lt;br /&gt;
    if shortDesc ~= &#039;&#039; then&lt;br /&gt;
        table.insert(out, &#039;&amp;lt;span class=&amp;quot;desc&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(out, shortDesc)&lt;br /&gt;
        table.insert(out, &#039;&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Close .text&lt;br /&gt;
    table.insert(out, &#039;&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    -- Close .box, falls Icon&lt;br /&gt;
    if hasImg then&lt;br /&gt;
        table.insert(out, &#039;&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Close .content + .fs-tip&lt;br /&gt;
    table.insert(out, &#039;&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
    table.insert(out, &#039;&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(out)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
-- Hauptfunktion&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args       = frame.args&lt;br /&gt;
    local datasetRaw = args.dataset or args[1]&lt;br /&gt;
    local method     = args.method  or args[2] or &#039;link&#039;&lt;br /&gt;
    local keyRaw     = args.key     or args[3]&lt;br /&gt;
&lt;br /&gt;
    -- neue Steuerung: Tooltip nur, wenn tip=1 (oder yes/true)&lt;br /&gt;
    local tipFlag = (args.tip == &#039;1&#039; or args.tip == &#039;yes&#039; or args.tip == &#039;true&#039; or args.tooltip == &#039;1&#039;)&lt;br /&gt;
    local tipMax  = tonumber(args.max or args.len or args.limit) or DEFAULT_TOOLTIP_MAX&lt;br /&gt;
&lt;br /&gt;
    local datasetKey = normalizeDatasetKey(datasetRaw)&lt;br /&gt;
    local key        = normalizeKey(keyRaw)&lt;br /&gt;
&lt;br /&gt;
    if not datasetKey or not key then&lt;br /&gt;
        return &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local group = data[datasetKey]&lt;br /&gt;
    if not group then&lt;br /&gt;
        return keyRaw or &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local raw = group[key]&lt;br /&gt;
    if not raw then&lt;br /&gt;
        return keyRaw or &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local displayKey = keyRaw or key&lt;br /&gt;
    local title      = raw.title or displayKey&lt;br /&gt;
    local short      = raw.short or title&lt;br /&gt;
&lt;br /&gt;
    -- Platzhalter anwenden&lt;br /&gt;
    local desc = applyPlaceholder(raw.desc, title)&lt;br /&gt;
    local link = applyPlaceholder(raw.link, title)&lt;br /&gt;
&lt;br /&gt;
    method = tostring(method):lower()&lt;br /&gt;
&lt;br /&gt;
    -- kleines Lazy-Getter für Bildname, damit wir nicht doppelt suchen&lt;br /&gt;
    local resolvedImgName&lt;br /&gt;
    local function imgName()&lt;br /&gt;
        if resolvedImgName == nil then&lt;br /&gt;
            resolvedImgName = getImageName(raw, title)&lt;br /&gt;
        end&lt;br /&gt;
        return resolvedImgName&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- -------------- Methoden --------------&lt;br /&gt;
&lt;br /&gt;
    if method == &#039;title&#039; then&lt;br /&gt;
        if tipFlag then&lt;br /&gt;
            return buildTooltip(nil, title, desc, imgName(), link, tipMax)&lt;br /&gt;
        end&lt;br /&gt;
        return buildLabel(title, nil)&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;short&#039; then&lt;br /&gt;
        if tipFlag then&lt;br /&gt;
            -- Label: Kurzname, Inhaltstitel: voller Titel&lt;br /&gt;
            return buildTooltip(short, title, desc, imgName(), link, tipMax)&lt;br /&gt;
        end&lt;br /&gt;
        return buildLabel(short, nil)&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;link&#039; then&lt;br /&gt;
        if tipFlag then&lt;br /&gt;
            return buildTooltip(short, title, desc, imgName(), link, tipMax)&lt;br /&gt;
        end&lt;br /&gt;
        return buildLabel(short, link)&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;tooltip&#039; then&lt;br /&gt;
        -- explizit nur Tooltip&lt;br /&gt;
        return buildTooltip(short, title, desc, imgName(), link, tipMax)&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;img&#039; then&lt;br /&gt;
        local name = imgName()&lt;br /&gt;
        if not name then&lt;br /&gt;
            return &#039;&#039;&lt;br /&gt;
        end&lt;br /&gt;
        return name&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;desc&#039; then&lt;br /&gt;
        return desc or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    else&lt;br /&gt;
        -- Fallback: wie &amp;quot;link&amp;quot;&lt;br /&gt;
        if tipFlag then&lt;br /&gt;
            return buildTooltip(short, title, desc, imgName(), link, tipMax)&lt;br /&gt;
        end&lt;br /&gt;
        return buildLabel(short, link)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Get&amp;diff=239</id>
		<title>Vorlage:Get</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Get&amp;diff=239"/>
		<updated>2025-12-09T23:25:37Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#ifeq: {{lc:{{{method|{{{2|link}}}}}}}} | img&lt;br /&gt;
 |[[File:{{#invoke:Get|main&lt;br /&gt;
      |dataset = {{{dataset|{{{1|}}}}}}&lt;br /&gt;
      |method  = img&lt;br /&gt;
      |key     = {{{key|{{{3|}}}}}}&lt;br /&gt;
  }}]]&lt;br /&gt;
|{{#invoke:Get|main&lt;br /&gt;
      |dataset  = {{{dataset|{{{1|}}}}}}&lt;br /&gt;
      |method   = {{{method|{{{2|link}}}}}}&lt;br /&gt;
      |key      = {{{key|{{{3|}}}}}}&lt;br /&gt;
      |noTooltip= {{{noTooltip|{{{notooltip|}}}}}}&lt;br /&gt;
   }}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Dokumentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Icon&amp;diff=238</id>
		<title>Vorlage:Icon</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Icon&amp;diff=238"/>
		<updated>2025-12-08T23:27:43Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!-- #&amp;lt;WRAPPER&amp;gt;&lt;br /&gt;
	--&amp;gt;&amp;lt;span class=&amp;quot;fs-icon&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;!-- ICON (links) --&amp;gt;&lt;br /&gt;
		&amp;lt;span class=&amp;quot;icon&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
			--&amp;gt;[[File:{{#invoke:Get|main|{{{1}}}|img|{{{2}}} }}|&amp;lt;!--&lt;br /&gt;
			&amp;lt;!-- SIZE: 4. Parameter oder |size= --&amp;gt;&lt;br /&gt;
			{{#switch:{{{4|{{{size|}}}}}}&lt;br /&gt;
				|0=64x64px&lt;br /&gt;
				|1=48x48px&lt;br /&gt;
				|2=32x32px&lt;br /&gt;
				|3=24x24px&lt;br /&gt;
				|4=16x16px&lt;br /&gt;
				|#default=24x24px&lt;br /&gt;
			}}&amp;lt;!--&lt;br /&gt;
			--&amp;gt;]]&amp;lt;!--&lt;br /&gt;
		--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;!-- LABEL + optionale MENGE --&amp;gt;&lt;br /&gt;
		{{#ifexpr: {{{label|1}}} |&amp;lt;!--&lt;br /&gt;
			--&amp;gt;&amp;lt;span class=&amp;quot;label&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
				--&amp;gt;{{#if: {{{3|{{{amount|}}}}}} |{{{3|{{{amount|}}}}}}&amp;amp;nbsp;}}&amp;lt;!--&lt;br /&gt;
				--&amp;gt;{{#invoke:Get|main|{{{1}}}|link|{{{2}}} }}&amp;lt;!--&lt;br /&gt;
			--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--&lt;br /&gt;
		--&amp;gt;|}}&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
	--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!-- #&amp;lt;/WRAPPER&amp;gt;&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Dokumentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Icon&amp;diff=237</id>
		<title>Vorlage:Icon</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Icon&amp;diff=237"/>
		<updated>2025-12-08T23:25:21Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!-- #&amp;lt;WRAPPER&amp;gt;&lt;br /&gt;
	--&amp;gt;&amp;lt;span class=&amp;quot;fs-icon&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;!-- ICON (links) --&amp;gt;&lt;br /&gt;
		&amp;lt;span class=&amp;quot;icon&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
			--&amp;gt;[[File:{{#invoke:Get|main|{{{1}}}|img|{{{2}}} }}|&amp;lt;!--&lt;br /&gt;
			&amp;lt;!-- SIZE: 4. Parameter oder |size= --&amp;gt;&lt;br /&gt;
			{{#switch:{{{4|{{{size|}}}}}}&lt;br /&gt;
				|0=64x64px&lt;br /&gt;
				|1=48x48px&lt;br /&gt;
				|2=32x32px&lt;br /&gt;
				|3=24x24px&lt;br /&gt;
				|4=16x16px&lt;br /&gt;
				|#default=24x24px&lt;br /&gt;
			}}&amp;lt;!--&lt;br /&gt;
			--&amp;gt;]]&amp;lt;!--&lt;br /&gt;
		--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;!-- LABEL + optionale MENGE --&amp;gt;&lt;br /&gt;
		{{#ifexpr: {{{label|1}}} |&amp;lt;!--&lt;br /&gt;
			--&amp;gt;&amp;lt;span class=&amp;quot;label&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
				--&amp;gt;{{#if: {{{3|{{{amount|}}}}}} |{{{3|{{{amount|}}}}}} }}&amp;lt;!--&lt;br /&gt;
				--&amp;gt;{{#invoke:Get|main|{{{1}}}|link|{{{2}}} }}&amp;lt;!--&lt;br /&gt;
			--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--&lt;br /&gt;
		--&amp;gt;|}}&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
	--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!-- #&amp;lt;/WRAPPER&amp;gt;&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Dokumentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Icon&amp;diff=236</id>
		<title>Vorlage:Icon</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Icon&amp;diff=236"/>
		<updated>2025-12-08T22:33:13Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!-- #&amp;lt;WRAPPER&amp;gt;&lt;br /&gt;
	--&amp;gt;&amp;lt;span class=&amp;quot;fs-icon&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
		# &amp;lt;ICON&amp;gt; zuerst (links)&lt;br /&gt;
		--&amp;gt;&amp;lt;span class=&amp;quot;icon&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
			--&amp;gt;[[File:{{#invoke:Get|main|{{{1}}}|img|{{{2}}} }}|&amp;lt;!--&lt;br /&gt;
			#&amp;lt;SIZE&amp;gt;&lt;br /&gt;
			--&amp;gt;{{#switch:{{{3|}}}&lt;br /&gt;
				|0=64x64px&lt;br /&gt;
				|1=48x48px&lt;br /&gt;
				|2=32x32px&lt;br /&gt;
				|3=24x24px&lt;br /&gt;
				|4=16x16px&lt;br /&gt;
				|#default=32x32px&lt;br /&gt;
			}}&amp;lt;!--&lt;br /&gt;
			--&amp;gt;]]&amp;lt;!--&lt;br /&gt;
		--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
		# Label (optional, standard an)&lt;br /&gt;
		--&amp;gt;{{#ifexpr: {{{label|1}}} |&amp;lt;!-- #&amp;lt;Visibility FLAG&amp;gt;&lt;br /&gt;
			--&amp;gt;&amp;lt;span class=&amp;quot;label&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
				--&amp;gt;{{#invoke:Get|main|{{{1}}}|link|{{{2}}} }}&amp;lt;!--&lt;br /&gt;
			--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--&lt;br /&gt;
		--&amp;gt;|}}&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
	--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!-- #&amp;lt;/WRAPPER&amp;gt;&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Dokumentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Icon&amp;diff=235</id>
		<title>Vorlage:Icon</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Icon&amp;diff=235"/>
		<updated>2025-12-08T22:18:57Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!-- #&amp;lt;WRAPPER&amp;gt;&lt;br /&gt;
	--&amp;gt;&amp;lt;span class=&amp;quot;fs-icon&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
		#&amp;lt;PAGE&amp;gt;&lt;br /&gt;
		--&amp;gt;{{#ifexpr: {{{label|2}}} |&amp;lt;!-- #&amp;lt;Visibility FLAG&amp;gt;&lt;br /&gt;
			--&amp;gt;&amp;lt;span class=&amp;quot;label&amp;quot;&amp;gt;[[&amp;lt;!-- #&amp;lt;LINK&amp;gt; (alphabetical order by Id)&lt;br /&gt;
				--&amp;gt;{{#invoke:Get|main|{{{1}}}|link|{{{2}}} }}|&amp;lt;!--&lt;br /&gt;
					#&amp;lt;TITLE&amp;gt; (alphabetical order by Id)&lt;br /&gt;
				--&amp;gt;{{#invoke:Get|main|{{{1}}}|short|{{{2}}} }}&amp;lt;!--&lt;br /&gt;
			--&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;!--&lt;br /&gt;
		--&amp;gt;|}}&amp;lt;!--&lt;br /&gt;
		--&amp;gt;&amp;lt;span&amp;gt;&amp;lt;!--&lt;br /&gt;
			# &amp;lt;ICON&amp;gt;&lt;br /&gt;
			# alphabetical order by Id&lt;br /&gt;
			# compulsory completion for all items&lt;br /&gt;
			# compulsory duplication in the [Icon/doc] section&lt;br /&gt;
			--&amp;gt;[[File:{{#invoke:Get|main|{{{1}}}|img|{{{2}}} }}|&amp;lt;!--&lt;br /&gt;
			#&amp;lt;SIZE&amp;gt;&lt;br /&gt;
			--&amp;gt;{{#switch:{{lc:{{{3}}}}}&lt;br /&gt;
				|0=64x64px&lt;br /&gt;
				|1=48x48px&lt;br /&gt;
				|2=32x32px&lt;br /&gt;
				|3=24x24px&lt;br /&gt;
				|4=16x16px&lt;br /&gt;
				|#default=32x32px&lt;br /&gt;
			}}&amp;lt;!--&lt;br /&gt;
		--&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;!--&lt;br /&gt;
	--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!-- #&amp;lt;/&amp;gt;&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Modul:Get&amp;diff=234</id>
		<title>Modul:Get</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Modul:Get&amp;diff=234"/>
		<updated>2025-12-08T22:17:55Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Modul:Get&lt;br /&gt;
-- Allgemeiner Zugriff auf strukturierte Daten (Item/Event/Hero/Guardian/…)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local DATA_MODULE = &#039;Modul:Get/Data&#039;&lt;br /&gt;
local data = require(DATA_MODULE)&lt;br /&gt;
&lt;br /&gt;
-- Datei-Existenz prüfen&lt;br /&gt;
local function fileExists(name)&lt;br /&gt;
    if not name or name == &#039;&#039; then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local function check(n)&lt;br /&gt;
        local titleObj = mw.title.makeTitle(&#039;File&#039;, n)&lt;br /&gt;
        if not titleObj then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
        local fileObj = titleObj.file&lt;br /&gt;
        if fileObj and fileObj.exists then&lt;br /&gt;
            return titleObj.text    -- z.B. &amp;quot;CurrencyGold.png&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- 1. Versuch: Name wie er übergeben wird&lt;br /&gt;
    local found = check(name)&lt;br /&gt;
    if found then&lt;br /&gt;
        return found&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- 2. Versuch: wenn keine Endung angegeben → .png anhängen&lt;br /&gt;
    if not name:match(&#039;%.&#039;) then&lt;br /&gt;
        found = check(name .. &#039;.png&#039;)&lt;br /&gt;
        if found then&lt;br /&gt;
            return found&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- $1 → title&lt;br /&gt;
local function applyPlaceholder(text, title)&lt;br /&gt;
    if not text or text == &#039;&#039; then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- %$1 = literal &amp;quot;$1&amp;quot;&lt;br /&gt;
    return text:gsub(&#039;%$1&#039;, function()&lt;br /&gt;
        return title or &#039;&#039;&lt;br /&gt;
    end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Tooltip + optional Link&lt;br /&gt;
local function wrapWithTooltip(labelText, linkTarget, desc, noTooltip)&lt;br /&gt;
    if not labelText or labelText == &#039;&#039; then&lt;br /&gt;
        return &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local out = labelText&lt;br /&gt;
&lt;br /&gt;
    -- Link bauen, falls vorhanden&lt;br /&gt;
    if linkTarget and linkTarget ~= &#039;&#039; then&lt;br /&gt;
        if linkTarget:match(&#039;^%[%[&#039;) or linkTarget:match(&#039;^%[&#039;) then&lt;br /&gt;
            -- bereits fertiger Wiki-/Externer Link&lt;br /&gt;
            out = linkTarget&lt;br /&gt;
        else&lt;br /&gt;
            -- interner Link: [[Seite|Label]]&lt;br /&gt;
            out = &#039;[[&#039; .. linkTarget .. &#039;|&#039; .. labelText .. &#039;]]&#039;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Tooltip über title-Attribut&lt;br /&gt;
    if desc and desc ~= &#039;&#039; and not noTooltip then&lt;br /&gt;
        local escDesc = desc:gsub(&#039;&amp;quot;&#039;, &#039;&amp;amp;quot;&#039;)&lt;br /&gt;
        out = &#039;&amp;lt;span class=&amp;quot;kr-get&amp;quot; title=&amp;quot;&#039; .. escDesc .. &#039;&amp;quot;&amp;gt;&#039; .. out .. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Keys normalisieren: trim, lower, Leerzeichen → _&lt;br /&gt;
local function normalizeKey(key)&lt;br /&gt;
    if not key then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    key = mw.text.trim(tostring(key))&lt;br /&gt;
    if key == &#039;&#039; then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    key = mw.ustring.lower(key)&lt;br /&gt;
    key = key:gsub(&#039;[%s_]+&#039;, &#039;_&#039;)&lt;br /&gt;
    return key&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Datensatz-Namen (Item/Items, Hero/Heroes…) normalisieren&lt;br /&gt;
local function normalizeDatasetKey(datasetRaw)&lt;br /&gt;
    local datasetKey = normalizeKey(datasetRaw)&lt;br /&gt;
    if not datasetKey then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if datasetKey == &#039;items&#039; then&lt;br /&gt;
        datasetKey = &#039;item&#039;&lt;br /&gt;
    elseif datasetKey == &#039;events&#039; then&lt;br /&gt;
        datasetKey = &#039;event&#039;&lt;br /&gt;
    elseif datasetKey == &#039;heroes&#039; then&lt;br /&gt;
        datasetKey = &#039;hero&#039;&lt;br /&gt;
    elseif datasetKey == &#039;guardians&#039; then&lt;br /&gt;
        datasetKey = &#039;guardian&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return datasetKey&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
-- Hauptfunktion&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args       = frame.args&lt;br /&gt;
    local datasetRaw = args.dataset or args[1]&lt;br /&gt;
    local method     = args.method  or args[2] or &#039;link&#039;&lt;br /&gt;
    local keyRaw     = args.key     or args[3]&lt;br /&gt;
    local noTooltip  = args.noTooltip == &#039;1&#039; or args.notooltip == &#039;1&#039;&lt;br /&gt;
&lt;br /&gt;
    local datasetKey = normalizeDatasetKey(datasetRaw)&lt;br /&gt;
    local key        = normalizeKey(keyRaw)&lt;br /&gt;
&lt;br /&gt;
    if not datasetKey or not key then&lt;br /&gt;
        return &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local group = data[datasetKey]&lt;br /&gt;
    if not group then&lt;br /&gt;
        -- unbekannter Datensatz → gib originalen Key zurück (zerstört Seite nicht)&lt;br /&gt;
        return keyRaw or &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local raw = group[key]&lt;br /&gt;
    if not raw then&lt;br /&gt;
        return keyRaw or &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local displayKey = keyRaw or key&lt;br /&gt;
    local title      = raw.title or displayKey&lt;br /&gt;
    local short      = raw.short or title&lt;br /&gt;
&lt;br /&gt;
    -- Platzhalter anwenden&lt;br /&gt;
    local desc = applyPlaceholder(raw.desc, title)&lt;br /&gt;
    local link = applyPlaceholder(raw.link, title)&lt;br /&gt;
&lt;br /&gt;
    method = tostring(method):lower()&lt;br /&gt;
&lt;br /&gt;
    if method == &#039;title&#039; then&lt;br /&gt;
        return wrapWithTooltip(title, nil, desc, noTooltip)&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;short&#039; then&lt;br /&gt;
        return wrapWithTooltip(short, nil, desc, noTooltip)&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;link&#039; then&lt;br /&gt;
        return wrapWithTooltip(short, link, desc, noTooltip)&lt;br /&gt;
&lt;br /&gt;
	elseif method == &#039;img&#039; then&lt;br /&gt;
	    local imgName&lt;br /&gt;
	&lt;br /&gt;
	    if raw.img then&lt;br /&gt;
	        imgName = fileExists(raw.img)&lt;br /&gt;
	    end&lt;br /&gt;
	&lt;br /&gt;
	    if not imgName and title then&lt;br /&gt;
	        imgName = fileExists(title)&lt;br /&gt;
	    end&lt;br /&gt;
	&lt;br /&gt;
	    if not imgName then&lt;br /&gt;
	        return &#039;&#039;&lt;br /&gt;
	    end&lt;br /&gt;
	&lt;br /&gt;
	    return imgName&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;desc&#039; then&lt;br /&gt;
        return desc or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    else&lt;br /&gt;
        -- Fallback: wie &amp;quot;link&amp;quot;&lt;br /&gt;
        return wrapWithTooltip(short, link, desc, noTooltip)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Modul:Get&amp;diff=233</id>
		<title>Modul:Get</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Modul:Get&amp;diff=233"/>
		<updated>2025-12-08T21:59:16Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Modul:Get&lt;br /&gt;
-- Allgemeiner Zugriff auf strukturierte Daten (Item/Event/Hero/Guardian/…)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local DATA_MODULE = &#039;Modul:Get/Data&#039;&lt;br /&gt;
local data = require(DATA_MODULE)&lt;br /&gt;
&lt;br /&gt;
-- Datei-Existenz prüfen&lt;br /&gt;
local function fileExists(name)&lt;br /&gt;
    if not name or name == &#039;&#039; then&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local titleObj = mw.title.makeTitle(&#039;File&#039;, name)&lt;br /&gt;
    if not titleObj then&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local fileObj = titleObj.file&lt;br /&gt;
    if not fileObj or not fileObj.exists then&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- $1 → title&lt;br /&gt;
local function applyPlaceholder(text, title)&lt;br /&gt;
    if not text or text == &#039;&#039; then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- %$1 = literal &amp;quot;$1&amp;quot;&lt;br /&gt;
    return text:gsub(&#039;%$1&#039;, function()&lt;br /&gt;
        return title or &#039;&#039;&lt;br /&gt;
    end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Tooltip + optional Link&lt;br /&gt;
local function wrapWithTooltip(labelText, linkTarget, desc, noTooltip)&lt;br /&gt;
    if not labelText or labelText == &#039;&#039; then&lt;br /&gt;
        return &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local out = labelText&lt;br /&gt;
&lt;br /&gt;
    -- Link bauen, falls vorhanden&lt;br /&gt;
    if linkTarget and linkTarget ~= &#039;&#039; then&lt;br /&gt;
        if linkTarget:match(&#039;^%[%[&#039;) or linkTarget:match(&#039;^%[&#039;) then&lt;br /&gt;
            -- bereits fertiger Wiki-/Externer Link&lt;br /&gt;
            out = linkTarget&lt;br /&gt;
        else&lt;br /&gt;
            -- interner Link: [[Seite|Label]]&lt;br /&gt;
            out = &#039;[[&#039; .. linkTarget .. &#039;|&#039; .. labelText .. &#039;]]&#039;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Tooltip über title-Attribut&lt;br /&gt;
    if desc and desc ~= &#039;&#039; and not noTooltip then&lt;br /&gt;
        local escDesc = desc:gsub(&#039;&amp;quot;&#039;, &#039;&amp;amp;quot;&#039;)&lt;br /&gt;
        out = &#039;&amp;lt;span class=&amp;quot;kr-get&amp;quot; title=&amp;quot;&#039; .. escDesc .. &#039;&amp;quot;&amp;gt;&#039; .. out .. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Keys normalisieren: trim, lower, Leerzeichen → _&lt;br /&gt;
local function normalizeKey(key)&lt;br /&gt;
    if not key then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    key = mw.text.trim(tostring(key))&lt;br /&gt;
    if key == &#039;&#039; then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    key = mw.ustring.lower(key)&lt;br /&gt;
    key = key:gsub(&#039;[%s_]+&#039;, &#039;_&#039;)&lt;br /&gt;
    return key&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Datensatz-Namen (Item/Items, Hero/Heroes…) normalisieren&lt;br /&gt;
local function normalizeDatasetKey(datasetRaw)&lt;br /&gt;
    local datasetKey = normalizeKey(datasetRaw)&lt;br /&gt;
    if not datasetKey then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if datasetKey == &#039;items&#039; then&lt;br /&gt;
        datasetKey = &#039;item&#039;&lt;br /&gt;
    elseif datasetKey == &#039;events&#039; then&lt;br /&gt;
        datasetKey = &#039;event&#039;&lt;br /&gt;
    elseif datasetKey == &#039;heroes&#039; then&lt;br /&gt;
        datasetKey = &#039;hero&#039;&lt;br /&gt;
    elseif datasetKey == &#039;guardians&#039; then&lt;br /&gt;
        datasetKey = &#039;guardian&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return datasetKey&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
-- Hauptfunktion&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args       = frame.args&lt;br /&gt;
    local datasetRaw = args.dataset or args[1]&lt;br /&gt;
    local method     = args.method  or args[2] or &#039;link&#039;&lt;br /&gt;
    local keyRaw     = args.key     or args[3]&lt;br /&gt;
    local noTooltip  = args.noTooltip == &#039;1&#039; or args.notooltip == &#039;1&#039;&lt;br /&gt;
&lt;br /&gt;
    local datasetKey = normalizeDatasetKey(datasetRaw)&lt;br /&gt;
    local key        = normalizeKey(keyRaw)&lt;br /&gt;
&lt;br /&gt;
    if not datasetKey or not key then&lt;br /&gt;
        return &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local group = data[datasetKey]&lt;br /&gt;
    if not group then&lt;br /&gt;
        -- unbekannter Datensatz → gib originalen Key zurück (zerstört Seite nicht)&lt;br /&gt;
        return keyRaw or &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local raw = group[key]&lt;br /&gt;
    if not raw then&lt;br /&gt;
        return keyRaw or &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local displayKey = keyRaw or key&lt;br /&gt;
    local title      = raw.title or displayKey&lt;br /&gt;
    local short      = raw.short or title&lt;br /&gt;
&lt;br /&gt;
    -- Platzhalter anwenden&lt;br /&gt;
    local desc = applyPlaceholder(raw.desc, title)&lt;br /&gt;
    local link = applyPlaceholder(raw.link, title)&lt;br /&gt;
&lt;br /&gt;
    -- Bild bestimmen&lt;br /&gt;
    local chosenImg&lt;br /&gt;
    if raw.img and fileExists(raw.img) then&lt;br /&gt;
        chosenImg = raw.img&lt;br /&gt;
    elseif fileExists(title) then&lt;br /&gt;
        -- Fallback: Datei mit gleichem Namen wie der Titel&lt;br /&gt;
        chosenImg = title&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    method = tostring(method):lower()&lt;br /&gt;
&lt;br /&gt;
    if method == &#039;title&#039; then&lt;br /&gt;
        return wrapWithTooltip(title, nil, desc, noTooltip)&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;short&#039; then&lt;br /&gt;
        return wrapWithTooltip(short, nil, desc, noTooltip)&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;link&#039; then&lt;br /&gt;
        return wrapWithTooltip(short, link, desc, noTooltip)&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;img&#039; then&lt;br /&gt;
        -- Nur den Dateinamen zurückgeben (ohne &amp;quot;Datei:&amp;quot;)&lt;br /&gt;
        local imgName&lt;br /&gt;
        if raw.img then&lt;br /&gt;
            imgName = fileExists(raw.img)&lt;br /&gt;
        end&lt;br /&gt;
        if not imgName then&lt;br /&gt;
            imgName = fileExists(title)&lt;br /&gt;
        end&lt;br /&gt;
        if not imgName then&lt;br /&gt;
            return &#039;&#039;&lt;br /&gt;
        end&lt;br /&gt;
        return imgName&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;desc&#039; then&lt;br /&gt;
        return desc or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    else&lt;br /&gt;
        -- Fallback: wie &amp;quot;link&amp;quot;&lt;br /&gt;
        return wrapWithTooltip(short, link, desc, noTooltip)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Icon&amp;diff=232</id>
		<title>Vorlage:Icon</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Icon&amp;diff=232"/>
		<updated>2025-12-08T21:56:00Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!-- #&amp;lt;WRAPPER&amp;gt;&lt;br /&gt;
	--&amp;gt;&amp;lt;span class=&amp;quot;fs-icon&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
		#&amp;lt;PAGE&amp;gt;&lt;br /&gt;
		--&amp;gt;{{#ifexpr: {{{label|2}}} |&amp;lt;!-- #&amp;lt;Visibility FLAG&amp;gt;&lt;br /&gt;
			--&amp;gt;&amp;lt;span class=&amp;quot;label&amp;quot;&amp;gt;[[&amp;lt;!-- #&amp;lt;LINK&amp;gt; (alphabetical order by Id)&lt;br /&gt;
				--&amp;gt;{{#invoke:Get|main|{{{1}}}|link|{{{2}}} }}|&amp;lt;!--&lt;br /&gt;
					#&amp;lt;TITLE&amp;gt; (alphabetical order by Id)&lt;br /&gt;
				--&amp;gt;{{#invoke:Get|main|{{{1}}}|short|{{{2}}} }}&amp;lt;!--&lt;br /&gt;
			--&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;!--&lt;br /&gt;
		--&amp;gt;|}}&amp;lt;!--&lt;br /&gt;
		--&amp;gt;&amp;lt;span&amp;gt;&amp;lt;!--&lt;br /&gt;
			# &amp;lt;ICON&amp;gt;&lt;br /&gt;
			# alphabetical order by Id&lt;br /&gt;
			# compulsory completion for all items&lt;br /&gt;
			# compulsory duplication in the [Icon/doc] section&lt;br /&gt;
			--&amp;gt;[[File:{{#invoke:Get|main|{{{1}}}|img|{{{2}}} }}.png|&amp;lt;!--&lt;br /&gt;
			#&amp;lt;SIZE&amp;gt;&lt;br /&gt;
			--&amp;gt;{{#switch:{{lc:{{{3}}}}}&lt;br /&gt;
				|0=64x64px&lt;br /&gt;
				|1=48x48px&lt;br /&gt;
				|2=32x32px&lt;br /&gt;
				|3=24x24px&lt;br /&gt;
				|4=16x16px&lt;br /&gt;
				|#default=32x32px&lt;br /&gt;
			}}&amp;lt;!--&lt;br /&gt;
		--&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;!--&lt;br /&gt;
	--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!-- #&amp;lt;/&amp;gt;&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Modul:Get&amp;diff=231</id>
		<title>Modul:Get</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Modul:Get&amp;diff=231"/>
		<updated>2025-12-08T21:16:34Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Modul:Get&lt;br /&gt;
-- Allgemeiner Zugriff auf strukturierte Daten (Item/Event/Hero/Guardian/…)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local DATA_MODULE = &#039;Modul:Get/Data&#039;&lt;br /&gt;
local data = require(DATA_MODULE)&lt;br /&gt;
&lt;br /&gt;
-- Datei-Existenz prüfen&lt;br /&gt;
local function fileExists(name)&lt;br /&gt;
    if not name or name == &#039;&#039; then&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local titleObj = mw.title.makeTitle(&#039;File&#039;, name)&lt;br /&gt;
    if not titleObj then&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local fileObj = titleObj.file&lt;br /&gt;
    if not fileObj or not fileObj.exists then&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- $1 → title&lt;br /&gt;
local function applyPlaceholder(text, title)&lt;br /&gt;
    if not text or text == &#039;&#039; then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- %$1 = literal &amp;quot;$1&amp;quot;&lt;br /&gt;
    return text:gsub(&#039;%$1&#039;, function()&lt;br /&gt;
        return title or &#039;&#039;&lt;br /&gt;
    end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Tooltip + optional Link&lt;br /&gt;
local function wrapWithTooltip(labelText, linkTarget, desc, noTooltip)&lt;br /&gt;
    if not labelText or labelText == &#039;&#039; then&lt;br /&gt;
        return &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local out = labelText&lt;br /&gt;
&lt;br /&gt;
    -- Link bauen, falls vorhanden&lt;br /&gt;
    if linkTarget and linkTarget ~= &#039;&#039; then&lt;br /&gt;
        if linkTarget:match(&#039;^%[%[&#039;) or linkTarget:match(&#039;^%[&#039;) then&lt;br /&gt;
            -- bereits fertiger Wiki-/Externer Link&lt;br /&gt;
            out = linkTarget&lt;br /&gt;
        else&lt;br /&gt;
            -- interner Link: [[Seite|Label]]&lt;br /&gt;
            out = &#039;[[&#039; .. linkTarget .. &#039;|&#039; .. labelText .. &#039;]]&#039;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Tooltip über title-Attribut&lt;br /&gt;
    if desc and desc ~= &#039;&#039; and not noTooltip then&lt;br /&gt;
        local escDesc = desc:gsub(&#039;&amp;quot;&#039;, &#039;&amp;amp;quot;&#039;)&lt;br /&gt;
        out = &#039;&amp;lt;span class=&amp;quot;kr-get&amp;quot; title=&amp;quot;&#039; .. escDesc .. &#039;&amp;quot;&amp;gt;&#039; .. out .. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Keys normalisieren: trim, lower, Leerzeichen → _&lt;br /&gt;
local function normalizeKey(key)&lt;br /&gt;
    if not key then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    key = mw.text.trim(tostring(key))&lt;br /&gt;
    if key == &#039;&#039; then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    key = mw.ustring.lower(key)&lt;br /&gt;
    key = key:gsub(&#039;[%s_]+&#039;, &#039;_&#039;)&lt;br /&gt;
    return key&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Datensatz-Namen (Item/Items, Hero/Heroes…) normalisieren&lt;br /&gt;
local function normalizeDatasetKey(datasetRaw)&lt;br /&gt;
    local datasetKey = normalizeKey(datasetRaw)&lt;br /&gt;
    if not datasetKey then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if datasetKey == &#039;items&#039; then&lt;br /&gt;
        datasetKey = &#039;item&#039;&lt;br /&gt;
    elseif datasetKey == &#039;events&#039; then&lt;br /&gt;
        datasetKey = &#039;event&#039;&lt;br /&gt;
    elseif datasetKey == &#039;heroes&#039; then&lt;br /&gt;
        datasetKey = &#039;hero&#039;&lt;br /&gt;
    elseif datasetKey == &#039;guardians&#039; then&lt;br /&gt;
        datasetKey = &#039;guardian&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return datasetKey&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
-- Hauptfunktion&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args       = frame.args&lt;br /&gt;
    local datasetRaw = args.dataset or args[1]&lt;br /&gt;
    local method     = args.method  or args[2] or &#039;link&#039;&lt;br /&gt;
    local keyRaw     = args.key     or args[3]&lt;br /&gt;
    local noTooltip  = args.noTooltip == &#039;1&#039; or args.notooltip == &#039;1&#039;&lt;br /&gt;
&lt;br /&gt;
    local datasetKey = normalizeDatasetKey(datasetRaw)&lt;br /&gt;
    local key        = normalizeKey(keyRaw)&lt;br /&gt;
&lt;br /&gt;
    if not datasetKey or not key then&lt;br /&gt;
        return &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local group = data[datasetKey]&lt;br /&gt;
    if not group then&lt;br /&gt;
        -- unbekannter Datensatz → gib originalen Key zurück (zerstört Seite nicht)&lt;br /&gt;
        return keyRaw or &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local raw = group[key]&lt;br /&gt;
    if not raw then&lt;br /&gt;
        return keyRaw or &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local displayKey = keyRaw or key&lt;br /&gt;
    local title      = raw.title or displayKey&lt;br /&gt;
    local short      = raw.short or title&lt;br /&gt;
&lt;br /&gt;
    -- Platzhalter anwenden&lt;br /&gt;
    local desc = applyPlaceholder(raw.desc, title)&lt;br /&gt;
    local link = applyPlaceholder(raw.link, title)&lt;br /&gt;
&lt;br /&gt;
    -- Bild bestimmen&lt;br /&gt;
    local chosenImg&lt;br /&gt;
    if raw.img and fileExists(raw.img) then&lt;br /&gt;
        chosenImg = raw.img&lt;br /&gt;
    elseif fileExists(title) then&lt;br /&gt;
        -- Fallback: Datei mit gleichem Namen wie der Titel&lt;br /&gt;
        chosenImg = title&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    method = tostring(method):lower()&lt;br /&gt;
&lt;br /&gt;
    if method == &#039;title&#039; then&lt;br /&gt;
        return wrapWithTooltip(title, nil, desc, noTooltip)&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;short&#039; then&lt;br /&gt;
        return wrapWithTooltip(short, nil, desc, noTooltip)&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;link&#039; then&lt;br /&gt;
        return wrapWithTooltip(short, link, desc, noTooltip)&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;img&#039; then&lt;br /&gt;
        if not chosenImg then&lt;br /&gt;
            return &#039;&#039;&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local alt = title or &#039;&#039;&lt;br /&gt;
        if link and link ~= &#039;&#039; and not link:match(&#039;^%[&#039;) then&lt;br /&gt;
            -- internes Linkziel&lt;br /&gt;
            return &#039;[[Datei:&#039; .. chosenImg .. &#039;|link=&#039; .. link .. &#039;|alt=&#039; .. alt .. &#039;]]&#039;&lt;br /&gt;
        else&lt;br /&gt;
            return &#039;[[Datei:&#039; .. chosenImg .. &#039;|alt=&#039; .. alt .. &#039;]]&#039;&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;desc&#039; then&lt;br /&gt;
        return desc or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    else&lt;br /&gt;
        -- Fallback: wie &amp;quot;link&amp;quot;&lt;br /&gt;
        return wrapWithTooltip(short, link, desc, noTooltip)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Get&amp;diff=230</id>
		<title>Vorlage:Get</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Get&amp;diff=230"/>
		<updated>2025-12-08T21:10:29Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:Get|main&lt;br /&gt;
 | dataset  = {{{dataset|{{{1|}}}}}}&lt;br /&gt;
 | method   = {{{method|{{{2|link}}}}}}&lt;br /&gt;
 | key      = {{{key|{{{3|}}}}}}&lt;br /&gt;
 | noTooltip= {{{noTooltip|{{{notooltip|}}}}}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Get&amp;diff=229</id>
		<title>Vorlage:Get</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Get&amp;diff=229"/>
		<updated>2025-12-08T21:10:01Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: Die Seite wurde neu angelegt: „&amp;lt;!-- Vorlage:Get --&amp;gt; {{#invoke:Get|main  | dataset  = {{{dataset|{{{1|}}}}}}  | method   = {{{method|{{{2|link}}}}}}  | key      = {{{key|{{{3|}}}}}}  | noTooltip= {{{noTooltip|{{{notooltip|}}}}}} }}“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Vorlage:Get --&amp;gt;&lt;br /&gt;
{{#invoke:Get|main&lt;br /&gt;
 | dataset  = {{{dataset|{{{1|}}}}}}&lt;br /&gt;
 | method   = {{{method|{{{2|link}}}}}}&lt;br /&gt;
 | key      = {{{key|{{{3|}}}}}}&lt;br /&gt;
 | noTooltip= {{{noTooltip|{{{notooltip|}}}}}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Modul:Get&amp;diff=228</id>
		<title>Modul:Get</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Modul:Get&amp;diff=228"/>
		<updated>2025-12-08T21:07:07Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Modul:Get&lt;br /&gt;
-- Allgemeiner Zugriff auf strukturierte Daten (Item/Event/Hero/Guardian/…)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local DATA_MODULE = &#039;Modul:Get/Data&#039;&lt;br /&gt;
local data = mw.loadData(DATA_MODULE)&lt;br /&gt;
&lt;br /&gt;
-- Datei-Existenz prüfen&lt;br /&gt;
local function fileExists(name)&lt;br /&gt;
    if not name or name == &#039;&#039; then&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local titleObj = mw.title.makeTitle(&#039;File&#039;, name)&lt;br /&gt;
    if not titleObj then&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local fileObj = titleObj.file&lt;br /&gt;
    if not fileObj or not fileObj.exists then&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- $1 → title&lt;br /&gt;
local function applyPlaceholder(text, title)&lt;br /&gt;
    if not text or text == &#039;&#039; then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- %$1 = literal &amp;quot;$1&amp;quot;&lt;br /&gt;
    return text:gsub(&#039;%$1&#039;, function()&lt;br /&gt;
        return title or &#039;&#039;&lt;br /&gt;
    end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Tooltip + optional Link&lt;br /&gt;
local function wrapWithTooltip(labelText, linkTarget, desc, noTooltip)&lt;br /&gt;
    if not labelText or labelText == &#039;&#039; then&lt;br /&gt;
        return &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local out = labelText&lt;br /&gt;
&lt;br /&gt;
    -- Link bauen, falls vorhanden&lt;br /&gt;
    if linkTarget and linkTarget ~= &#039;&#039; then&lt;br /&gt;
        if linkTarget:match(&#039;^%[%[&#039;) or linkTarget:match(&#039;^%[&#039;) then&lt;br /&gt;
            -- bereits fertiger Wiki-/Externer Link&lt;br /&gt;
            out = linkTarget&lt;br /&gt;
        else&lt;br /&gt;
            -- interner Link: [[Seite|Label]]&lt;br /&gt;
            out = &#039;[[&#039; .. linkTarget .. &#039;|&#039; .. labelText .. &#039;]]&#039;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Tooltip über title-Attribut&lt;br /&gt;
    if desc and desc ~= &#039;&#039; and not noTooltip then&lt;br /&gt;
        local escDesc = desc:gsub(&#039;&amp;quot;&#039;, &#039;&amp;amp;quot;&#039;)&lt;br /&gt;
        out = &#039;&amp;lt;span class=&amp;quot;kr-get&amp;quot; title=&amp;quot;&#039; .. escDesc .. &#039;&amp;quot;&amp;gt;&#039; .. out .. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Keys normalisieren: trim, lower, Leerzeichen → _&lt;br /&gt;
local function normalizeKey(key)&lt;br /&gt;
    if not key then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    key = mw.text.trim(tostring(key))&lt;br /&gt;
    if key == &#039;&#039; then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    key = mw.ustring.lower(key)&lt;br /&gt;
    key = key:gsub(&#039;[%s_]+&#039;, &#039;_&#039;)&lt;br /&gt;
    return key&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Datensatz-Namen (Item/Items, Hero/Heroes…) normalisieren&lt;br /&gt;
local function normalizeDatasetKey(datasetRaw)&lt;br /&gt;
    local datasetKey = normalizeKey(datasetRaw)&lt;br /&gt;
    if not datasetKey then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if datasetKey == &#039;items&#039; then&lt;br /&gt;
        datasetKey = &#039;item&#039;&lt;br /&gt;
    elseif datasetKey == &#039;events&#039; then&lt;br /&gt;
        datasetKey = &#039;event&#039;&lt;br /&gt;
    elseif datasetKey == &#039;heroes&#039; then&lt;br /&gt;
        datasetKey = &#039;hero&#039;&lt;br /&gt;
    elseif datasetKey == &#039;guardians&#039; then&lt;br /&gt;
        datasetKey = &#039;guardian&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return datasetKey&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
-- Hauptfunktion&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args       = frame.args&lt;br /&gt;
    local datasetRaw = args.dataset or args[1]&lt;br /&gt;
    local method     = args.method  or args[2] or &#039;link&#039;&lt;br /&gt;
    local keyRaw     = args.key     or args[3]&lt;br /&gt;
    local noTooltip  = args.noTooltip == &#039;1&#039; or args.notooltip == &#039;1&#039;&lt;br /&gt;
&lt;br /&gt;
    local datasetKey = normalizeDatasetKey(datasetRaw)&lt;br /&gt;
    local key        = normalizeKey(keyRaw)&lt;br /&gt;
&lt;br /&gt;
    if not datasetKey or not key then&lt;br /&gt;
        return &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local group = data[datasetKey]&lt;br /&gt;
    if not group then&lt;br /&gt;
        -- unbekannter Datensatz → gib originalen Key zurück (zerstört Seite nicht)&lt;br /&gt;
        return keyRaw or &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local raw = group[key]&lt;br /&gt;
    if not raw then&lt;br /&gt;
        return keyRaw or &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local displayKey = keyRaw or key&lt;br /&gt;
    local title      = raw.title or displayKey&lt;br /&gt;
    local short      = raw.short or title&lt;br /&gt;
&lt;br /&gt;
    -- Platzhalter anwenden&lt;br /&gt;
    local desc = applyPlaceholder(raw.desc, title)&lt;br /&gt;
    local link = applyPlaceholder(raw.link, title)&lt;br /&gt;
&lt;br /&gt;
    -- Bild bestimmen&lt;br /&gt;
    local chosenImg&lt;br /&gt;
    if raw.img and fileExists(raw.img) then&lt;br /&gt;
        chosenImg = raw.img&lt;br /&gt;
    elseif fileExists(title) then&lt;br /&gt;
        -- Fallback: Datei mit gleichem Namen wie der Titel&lt;br /&gt;
        chosenImg = title&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    method = tostring(method):lower()&lt;br /&gt;
&lt;br /&gt;
    if method == &#039;title&#039; then&lt;br /&gt;
        return wrapWithTooltip(title, nil, desc, noTooltip)&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;short&#039; then&lt;br /&gt;
        return wrapWithTooltip(short, nil, desc, noTooltip)&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;link&#039; then&lt;br /&gt;
        return wrapWithTooltip(short, link, desc, noTooltip)&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;img&#039; then&lt;br /&gt;
        if not chosenImg then&lt;br /&gt;
            return &#039;&#039;&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local alt = title or &#039;&#039;&lt;br /&gt;
        if link and link ~= &#039;&#039; and not link:match(&#039;^%[&#039;) then&lt;br /&gt;
            -- internes Linkziel&lt;br /&gt;
            return &#039;[[Datei:&#039; .. chosenImg .. &#039;|link=&#039; .. link .. &#039;|alt=&#039; .. alt .. &#039;]]&#039;&lt;br /&gt;
        else&lt;br /&gt;
            return &#039;[[Datei:&#039; .. chosenImg .. &#039;|alt=&#039; .. alt .. &#039;]]&#039;&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;desc&#039; then&lt;br /&gt;
        return desc or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    else&lt;br /&gt;
        -- Fallback: wie &amp;quot;link&amp;quot;&lt;br /&gt;
        return wrapWithTooltip(short, link, desc, noTooltip)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Modul:Get/Data&amp;diff=227</id>
		<title>Modul:Get/Data</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Modul:Get/Data&amp;diff=227"/>
		<updated>2025-12-08T21:06:42Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Modul:Get/Data&lt;br /&gt;
-- Zentrale Sammelstelle für Datensätze&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
    item = mw.loadData(&#039;Modul:Get/Data/Item&#039;),&lt;br /&gt;
    -- event    = mw.loadData(&#039;Modul:Get/Data/Event&#039;),&lt;br /&gt;
    -- hero     = mw.loadData(&#039;Modul:Get/Data/Hero&#039;),&lt;br /&gt;
    -- guardian = mw.loadData(&#039;Modul:Get/Data/Guardian&#039;),&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Modul:Get/Data/Item&amp;diff=226</id>
		<title>Modul:Get/Data/Item</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Modul:Get/Data/Item&amp;diff=226"/>
		<updated>2025-12-08T21:06:13Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: Die Seite wurde neu angelegt: „-- Modul:Get/Data/Item  return {      gold = {         [&amp;#039;title&amp;#039;] = &amp;#039;Gold&amp;#039;,         [&amp;#039;link&amp;#039;]  = &amp;#039;Währungen#$1&amp;#039;,         [&amp;#039;desc&amp;#039;]  = &amp;#039;Eine der Hauptwährungen. Du erhältst $1, wenn deine Gruppe auf dem Schlachtfeld Gegner besiegt. $1 wird für $1-Verbesserungen genutzt und bestimmt, wie viele Firestones du beim Prestige im Tempel der Ewigen bekommst.&amp;#039;,         [&amp;#039;img&amp;#039;]   = &amp;#039;CurrencyGold&amp;#039;,     },      firestones = {         [&amp;#039;title&amp;#039;] = &amp;#039;Fireston…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Modul:Get/Data/Item&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
&lt;br /&gt;
    gold = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Gold&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;Eine der Hauptwährungen. Du erhältst [[$1]], wenn deine [[Gruppe]] auf dem [[Schlachtfeld]] Gegner besiegt. $1 wird für $1-Verbesserungen genutzt und bestimmt, wie viele Firestones du beim Prestige im Tempel der Ewigen bekommst.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyGold&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    firestones = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Firestones&#039;,  -- bleibt Englisch, wie gewünscht&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 sind die zweite Hauptwährung und Namensgeber des Spiels. Du bekommst $1, wenn du den Tempel der Ewigen ermächtigst. $1 erhöhen dauerhaft deinen Gold-Gewinn.&#039;,&lt;br /&gt;
        -- [&#039;img&#039;]   = &#039;CurrencyFirestone&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    gems = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Juwelen&#039;,     -- offizieller Wiki-Name&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 sind eine Premiumwährung. Du kannst $1 mit Plattformwährung im Shop, in Extremwert-Bundles und in Spezialangeboten kaufen oder kostenlos über tägliche Belohnungen, wöchentliche Quests und Kartenziehungen erhalten. $1 werden für Ausrüstungstruhen, Inventargegenstände und andere Währungen im Shop verwendet.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyGem&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    void_crystals = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Voidkristalle&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 erhältst du, wenn du doppelte Ausrüstung ziehst oder sie über bestimmte Angebote kaufst. Im Hall of Heroes werden $1 eingesetzt, um die Ausrüstung deiner Helden aufzuwerten.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyVoidCrystal&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    meteorites = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Meteoriten&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 werden automatisch von Minern gesammelt (eine pro Minute) und kommen zusätzlich aus täglichen Belohnungen, täglichen Quests und Kartenziehungen. Bestimmte Talente und Upgrades erhöhen den Gewinn. $1 werden für Meteoritenforschung in der Bibliothek und zum Freischalten höherer Ausrüstungsstufen genutzt.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyMeteorite&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    talent_points = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Talentpunkte&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;Mit jedem Charakterlevel erhältst du $1, die du im Talentbaum ausgibst, um verschiedene dauerhafte Verbesserungen freizuschalten.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyTalentPoint&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    honor = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Ehre&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 erlangst du durch Missionen, tägliche Belohnungen, tägliche Quests und Kartenziehungen oder über bestimmte Angebote. $1 bestimmt deinen Rang und wird mit dem Ehreneffekt multipliziert, um einen Bonus auf alle Hauptattribute zu gewähren.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyHonor&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    strange_dust = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Strange Dust&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 kommt vor allem aus Spähermissionen, täglichen Belohnungen, täglichen Quests und Kartenziehungen sowie aus dem Item-Shop und besonderen Angeboten. $1 wird im Magic Quarter für Wächtererleuchtung und -entwicklung, beim Alchemisten für Experimente und Transmutationen und zum Freischalten von Soulstones der Stufe 2 verwendet.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyStrangeDust&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    glory = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Glory&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 verdienst du, indem du tägliche und wöchentliche Herausforderungen des Battle Pass abschließt. $1 wird benötigt, um Truhen und Währungen im Battle Pass einzulösen und zeitlich begrenzte Buffs freizuschalten.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyGlory&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    contracts = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Verträge&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 erhältst du aus der Taverne, dem Battle Pass und Mini-Events. $1 werden benötigt, um Söldner auf dem Piratenschiff anzuheuern und im Hall of Heroes die Seltenheit deiner Helden zu erhöhen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyContracts&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    guild_coins = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Gildenmünzen&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 schaltest du mit Charakterlevel 10 frei. $1 werden genutzt, um den Lebensbaum deiner Gilde zu verbessern. Du erhältst $1 über Gildenexpeditionen oder durch spezielle Angebote im Gildenshop.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyGuildCoin&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    expedition_tokens = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Expeditionsmarken&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 schaltest du mit Charakterlevel 10 frei. $1 verbessern deinen persönlichen Lebensbaum und erhöhen das Level deiner Kriegsmaschinen. Außerdem kannst du mit $1 Spitzhacken, Emblems of Valor und Juwelentruhen im Gildenshop kaufen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyExpeditionToken&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    beer = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Bier&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 wird ab Charakterlevel 15 freigeschaltet. $1 fällt auf dem Schlachtfeld in einem festen Rhythmus und kann zusätzlich als Belohnung aus der Taverne kommen. Gilden- und Kampagnenboni sowie bestimmte Talente erhöhen den $1-Gewinn. $1 wird im Tavernenmarkt verwendet, um Game Tokens zu kaufen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyBeer&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    game_tokens = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Game Tokens&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 schaltest du ab Charakterlevel 15 frei. $1 können mit Bier oder Juwelen im Tavernenmarkt gekauft werden und werden genutzt, um Karten in der Taverne zu ziehen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyGameToken&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    luck = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Glück&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 wird ab Charakterlevel 15 freigeschaltet. $1 erhältst du beim Ziehen von Karten in der Taverne; die Menge hängt von Art und Anzahl der Belohnungen ab. Dein $1-Level gibt dauerhafte Boni auf Attribute, Gold- und Meteoritengewinn und beeinflusst, wie viele Gegenstände du aus bestimmten Kartenbelohnungen erhältst.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyLuck&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    golden_keys = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Goldene Schlüssel&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 werden ab Charakterlevel 15 freigeschaltet und können als zufällige Belohnung aus der Taverne droppen. Du verwendest $1, um Amulette im Shop zu kaufen und Ancient Artifacts in der Taverne zu verzaubern.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyGoldenKey&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    prestige_tokens = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Prestigemarken&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 werden ab Glückslevel 2 freigeschaltet und können als Belohnung aus der Taverne erscheinen. $1 werden im Tempel der Ewigen für epische Prestiges eingesetzt.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyPrestigeToken&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    exotic_coins = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Exotische Münzen&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 schaltest du mit Charakterlevel 30 frei. $1 erhältst du, indem du ungenutzte Inventargegenstände beim Exotic Merchant verkaufst oder sie über Kartenziehungen und Angebote bekommst. $1 werden für exotische Upgrades beim Exotic Merchant genutzt.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyExoticCoin&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    arcane_crystals = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Arkankristalle&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 werden ab Charakterlevel 50 freigeschaltet. Du baust $1 an der Arkankristall-Stelle im Gildenbildschirm ab und erhältst sie anschließend per Ingame-Post. $1 werden für das Awakening deiner Helden verwendet.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyArcaneCrystal&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    ethereal_shards = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Ätherische Splitter&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 schaltest du mit Charakterlevel 50 frei. $1 erhältst du, wenn du doppelte Juwelen ziehst. Im Hall of Heroes dienen $1 dazu, die Juwelen deiner Helden aufzuwerten.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyEtherealShard&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    blueprints = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Baupläne&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 werden ab Charakterlevel 50 freigeschaltet. Du bekommst $1 aus Kampagnenmissionen, Kampagnenbeute und der täglichen Befreiungsquest oder kaufst sie mit Expeditionsmarken im Gildenshop. $1 verbessern die Attribute deiner Kriegsmaschinen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyBlueprint&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    tools = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Werkzeuge&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 werden ab Charakterlevel 50 freigeschaltet. Du kannst $1 beim Engineer abholen oder mit Expeditionsmarken im Gildenshop kaufen. $1 werden genutzt, um die Seltenheit deiner Kriegsmaschinen zu erhöhen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyTool&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    emblems_of_valor = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Embleme des Mutes&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 schaltest du mit Charakterlevel 50 frei. $1 erhältst du aus Kampagnen- und Befreiungsmissionen, aus Kampagnenbeute oder über den Gildenshop gegen Expeditionsmarken. $1 werden im Emblem Market des Exotic Merchant verwendet, um Juwelentruhen zu kaufen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyEmblemOfValor&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    elixirs_of_life = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Lebenselixiere&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 werden ab Charakterlevel 50 und 70 Kampagnensternen freigeschaltet. Du erhältst $1 aus Dungeon-Missionen oder kaufst sie mit Expeditionsmarken im Gildenshop. $1 werden beim Alchemisten benutzt, um Juwelentruhen zu transmutieren.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyElixirOfLife&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    emblems_of_courage = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Embleme der Tapferkeit&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 schaltest du mit Charakterlevel 65 frei. $1 erhältst du aus Missionsbelohnungen und Kartenziehungen oder kaufst sie mit Juwelen im Item-Shop. $1 dienen zum Kauf von Ausrüstungstruhen im Emblem Market des Exotic Merchant.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyEmblemOfCourage&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    pickaxes = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Spitzhacken&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 werden ab Charakterlevel 50 freigeschaltet. Du kannst $1 kostenlos in begrenzter Menge beanspruchen oder mit Expeditionsmarken im Gildenshop erwerben. $1 werden benutzt, um den Arkankristall im Gildenbildschirm abzubauen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyPickaxe&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    nobles_token = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Noble-Tokens&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 werden ab Charakterlevel 60 freigeschaltet. Du erhältst täglich 10 $1 gratis, bis zu einem Maximum von 10. $1 werden verwendet, um Scarab’s Game zu spielen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyNoblesToken&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    pharaohs_tokens = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Pharaonenmarken&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 werden ab Charakterlevel 60 freigeschaltet und können mit Expeditionsmarken im Scarab’s Shop gekauft werden. Du nutzt $1, um Scarab’s Game zu spielen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyPharaohsToken&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    ancient_coins = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Antike Münzen&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 werden ab Charakterlevel 60 freigeschaltet. Du erhältst $1, wenn du Scarab’s Game spielst, und gibst sie aus, um Truhen in der Pharaoh’s Vault zu öffnen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyAncientCoin&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    scarabs = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Skarabäen&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 werden ab Charakterlevel 60 freigeschaltet. Du bekommst $1 aus Truhen in der Pharaoh’s Vault; die Menge hängt vom Belohnungstyp und der Anzahl der erhaltenen Items ab. Dein $1-Level verleiht dauerhafte Attributsboni und bestimmt unter anderem, wie viele Lost Inscriptions du aus Kisten bekommst.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyScarab&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    soul_embers = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Seelenfunken&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 werden ab Charakterlevel 60 freigeschaltet und können als Belohnung aus der Pharaoh’s Vault droppen. Du verwendest $1, um Beasts in Scarab’s Game aufzuleveln.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencySoulEmber&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    cobra_keys = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Kobraschlüssel&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 werden ab Charakterlevel 60 freigeschaltet und können als Belohnung aus Kartenziehungen in der Taverne erscheinen. $1 werden genutzt, um Beasts in Scarab’s Game zu verzaubern.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyCobraKey&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    twilight_hourglasses = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Zwielicht-Sanduhrgläser&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 werden ab Charakterlevel 60 freigeschaltet und können als Belohnung aus der Pharaoh’s Vault droppen. Du verwendest $1, um Ancient Artifacts in der Taverne aufzuleveln.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyTwilightHourglass&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    moon_stones = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Mondsteine&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 werden ab Charakterlevel 100 freigeschaltet. Du erhältst jeden Tag 10 $1 kostenlos (bis zu einem Maximum von 10). $1 werden genutzt, um die Dark Gods im Chaos Rift anzugreifen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyMoonStone&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    eclipse_stones = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Eklipssteine&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 werden ab Charakterlevel 100 freigeschaltet. Du kannst $1 im Chaos Rift Shop kaufen oder in der Pharaoh’s Vault finden. $1 dienen dazu, die Dark Gods weiter anzugreifen, wenn dir die Mondsteine ausgehen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyEclipseStone&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    orbs_of_light = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Lichtkugeln&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 werden ab Charakterlevel 100 freigeschaltet. Du erhältst $1, wenn du im Chaos Rift einen Dark God triffst. $1 werden genutzt, um den Heilig-Schaden deiner Guardians zu erhöhen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyOrbOfLight&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    dark_runes = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Dunkle Runen&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 werden ab Charakterlevel 100 freigeschaltet. Du bekommst $1 als Belohnung, wenn du einen Dark God im Chaos Rift triffst. $1 werden im Chaos Rift Shop ausgegeben, um Tomes of Power zu kaufen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyDarkRune&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    dragon_blood = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Drachenblut&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 wird ab Charakterlevel 120 freigeschaltet. Du erhältst $1 aus Drachenmissionen, Kartenziehungen und über den Item-Shop gegen Juwelen. $1 wird in den Experimenten und Transmutationen des Alchemisten verwendet.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyDragonBlood&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    soul_shards = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Seelensplitter&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 werden ab Charakterlevel 200 freigeschaltet. Du bekommst $1, wenn du doppelte Soulstones ziehst. Im Hall of Heroes werden $1 benutzt, um Soulstones aufzuwerten.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencySoulShard&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    virtue = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Tugend&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 wird ab Charakterlevel 200 freigeschaltet. Du erhältst $1, indem du Segnungen beim Oracle kaufst oder sie im Orakelshop und in Spezialangeboten erwirbst. $1 erhöht dein Oracle-Level, was Ritualgewinne steigert und deinem Firestone-Gewinn einen permanenten Bonus verleiht.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyVirtue&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    emblems_of_brotherhood = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Embleme der Bruderschaft&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 werden ab Charakterlevel 200 freigeschaltet. Du erhältst $1, wenn du Rituale beim Oracle durchführst oder Truhen in der Pharaoh’s Vault öffnest. $1 werden im Emblem Market des Exotic Merchant verwendet, um Celestial Chests zu kaufen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyEmblemOfBrotherhood&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    star_essence = {&lt;br /&gt;
        [&#039;title&#039;] = &#039;Sternenessenz&#039;,&lt;br /&gt;
        [&#039;link&#039;]  = &#039;Währungen#$1&#039;,&lt;br /&gt;
        [&#039;desc&#039;]  = &#039;$1 wird ab Charakterlevel 200 freigeschaltet. Du bekommst $1 durch Rituale beim Oracle und als Beute aus der Pharaoh’s Vault. $1 wird beim Alchemisten genutzt, um Celestial Chests zu transmutieren.&#039;,&lt;br /&gt;
        [&#039;img&#039;]   = &#039;CurrencyStarEssence&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Modul:Get/Data&amp;diff=225</id>
		<title>Modul:Get/Data</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Modul:Get/Data&amp;diff=225"/>
		<updated>2025-12-08T20:28:50Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: Die Seite wurde neu angelegt: „-- Modul:Get/Data -- Zentrale Sammelstelle, die nur andere Data-Module lädt.  return {     Item     = mw.loadData(&amp;#039;Modul:Get/Data/Item&amp;#039;),     Event    = mw.loadData(&amp;#039;Modul:Get/Data/Event&amp;#039;),     -- Hero     = mw.loadData(&amp;#039;Modul:Get/Data/Hero&amp;#039;),     -- Guardian = mw.loadData(&amp;#039;Modul:Get/Data/Guardian&amp;#039;), }“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Modul:Get/Data&lt;br /&gt;
-- Zentrale Sammelstelle, die nur andere Data-Module lädt.&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
    Item     = mw.loadData(&#039;Modul:Get/Data/Item&#039;),&lt;br /&gt;
    Event    = mw.loadData(&#039;Modul:Get/Data/Event&#039;),&lt;br /&gt;
    -- Hero     = mw.loadData(&#039;Modul:Get/Data/Hero&#039;),&lt;br /&gt;
    -- Guardian = mw.loadData(&#039;Modul:Get/Data/Guardian&#039;),&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Modul:Get&amp;diff=224</id>
		<title>Modul:Get</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Modul:Get&amp;diff=224"/>
		<updated>2025-12-08T20:23:28Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: Die Seite wurde neu angelegt: „-- Modul:Get -- Allgemeiner Zugriff auf strukturierte Daten (Item/Event/Hero/Guardian/…) -- Aufruf über Vorlage:Get → {{Get|DATA|METHODE|KEY}}  local p = {}  local DATA_MODULE = &amp;#039;Modul:Get/Data&amp;#039; local data = mw.loadData( DATA_MODULE )  -- -------------------------------------------------------- -- Hilfsfunktionen -- --------------------------------------------------------  local function fileExists(name)     if not name or name == &amp;#039;&amp;#039; then         ret…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Modul:Get&lt;br /&gt;
-- Allgemeiner Zugriff auf strukturierte Daten (Item/Event/Hero/Guardian/…)&lt;br /&gt;
-- Aufruf über Vorlage:Get → {{Get|DATA|METHODE|KEY}}&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local DATA_MODULE = &#039;Modul:Get/Data&#039;&lt;br /&gt;
local data = mw.loadData( DATA_MODULE )&lt;br /&gt;
&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
-- Hilfsfunktionen&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function fileExists(name)&lt;br /&gt;
    if not name or name == &#039;&#039; then&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- &amp;quot;File&amp;quot; = Datei-Namensraum&lt;br /&gt;
    local titleObj = mw.title.makeTitle(&#039;File&#039;, name)&lt;br /&gt;
    if not titleObj then&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local fileObj = titleObj.file&lt;br /&gt;
    if not fileObj or not fileObj.exists then&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function applyPlaceholder(text, title)&lt;br /&gt;
    if not text or text == &#039;&#039; then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- ersetzt $1 im Text durch den Title&lt;br /&gt;
    return text:gsub(&#039;$1&#039;, function()&lt;br /&gt;
        return title or &#039;&#039;&lt;br /&gt;
    end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wrapWithTooltip(labelText, linkTarget, desc, noTooltip)&lt;br /&gt;
    if not labelText or labelText == &#039;&#039; then&lt;br /&gt;
        return &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local out = labelText&lt;br /&gt;
&lt;br /&gt;
    -- Link bauen, falls vorhanden&lt;br /&gt;
    if linkTarget and linkTarget ~= &#039;&#039; then&lt;br /&gt;
        -- Wenn der Link schon fertiges Wikitext ist ([...] oder [[...]]),&lt;br /&gt;
        -- dann nicht doppelt einpacken&lt;br /&gt;
        if linkTarget:match(&#039;^%[%[&#039;) or linkTarget:match(&#039;^%[&#039;) then&lt;br /&gt;
            out = linkTarget&lt;br /&gt;
        else&lt;br /&gt;
            -- interner Link: [[Seite|Label]]&lt;br /&gt;
            out = &#039;[[&#039; .. linkTarget .. &#039;|&#039; .. labelText .. &#039;]]&#039;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Tooltip nur, wenn eine Beschreibung existiert und nicht explizit deaktiviert&lt;br /&gt;
    if desc and desc ~= &#039;&#039; and not noTooltip then&lt;br /&gt;
        local escDesc = desc:gsub(&#039;&amp;quot;&#039;, &#039;&amp;amp;quot;&#039;)&lt;br /&gt;
        out = &#039;&amp;lt;span class=&amp;quot;kr-get&amp;quot; title=&amp;quot;&#039; .. escDesc .. &#039;&amp;quot;&amp;gt;&#039; .. out .. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
-- Hauptfunktion&lt;br /&gt;
-- --------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    -- Unterstützung für sowohl Template-Aufruf als auch direkten #invoke:&lt;br /&gt;
    local args    = frame.args&lt;br /&gt;
    local dataset = args.dataset or args[1]&lt;br /&gt;
    local method  = args.method  or args[2] or &#039;link&#039;&lt;br /&gt;
    local key     = args.key     or args[3]&lt;br /&gt;
    local noTooltip = args.noTooltip == &#039;1&#039; or args.notooltip == &#039;1&#039;&lt;br /&gt;
&lt;br /&gt;
    if not dataset or dataset == &#039;&#039; or not key or key == &#039;&#039; then&lt;br /&gt;
        return &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local group = data[dataset]&lt;br /&gt;
    if not group then&lt;br /&gt;
        -- unbekannter Datensatz → gib einfach den Key zurück, damit die Seite nicht &amp;quot;kaputt&amp;quot; ist&lt;br /&gt;
        return key&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local raw = group[key]&lt;br /&gt;
    if not raw then&lt;br /&gt;
        -- unbekannter Schlüssel → gib Key zurück&lt;br /&gt;
        return key&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local title = raw.title or key           -- Pflicht (aber mit Fallback)&lt;br /&gt;
    local short = raw.short or title         -- Fallback von short → title&lt;br /&gt;
&lt;br /&gt;
    -- Platzhalter in desc/link anwenden&lt;br /&gt;
    local desc = applyPlaceholder(raw.desc, title)&lt;br /&gt;
    local link = applyPlaceholder(raw.link, title)&lt;br /&gt;
&lt;br /&gt;
    -- Bild auswählen&lt;br /&gt;
    local chosenImg&lt;br /&gt;
&lt;br /&gt;
    if raw.img and fileExists(raw.img) then&lt;br /&gt;
        chosenImg = raw.img&lt;br /&gt;
    elseif fileExists(title) then&lt;br /&gt;
        -- Versuch: Datei mit dem gleichen Namen wie der Title (ohne &amp;quot;Datei:&amp;quot;)&lt;br /&gt;
        chosenImg = title&lt;br /&gt;
    end&lt;br /&gt;
    -- wenn beides nicht existiert → chosenImg bleibt nil → kein Bild&lt;br /&gt;
&lt;br /&gt;
    -- Methode normalisieren&lt;br /&gt;
    method = tostring(method):lower()&lt;br /&gt;
&lt;br /&gt;
    if method == &#039;title&#039; then&lt;br /&gt;
        -- Nur Titel (mit optionalem Tooltip, aber ohne Link)&lt;br /&gt;
        return wrapWithTooltip(title, nil, desc, noTooltip)&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;short&#039; then&lt;br /&gt;
        -- Short-Text (mit optionalem Tooltip, aber ohne Link)&lt;br /&gt;
        return wrapWithTooltip(short, nil, desc, noTooltip)&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;link&#039; then&lt;br /&gt;
        -- Short (oder Title) als Label, Link falls vorhanden, Tooltip falls vorhanden&lt;br /&gt;
        return wrapWithTooltip(short, link, desc, noTooltip)&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;img&#039; then&lt;br /&gt;
        -- Nur das Bild (mit optionalem Link, aber kein Tooltip-Span, damit es sauber bleibt)&lt;br /&gt;
        if not chosenImg then&lt;br /&gt;
            return &#039;&#039;&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local alt = title or &#039;&#039;&lt;br /&gt;
        if link and link ~= &#039;&#039; and not (link:match(&#039;^%[&#039;)) then&lt;br /&gt;
            -- internes Link-Ziel&lt;br /&gt;
            return &#039;[[Datei:&#039; .. chosenImg .. &#039;|link=&#039; .. link .. &#039;|alt=&#039; .. alt .. &#039;]]&#039;&lt;br /&gt;
        else&lt;br /&gt;
            -- kein/eigener Link&lt;br /&gt;
            return &#039;[[Datei:&#039; .. chosenImg .. &#039;|alt=&#039; .. alt .. &#039;]]&#039;&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
    elseif method == &#039;desc&#039; then&lt;br /&gt;
        -- reine Beschreibung (Plaintext/WikiText), ohne Tooltip-Wrapper&lt;br /&gt;
        return desc or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    else&lt;br /&gt;
        -- Unbekannte Methode → Standard: wie &amp;quot;link&amp;quot;&lt;br /&gt;
        return wrapWithTooltip(short, link, desc, noTooltip)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Modul:Item&amp;diff=223</id>
		<title>Modul:Item</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Modul:Item&amp;diff=223"/>
		<updated>2025-12-01T18:07:37Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Modul:Item – Firestone-Version&lt;br /&gt;
--&lt;br /&gt;
-- Bietet (für andere Vorlagen):&lt;br /&gt;
--   #invoke:Item|title|key       -&amp;gt; &amp;quot;Gold&amp;quot;&lt;br /&gt;
--   #invoke:Item|short|key       -&amp;gt; Kurzname oder Titel&lt;br /&gt;
--   #invoke:Item|desc|key        -&amp;gt; Beschreibung (describe/description)&lt;br /&gt;
--   #invoke:Item|img|key         -&amp;gt; Bild-Basename oder &#039;&#039; (wenn kein Bild)&lt;br /&gt;
--   #invoke:Item|link|key        -&amp;gt; Seitentitel, z.B. &amp;quot;Währung#Gold&amp;quot; oder &amp;quot;Blob&amp;quot;&lt;br /&gt;
--   #invoke:Item|tooltip|key|... -&amp;gt; fertige Tooltip-Ausgabe (Label über |label=)&lt;br /&gt;
--&lt;br /&gt;
-- Datengrundlage: [[Modul:Item/Data]]&lt;br /&gt;
&lt;br /&gt;
local p    = {}&lt;br /&gt;
local DATA = mw.loadData( &#039;Modul:Item/Data&#039; )&lt;br /&gt;
&lt;br /&gt;
local ustr = mw.ustring&lt;br /&gt;
local text = mw.text&lt;br /&gt;
&lt;br /&gt;
-- =========================&lt;br /&gt;
-- Konfiguration&lt;br /&gt;
-- =========================&lt;br /&gt;
&lt;br /&gt;
local DEFAULT_404_LINK    = &#039;Modul:Item/Data&#039;&lt;br /&gt;
local DEFAULT_TOOLTIP_MAX = 140&lt;br /&gt;
&lt;br /&gt;
-- =========================&lt;br /&gt;
-- Helpers&lt;br /&gt;
-- =========================&lt;br /&gt;
&lt;br /&gt;
local function normalizeKey( name )&lt;br /&gt;
    if not name then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
    local s = ustr.lower( tostring( name ) )&lt;br /&gt;
    s = s:gsub( &#039;%s+&#039;, &#039;&#039; )&lt;br /&gt;
    return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function clone( tbl )&lt;br /&gt;
    local copy = {}&lt;br /&gt;
    for k, v in pairs( tbl or {} ) do&lt;br /&gt;
        copy[k] = v&lt;br /&gt;
    end&lt;br /&gt;
    return copy&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function capitalize( str )&lt;br /&gt;
    if not str then&lt;br /&gt;
        return &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
    local s = string.lower( tostring( str ) )&lt;br /&gt;
    return string.gsub( &#039; &#039; .. s, &#039;%W%l&#039;, string.upper ):sub( 2 )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function title2link( title )&lt;br /&gt;
    return ( tostring( title or &#039;&#039; ) ):gsub( &#039;%s&#039;, &#039;_&#039; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getTitle( item )&lt;br /&gt;
    if item.title and item.title ~= &#039;&#039; then&lt;br /&gt;
        return item.title&lt;br /&gt;
    end&lt;br /&gt;
    return capitalize( item.key )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getShort( item )&lt;br /&gt;
    if item.short and item.short ~= &#039;&#039; then&lt;br /&gt;
        return item.short&lt;br /&gt;
    end&lt;br /&gt;
    return getTitle( item )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function imgPngExists( imgname )&lt;br /&gt;
    if type( imgname ) == &#039;string&#039; and #imgname ~= 0 then&lt;br /&gt;
        local t = mw.title.new( &#039;Datei:&#039; .. imgname .. &#039;.png&#039; )&lt;br /&gt;
        return t and t.file and t.file.exists or false&lt;br /&gt;
    end&lt;br /&gt;
    return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Fallback-Objekt nur für &amp;quot;kaputte&amp;quot; Aufrufe (kein Key o.ä.)&lt;br /&gt;
local function object404( raw )&lt;br /&gt;
    raw = tostring( raw or &#039;?&#039; )&lt;br /&gt;
    return {&lt;br /&gt;
        key      = &#039;404&#039;,&lt;br /&gt;
        title    = &#039;ERROR: &#039; .. raw,&lt;br /&gt;
        link     = DEFAULT_404_LINK,&lt;br /&gt;
        img      = nil,   -- kein 404-Icon mehr&lt;br /&gt;
        describe = &#039;&#039;,&lt;br /&gt;
    }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Holt Item aus DATA oder baut ein &amp;quot;virtuelles&amp;quot; Item,&lt;br /&gt;
-- wenn kein Eintrag existiert (z.B. {{Icon|blob}}).&lt;br /&gt;
local function getItem( raw )&lt;br /&gt;
    local key = normalizeKey( raw or &#039;&#039; )&lt;br /&gt;
    if not key or key == &#039;&#039; then&lt;br /&gt;
        return object404( raw )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local base = DATA[key]&lt;br /&gt;
    if base then&lt;br /&gt;
        local item = clone( base )&lt;br /&gt;
        item.key = key&lt;br /&gt;
        return item&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- virtuelles Item: nur Titel/Link aus dem Key ableiten, kein Bild&lt;br /&gt;
    local title = capitalize( key )&lt;br /&gt;
    return {&lt;br /&gt;
        key      = key,&lt;br /&gt;
        title    = title,&lt;br /&gt;
        link     = title2link( title ),&lt;br /&gt;
        img      = nil,&lt;br /&gt;
        describe = &#039;&#039;,&lt;br /&gt;
    }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Link-Ziel für [[…]]&lt;br /&gt;
local function getLinkTarget( item )&lt;br /&gt;
    if item.link and item.link ~= &#039;&#039; then&lt;br /&gt;
        return item.link&lt;br /&gt;
    end&lt;br /&gt;
    return title2link( getTitle( item ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Liefert Bild-Basename oder &#039;&#039; wenn keins gefunden wird.&lt;br /&gt;
local function getImage( item )&lt;br /&gt;
    -- explizit in Data definiert?&lt;br /&gt;
    if item.img and imgPngExists( item.img ) then&lt;br /&gt;
        return item.img&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Versuch: aus Titel raten (z.B. Gold -&amp;gt; Gold.png)&lt;br /&gt;
    local guess = title2link( getTitle( item ) )&lt;br /&gt;
    if imgPngExists( guess ) then&lt;br /&gt;
        return guess&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- kein Bild → leer zurückgeben, KEIN 404&lt;br /&gt;
    return &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ---------- Markup → Plaintext (für Tooltip) ----------&lt;br /&gt;
&lt;br /&gt;
local function stripMarkup( str )&lt;br /&gt;
    if not str or str == &#039;&#039; then&lt;br /&gt;
        return &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
    str = tostring( str )&lt;br /&gt;
&lt;br /&gt;
    -- interne Links [[Seite|Label]] / [[Seite]]&lt;br /&gt;
    str = str:gsub( &#039;%[%[([^%]|]+)|([^%]]+)%]%]&#039;, &#039;%2&#039; )&lt;br /&gt;
    str = str:gsub( &#039;%[%[([^%]]+)%]%]&#039;, &#039;%1&#039; )&lt;br /&gt;
&lt;br /&gt;
    -- externe Links [url Label]&lt;br /&gt;
    str = str:gsub( &#039;%[[^%s%]]+%s+([^%]]+)%]&#039;, &#039;%1&#039; )&lt;br /&gt;
&lt;br /&gt;
    -- Hervorhebungen&lt;br /&gt;
    str = str:gsub( &amp;quot;&#039;&#039;+&amp;quot;, &#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
    -- Templates {{...}}&lt;br /&gt;
    str = str:gsub( &#039;{{.-}}&#039;, &#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
    -- HTML-Tags&lt;br /&gt;
    str = str:gsub( &#039;&amp;lt;.-&amp;gt;&#039;, &#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
    -- Whitespace&lt;br /&gt;
    str = str:gsub( &#039;%s+&#039;, &#039; &#039; )&lt;br /&gt;
    if text and text.trim then&lt;br /&gt;
        str = text.trim( str )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function shorten( str, max )&lt;br /&gt;
    str = stripMarkup( str )&lt;br /&gt;
    max = tonumber( max ) or 0&lt;br /&gt;
&lt;br /&gt;
    if max &amp;lt;= 0 or ustr.len( str ) &amp;lt;= max then&lt;br /&gt;
        return str&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local cut = ustr.sub( str, 1, max )&lt;br /&gt;
    local lastSpace = ustr.find( cut, &#039; [^ ]*$&#039; )&lt;br /&gt;
    if lastSpace and lastSpace &amp;gt; max * 0.6 then&lt;br /&gt;
        cut = ustr.sub( cut, 1, lastSpace - 1 )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return cut .. &#039;…&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ---------- Tooltip ----------&lt;br /&gt;
-- ---------- Tooltip ----------&lt;br /&gt;
local function buildTooltip( item, opts )&lt;br /&gt;
    opts = opts or {}&lt;br /&gt;
    local max   = opts.max or DEFAULT_TOOLTIP_MAX&lt;br /&gt;
    local label = opts.label&lt;br /&gt;
&lt;br /&gt;
    local title     = getTitle( item )&lt;br /&gt;
    local desc      = item.describe or item.description or &#039;&#039;&lt;br /&gt;
    local shortDesc = shorten( desc, max )&lt;br /&gt;
    local img       = getImage( item )&lt;br /&gt;
    local hasImg    = img and img ~= &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    local out = {}&lt;br /&gt;
&lt;br /&gt;
    -- Wrapper&lt;br /&gt;
    table.insert( out, &#039;&amp;lt;span class=&amp;quot;fs-tip&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
&lt;br /&gt;
    -- sichtbares Label&lt;br /&gt;
    if label and label ~= &#039;&#039; then&lt;br /&gt;
        table.insert( out, label )&lt;br /&gt;
    else&lt;br /&gt;
        local target = getLinkTarget( item )&lt;br /&gt;
        table.insert( out, &#039;[[&#039; .. target .. &#039;|&#039; .. title .. &#039;]]&#039; )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Tooltip-Content&lt;br /&gt;
    table.insert( out, &#039;&amp;lt;span class=&amp;quot;content&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
&lt;br /&gt;
    if hasImg then&lt;br /&gt;
        -- Layout mit Icon: Grid (.box)&lt;br /&gt;
        table.insert( out, &#039;&amp;lt;span class=&amp;quot;box&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
        table.insert( out, &#039;[[Datei:&#039; .. img .. &#039;.png|48x48px]]&#039; )&lt;br /&gt;
        table.insert( out, &#039;&amp;lt;span class=&amp;quot;text&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
    else&lt;br /&gt;
        -- Kein Icon: nur Text, volle Breite&lt;br /&gt;
        table.insert( out, &#039;&amp;lt;span class=&amp;quot;text&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Titel&lt;br /&gt;
    table.insert( out, &#039;&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
    table.insert( out, title )&lt;br /&gt;
    table.insert( out, &#039;&amp;lt;/span&amp;gt;&#039; ) -- .title&lt;br /&gt;
&lt;br /&gt;
    -- Beschreibung&lt;br /&gt;
    if shortDesc ~= &#039;&#039; then&lt;br /&gt;
        table.insert( out, &#039;&amp;lt;span class=&amp;quot;desc&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
        table.insert( out, shortDesc )&lt;br /&gt;
        table.insert( out, &#039;&amp;lt;/span&amp;gt;&#039; ) -- .desc&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Close .text&lt;br /&gt;
    table.insert( out, &#039;&amp;lt;/span&amp;gt;&#039; )&lt;br /&gt;
&lt;br /&gt;
    -- Close .box (nur wenn Icon)&lt;br /&gt;
    if hasImg then&lt;br /&gt;
        table.insert( out, &#039;&amp;lt;/span&amp;gt;&#039; ) -- .box&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Close .content + .fs-tip&lt;br /&gt;
    table.insert( out, &#039;&amp;lt;/span&amp;gt;&#039; ) -- .content&lt;br /&gt;
    table.insert( out, &#039;&amp;lt;/span&amp;gt;&#039; ) -- .fs-tip&lt;br /&gt;
&lt;br /&gt;
    return table.concat( out )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ---------- Frame-Args ----------&lt;br /&gt;
&lt;br /&gt;
local function extractKey( args )&lt;br /&gt;
    if not args then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
    return args[1] or args.name or args.key or args.id or args.nameid&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getArgKey( frame )&lt;br /&gt;
    if not frame then&lt;br /&gt;
        return nil, {}&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local args = frame.args or {}&lt;br /&gt;
    local key  = extractKey( args )&lt;br /&gt;
    if key and key ~= &#039;&#039; then&lt;br /&gt;
        return key, args&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if frame.getParent then&lt;br /&gt;
        local parent = frame:getParent()&lt;br /&gt;
        if parent and parent.args then&lt;br /&gt;
            args = parent.args&lt;br /&gt;
            key  = extractKey( args )&lt;br /&gt;
            if key and key ~= &#039;&#039; then&lt;br /&gt;
                return key, args&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return nil, args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- =========================&lt;br /&gt;
-- Öffentliche Funktionen&lt;br /&gt;
-- =========================&lt;br /&gt;
&lt;br /&gt;
function p.title( frame )&lt;br /&gt;
    local key  = select( 1, getArgKey( frame ) )&lt;br /&gt;
    local item = getItem( key )&lt;br /&gt;
    return getTitle( item )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.short( frame )&lt;br /&gt;
    local key  = select( 1, getArgKey( frame ) )&lt;br /&gt;
    local item = getItem( key )&lt;br /&gt;
    return getShort( item )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.desc( frame )&lt;br /&gt;
    local key  = select( 1, getArgKey( frame ) )&lt;br /&gt;
    local item = getItem( key )&lt;br /&gt;
    return item.describe or item.description or &#039;-&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.img( frame )&lt;br /&gt;
    local key  = select( 1, getArgKey( frame ) )&lt;br /&gt;
    local item = getItem( key )&lt;br /&gt;
    -- Basename oder &#039;&#039; zurückgeben&lt;br /&gt;
    return getImage( item ) or &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.link( frame )&lt;br /&gt;
    local key  = select( 1, getArgKey( frame ) )&lt;br /&gt;
    local item = getItem( key )&lt;br /&gt;
    -- Nur das Seitentarget, z.B. &amp;quot;Währung#Gold&amp;quot; oder &amp;quot;Blob&amp;quot;&lt;br /&gt;
    return getLinkTarget( item )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.tooltip( frame )&lt;br /&gt;
    local key, args = getArgKey( frame )&lt;br /&gt;
    local item      = getItem( key )&lt;br /&gt;
    local max       = tonumber( args.max or args.len or args.limit ) or DEFAULT_TOOLTIP_MAX&lt;br /&gt;
    local label     = args.label&lt;br /&gt;
    return buildTooltip( item, { max = max, label = label } )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Modul:Item/Data&amp;diff=222</id>
		<title>Modul:Item/Data</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Modul:Item/Data&amp;diff=222"/>
		<updated>2025-12-01T17:52:38Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Modul:Item/Data&lt;br /&gt;
-- Währungen aus Firestone Idle RPG&lt;br /&gt;
-- Hinweis: Die Typ-Gruppierung (z.B. &amp;quot;currencies&amp;quot;) passiert separat&lt;br /&gt;
--          in [[Modul:Item/Types]] und [[Modul:Item/Type]].&lt;br /&gt;
&lt;br /&gt;
local data = {&lt;br /&gt;
&lt;br /&gt;
    gold = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Gold&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Gold&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Eine der Hauptwährungen. Du erhältst [[Gold]], wenn deine [[Gruppe]] auf dem [[Schlachtfeld]] Gegner besiegt. Es wird für Gold-Verbesserungen genutzt und bestimmt, wie viele Firestones du beim Prestige im Tempel der Ewigen bekommst.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyGold&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    firestones = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Firestones&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Firestones&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Zweite Hauptwährung und Namensgeber des Spiels. Du bekommst Firestones, wenn du den Tempel der Ewigen ermächtigst. Firestones erhöhen dauerhaft deinen Gold-Gewinn.&#039;,&lt;br /&gt;
        -- [&#039;img&#039;]      = &#039;CurrencyFirestone&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    gems = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Gems&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Gems&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Premiumwährung. Du kannst Gems mit Plattformwährung im Shop, in Extremwert-Bundles und in Spezialangeboten kaufen oder kostenlos über tägliche Belohnungen, wöchentliche Quests und Kartenziehungen erhalten. Sie werden für Ausrüstungstruhen, Inventargegenstände und andere Währungen im Shop verwendet.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyGem&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    void_crystals = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Void Crystals&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Void Crystals&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Du erhältst Void Crystals, wenn du doppelte Ausrüstung ziehst oder sie über bestimmte Angebote kaufst. Im Hall of Heroes werden sie eingesetzt, um die Ausrüstung deiner Helden aufzuwerten.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyVoidCrystal&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    meteorites = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Meteorites&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Meteorites&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Meteoriten werden automatisch von Minern gesammelt (eine pro Minute) und kommen zusätzlich aus täglichen Belohnungen, täglichen Quests und Kartenziehungen. Bestimmte Talente und Upgrades erhöhen den Gewinn. Sie werden für Meteoritenforschung in der Bibliothek und zum Freischalten höherer Ausrüstungsstufen genutzt.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyMeteorite&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    talent_points = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Talent Points&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Talents&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Mit jedem Charakterlevel erhältst du einen Talentpunkt. Talentpunkte werden im Talentbaum ausgegeben, um verschiedene dauerhafte Verbesserungen freizuschalten.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyTalentPoint&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    honor = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Honor&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Honor&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Erlangst du durch Missionen, tägliche Belohnungen, tägliche Quests und Kartenziehungen oder über bestimmte Angebote. Ehre bestimmt deinen Rang und wird mit dem Ehreneffekt multipliziert, um einen Bonus auf alle Hauptattribute zu gewähren.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyHonor&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    strange_dust = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Strange Dust&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Strange Dust&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Kommt vor allem aus Spähermissionen, täglichen Belohnungen, täglichen Quests und Kartenziehungen sowie aus dem Item-Shop und besonderen Angeboten. Strange Dust wird im Magic Quarter für Wächtererleuchtung und -entwicklung, beim Alchemisten für Experimente und Transmutationen und zum Freischalten von Soulstones der Stufe 2 verwendet.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyStrangeDust&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    glory = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Glory&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Glory&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Verdienst du, indem du tägliche und wöchentliche Herausforderungen des Battle Pass abschließt. Glory wird benötigt, um Truhen und Währungen im Battle Pass einzulösen und zeitlich begrenzte Buffs freizuschalten.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyGlory&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    contracts = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Contracts&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Contracts&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Verträge erhältst du aus der Taverne, dem Battle Pass und Mini-Events. Sie werden benötigt, um Söldner auf dem Piratenschiff anzuheuern und im Hall of Heroes die Seltenheit deiner Helden zu erhöhen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyContracts&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    guild_coins = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Guild Coins&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Guild Coins&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Schaltest du mit Charakterlevel 10 frei. Gildenmünzen werden genutzt, um den Lebensbaum deiner Gilde zu verbessern. Du erhältst sie über Gildenexpeditionen oder durch spezielle Angebote im Gildenshop.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyGuildCoin&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    expedition_tokens = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Expedition Tokens&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Expedition Tokens&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Schaltest du mit Charakterlevel 10 frei. Expeditionsmarken verbessern deinen persönlichen Lebensbaum und erhöhen das Level deiner Kriegsmaschinen. Außerdem kannst du damit Spitzhacken, Emblems of Valor und Juwelentruhen im Gildenshop kaufen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyExpeditionToken&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    beer = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Beer&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Beer&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Wird ab Charakterlevel 15 freigeschaltet. Bier fällt auf dem Schlachtfeld in einem festen Rhythmus und kann zusätzlich als Belohnung aus der Taverne kommen. Gilden- und Kampagnenboni sowie bestimmte Talente erhöhen den Biergewinn. Bier wird im Tavernenmarkt verwendet, um Game Tokens zu kaufen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyBeer&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    game_tokens = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Game Tokens&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Game Tokens&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Schaltest du ab Charakterlevel 15 frei. Game Tokens können mit Bier oder Gems im Tavernenmarkt gekauft werden und werden genutzt, um Karten in der Taverne zu ziehen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyGameToken&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    luck = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Luck&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Luck&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Wird ab Charakterlevel 15 freigeschaltet. Glück erhältst du beim Ziehen von Karten in der Taverne; die Menge hängt von Art und Anzahl der Belohnungen ab. Dein Glückslevel gibt dauerhafte Boni auf Attribute, Gold- und Meteoritengewinn und beeinflusst, wie viele Gegenstände du aus bestimmten Kartenbelohnungen erhältst.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyLuck&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    golden_keys = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Golden Keys&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Golden Keys&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Goldene Schlüssel werden ab Charakterlevel 15 freigeschaltet und können als zufällige Belohnung aus der Taverne droppen. Du verwendest sie, um Amulette im Shop zu kaufen und Ancient Artifacts in der Taverne zu verzaubern.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyGoldenKey&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    prestige_tokens = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Prestige Tokens&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Prestige Tokens&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Prestigemarken werden ab Glückslevel 2 freigeschaltet und können als Belohnung aus der Taverne erscheinen. Sie werden im Tempel der Ewigen für epische Prestiges eingesetzt.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyPrestigeToken&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    exotic_coins = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Exotic Coins&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Exotic Coins&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Schaltest du mit Charakterlevel 30 frei. Exotische Münzen erhältst du, indem du ungenutzte Inventargegenstände beim Exotic Merchant verkaufst oder sie über Kartenziehungen und Angebote bekommst. Sie werden für exotische Upgrades beim Exotic Merchant genutzt.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyExoticCoin&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    arcane_crystals = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Arcane Crystals&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Arcane Crystals&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Werden ab Charakterlevel 50 freigeschaltet. Du baust sie an der Arkankristall-Stelle im Gildenbildschirm ab und erhältst sie anschließend per Ingame-Post. Arkankristalle werden für das Awakening deiner Helden verwendet.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyArcaneCrystal&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    ethereal_shards = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Ethereal Shards&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Ethereal Shards&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Schaltest du mit Charakterlevel 50 frei. Ätherische Splitter erhältst du, wenn du doppelte Juwelen ziehst. Im Hall of Heroes dienen sie dazu, die Juwelen deiner Helden aufzuwerten.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyEtherealShard&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    blueprints = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Blueprints&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Blueprints&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Baupläne werden ab Charakterlevel 50 freigeschaltet. Du bekommst sie aus Kampagnenmissionen, Kampagnenbeute und der täglichen Befreiungsquest oder kaufst sie mit Expeditionsmarken im Gildenshop. Sie verbessern die Attribute deiner Kriegsmaschinen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyBlueprint&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    tools = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Tools&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Tools&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Werkzeuge werden ab Charakterlevel 50 freigeschaltet. Du kannst sie beim Engineer abholen oder mit Expeditionsmarken im Gildenshop kaufen. Sie werden genutzt, um die Seltenheit deiner Kriegsmaschinen zu erhöhen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyTool&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    emblems_of_valor = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Emblems of Valor&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Emblems of Valor&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Schaltest du mit Charakterlevel 50 frei. Embleme des Mutes erhältst du aus Kampagnen- und Befreiungsmissionen, aus Kampagnenbeute oder über den Gildenshop gegen Expeditionsmarken. Sie werden im Emblem Market des Exotic Merchant verwendet, um Juwelentruhen zu kaufen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyEmblemOfValor&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    elixirs_of_life = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Elixirs of Life&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Elixirs of Life&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Werden ab Charakterlevel 50 und 70 Kampagnensternen freigeschaltet. Du erhältst Lebenselixiere aus Dungeon-Missionen oder kaufst sie mit Expeditionsmarken im Gildenshop. Sie werden beim Alchemisten benutzt, um Juwelentruhen zu transmutieren.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyElixirOfLife&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    emblems_of_courage = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Emblems of Courage&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Emblems of Courage&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Schaltest du mit Charakterlevel 65 frei. Embleme der Tapferkeit erhältst du aus Missionsbelohnungen und Kartenziehungen oder kaufst sie mit Gems im Item-Shop. Sie dienen zum Kauf von Ausrüstungstruhen im Emblem Market des Exotic Merchant.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyEmblemOfCourage&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    pickaxes = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Pickaxes&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Pickaxes&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Spitzhacken werden ab Charakterlevel 50 freigeschaltet. Du kannst sie kostenlos in begrenzter Menge beanspruchen oder mit Expeditionsmarken im Gildenshop erwerben. Sie werden benutzt, um den Arkankristall im Gildenbildschirm abzubauen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyPickaxe&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    nobles_token = {&lt;br /&gt;
        [&#039;title&#039;]    = &amp;quot;Noble&#039;s token&amp;quot;,&lt;br /&gt;
        [&#039;link&#039;]     = &amp;quot;Noble&#039;s token&amp;quot;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Wird ab Charakterlevel 60 freigeschaltet. Du erhältst täglich 10 Noble’s Tokens gratis, bis zu einem Maximum von 10. Sie werden verwendet, um Scarab’s Game zu spielen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyNoblesToken&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    pharaohs_tokens = {&lt;br /&gt;
        [&#039;title&#039;]    = &amp;quot;Pharaoh&#039;s Tokens&amp;quot;,&lt;br /&gt;
        [&#039;link&#039;]     = &amp;quot;Pharaoh&#039;s Tokens&amp;quot;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Pharaonenmarken werden ab Charakterlevel 60 freigeschaltet und können mit Expeditionsmarken im Scarab’s Shop gekauft werden. Du nutzt sie, um Scarab’s Game zu spielen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyPharaohsToken&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    ancient_coins = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Ancient Coins&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Ancient Coins&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Antike Münzen werden ab Charakterlevel 60 freigeschaltet. Du erhältst sie, wenn du Scarab’s Game spielst, und gibst sie aus, um Truhen in der Pharaoh’s Vault zu öffnen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyAncientCoin&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    scarabs = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Scarabs&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Scarabs&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Skarabäen werden ab Charakterlevel 60 freigeschaltet. Du bekommst sie aus Truhen in der Pharaoh’s Vault; die Menge hängt vom Belohnungstyp und der Anzahl der erhaltenen Items ab. Dein Skarab-Level verleiht dauerhafte Attributsboni und bestimmt unter anderem, wie viele Lost Inscriptions du aus Kisten bekommst.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyScarab&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    soul_embers = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Soul Embers&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Soul Embers&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Seelenfunken werden ab Charakterlevel 60 freigeschaltet und können als Belohnung aus der Pharaoh’s Vault droppen. Du verwendest sie, um Beasts in Scarab’s Game aufzuleveln.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencySoulEmber&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    cobra_keys = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Cobra Keys&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Cobra Keys&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Kobraschlüssel werden ab Charakterlevel 60 freigeschaltet und können als Belohnung aus Kartenziehungen in der Taverne erscheinen. Sie werden genutzt, um Beasts in Scarab’s Game zu verzaubern.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyCobraKey&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    twilight_hourglasses = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Twilight Hourglasses&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Twilight Hourglasses&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Zwielicht-Sanduhrgläser werden ab Charakterlevel 60 freigeschaltet und können als Belohnung aus der Pharaoh’s Vault droppen. Du verwendest sie, um Ancient Artifacts in der Taverne aufzuleveln.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyTwilightHourglass&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    moon_stones = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Moon Stones&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Moon Stones&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Mondsteine werden ab Charakterlevel 100 freigeschaltet. Du erhältst jeden Tag 10 Mondsteine kostenlos (bis zu einem Maximum von 10). Sie werden genutzt, um die Dark Gods im Chaos Rift anzugreifen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyMoonStone&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    eclipse_stones = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Eclipse Stones&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Eclipse Stones&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Eklipssteine werden ab Charakterlevel 100 freigeschaltet. Du kannst sie im Chaos Rift Shop kaufen oder in der Pharaoh’s Vault finden. Sie dienen dazu, die Dark Gods weiter anzugreifen, wenn dir die Mondsteine ausgehen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyEclipseStone&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    orbs_of_light = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Orbs of Light&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Orbs of Light&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Lichtkugeln werden ab Charakterlevel 100 freigeschaltet. Du erhältst sie, wenn du im Chaos Rift einen Dark God triffst. Sie werden genutzt, um den Heilig-Schaden deiner Guardians zu erhöhen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyOrbOfLight&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    dark_runes = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Dark Runes&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Dark Runes&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Dunkele Runen werden ab Charakterlevel 100 freigeschaltet. Du bekommst sie als Belohnung, wenn du einen Dark God im Chaos Rift triffst. Sie werden im Chaos Rift Shop ausgegeben, um Tomes of Power zu kaufen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyDarkRune&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    dragon_blood = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Dragon Blood&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Dragon Blood&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Drachenblut wird ab Charakterlevel 120 freigeschaltet. Du erhältst es aus Drachenmissionen, Kartenziehungen und über den Item-Shop gegen Gems. Es wird in den Experimenten und Transmutationen des Alchemisten verwendet.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyDragonBlood&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    soul_shards = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Soul Shards&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Soul Shards&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Seelensplitter werden ab Charakterlevel 200 freigeschaltet. Du bekommst sie, wenn du doppelte Soulstones ziehst. Im Hall of Heroes werden sie benutzt, um Soulstones aufzuwerten.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencySoulShard&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    virtue = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Virtue&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Virtue&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Tugend wird ab Charakterlevel 200 freigeschaltet. Du erhältst sie, indem du Segnungen beim Oracle kaufst oder sie im Orakelshop und in Spezialangeboten erwirbst. Tugend erhöht dein Oracle-Level, was Ritualgewinne steigert und deinem Firestone-Gewinn einen permanenten Bonus verleiht.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyVirtue&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    emblems_of_brotherhood = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Emblems of Brotherhood&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Emblems of Brotherhood&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Embleme der Bruderschaft werden ab Charakterlevel 200 freigeschaltet. Du erhältst sie, wenn du Rituale beim Oracle durchführst oder Truhen in der Pharaoh’s Vault öffnest. Sie werden im Emblem Market des Exotic Merchant verwendet, um Celestial Chests zu kaufen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyEmblemOfBrotherhood&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    star_essence = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Star Essence&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Star Essence&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Sternenessenz wird ab Charakterlevel 200 freigeschaltet. Du bekommst sie durch Rituale beim Oracle und als Beute aus der Pharaoh’s Vault. Sie wird beim Alchemisten genutzt, um Celestial Chests zu transmutieren.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyStarEssence&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return data&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Modul:Item&amp;diff=221</id>
		<title>Modul:Item</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Modul:Item&amp;diff=221"/>
		<updated>2025-12-01T17:45:00Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Modul:Item – Firestone-Version&lt;br /&gt;
--&lt;br /&gt;
-- Bietet (für andere Vorlagen):&lt;br /&gt;
--   #invoke:Item|title|key       -&amp;gt; &amp;quot;Gold&amp;quot;&lt;br /&gt;
--   #invoke:Item|short|key       -&amp;gt; Kurzname oder Titel&lt;br /&gt;
--   #invoke:Item|desc|key        -&amp;gt; Beschreibung (describe/description)&lt;br /&gt;
--   #invoke:Item|img|key         -&amp;gt; Bild-Basename oder &#039;&#039; (wenn kein Bild)&lt;br /&gt;
--   #invoke:Item|link|key        -&amp;gt; Seitentitel, z.B. &amp;quot;Währung#Gold&amp;quot; oder &amp;quot;Blob&amp;quot;&lt;br /&gt;
--   #invoke:Item|tooltip|key|... -&amp;gt; fertige Tooltip-Ausgabe (Label über |label=)&lt;br /&gt;
--&lt;br /&gt;
-- Datengrundlage: [[Modul:Item/Data]]&lt;br /&gt;
&lt;br /&gt;
local p    = {}&lt;br /&gt;
local DATA = mw.loadData( &#039;Modul:Item/Data&#039; )&lt;br /&gt;
&lt;br /&gt;
local ustr = mw.ustring&lt;br /&gt;
local text = mw.text&lt;br /&gt;
&lt;br /&gt;
-- =========================&lt;br /&gt;
-- Konfiguration&lt;br /&gt;
-- =========================&lt;br /&gt;
&lt;br /&gt;
local DEFAULT_404_LINK    = &#039;Modul:Item/Data&#039;&lt;br /&gt;
local DEFAULT_TOOLTIP_MAX = 140&lt;br /&gt;
&lt;br /&gt;
-- =========================&lt;br /&gt;
-- Helpers&lt;br /&gt;
-- =========================&lt;br /&gt;
&lt;br /&gt;
local function normalizeKey( name )&lt;br /&gt;
    if not name then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
    local s = ustr.lower( tostring( name ) )&lt;br /&gt;
    s = s:gsub( &#039;%s+&#039;, &#039;&#039; )&lt;br /&gt;
    return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function clone( tbl )&lt;br /&gt;
    local copy = {}&lt;br /&gt;
    for k, v in pairs( tbl or {} ) do&lt;br /&gt;
        copy[k] = v&lt;br /&gt;
    end&lt;br /&gt;
    return copy&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function capitalize( str )&lt;br /&gt;
    if not str then&lt;br /&gt;
        return &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
    local s = string.lower( tostring( str ) )&lt;br /&gt;
    return string.gsub( &#039; &#039; .. s, &#039;%W%l&#039;, string.upper ):sub( 2 )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function title2link( title )&lt;br /&gt;
    return ( tostring( title or &#039;&#039; ) ):gsub( &#039;%s&#039;, &#039;_&#039; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getTitle( item )&lt;br /&gt;
    if item.title and item.title ~= &#039;&#039; then&lt;br /&gt;
        return item.title&lt;br /&gt;
    end&lt;br /&gt;
    return capitalize( item.key )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getShort( item )&lt;br /&gt;
    if item.short and item.short ~= &#039;&#039; then&lt;br /&gt;
        return item.short&lt;br /&gt;
    end&lt;br /&gt;
    return getTitle( item )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function imgPngExists( imgname )&lt;br /&gt;
    if type( imgname ) == &#039;string&#039; and #imgname ~= 0 then&lt;br /&gt;
        local t = mw.title.new( &#039;Datei:&#039; .. imgname .. &#039;.png&#039; )&lt;br /&gt;
        return t and t.file and t.file.exists or false&lt;br /&gt;
    end&lt;br /&gt;
    return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Fallback-Objekt nur für &amp;quot;kaputte&amp;quot; Aufrufe (kein Key o.ä.)&lt;br /&gt;
local function object404( raw )&lt;br /&gt;
    raw = tostring( raw or &#039;?&#039; )&lt;br /&gt;
    return {&lt;br /&gt;
        key      = &#039;404&#039;,&lt;br /&gt;
        title    = &#039;ERROR: &#039; .. raw,&lt;br /&gt;
        link     = DEFAULT_404_LINK,&lt;br /&gt;
        img      = nil,   -- kein 404-Icon mehr&lt;br /&gt;
        describe = &#039;&#039;,&lt;br /&gt;
    }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Holt Item aus DATA oder baut ein &amp;quot;virtuelles&amp;quot; Item,&lt;br /&gt;
-- wenn kein Eintrag existiert (z.B. {{Icon|blob}}).&lt;br /&gt;
local function getItem( raw )&lt;br /&gt;
    local key = normalizeKey( raw or &#039;&#039; )&lt;br /&gt;
    if not key or key == &#039;&#039; then&lt;br /&gt;
        return object404( raw )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local base = DATA[key]&lt;br /&gt;
    if base then&lt;br /&gt;
        local item = clone( base )&lt;br /&gt;
        item.key = key&lt;br /&gt;
        return item&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- virtuelles Item: nur Titel/Link aus dem Key ableiten, kein Bild&lt;br /&gt;
    local title = capitalize( key )&lt;br /&gt;
    return {&lt;br /&gt;
        key      = key,&lt;br /&gt;
        title    = title,&lt;br /&gt;
        link     = title2link( title ),&lt;br /&gt;
        img      = nil,&lt;br /&gt;
        describe = &#039;&#039;,&lt;br /&gt;
    }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Link-Ziel für [[…]]&lt;br /&gt;
local function getLinkTarget( item )&lt;br /&gt;
    if item.link and item.link ~= &#039;&#039; then&lt;br /&gt;
        return item.link&lt;br /&gt;
    end&lt;br /&gt;
    return title2link( getTitle( item ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Liefert Bild-Basename oder &#039;&#039; wenn keins gefunden wird.&lt;br /&gt;
local function getImage( item )&lt;br /&gt;
    -- explizit in Data definiert?&lt;br /&gt;
    if item.img and imgPngExists( item.img ) then&lt;br /&gt;
        return item.img&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Versuch: aus Titel raten (z.B. Gold -&amp;gt; Gold.png)&lt;br /&gt;
    local guess = title2link( getTitle( item ) )&lt;br /&gt;
    if imgPngExists( guess ) then&lt;br /&gt;
        return guess&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- kein Bild → leer zurückgeben, KEIN 404&lt;br /&gt;
    return &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ---------- Markup → Plaintext (für Tooltip) ----------&lt;br /&gt;
&lt;br /&gt;
local function stripMarkup( str )&lt;br /&gt;
    if not str or str == &#039;&#039; then&lt;br /&gt;
        return &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
    str = tostring( str )&lt;br /&gt;
&lt;br /&gt;
    -- interne Links [[Seite|Label]] / [[Seite]]&lt;br /&gt;
    str = str:gsub( &#039;%[%[([^%]|]+)|([^%]]+)%]%]&#039;, &#039;%2&#039; )&lt;br /&gt;
    str = str:gsub( &#039;%[%[([^%]]+)%]%]&#039;, &#039;%1&#039; )&lt;br /&gt;
&lt;br /&gt;
    -- externe Links [url Label]&lt;br /&gt;
    str = str:gsub( &#039;%[[^%s%]]+%s+([^%]]+)%]&#039;, &#039;%1&#039; )&lt;br /&gt;
&lt;br /&gt;
    -- Hervorhebungen&lt;br /&gt;
    str = str:gsub( &amp;quot;&#039;&#039;+&amp;quot;, &#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
    -- Templates {{...}}&lt;br /&gt;
    str = str:gsub( &#039;{{.-}}&#039;, &#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
    -- HTML-Tags&lt;br /&gt;
    str = str:gsub( &#039;&amp;lt;.-&amp;gt;&#039;, &#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
    -- Whitespace&lt;br /&gt;
    str = str:gsub( &#039;%s+&#039;, &#039; &#039; )&lt;br /&gt;
    if text and text.trim then&lt;br /&gt;
        str = text.trim( str )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function shorten( str, max )&lt;br /&gt;
    str = stripMarkup( str )&lt;br /&gt;
    max = tonumber( max ) or 0&lt;br /&gt;
&lt;br /&gt;
    if max &amp;lt;= 0 or ustr.len( str ) &amp;lt;= max then&lt;br /&gt;
        return str&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local cut = ustr.sub( str, 1, max )&lt;br /&gt;
    local lastSpace = ustr.find( cut, &#039; [^ ]*$&#039; )&lt;br /&gt;
    if lastSpace and lastSpace &amp;gt; max * 0.6 then&lt;br /&gt;
        cut = ustr.sub( cut, 1, lastSpace - 1 )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return cut .. &#039;…&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ---------- Tooltip ----------&lt;br /&gt;
&lt;br /&gt;
local function buildTooltip( item, opts )&lt;br /&gt;
    opts = opts or {}&lt;br /&gt;
    local max   = opts.max or DEFAULT_TOOLTIP_MAX&lt;br /&gt;
    local label = opts.label&lt;br /&gt;
&lt;br /&gt;
    local title     = getTitle( item )&lt;br /&gt;
    local desc      = item.describe or item.description or &#039;&#039;&lt;br /&gt;
    local shortDesc = shorten( desc, max )&lt;br /&gt;
    local img       = getImage( item )&lt;br /&gt;
&lt;br /&gt;
    local out = {}&lt;br /&gt;
&lt;br /&gt;
    table.insert( out, &#039;&amp;lt;span class=&amp;quot;fs-tip&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
&lt;br /&gt;
    -- sichtbares Label&lt;br /&gt;
    if label and label ~= &#039;&#039; then&lt;br /&gt;
        table.insert( out, label )&lt;br /&gt;
    else&lt;br /&gt;
        local target = getLinkTarget( item )&lt;br /&gt;
        table.insert( out, &#039;[[&#039; .. target .. &#039;|&#039; .. title .. &#039;]]&#039; )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert( out, &#039;&amp;lt;span class=&amp;quot;content&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
	table.insert( out, &#039;&amp;lt;span class=&amp;quot;box&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
    if img and img ~= &#039;&#039; then&lt;br /&gt;
        table.insert( out, &#039;[[Datei:&#039; .. img .. &#039;.png|48x48px]] &#039; )&lt;br /&gt;
    end&lt;br /&gt;
    table.insert( out, &#039;&amp;lt;span class=&amp;quot;text&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
    table.insert( out, &#039;&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
    table.insert( out, title )&lt;br /&gt;
    table.insert( out, &#039;&amp;lt;/span&amp;gt;&#039; ) -- title&lt;br /&gt;
&lt;br /&gt;
    if shortDesc ~= &#039;&#039; then&lt;br /&gt;
        table.insert( out, &#039;&amp;lt;span class=&amp;quot;desc&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
        table.insert( out, shortDesc )&lt;br /&gt;
        table.insert( out, &#039;&amp;lt;/span&amp;gt;&#039; )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert( out, &#039;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&#039; ) -- text + title + desc&lt;br /&gt;
    table.insert( out, &#039;&amp;lt;/span&amp;gt;&#039; ) -- fs-tip&lt;br /&gt;
&lt;br /&gt;
    return table.concat( out )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ---------- Frame-Args ----------&lt;br /&gt;
&lt;br /&gt;
local function extractKey( args )&lt;br /&gt;
    if not args then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
    return args[1] or args.name or args.key or args.id or args.nameid&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getArgKey( frame )&lt;br /&gt;
    if not frame then&lt;br /&gt;
        return nil, {}&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local args = frame.args or {}&lt;br /&gt;
    local key  = extractKey( args )&lt;br /&gt;
    if key and key ~= &#039;&#039; then&lt;br /&gt;
        return key, args&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if frame.getParent then&lt;br /&gt;
        local parent = frame:getParent()&lt;br /&gt;
        if parent and parent.args then&lt;br /&gt;
            args = parent.args&lt;br /&gt;
            key  = extractKey( args )&lt;br /&gt;
            if key and key ~= &#039;&#039; then&lt;br /&gt;
                return key, args&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return nil, args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- =========================&lt;br /&gt;
-- Öffentliche Funktionen&lt;br /&gt;
-- =========================&lt;br /&gt;
&lt;br /&gt;
function p.title( frame )&lt;br /&gt;
    local key  = select( 1, getArgKey( frame ) )&lt;br /&gt;
    local item = getItem( key )&lt;br /&gt;
    return getTitle( item )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.short( frame )&lt;br /&gt;
    local key  = select( 1, getArgKey( frame ) )&lt;br /&gt;
    local item = getItem( key )&lt;br /&gt;
    return getShort( item )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.desc( frame )&lt;br /&gt;
    local key  = select( 1, getArgKey( frame ) )&lt;br /&gt;
    local item = getItem( key )&lt;br /&gt;
    return item.describe or item.description or &#039;-&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.img( frame )&lt;br /&gt;
    local key  = select( 1, getArgKey( frame ) )&lt;br /&gt;
    local item = getItem( key )&lt;br /&gt;
    -- Basename oder &#039;&#039; zurückgeben&lt;br /&gt;
    return getImage( item ) or &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.link( frame )&lt;br /&gt;
    local key  = select( 1, getArgKey( frame ) )&lt;br /&gt;
    local item = getItem( key )&lt;br /&gt;
    -- Nur das Seitentarget, z.B. &amp;quot;Währung#Gold&amp;quot; oder &amp;quot;Blob&amp;quot;&lt;br /&gt;
    return getLinkTarget( item )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.tooltip( frame )&lt;br /&gt;
    local key, args = getArgKey( frame )&lt;br /&gt;
    local item      = getItem( key )&lt;br /&gt;
    local max       = tonumber( args.max or args.len or args.limit ) or DEFAULT_TOOLTIP_MAX&lt;br /&gt;
    local label     = args.label&lt;br /&gt;
    return buildTooltip( item, { max = max, label = label } )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Modul:Item&amp;diff=220</id>
		<title>Modul:Item</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Modul:Item&amp;diff=220"/>
		<updated>2025-12-01T17:41:36Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Modul:Item – Firestone-Version&lt;br /&gt;
--&lt;br /&gt;
-- Bietet (für andere Vorlagen):&lt;br /&gt;
--   #invoke:Item|title|key       -&amp;gt; &amp;quot;Gold&amp;quot;&lt;br /&gt;
--   #invoke:Item|short|key       -&amp;gt; Kurzname oder Titel&lt;br /&gt;
--   #invoke:Item|desc|key        -&amp;gt; Beschreibung (describe/description)&lt;br /&gt;
--   #invoke:Item|img|key         -&amp;gt; Bild-Basename oder &#039;&#039; (wenn kein Bild)&lt;br /&gt;
--   #invoke:Item|link|key        -&amp;gt; Seitentitel, z.B. &amp;quot;Währung#Gold&amp;quot; oder &amp;quot;Blob&amp;quot;&lt;br /&gt;
--   #invoke:Item|tooltip|key|... -&amp;gt; fertige Tooltip-Ausgabe (Label über |label=)&lt;br /&gt;
--&lt;br /&gt;
-- Datengrundlage: [[Modul:Item/Data]]&lt;br /&gt;
&lt;br /&gt;
local p    = {}&lt;br /&gt;
local DATA = mw.loadData( &#039;Modul:Item/Data&#039; )&lt;br /&gt;
&lt;br /&gt;
local ustr = mw.ustring&lt;br /&gt;
local text = mw.text&lt;br /&gt;
&lt;br /&gt;
-- =========================&lt;br /&gt;
-- Konfiguration&lt;br /&gt;
-- =========================&lt;br /&gt;
&lt;br /&gt;
local DEFAULT_404_LINK    = &#039;Modul:Item/Data&#039;&lt;br /&gt;
local DEFAULT_TOOLTIP_MAX = 140&lt;br /&gt;
&lt;br /&gt;
-- =========================&lt;br /&gt;
-- Helpers&lt;br /&gt;
-- =========================&lt;br /&gt;
&lt;br /&gt;
local function normalizeKey( name )&lt;br /&gt;
    if not name then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
    local s = ustr.lower( tostring( name ) )&lt;br /&gt;
    s = s:gsub( &#039;%s+&#039;, &#039;&#039; )&lt;br /&gt;
    return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function clone( tbl )&lt;br /&gt;
    local copy = {}&lt;br /&gt;
    for k, v in pairs( tbl or {} ) do&lt;br /&gt;
        copy[k] = v&lt;br /&gt;
    end&lt;br /&gt;
    return copy&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function capitalize( str )&lt;br /&gt;
    if not str then&lt;br /&gt;
        return &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
    local s = string.lower( tostring( str ) )&lt;br /&gt;
    return string.gsub( &#039; &#039; .. s, &#039;%W%l&#039;, string.upper ):sub( 2 )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function title2link( title )&lt;br /&gt;
    return ( tostring( title or &#039;&#039; ) ):gsub( &#039;%s&#039;, &#039;_&#039; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getTitle( item )&lt;br /&gt;
    if item.title and item.title ~= &#039;&#039; then&lt;br /&gt;
        return item.title&lt;br /&gt;
    end&lt;br /&gt;
    return capitalize( item.key )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getShort( item )&lt;br /&gt;
    if item.short and item.short ~= &#039;&#039; then&lt;br /&gt;
        return item.short&lt;br /&gt;
    end&lt;br /&gt;
    return getTitle( item )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function imgPngExists( imgname )&lt;br /&gt;
    if type( imgname ) == &#039;string&#039; and #imgname ~= 0 then&lt;br /&gt;
        local t = mw.title.new( &#039;Datei:&#039; .. imgname .. &#039;.png&#039; )&lt;br /&gt;
        return t and t.file and t.file.exists or false&lt;br /&gt;
    end&lt;br /&gt;
    return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Fallback-Objekt nur für &amp;quot;kaputte&amp;quot; Aufrufe (kein Key o.ä.)&lt;br /&gt;
local function object404( raw )&lt;br /&gt;
    raw = tostring( raw or &#039;?&#039; )&lt;br /&gt;
    return {&lt;br /&gt;
        key      = &#039;404&#039;,&lt;br /&gt;
        title    = &#039;ERROR: &#039; .. raw,&lt;br /&gt;
        link     = DEFAULT_404_LINK,&lt;br /&gt;
        img      = nil,   -- kein 404-Icon mehr&lt;br /&gt;
        describe = &#039;&#039;,&lt;br /&gt;
    }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Holt Item aus DATA oder baut ein &amp;quot;virtuelles&amp;quot; Item,&lt;br /&gt;
-- wenn kein Eintrag existiert (z.B. {{Icon|blob}}).&lt;br /&gt;
local function getItem( raw )&lt;br /&gt;
    local key = normalizeKey( raw or &#039;&#039; )&lt;br /&gt;
    if not key or key == &#039;&#039; then&lt;br /&gt;
        return object404( raw )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local base = DATA[key]&lt;br /&gt;
    if base then&lt;br /&gt;
        local item = clone( base )&lt;br /&gt;
        item.key = key&lt;br /&gt;
        return item&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- virtuelles Item: nur Titel/Link aus dem Key ableiten, kein Bild&lt;br /&gt;
    local title = capitalize( key )&lt;br /&gt;
    return {&lt;br /&gt;
        key      = key,&lt;br /&gt;
        title    = title,&lt;br /&gt;
        link     = title2link( title ),&lt;br /&gt;
        img      = nil,&lt;br /&gt;
        describe = &#039;&#039;,&lt;br /&gt;
    }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Link-Ziel für [[…]]&lt;br /&gt;
local function getLinkTarget( item )&lt;br /&gt;
    if item.link and item.link ~= &#039;&#039; then&lt;br /&gt;
        return item.link&lt;br /&gt;
    end&lt;br /&gt;
    return title2link( getTitle( item ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Liefert Bild-Basename oder &#039;&#039; wenn keins gefunden wird.&lt;br /&gt;
local function getImage( item )&lt;br /&gt;
    -- explizit in Data definiert?&lt;br /&gt;
    if item.img and imgPngExists( item.img ) then&lt;br /&gt;
        return item.img&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Versuch: aus Titel raten (z.B. Gold -&amp;gt; Gold.png)&lt;br /&gt;
    local guess = title2link( getTitle( item ) )&lt;br /&gt;
    if imgPngExists( guess ) then&lt;br /&gt;
        return guess&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- kein Bild → leer zurückgeben, KEIN 404&lt;br /&gt;
    return &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ---------- Markup → Plaintext (für Tooltip) ----------&lt;br /&gt;
&lt;br /&gt;
local function stripMarkup( str )&lt;br /&gt;
    if not str or str == &#039;&#039; then&lt;br /&gt;
        return &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
    str = tostring( str )&lt;br /&gt;
&lt;br /&gt;
    -- interne Links [[Seite|Label]] / [[Seite]]&lt;br /&gt;
    str = str:gsub( &#039;%[%[([^%]|]+)|([^%]]+)%]%]&#039;, &#039;%2&#039; )&lt;br /&gt;
    str = str:gsub( &#039;%[%[([^%]]+)%]%]&#039;, &#039;%1&#039; )&lt;br /&gt;
&lt;br /&gt;
    -- externe Links [url Label]&lt;br /&gt;
    str = str:gsub( &#039;%[[^%s%]]+%s+([^%]]+)%]&#039;, &#039;%1&#039; )&lt;br /&gt;
&lt;br /&gt;
    -- Hervorhebungen&lt;br /&gt;
    str = str:gsub( &amp;quot;&#039;&#039;+&amp;quot;, &#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
    -- Templates {{...}}&lt;br /&gt;
    str = str:gsub( &#039;{{.-}}&#039;, &#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
    -- HTML-Tags&lt;br /&gt;
    str = str:gsub( &#039;&amp;lt;.-&amp;gt;&#039;, &#039;&#039; )&lt;br /&gt;
&lt;br /&gt;
    -- Whitespace&lt;br /&gt;
    str = str:gsub( &#039;%s+&#039;, &#039; &#039; )&lt;br /&gt;
    if text and text.trim then&lt;br /&gt;
        str = text.trim( str )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function shorten( str, max )&lt;br /&gt;
    str = stripMarkup( str )&lt;br /&gt;
    max = tonumber( max ) or 0&lt;br /&gt;
&lt;br /&gt;
    if max &amp;lt;= 0 or ustr.len( str ) &amp;lt;= max then&lt;br /&gt;
        return str&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local cut = ustr.sub( str, 1, max )&lt;br /&gt;
    local lastSpace = ustr.find( cut, &#039; [^ ]*$&#039; )&lt;br /&gt;
    if lastSpace and lastSpace &amp;gt; max * 0.6 then&lt;br /&gt;
        cut = ustr.sub( cut, 1, lastSpace - 1 )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return cut .. &#039;…&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ---------- Tooltip ----------&lt;br /&gt;
&lt;br /&gt;
local function buildTooltip( item, opts )&lt;br /&gt;
    opts = opts or {}&lt;br /&gt;
    local max   = opts.max or DEFAULT_TOOLTIP_MAX&lt;br /&gt;
    local label = opts.label&lt;br /&gt;
&lt;br /&gt;
    local title     = getTitle( item )&lt;br /&gt;
    local desc      = item.describe or item.description or &#039;&#039;&lt;br /&gt;
    local shortDesc = shorten( desc, max )&lt;br /&gt;
    local img       = getImage( item )&lt;br /&gt;
&lt;br /&gt;
    local out = {}&lt;br /&gt;
&lt;br /&gt;
    table.insert( out, &#039;&amp;lt;span class=&amp;quot;fs-tip&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
&lt;br /&gt;
    -- sichtbares Label&lt;br /&gt;
    if label and label ~= &#039;&#039; then&lt;br /&gt;
        table.insert( out, label )&lt;br /&gt;
    else&lt;br /&gt;
        local target = getLinkTarget( item )&lt;br /&gt;
        table.insert( out, &#039;[[&#039; .. target .. &#039;|&#039; .. title .. &#039;]]&#039; )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert( out, &#039;&amp;lt;span class=&amp;quot;content&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
	table.insert( out, &#039;&amp;lt;span class=&amp;quot;box&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
    table.insert( out, &#039;&amp;lt;span class=&amp;quot;text&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
    if img and img ~= &#039;&#039; then&lt;br /&gt;
        table.insert( out, &#039;[[Datei:&#039; .. img .. &#039;.png|48x48px]] &#039; )&lt;br /&gt;
    end&lt;br /&gt;
    table.insert( out, &#039;&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
    table.insert( out, title )&lt;br /&gt;
    table.insert( out, &#039;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&#039; ) -- title + header&lt;br /&gt;
&lt;br /&gt;
    if shortDesc ~= &#039;&#039; then&lt;br /&gt;
        table.insert( out, &#039;&amp;lt;span class=&amp;quot;desc&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
        table.insert( out, shortDesc )&lt;br /&gt;
        table.insert( out, &#039;&amp;lt;/span&amp;gt;&#039; )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert( out, &#039;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&#039; ) -- tooltip&lt;br /&gt;
    table.insert( out, &#039;&amp;lt;/span&amp;gt;&#039; ) -- fs-item&lt;br /&gt;
&lt;br /&gt;
    return table.concat( out )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ---------- Frame-Args ----------&lt;br /&gt;
&lt;br /&gt;
local function extractKey( args )&lt;br /&gt;
    if not args then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
    return args[1] or args.name or args.key or args.id or args.nameid&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getArgKey( frame )&lt;br /&gt;
    if not frame then&lt;br /&gt;
        return nil, {}&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local args = frame.args or {}&lt;br /&gt;
    local key  = extractKey( args )&lt;br /&gt;
    if key and key ~= &#039;&#039; then&lt;br /&gt;
        return key, args&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if frame.getParent then&lt;br /&gt;
        local parent = frame:getParent()&lt;br /&gt;
        if parent and parent.args then&lt;br /&gt;
            args = parent.args&lt;br /&gt;
            key  = extractKey( args )&lt;br /&gt;
            if key and key ~= &#039;&#039; then&lt;br /&gt;
                return key, args&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return nil, args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- =========================&lt;br /&gt;
-- Öffentliche Funktionen&lt;br /&gt;
-- =========================&lt;br /&gt;
&lt;br /&gt;
function p.title( frame )&lt;br /&gt;
    local key  = select( 1, getArgKey( frame ) )&lt;br /&gt;
    local item = getItem( key )&lt;br /&gt;
    return getTitle( item )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.short( frame )&lt;br /&gt;
    local key  = select( 1, getArgKey( frame ) )&lt;br /&gt;
    local item = getItem( key )&lt;br /&gt;
    return getShort( item )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.desc( frame )&lt;br /&gt;
    local key  = select( 1, getArgKey( frame ) )&lt;br /&gt;
    local item = getItem( key )&lt;br /&gt;
    return item.describe or item.description or &#039;-&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.img( frame )&lt;br /&gt;
    local key  = select( 1, getArgKey( frame ) )&lt;br /&gt;
    local item = getItem( key )&lt;br /&gt;
    -- Basename oder &#039;&#039; zurückgeben&lt;br /&gt;
    return getImage( item ) or &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.link( frame )&lt;br /&gt;
    local key  = select( 1, getArgKey( frame ) )&lt;br /&gt;
    local item = getItem( key )&lt;br /&gt;
    -- Nur das Seitentarget, z.B. &amp;quot;Währung#Gold&amp;quot; oder &amp;quot;Blob&amp;quot;&lt;br /&gt;
    return getLinkTarget( item )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.tooltip( frame )&lt;br /&gt;
    local key, args = getArgKey( frame )&lt;br /&gt;
    local item      = getItem( key )&lt;br /&gt;
    local max       = tonumber( args.max or args.len or args.limit ) or DEFAULT_TOOLTIP_MAX&lt;br /&gt;
    local label     = args.label&lt;br /&gt;
    return buildTooltip( item, { max = max, label = label } )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Modul:Item/Data&amp;diff=219</id>
		<title>Modul:Item/Data</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Modul:Item/Data&amp;diff=219"/>
		<updated>2025-12-01T08:54:38Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Modul:Item/Data&lt;br /&gt;
-- Währungen aus Firestone Idle RPG&lt;br /&gt;
-- Hinweis: Die Typ-Gruppierung (z.B. &amp;quot;currencies&amp;quot;) passiert separat&lt;br /&gt;
--          in [[Modul:Item/Types]] und [[Modul:Item/Type]].&lt;br /&gt;
&lt;br /&gt;
local data = {&lt;br /&gt;
&lt;br /&gt;
    gold = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Gold&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Gold&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Eine der Hauptwährungen. Du erhältst [[Gold]], wenn deine [[Gruppe]] auf dem [[Schlachtfeld]] Gegner besiegt. Es wird für Gold-Verbesserungen genutzt und bestimmt, wie viele Firestones du beim Prestige im Tempel der Ewigen bekommst.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyGold&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    firestones = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Firestones&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Firestones&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Zweite Hauptwährung und Namensgeber des Spiels. Du bekommst Firestones, wenn du den Tempel der Ewigen ermächtigst. Firestones erhöhen dauerhaft deinen Gold-Gewinn.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyFirestone&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    gems = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Gems&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Gems&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Premiumwährung. Du kannst Gems mit Plattformwährung im Shop, in Extremwert-Bundles und in Spezialangeboten kaufen oder kostenlos über tägliche Belohnungen, wöchentliche Quests und Kartenziehungen erhalten. Sie werden für Ausrüstungstruhen, Inventargegenstände und andere Währungen im Shop verwendet.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyGem&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    void_crystals = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Void Crystals&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Void Crystals&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Du erhältst Void Crystals, wenn du doppelte Ausrüstung ziehst oder sie über bestimmte Angebote kaufst. Im Hall of Heroes werden sie eingesetzt, um die Ausrüstung deiner Helden aufzuwerten.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyVoidCrystal&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    meteorites = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Meteorites&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Meteorites&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Meteoriten werden automatisch von Minern gesammelt (eine pro Minute) und kommen zusätzlich aus täglichen Belohnungen, täglichen Quests und Kartenziehungen. Bestimmte Talente und Upgrades erhöhen den Gewinn. Sie werden für Meteoritenforschung in der Bibliothek und zum Freischalten höherer Ausrüstungsstufen genutzt.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyMeteorite&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    talent_points = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Talent Points&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Talents&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Mit jedem Charakterlevel erhältst du einen Talentpunkt. Talentpunkte werden im Talentbaum ausgegeben, um verschiedene dauerhafte Verbesserungen freizuschalten.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyTalentPoint&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    honor = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Honor&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Honor&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Erlangst du durch Missionen, tägliche Belohnungen, tägliche Quests und Kartenziehungen oder über bestimmte Angebote. Ehre bestimmt deinen Rang und wird mit dem Ehreneffekt multipliziert, um einen Bonus auf alle Hauptattribute zu gewähren.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyHonor&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    strange_dust = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Strange Dust&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Strange Dust&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Kommt vor allem aus Spähermissionen, täglichen Belohnungen, täglichen Quests und Kartenziehungen sowie aus dem Item-Shop und besonderen Angeboten. Strange Dust wird im Magic Quarter für Wächtererleuchtung und -entwicklung, beim Alchemisten für Experimente und Transmutationen und zum Freischalten von Soulstones der Stufe 2 verwendet.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyStrangeDust&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    glory = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Glory&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Glory&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Verdienst du, indem du tägliche und wöchentliche Herausforderungen des Battle Pass abschließt. Glory wird benötigt, um Truhen und Währungen im Battle Pass einzulösen und zeitlich begrenzte Buffs freizuschalten.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyGlory&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    contracts = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Contracts&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Contracts&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Verträge erhältst du aus der Taverne, dem Battle Pass und Mini-Events. Sie werden benötigt, um Söldner auf dem Piratenschiff anzuheuern und im Hall of Heroes die Seltenheit deiner Helden zu erhöhen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyContracts&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    guild_coins = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Guild Coins&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Guild Coins&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Schaltest du mit Charakterlevel 10 frei. Gildenmünzen werden genutzt, um den Lebensbaum deiner Gilde zu verbessern. Du erhältst sie über Gildenexpeditionen oder durch spezielle Angebote im Gildenshop.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyGuildCoin&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    expedition_tokens = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Expedition Tokens&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Expedition Tokens&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Schaltest du mit Charakterlevel 10 frei. Expeditionsmarken verbessern deinen persönlichen Lebensbaum und erhöhen das Level deiner Kriegsmaschinen. Außerdem kannst du damit Spitzhacken, Emblems of Valor und Juwelentruhen im Gildenshop kaufen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyExpeditionToken&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    beer = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Beer&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Beer&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Wird ab Charakterlevel 15 freigeschaltet. Bier fällt auf dem Schlachtfeld in einem festen Rhythmus und kann zusätzlich als Belohnung aus der Taverne kommen. Gilden- und Kampagnenboni sowie bestimmte Talente erhöhen den Biergewinn. Bier wird im Tavernenmarkt verwendet, um Game Tokens zu kaufen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyBeer&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    game_tokens = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Game Tokens&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Game Tokens&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Schaltest du ab Charakterlevel 15 frei. Game Tokens können mit Bier oder Gems im Tavernenmarkt gekauft werden und werden genutzt, um Karten in der Taverne zu ziehen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyGameToken&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    luck = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Luck&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Luck&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Wird ab Charakterlevel 15 freigeschaltet. Glück erhältst du beim Ziehen von Karten in der Taverne; die Menge hängt von Art und Anzahl der Belohnungen ab. Dein Glückslevel gibt dauerhafte Boni auf Attribute, Gold- und Meteoritengewinn und beeinflusst, wie viele Gegenstände du aus bestimmten Kartenbelohnungen erhältst.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyLuck&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    golden_keys = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Golden Keys&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Golden Keys&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Goldene Schlüssel werden ab Charakterlevel 15 freigeschaltet und können als zufällige Belohnung aus der Taverne droppen. Du verwendest sie, um Amulette im Shop zu kaufen und Ancient Artifacts in der Taverne zu verzaubern.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyGoldenKey&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    prestige_tokens = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Prestige Tokens&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Prestige Tokens&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Prestigemarken werden ab Glückslevel 2 freigeschaltet und können als Belohnung aus der Taverne erscheinen. Sie werden im Tempel der Ewigen für epische Prestiges eingesetzt.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyPrestigeToken&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    exotic_coins = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Exotic Coins&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Exotic Coins&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Schaltest du mit Charakterlevel 30 frei. Exotische Münzen erhältst du, indem du ungenutzte Inventargegenstände beim Exotic Merchant verkaufst oder sie über Kartenziehungen und Angebote bekommst. Sie werden für exotische Upgrades beim Exotic Merchant genutzt.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyExoticCoin&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    arcane_crystals = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Arcane Crystals&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Arcane Crystals&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Werden ab Charakterlevel 50 freigeschaltet. Du baust sie an der Arkankristall-Stelle im Gildenbildschirm ab und erhältst sie anschließend per Ingame-Post. Arkankristalle werden für das Awakening deiner Helden verwendet.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyArcaneCrystal&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    ethereal_shards = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Ethereal Shards&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Ethereal Shards&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Schaltest du mit Charakterlevel 50 frei. Ätherische Splitter erhältst du, wenn du doppelte Juwelen ziehst. Im Hall of Heroes dienen sie dazu, die Juwelen deiner Helden aufzuwerten.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyEtherealShard&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    blueprints = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Blueprints&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Blueprints&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Baupläne werden ab Charakterlevel 50 freigeschaltet. Du bekommst sie aus Kampagnenmissionen, Kampagnenbeute und der täglichen Befreiungsquest oder kaufst sie mit Expeditionsmarken im Gildenshop. Sie verbessern die Attribute deiner Kriegsmaschinen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyBlueprint&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    tools = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Tools&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Tools&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Werkzeuge werden ab Charakterlevel 50 freigeschaltet. Du kannst sie beim Engineer abholen oder mit Expeditionsmarken im Gildenshop kaufen. Sie werden genutzt, um die Seltenheit deiner Kriegsmaschinen zu erhöhen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyTool&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    emblems_of_valor = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Emblems of Valor&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Emblems of Valor&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Schaltest du mit Charakterlevel 50 frei. Embleme des Mutes erhältst du aus Kampagnen- und Befreiungsmissionen, aus Kampagnenbeute oder über den Gildenshop gegen Expeditionsmarken. Sie werden im Emblem Market des Exotic Merchant verwendet, um Juwelentruhen zu kaufen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyEmblemOfValor&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    elixirs_of_life = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Elixirs of Life&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Elixirs of Life&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Werden ab Charakterlevel 50 und 70 Kampagnensternen freigeschaltet. Du erhältst Lebenselixiere aus Dungeon-Missionen oder kaufst sie mit Expeditionsmarken im Gildenshop. Sie werden beim Alchemisten benutzt, um Juwelentruhen zu transmutieren.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyElixirOfLife&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    emblems_of_courage = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Emblems of Courage&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Emblems of Courage&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Schaltest du mit Charakterlevel 65 frei. Embleme der Tapferkeit erhältst du aus Missionsbelohnungen und Kartenziehungen oder kaufst sie mit Gems im Item-Shop. Sie dienen zum Kauf von Ausrüstungstruhen im Emblem Market des Exotic Merchant.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyEmblemOfCourage&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    pickaxes = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Pickaxes&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Pickaxes&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Spitzhacken werden ab Charakterlevel 50 freigeschaltet. Du kannst sie kostenlos in begrenzter Menge beanspruchen oder mit Expeditionsmarken im Gildenshop erwerben. Sie werden benutzt, um den Arkankristall im Gildenbildschirm abzubauen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyPickaxe&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    nobles_token = {&lt;br /&gt;
        [&#039;title&#039;]    = &amp;quot;Noble&#039;s token&amp;quot;,&lt;br /&gt;
        [&#039;link&#039;]     = &amp;quot;Noble&#039;s token&amp;quot;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Wird ab Charakterlevel 60 freigeschaltet. Du erhältst täglich 10 Noble’s Tokens gratis, bis zu einem Maximum von 10. Sie werden verwendet, um Scarab’s Game zu spielen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyNoblesToken&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    pharaohs_tokens = {&lt;br /&gt;
        [&#039;title&#039;]    = &amp;quot;Pharaoh&#039;s Tokens&amp;quot;,&lt;br /&gt;
        [&#039;link&#039;]     = &amp;quot;Pharaoh&#039;s Tokens&amp;quot;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Pharaonenmarken werden ab Charakterlevel 60 freigeschaltet und können mit Expeditionsmarken im Scarab’s Shop gekauft werden. Du nutzt sie, um Scarab’s Game zu spielen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyPharaohsToken&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    ancient_coins = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Ancient Coins&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Ancient Coins&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Antike Münzen werden ab Charakterlevel 60 freigeschaltet. Du erhältst sie, wenn du Scarab’s Game spielst, und gibst sie aus, um Truhen in der Pharaoh’s Vault zu öffnen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyAncientCoin&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    scarabs = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Scarabs&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Scarabs&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Skarabäen werden ab Charakterlevel 60 freigeschaltet. Du bekommst sie aus Truhen in der Pharaoh’s Vault; die Menge hängt vom Belohnungstyp und der Anzahl der erhaltenen Items ab. Dein Skarab-Level verleiht dauerhafte Attributsboni und bestimmt unter anderem, wie viele Lost Inscriptions du aus Kisten bekommst.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyScarab&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    soul_embers = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Soul Embers&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Soul Embers&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Seelenfunken werden ab Charakterlevel 60 freigeschaltet und können als Belohnung aus der Pharaoh’s Vault droppen. Du verwendest sie, um Beasts in Scarab’s Game aufzuleveln.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencySoulEmber&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    cobra_keys = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Cobra Keys&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Cobra Keys&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Kobraschlüssel werden ab Charakterlevel 60 freigeschaltet und können als Belohnung aus Kartenziehungen in der Taverne erscheinen. Sie werden genutzt, um Beasts in Scarab’s Game zu verzaubern.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyCobraKey&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    twilight_hourglasses = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Twilight Hourglasses&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Twilight Hourglasses&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Zwielicht-Sanduhrgläser werden ab Charakterlevel 60 freigeschaltet und können als Belohnung aus der Pharaoh’s Vault droppen. Du verwendest sie, um Ancient Artifacts in der Taverne aufzuleveln.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyTwilightHourglass&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    moon_stones = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Moon Stones&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Moon Stones&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Mondsteine werden ab Charakterlevel 100 freigeschaltet. Du erhältst jeden Tag 10 Mondsteine kostenlos (bis zu einem Maximum von 10). Sie werden genutzt, um die Dark Gods im Chaos Rift anzugreifen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyMoonStone&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    eclipse_stones = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Eclipse Stones&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Eclipse Stones&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Eklipssteine werden ab Charakterlevel 100 freigeschaltet. Du kannst sie im Chaos Rift Shop kaufen oder in der Pharaoh’s Vault finden. Sie dienen dazu, die Dark Gods weiter anzugreifen, wenn dir die Mondsteine ausgehen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyEclipseStone&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    orbs_of_light = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Orbs of Light&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Orbs of Light&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Lichtkugeln werden ab Charakterlevel 100 freigeschaltet. Du erhältst sie, wenn du im Chaos Rift einen Dark God triffst. Sie werden genutzt, um den Heilig-Schaden deiner Guardians zu erhöhen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyOrbOfLight&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    dark_runes = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Dark Runes&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Dark Runes&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Dunkele Runen werden ab Charakterlevel 100 freigeschaltet. Du bekommst sie als Belohnung, wenn du einen Dark God im Chaos Rift triffst. Sie werden im Chaos Rift Shop ausgegeben, um Tomes of Power zu kaufen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyDarkRune&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    dragon_blood = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Dragon Blood&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Dragon Blood&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Drachenblut wird ab Charakterlevel 120 freigeschaltet. Du erhältst es aus Drachenmissionen, Kartenziehungen und über den Item-Shop gegen Gems. Es wird in den Experimenten und Transmutationen des Alchemisten verwendet.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyDragonBlood&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    soul_shards = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Soul Shards&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Soul Shards&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Seelensplitter werden ab Charakterlevel 200 freigeschaltet. Du bekommst sie, wenn du doppelte Soulstones ziehst. Im Hall of Heroes werden sie benutzt, um Soulstones aufzuwerten.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencySoulShard&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    virtue = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Virtue&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Virtue&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Tugend wird ab Charakterlevel 200 freigeschaltet. Du erhältst sie, indem du Segnungen beim Oracle kaufst oder sie im Orakelshop und in Spezialangeboten erwirbst. Tugend erhöht dein Oracle-Level, was Ritualgewinne steigert und deinem Firestone-Gewinn einen permanenten Bonus verleiht.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyVirtue&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    emblems_of_brotherhood = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Emblems of Brotherhood&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Emblems of Brotherhood&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Embleme der Bruderschaft werden ab Charakterlevel 200 freigeschaltet. Du erhältst sie, wenn du Rituale beim Oracle durchführst oder Truhen in der Pharaoh’s Vault öffnest. Sie werden im Emblem Market des Exotic Merchant verwendet, um Celestial Chests zu kaufen.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyEmblemOfBrotherhood&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    star_essence = {&lt;br /&gt;
        [&#039;title&#039;]    = &#039;Star Essence&#039;,&lt;br /&gt;
        [&#039;link&#039;]     = &#039;Star Essence&#039;,&lt;br /&gt;
        [&#039;describe&#039;] = &#039;Sternenessenz wird ab Charakterlevel 200 freigeschaltet. Du bekommst sie durch Rituale beim Oracle und als Beute aus der Pharaoh’s Vault. Sie wird beim Alchemisten genutzt, um Celestial Chests zu transmutieren.&#039;,&lt;br /&gt;
        [&#039;img&#039;]      = &#039;CurrencyStarEssence&#039;,&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return data&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=218</id>
		<title>Vorlage:Item</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=218"/>
		<updated>2025-12-01T08:43:02Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
  --&amp;gt;{{#switch:{{lc:{{{1|}}}}}&lt;br /&gt;
  |desc = {{#invoke:Item|desc|{{{2}}}}}&lt;br /&gt;
  |type = {{#invoke:Item|type|{{{2}}}}}&lt;br /&gt;
  |img = [[Datei:{{#invoke:Item|img|{{{2}}}}}.png|&amp;lt;!--&lt;br /&gt;
  --&amp;gt;{{#switch:{{lc:{{{3}}}}}&lt;br /&gt;
        |16=16x16px&lt;br /&gt;
        |24=24x24px&lt;br /&gt;
        |32=32x32px&lt;br /&gt;
        |48=48x48px&lt;br /&gt;
        |64=64x64px&lt;br /&gt;
        |96=96x96px&lt;br /&gt;
        |128=128x128px&lt;br /&gt;
        |#default=64x64px&lt;br /&gt;
      }}&amp;lt;!--&lt;br /&gt;
  --&amp;gt;]]&lt;br /&gt;
  |#default =&lt;br /&gt;
    {{#if:{{{tip|}}}&lt;br /&gt;
      |{{#invoke:Item|tooltip&lt;br /&gt;
          |{{{1}}}&lt;br /&gt;
          |label={{#invoke:Item|short|{{{1}}}}}&lt;br /&gt;
          |max={{{max|}}}&lt;br /&gt;
        }}&lt;br /&gt;
      |{{#invoke:Item|short|{{{1}}}}}&lt;br /&gt;
    }}&lt;br /&gt;
  }}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Dokumentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=217</id>
		<title>Vorlage:Item</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=217"/>
		<updated>2025-12-01T08:38:51Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
  --&amp;gt;{{#switch:{{lc:{{{1|}}}}}&lt;br /&gt;
  |desc = {{#invoke:Item|desc|{{{2}}}}}&lt;br /&gt;
  |type = {{#invoke:Item|type|{{{2}}}}}&lt;br /&gt;
  |img = [[Datei:{{#invoke:Item|img|{{{2}}}}}.png|&amp;lt;!--&lt;br /&gt;
  --&amp;gt;{{#switch:{{lc:{{{3}}}}}&lt;br /&gt;
        |16=16x16px&lt;br /&gt;
        |32=32x32px&lt;br /&gt;
        |48=48x48px&lt;br /&gt;
        |64=64x64px&lt;br /&gt;
        |80=80x80px&lt;br /&gt;
        |96=96x96px&lt;br /&gt;
        |112=112x112px&lt;br /&gt;
        |128=128x128px&lt;br /&gt;
        |#default=64x64px&lt;br /&gt;
      }}&amp;lt;!--&lt;br /&gt;
  --&amp;gt;]]&lt;br /&gt;
  |#default =&lt;br /&gt;
    {{#if:{{{tip|}}}&lt;br /&gt;
      |{{#invoke:Item|tooltip&lt;br /&gt;
          |{{{1}}}&lt;br /&gt;
          |label={{#invoke:Item|short|{{{1}}}}}&lt;br /&gt;
          |max={{{max|}}}&lt;br /&gt;
        }}&lt;br /&gt;
      |{{#invoke:Item|short|{{{1}}}}}&lt;br /&gt;
    }}&lt;br /&gt;
  }}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Dokumentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=216</id>
		<title>Vorlage:Item</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=216"/>
		<updated>2025-12-01T08:33:24Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
  --&amp;gt;{{#switch:{{lc:{{{1|}}}}}&lt;br /&gt;
  |desc = {{#invoke:Item|desc|{{{2}}}}}&lt;br /&gt;
  |type = {{#invoke:Item|type|{{{2}}}}}&lt;br /&gt;
  |img = [[Datei:{{#invoke:Item|img|{{{2}}}}}.png|&amp;lt;!--&lt;br /&gt;
  --&amp;gt;{{#switch:{{lc:{{{3}}}}}&lt;br /&gt;
        |0=64x64px&lt;br /&gt;
        |1=48x48px&lt;br /&gt;
        |2=32x32px&lt;br /&gt;
        |3=24x24px&lt;br /&gt;
        |4=16x16px&lt;br /&gt;
        |#default=32x32px&lt;br /&gt;
      }}&amp;lt;!--&lt;br /&gt;
  --&amp;gt;]]&lt;br /&gt;
  |#default =&lt;br /&gt;
    {{#if:{{{tip|}}}&lt;br /&gt;
      |{{#invoke:Item|tooltip&lt;br /&gt;
          |{{{1}}}&lt;br /&gt;
          |label={{#invoke:Item|short|{{{1}}}}}&lt;br /&gt;
          |max={{{max|}}}&lt;br /&gt;
        }}&lt;br /&gt;
      |{{#invoke:Item|short|{{{1}}}}}&lt;br /&gt;
    }}&lt;br /&gt;
  }}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Dokumentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=215</id>
		<title>Vorlage:Item</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=215"/>
		<updated>2025-12-01T08:27:44Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#switch:{{lc:{{{1|}}} }}|desc = {{#invoke:Item|desc|{{{2}}}}}|type = {{#invoke:Item|type|{{{2}}}}}|#default = {{#invoke:Item|short|{{{1}}}}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Dokumentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=214</id>
		<title>Vorlage:Item</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=214"/>
		<updated>2025-12-01T08:26:21Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#switch:{{lc:{{{1|}}} }}|desc = {{#invoke:Item|desc|{{{2}}} }}|type = {{#invoke:Item|type|{{{2}}} }}|#default = {{#invoke:Item|short|{{{2}}} }} }}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Dokumentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=213</id>
		<title>Vorlage:Item</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=213"/>
		<updated>2025-12-01T08:24:49Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#switch:{{lc:{{{1|}}} }}|desc = {{#invoke:Item|desc|{{{2}}} }}|type = {{#invoke:Item|type|{{{2}}} }}|#default = {{#invoke:Item|short|{{{1}}} }} }}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Dokumentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=212</id>
		<title>Vorlage:Item</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=212"/>
		<updated>2025-12-01T08:24:11Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#switch:{{lc:{{{1|}}} }}|desc = {{#invoke:Item|desc|{{{2}}} }}|type = {{#invoke:Item|type|{{{2}}} }}|#default = {{#invoke:Item|short|{{{1}}}} }} }}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Dokumentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=211</id>
		<title>Vorlage:Item</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=211"/>
		<updated>2025-12-01T08:22:31Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#switch:{{lc:{{{1|}}}}}|desc = {{#invoke:Item|desc|{{{2}}}}}|type = {{#invoke:Item|type|{{{2}}}}}|#default = {{#if:{{{tip|}}}|{{#invoke:Item|tooltip|{{{1}}}|label={{#invoke:Item|short|{{{1}}}}}|max={{{max|}}}}}|{{#invoke:Item|short|{{{1}}}}}}}}}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Dokumentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=210</id>
		<title>Vorlage:Item</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=210"/>
		<updated>2025-12-01T08:21:00Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
  --&amp;gt;{{#switch:{{lc:{{{1|}}}}}&lt;br /&gt;
  |desc = {{#invoke:Item|desc|{{{2}}}}}&lt;br /&gt;
  |type = {{#invoke:Item|type|{{{2}}}}}&lt;br /&gt;
  |#default = {{#if:{{{tip|}}}|{{#invoke:Item|tooltip|{{{1}}}|label={{#invoke:Item|short|{{{1}}}}}|max={{{max|}}}}}|{{#invoke:Item|short|{{{1}}}}}}}}}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Dokumentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=209</id>
		<title>Vorlage:Item</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=209"/>
		<updated>2025-12-01T08:20:07Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
  --&amp;gt;{{#switch:{{lc:{{{1|}}}}}&lt;br /&gt;
  |desc = {{#invoke:Item|desc|{{{2}}}}}&lt;br /&gt;
  |type = {{#invoke:Item|type|{{{2}}}}}&lt;br /&gt;
  |img = [[Datei:{{#invoke:Item|img|{{{2}}}}}.png|&amp;lt;!--&lt;br /&gt;
  --&amp;gt;{{#switch:{{lc:{{{3}}}}&lt;br /&gt;
        |0=64x64px&lt;br /&gt;
        |1=48x48px&lt;br /&gt;
        |2=32x32px&lt;br /&gt;
        |3=24x24px&lt;br /&gt;
        |4=16x16px&lt;br /&gt;
        |#default=24x24px&lt;br /&gt;
      }}&amp;lt;!--&lt;br /&gt;
  --&amp;gt;]]&lt;br /&gt;
  |#default = {{#if:{{{tip|}}}|{{#invoke:Item|tooltip|{{{1}}}|label={{#invoke:Item|short|{{{1}}}}}|max={{{max|}}}}}|{{#invoke:Item|short|{{{1}}}}}}}}}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Dokumentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=208</id>
		<title>Vorlage:Item</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=208"/>
		<updated>2025-12-01T08:19:18Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
  --&amp;gt;{{#switch:{{lc:{{{1}}}}}&lt;br /&gt;
  |desc = {{#invoke:Item|desc|{{{2}}}}}&lt;br /&gt;
  |type = {{#invoke:Item|type|{{{2}}}}}&lt;br /&gt;
  |img = [[Datei:{{#invoke:Item|img|{{{2}}}}}.png|&amp;lt;!--&lt;br /&gt;
  --&amp;gt;{{#switch:{{lc:{{{3}}}}&lt;br /&gt;
        |0=64x64px&lt;br /&gt;
        |1=48x48px&lt;br /&gt;
        |2=32x32px&lt;br /&gt;
        |3=24x24px&lt;br /&gt;
        |4=16x16px&lt;br /&gt;
        |#default=24x24px&lt;br /&gt;
      }}&amp;lt;!--&lt;br /&gt;
  --&amp;gt;]]&lt;br /&gt;
  |#default = {{#if:{{{tip|}}}|{{#invoke:Item|tooltip|{{{1}}}|label={{#invoke:Item|short|{{{1}}}}}|max={{{max|}}}}}|{{#invoke:Item|short|{{{1}}}}}}}}}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Dokumentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=207</id>
		<title>Vorlage:Item</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=207"/>
		<updated>2025-12-01T08:17:00Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
  --&amp;gt;{{#switch:{{lc:{{{1}}}}}&lt;br /&gt;
  |desc = {{#invoke:Item|desc|{{{2}}}}}&lt;br /&gt;
  |type = {{#invoke:Item|type|{{{2}}}}}&lt;br /&gt;
  |img = [[Datei:{{#invoke:Item|img|{{{2}}}}}.png|&amp;lt;!--&lt;br /&gt;
  --&amp;gt;{{#switch:{{lc:{{{3|2}}}}}&lt;br /&gt;
        |0=64x64px&lt;br /&gt;
        |1=48x48px&lt;br /&gt;
        |2=32x32px&lt;br /&gt;
        |3=24x24px&lt;br /&gt;
        |4=16x16px&lt;br /&gt;
        |#default=24x24px&lt;br /&gt;
      }}&amp;lt;!--&lt;br /&gt;
  --&amp;gt;]]&lt;br /&gt;
  |#default =&amp;lt;!--&lt;br /&gt;
  --&amp;gt;{{#if:{{{tip|}}}&lt;br /&gt;
      |{{#invoke:Item|tooltip&lt;br /&gt;
          |{{{1}}}&lt;br /&gt;
          |label={{#invoke:Item|short|{{{1}}}}}&lt;br /&gt;
          |max={{{max|}}}&lt;br /&gt;
        }}&lt;br /&gt;
      |{{#invoke:Item|short|{{{1}}}}}&lt;br /&gt;
    }}&lt;br /&gt;
  }}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Dokumentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=206</id>
		<title>Vorlage:Item</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=206"/>
		<updated>2025-12-01T08:15:22Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
  --&amp;gt;{{#switch:{{lc:{{{1}}}}}&lt;br /&gt;
  |desc = {{#invoke:Item|desc|{{{2}}}}}&lt;br /&gt;
  |type = {{#invoke:Item|type|{{{2}}}}}&lt;br /&gt;
  |img = [[Datei:{{#invoke:Item|img|{{{2}}}}}.png|&amp;lt;!--&lt;br /&gt;
  --&amp;gt;{{#switch:{{lc:{{{3|2}}}}}&lt;br /&gt;
        |0=64x64px&lt;br /&gt;
        |1=48x48px&lt;br /&gt;
        |2=32x32px&lt;br /&gt;
        |3=24x24px&lt;br /&gt;
        |4=16x16px&lt;br /&gt;
        |#default=24x24px&lt;br /&gt;
      }}&amp;lt;!--&lt;br /&gt;
  --&amp;gt;]]&lt;br /&gt;
  |#default =&lt;br /&gt;
    {{#if:{{{tip|}}}&lt;br /&gt;
      |{{#invoke:Item|tooltip&lt;br /&gt;
          |{{{1}}}&lt;br /&gt;
          |label={{#invoke:Item|short|{{{1}}}}}&lt;br /&gt;
          |max={{{max|}}}&lt;br /&gt;
        }}&lt;br /&gt;
      |{{#invoke:Item|short|{{{1}}}}}&lt;br /&gt;
    }}&lt;br /&gt;
  }}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Dokumentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=205</id>
		<title>Vorlage:Item</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=205"/>
		<updated>2025-12-01T08:09:57Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
  --&amp;gt;{{#switch:{{lc:{{{1}}}}}&lt;br /&gt;
  |desc = {{#invoke:Item|desc|{{{2}}}}}&lt;br /&gt;
  |type = {{#invoke:Item|type|{{{2}}}}}&lt;br /&gt;
  |img  = [[Datei:{{#invoke:Item|img|{{{2}}}}}.png|&amp;lt;!--&lt;br /&gt;
			--&amp;gt;{{#switch:{{lc:{{{3}}}}}&lt;br /&gt;
				|0=64x64px&lt;br /&gt;
				|1=48x48px&lt;br /&gt;
				|2=32x32px&lt;br /&gt;
				|3=24x24px&lt;br /&gt;
				|4=16x16px&lt;br /&gt;
				|#default=24x24px&lt;br /&gt;
			}}&amp;lt;!--&lt;br /&gt;
		--&amp;gt;]]&lt;br /&gt;
  |#default = {{#if:{{{tip|}}}&lt;br /&gt;
    |{{#invoke:Item|tooltip|{{{2}}}|label={{#invoke:Item|short|{{{2}}}}|max={{{max|}}}}}&lt;br /&gt;
    |{{#invoke:Item|short|{{{2}}}}}&lt;br /&gt;
    }}&lt;br /&gt;
  }}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Dokumentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=204</id>
		<title>Vorlage:Item</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=204"/>
		<updated>2025-12-01T08:06:44Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
  --&amp;gt;{{#switch:{{lc:{{{1|}}}}}&lt;br /&gt;
  |desc = {{#invoke:Item|desc|{{{2}}}}}&lt;br /&gt;
  |type = {{#invoke:Item|type|{{{2}}}}}&lt;br /&gt;
  |img  = [[Datei:{{#invoke:Item|img|{{{1}}} }}.png|&amp;lt;!--&lt;br /&gt;
			--&amp;gt;{{#switch:{{lc:{{{3}}}}}&lt;br /&gt;
				|0=64x64px&lt;br /&gt;
				|1=48x48px&lt;br /&gt;
				|2=32x32px&lt;br /&gt;
				|3=24x24px&lt;br /&gt;
				|4=16x16px&lt;br /&gt;
				|#default=24x24px&lt;br /&gt;
			}}&amp;lt;!--&lt;br /&gt;
		--&amp;gt;]]&amp;lt;!--&lt;br /&gt;
    --&amp;gt;|#default = {{#if:{{{tip|}}}&lt;br /&gt;
      |{{#invoke:Item|tooltip|{{{1}}}|label={{#invoke:Item|short|{{{1}}}}|max={{{max|}}}}}&lt;br /&gt;
      |{{#invoke:Item|short|{{{1}}}}}&lt;br /&gt;
    }}&lt;br /&gt;
  }}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Dokumentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=203</id>
		<title>Vorlage:Item</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=203"/>
		<updated>2025-12-01T07:56:52Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
  --&amp;gt;{{#switch:{{lc:{{{1|}}}}}&amp;lt;!--&lt;br /&gt;
  --&amp;gt;|desc = {{#invoke:Item|desc|{{{2}}}}}&amp;lt;!--&lt;br /&gt;
  --&amp;gt;|type = {{#invoke:Item|type|{{{2}}}}}&amp;lt;!--&lt;br /&gt;
  --&amp;gt;|img  = [[Datei:{{#invoke:Item|img|{{{2}}}}}.png|&amp;lt;!--&lt;br /&gt;
    --&amp;gt;{{#switch:{{lc:{{{3|}}}}}&amp;lt;!--&lt;br /&gt;
      --&amp;gt;|0=64x64px&amp;lt;!--&lt;br /&gt;
      --&amp;gt;|1=48x48px&amp;lt;!--&lt;br /&gt;
      --&amp;gt;|2=32x32px&amp;lt;!--&lt;br /&gt;
      --&amp;gt;|3=24x24px&amp;lt;!--&lt;br /&gt;
      --&amp;gt;|4=16x16px&amp;lt;!--&lt;br /&gt;
      --&amp;gt;|#default=32x32px&amp;lt;!--&lt;br /&gt;
    --&amp;gt;}}]]&amp;lt;!--&lt;br /&gt;
    --&amp;gt;|#default = {{#if:{{{tip|}}}&amp;lt;!--&lt;br /&gt;
      --&amp;gt;|{{#invoke:Item|tooltip|{{{1}}}|label={{#invoke:Item|short|{{{1}}}}|max={{{max|}}}}}&amp;lt;!--&lt;br /&gt;
      --&amp;gt;|{{#invoke:Item|short|{{{1}}}}}&amp;lt;!--&lt;br /&gt;
    --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
  --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Dokumentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=202</id>
		<title>Vorlage:Item</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=202"/>
		<updated>2025-12-01T07:24:05Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
  --&amp;gt;{{#switch:{{lc:{{{1|}}}}}&lt;br /&gt;
  |desc =&lt;br /&gt;
    {{#invoke:Item|desc|{{{2}}}}}&lt;br /&gt;
  |type =&lt;br /&gt;
    {{#invoke:Item|type|{{{2}}}}}&lt;br /&gt;
  |img =&lt;br /&gt;
    [[Datei:{{#invoke:Item|img|{{{2}}}}}.png|&lt;br /&gt;
      {{#switch:{{lc:{{{3}}}}}&lt;br /&gt;
        |0=64x64px&lt;br /&gt;
        |1=48x48px&lt;br /&gt;
        |2=32x32px&lt;br /&gt;
        |3=24x24px&lt;br /&gt;
        |4=16x16px&lt;br /&gt;
        |#default=64x64px&lt;br /&gt;
      }}&lt;br /&gt;
    ]]&lt;br /&gt;
  |#default =&lt;br /&gt;
    {{#if:{{{tip|}}}&lt;br /&gt;
      |{{#invoke:Item|tooltip&lt;br /&gt;
          |{{{1}}}&lt;br /&gt;
          |label={{#invoke:Item|short|{{{1}}}}}&lt;br /&gt;
          |max={{{max|}}}&lt;br /&gt;
        }}&lt;br /&gt;
      |{{#invoke:Item|short|{{{1}}}}}&lt;br /&gt;
    }}&lt;br /&gt;
  }}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Dokumentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Link&amp;diff=201</id>
		<title>Vorlage:Link</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Link&amp;diff=201"/>
		<updated>2025-11-30T20:50:38Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!-- #&amp;lt;WRAPPER&amp;gt;&lt;br /&gt;
	--&amp;gt;&amp;lt;span class=&amp;quot;fs-icon&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
		#&amp;lt;PAGE&amp;gt;&lt;br /&gt;
		--&amp;gt;{{#ifexpr: {{{label|1}}} |&amp;lt;!-- #&amp;lt;Visibility FLAG&amp;gt;&lt;br /&gt;
			--&amp;gt;&amp;lt;span class=&amp;quot;label&amp;quot;&amp;gt;[[{{#invoke:Item|link|{{{1}}}}}|{{#invoke:Item|short|{{{1}}}}}]]&amp;lt;/span&amp;gt;&amp;lt;!--&lt;br /&gt;
		--&amp;gt;|}}&amp;lt;!--&lt;br /&gt;
	--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!-- #&amp;lt;/&amp;gt;&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=200</id>
		<title>Vorlage:Item</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=200"/>
		<updated>2025-11-30T20:50:25Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#switch:{{lc:{{{1|}}}}}&lt;br /&gt;
 | type = {{#invoke:Item|type|{{{2}}}}}&lt;br /&gt;
 | desc = {{#invoke:Item|desc|{{{2}}}}}&lt;br /&gt;
 | img =&amp;lt;!--&lt;br /&gt;
--&amp;gt; [[Datei:{{#invoke:Item|img|{{{2}}}}}.png|&lt;br /&gt;
    {{#switch:{{lc:{{{3|}}}}}&lt;br /&gt;
      |0=64x64px&lt;br /&gt;
      |1=48x48px&lt;br /&gt;
      |2=32x32px&lt;br /&gt;
      |3=24x24px&lt;br /&gt;
      |4=16x16px&lt;br /&gt;
      |#default=64x64px&lt;br /&gt;
    }}]]&lt;br /&gt;
 | title =&amp;lt;!-- Titel-Modus wie früher: {{Item|title|gold|[tooltip]}} --&amp;gt;&lt;br /&gt;
   {{#if:{{{tooltip|{{{3|}}}}}}&lt;br /&gt;
     | {{#invoke:Item|tooltip&lt;br /&gt;
         | {{{2}}}&lt;br /&gt;
         | label={{#invoke:Item|title|{{{2}}}}}&lt;br /&gt;
         | max={{{max|}}}&lt;br /&gt;
       }}&lt;br /&gt;
     | {{#invoke:Item|title|{{{2}}}}}&lt;br /&gt;
   }}&lt;br /&gt;
 | #default =&amp;lt;!-- Standard: {{Item|gold}} bzw. {{Item|gold|1}} --&amp;gt;&lt;br /&gt;
   {{#if:{{{tooltip|{{{2|}}}}}}&lt;br /&gt;
     | {{#invoke:Item|tooltip&lt;br /&gt;
         | {{{1}}}&lt;br /&gt;
         | label={{#invoke:Item|title|{{{1}}}}}&lt;br /&gt;
         | max={{{max|}}}&lt;br /&gt;
       }}&lt;br /&gt;
     | {{#invoke:Item|title|{{{1}}}}}&lt;br /&gt;
   }}&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
; Titel&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Item|gold}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; – nur Titel&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Item|gold|1}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Item|gold|tooltip=1}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; – Titel mit Tooltip&lt;br /&gt;
&lt;br /&gt;
; Titel (alte Syntax, optional)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Item|title|gold}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Item|title|gold|1}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Typ (ohne Tooltip)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Item|type|gold}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → z.B. &amp;lt;code&amp;gt;Währung&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Beschreibung (ohne Tooltip)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Item|desc|gold}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Nur Bild&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Item|img|gold}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; – 64x64px&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Item|img|gold|2}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; – andere Größe (0–4 wie bei Icon)&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Amount&amp;diff=199</id>
		<title>Vorlage:Amount</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Amount&amp;diff=199"/>
		<updated>2025-11-30T20:50:09Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
  --&amp;gt;&amp;lt;span class=&amp;quot;fs-icon amount&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
    --&amp;gt;&amp;lt;span class=&amp;quot;text&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
      --&amp;gt;&amp;lt;span class=&amp;quot;amount&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
        --&amp;gt;{{{2}}}&amp;lt;span class=&amp;quot;sign&amp;quot;&amp;gt;×&amp;lt;/span&amp;gt;&amp;lt;!--&lt;br /&gt;
      --&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--&lt;br /&gt;
      --&amp;gt;&amp;lt;span class=&amp;quot;label&amp;quot;&amp;gt;[[&amp;lt;!--&lt;br /&gt;
        --&amp;gt;{{#invoke:Item|link|{{{1}}}}}&amp;lt;!--&lt;br /&gt;
        --&amp;gt;|&amp;lt;!--&lt;br /&gt;
        --&amp;gt;{{#invoke:Item|short|{{{1}}}}}&amp;lt;!--&lt;br /&gt;
      --&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;!--&lt;br /&gt;
    --&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--&lt;br /&gt;
    --&amp;gt;&amp;lt;span class=&amp;quot;img&amp;quot;&amp;gt;[[&amp;lt;!--&lt;br /&gt;
      --&amp;gt;Datei:{{#invoke:Item|img|{{{1}}}}}.png&amp;lt;!--&lt;br /&gt;
      --&amp;gt;|48x48px&amp;lt;!--&lt;br /&gt;
      --&amp;gt;|class=icon&amp;lt;!--&lt;br /&gt;
      --&amp;gt;|link={{#invoke:Item|link|{{{1}}}}}&amp;lt;!--&lt;br /&gt;
    --&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;!--&lt;br /&gt;
  --&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Dokumentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Link&amp;diff=198</id>
		<title>Vorlage:Link</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Link&amp;diff=198"/>
		<updated>2025-11-30T20:13:18Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Vorlage:Link – Link auf Item-Seite, optional mit Tooltip --&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;!-- #&amp;lt;WRAPPER&amp;gt;&lt;br /&gt;
	--&amp;gt;&amp;lt;span class=&amp;quot;fs-icon&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
		#&amp;lt;PAGE&amp;gt;&lt;br /&gt;
		--&amp;gt;{{#ifexpr: {{{label|1}}} |&amp;lt;!-- #&amp;lt;Visibility FLAG&amp;gt;&lt;br /&gt;
			--&amp;gt;&amp;lt;span class=&amp;quot;label&amp;quot;&amp;gt;[[{{#invoke:Item|link|{{{1}}}}}|{{#invoke:Item|short|{{{1}}}}}]]&amp;lt;/span&amp;gt;&amp;lt;!--&lt;br /&gt;
		--&amp;gt;|}}&amp;lt;!--&lt;br /&gt;
	--&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;!-- #&amp;lt;/&amp;gt;&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Link&amp;diff=197</id>
		<title>Vorlage:Link</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Link&amp;diff=197"/>
		<updated>2025-11-30T20:11:20Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Vorlage:Link – Link auf Item-Seite, optional mit Tooltip --&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{#if:{{{tooltip|{{{2|}}}}}}|{{#invoke:Item|tooltip|{{{1}}}|label=[[{{#invoke:Item|link|{{{1}}}}}|{{#invoke:Item|short|{{{1}}}}}]]|max={{{max|}}}}}|[[{{#invoke:Item|link|{{{1}}}}}|{{#invoke:Item|short|{{{1}}}}}]]}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Link|gold}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; – Link auf Item-Seite&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Link|gold|1}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Link|gold|tooltip=1}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; – Link mit Tooltip&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Link&amp;diff=196</id>
		<title>Vorlage:Link</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Link&amp;diff=196"/>
		<updated>2025-11-30T20:01:51Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Vorlage:Link – Link auf Item-Seite, optional mit Tooltip --&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{tooltip|{{{2|}}}}}}&amp;lt;!--&lt;br /&gt;
  --&amp;gt;|{{#invoke:Item|tooltip&amp;lt;!--&lt;br /&gt;
      --&amp;gt;|{{{1}}}&amp;lt;!--&lt;br /&gt;
      --&amp;gt;|label=[[{{#invoke:Item|link|{{{1}}}}}|{{#invoke:Item|title|{{{1}}}}}]]&amp;lt;!--&lt;br /&gt;
      --&amp;gt;|max={{{max|}}}&amp;lt;!--&lt;br /&gt;
    --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
  --&amp;gt;|[[{{#invoke:Item|link|{{{1}}}}}|{{#invoke:Item|title|{{{1}}}}}]]&amp;lt;!--&lt;br /&gt;
--&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Link|gold}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; – Link auf Item-Seite&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Link|gold|1}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Link|gold|tooltip=1}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; – Link mit Tooltip&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Link&amp;diff=195</id>
		<title>Vorlage:Link</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Link&amp;diff=195"/>
		<updated>2025-11-30T19:59:55Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Vorlage:Link – Link auf Item-Seite, optional mit Tooltip --&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{tooltip|{{{2|}}}}}}&lt;br /&gt;
  |{{#invoke:Item|tooltip&lt;br /&gt;
      |{{{1}}}&lt;br /&gt;
      |label=[[{{#invoke:Item|link|{{{1}}}}}|{{#invoke:Item|title|{{{1}}}}}]]&lt;br /&gt;
      |max={{{max|}}}&lt;br /&gt;
    }}&lt;br /&gt;
  |[[{{#invoke:Item|link|{{{1}}}}}|{{#invoke:Item|title|{{{1}}}}}]]&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Link|gold}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; – Link auf Item-Seite&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Link|gold|1}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Link|gold|tooltip=1}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; – Link mit Tooltip&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Link&amp;diff=194</id>
		<title>Vorlage:Link</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Link&amp;diff=194"/>
		<updated>2025-11-30T19:45:15Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: Die Seite wurde neu angelegt: „&amp;lt;!-- Vorlage:Link – Link auf Item-Seite, optional mit Tooltip --&amp;gt; &amp;lt;includeonly&amp;gt;&amp;lt;!-- --&amp;gt;{{#if:{{{tooltip|{{{2|}}}}}}   | {{#invoke:Item|tooltip       | {{{1}}}       | label={{{1}}}}}       | max={{{max|}}}     }}   | {{{1}}}}} }}&amp;lt;!-- --&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt; == Verwendung == * &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Link|gold}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; – Link auf Item-Sei…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Vorlage:Link – Link auf Item-Seite, optional mit Tooltip --&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{tooltip|{{{2|}}}}}}&lt;br /&gt;
  | {{#invoke:Item|tooltip&lt;br /&gt;
      | {{{1}}}&lt;br /&gt;
      | label=[[{{#invoke:Item|link|{{{1}}}}}|{{#invoke:Item|title|{{{1}}}}}]]&lt;br /&gt;
      | max={{{max|}}}&lt;br /&gt;
    }}&lt;br /&gt;
  | [[{{#invoke:Item|link|{{{1}}}}}|{{#invoke:Item|title|{{{1}}}}}]]&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Link|gold}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; – Link auf Item-Seite&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Link|gold|1}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Link|gold|tooltip=1}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; – Link mit Tooltip&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
	<entry>
		<id>https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=193</id>
		<title>Vorlage:Item</title>
		<link rel="alternate" type="text/html" href="https://fs.playcodex.de/index.php?title=Vorlage:Item&amp;diff=193"/>
		<updated>2025-11-30T19:44:21Z</updated>

		<summary type="html">&lt;p&gt;Webmaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Vorlage:Item – Titel/Typ/Beschreibung/Bild --&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#switch:{{lc:{{{1|}}}}}&lt;br /&gt;
 | type = {{#invoke:Item|type|{{{2}}}}}&lt;br /&gt;
 | desc = {{#invoke:Item|desc|{{{2}}}}}&lt;br /&gt;
 | img =&amp;lt;!--&lt;br /&gt;
--&amp;gt; [[Datei:{{#invoke:Item|img|{{{2}}}}}.png|&lt;br /&gt;
    {{#switch:{{lc:{{{3|}}}}}&lt;br /&gt;
      |0=64x64px&lt;br /&gt;
      |1=48x48px&lt;br /&gt;
      |2=32x32px&lt;br /&gt;
      |3=24x24px&lt;br /&gt;
      |4=16x16px&lt;br /&gt;
      |#default=64x64px&lt;br /&gt;
    }}]]&lt;br /&gt;
 | title =&amp;lt;!-- Titel-Modus wie früher: {{Item|title|gold|[tooltip]}} --&amp;gt;&lt;br /&gt;
   {{#if:{{{tooltip|{{{3|}}}}}}&lt;br /&gt;
     | {{#invoke:Item|tooltip&lt;br /&gt;
         | {{{2}}}&lt;br /&gt;
         | label={{#invoke:Item|title|{{{2}}}}}&lt;br /&gt;
         | max={{{max|}}}&lt;br /&gt;
       }}&lt;br /&gt;
     | {{#invoke:Item|title|{{{2}}}}}&lt;br /&gt;
   }}&lt;br /&gt;
 | #default =&amp;lt;!-- Standard: {{Item|gold}} bzw. {{Item|gold|1}} --&amp;gt;&lt;br /&gt;
   {{#if:{{{tooltip|{{{2|}}}}}}&lt;br /&gt;
     | {{#invoke:Item|tooltip&lt;br /&gt;
         | {{{1}}}&lt;br /&gt;
         | label={{#invoke:Item|title|{{{1}}}}}&lt;br /&gt;
         | max={{{max|}}}&lt;br /&gt;
       }}&lt;br /&gt;
     | {{#invoke:Item|title|{{{1}}}}}&lt;br /&gt;
   }}&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
; Titel&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Item|gold}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; – nur Titel&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Item|gold|1}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Item|gold|tooltip=1}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; – Titel mit Tooltip&lt;br /&gt;
&lt;br /&gt;
; Titel (alte Syntax, optional)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Item|title|gold}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Item|title|gold|1}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Typ (ohne Tooltip)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Item|type|gold}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → z.B. &amp;lt;code&amp;gt;Währung&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Beschreibung (ohne Tooltip)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Item|desc|gold}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Nur Bild&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Item|img|gold}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; – 64x64px&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Item|img|gold|2}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; – andere Größe (0–4 wie bei Icon)&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Webmaster</name></author>
	</entry>
</feed>