12,872
edits
No edit summary |
(Amend/fix overrides for Summoning marks) |
||
(16 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
local Shared = require("Module:Shared") | local Shared = require("Module:Shared") | ||
local GameData = require("Module:GameData") | |||
-- Locally index some functions for performance | -- Locally index some functions for performance | ||
Line 24: | Line 22: | ||
["rock"] = "svg", -- Some exceptions included by name below | ["rock"] = "svg", -- Some exceptions included by name below | ||
["thieving"] = "svg", | ["thieving"] = "svg", | ||
["constellation"] = "svg", | ["constellation"] = "svg", | ||
["building"] = "svg" | ["building"] = "svg", | ||
["resource"] = "svg", | |||
["township"] = "svg" | |||
}, | }, | ||
["name"] = { | ["name"] = { | ||
Line 64: | Line 63: | ||
["Event Clue 3"] = "svg", | ["Event Clue 3"] = "svg", | ||
["Event Clue 4"] = "svg", | ["Event Clue 4"] = "svg", | ||
-- Pets | -- Pets | ||
["Cris"] = "svg", | ["Cris"] = "svg", | ||
Line 169: | Line 148: | ||
local typeExtOverrides = { | local typeExtOverrides = { | ||
-- Example: ["item"] = { ["Chicken"] = "png" } | -- Example: ["item"] = { ["Chicken"] = "png" } | ||
["item"] = { | |||
-- These familiars also exist as type mark, where the image is of PNG format | |||
["Golbin Thief"] = "svg", | |||
["Occultist"] = "svg", | |||
["Wolf"] = "svg", | |||
["Ent"] = "svg", | |||
["Mole"] = "svg", | |||
["Octopus"] = "svg", | |||
["Minotaur"] = "svg", | |||
["Centaur"] = "svg", | |||
["Witch"] = "svg", | |||
["Pig"] = "svg", | |||
["Crow"] = "svg", | |||
["Leprechaun"] = "svg", | |||
["Cyclops"] = "svg", | |||
["Yak"] = "svg", | |||
["Unicorn"] = "svg", | |||
["Dragon"] = "svg", | |||
["Monkey"] = "svg", | |||
["Salamander"] = "svg", | |||
["Bear"] = "svg", | |||
["Devil"] = "svg" | |||
} | } | ||
} | |||
--When calling for an icon of type Key, instead use type Value | --When calling for an icon of type Key, instead use type Value | ||
Line 226: | Line 228: | ||
['Diamond Luck Potion'] = {'Diamond Luck Potion I', 'item'}, | ['Diamond Luck Potion'] = {'Diamond Luck Potion I', 'item'}, | ||
['Damage Reduction Potion'] = {'Damage Reduction Potion I', 'item'}, | ['Damage Reduction Potion'] = {'Damage Reduction Potion I', 'item'}, | ||
['Area Control Potion'] = {'Area Control Potion I', 'item'}, | |||
['Adaptive Defence Potion'] = {'Adaptive Defence Potion I', 'item'}, | |||
['Slayer Bounty Potion'] = {'Slayer Bounty Potion I', 'item'}, | |||
['Holy Bulwark Potion'] = {'Holy Bulwark Potion I', 'item'}, | |||
['Adaptive Accuracy'] = {'Adaptive Accuracy Potion I', 'item'}, | |||
['Reaper Potion'] = {'Reaper Potion I', 'item'}, | |||
['Penetration Potion'] = {'Penetration Potion I', 'item'}, | |||
['Critical Strike Potion'] = {'Critical Strike Potion I', 'item'}, | |||
['Bird Nest Potion'] = {'Bird Nest Potion I', 'item'}, | ['Bird Nest Potion'] = {'Bird Nest Potion I', 'item'}, | ||
['Controlled Heat Potion'] = {'Controlled Heat Potion I', 'item'}, | ['Controlled Heat Potion'] = {'Controlled Heat Potion I', 'item'}, | ||
['Generous Cook Potion'] = {'Generous Cook Potion I', 'item'}, | ['Generous Cook Potion'] = {'Generous Cook Potion I', 'item'}, | ||
['Seeing Gold Potion'] = {'Seeing Gold Potion I', 'item'}, | |||
['Fishermans Potion'] = {'Fishermans Potion I', 'item'}, | ['Fishermans Potion'] = {'Fishermans Potion I', 'item'}, | ||
['Skilled Fletching Potion'] = {'Skilled Fletching Potion I', 'item'}, | ['Skilled Fletching Potion'] = {'Skilled Fletching Potion I', 'item'}, | ||
Line 240: | Line 251: | ||
['Herblore Potion'] = {'Herblore Potion I', 'item'}, | ['Herblore Potion'] = {'Herblore Potion I', 'item'}, | ||
['Generous Harvest Potion'] = {'Generous Harvest Potion I', 'item'}, | ['Generous Harvest Potion'] = {'Generous Harvest Potion I', 'item'}, | ||
[' | ['Alchemic Practice Potion'] = {'Alchemic Practice Potion I', 'item'}, | ||
['Gem Detector Potion'] = {'Gem Detector Potion I', 'item'}, | |||
['Multicooker Potion'] = {'Multicooker Potion I', 'item'}, | |||
['Star Seeker Potion'] = {'Star Seeker Potion I', 'item'}, | |||
['Traps Potion'] = {'Traps Potion I', 'item'}, | |||
['Enkindled Yields Potion'] = {'Enkindled Yields Potion I', 'item'}, | |||
['Alt Magic Potion'] = {'Alt Magic Potion I', 'item'}, | |||
-- Township resources | |||
['GP'] = {'Coins', ''}, | |||
['Food'] = {'Raw Beef', 'item'}, | |||
['Ore'] = {'Iron', 'rock'}, | |||
['Bar'] = {'Iron Bar', 'item'}, | |||
['Herbs'] = {'Garum Herb', 'item'}, | |||
['Clothing'] = {'Leather Body', 'item'}, | |||
-- Township generic statue building | |||
['Statue of Worship'] = 'Statue of Nothing', | |||
-- Easter egg stuff | -- Easter egg stuff | ||
["Lemonade (Empty)"] = "Lemonade", | ["Lemonade (Empty)"] = "Lemonade", | ||
Line 272: | Line 298: | ||
["Lemonade (Wait for it!)"] = "Lemonade", | ["Lemonade (Wait for it!)"] = "Lemonade", | ||
["Lemonade (Full)"] = "Lemonade" | ["Lemonade (Full)"] = "Lemonade" | ||
} | |||
--When calling for an icon for Key + Type, replace with image Value, and optionally override type also | |||
local typeImgOverrides = { | |||
['resource'] = { | |||
['Rune Essence'] = {'Rune Essence', 'item'}, | |||
['Leather'] = {'Leather', 'item'}, | |||
} | |||
} | } | ||
--When calling for an icon for Key, the link goes to Value | --When calling for an icon for Key, the link goes to Value | ||
Line 279: | Line 312: | ||
['Spider2'] = 'Brown Spider' | ['Spider2'] = 'Brown Spider' | ||
} | } | ||
--When calling for an icon for Key + Type, the link goes to Value | |||
local typeLinkOverrides = { | |||
['resource'] = { | |||
-- Township resources | |||
['Food'] = '', | |||
['Wood'] = '', | |||
['Planks'] = '', | |||
['Stone'] = '', | |||
['Bar'] = '', | |||
['Ore'] = '', | |||
['Coal'] = '', | |||
['Rune Essence'] = '', | |||
['Herbs'] = '', | |||
['Potions'] = '', | |||
['Leather'] = '', | |||
['Clothing'] = '' | |||
}, | |||
['township'] = { | |||
['Workers'] = '', | |||
['Statistics'] = '', | |||
['Town'] = '' | |||
} | |||
} | |||
--If no other text override was specified for the given link, use these | --If no other text override was specified for the given link, use these | ||
local txtOverrides = { | local txtOverrides = { | ||
Line 293: | Line 350: | ||
['Necromancer'] = true, | ['Necromancer'] = true, | ||
['Dark Knight'] = true, | ['Dark Knight'] = true, | ||
['Vampire'] = true | ['Vampire'] = true, | ||
['Phantom'] = true, | |||
['Spectre'] = true, | |||
['Siren'] = true, | |||
['Lightning Spirit'] = true, | |||
} | |||
--When calling for an icon for Key, add a css class | |||
local imgClassOverrides = { | |||
-- Township Stat Icons are licensed from Font Awesome Free 5.14.0 under CC BY 4.0 (https://github.com/FortAwesome/Font-Awesome/tree/5.14.0) | |||
['Population'] = 'township-colortoggle', | |||
['Workers'] = 'township-colortoggle', | |||
['Storage'] = 'township-colortoggle', | |||
} | } | ||
Line 309: | Line 377: | ||
local qty = args.qty | local qty = args.qty | ||
local img = args.img ~= nil and args.img ~= '' and args.img or link | local img = args.img ~= nil and args.img ~= '' and args.img or link | ||
local class = args.class ~= nil and args.class ~= '' and args.class or '' | |||
local altText = args.alt ~= nil and args.alt or (notext and (text or link)) or '' | |||
local nospan = args.nospan ~= nil and args.nospan | |||
link = fixPagename(link) | link = fixPagename(link) | ||
Line 320: | Line 391: | ||
--MANUAL OVERRIDES | --MANUAL OVERRIDES | ||
local ovrImg = imgOverrides[link] | local ovrImg = imgOverrides[link] | ||
local ovrTypeImg = typeImgOverrides[iconType] | |||
if ovrTypeImg ~= nil then | |||
ovrImg = ovrTypeImg ~= nil and ovrTypeImg[img] or ovrImg | |||
end | |||
local ovrTxt = txtOverrides[link] | local ovrTxt = txtOverrides[link] | ||
local ovrLink = linkOverrides[link] | local ovrLink = linkOverrides[link] | ||
local ovrTypeLink = typeLinkOverrides[iconType] | |||
if ovrTypeLink ~= nil and ovrTypeLink[img] ~= nil then | |||
if ovrTypeLink[img] == '' then | |||
nolink = true | |||
else | |||
ovrLink = ovrTypeLink[img] | |||
end | |||
end | |||
local hasText = (text ~= nil and text ~= '') | local hasText = (text ~= nil and text ~= '') | ||
if ovrImg ~= nil and img == link then | if ovrImg ~= nil and img == link then | ||
Line 331: | Line 414: | ||
end | end | ||
end | end | ||
local ovrClass = imgClassOverrides[link] | |||
-- Type & extension overrides must be after adjustments have been made | -- Type & extension overrides must be after adjustments have been made | ||
-- for any image overrides | -- for any image overrides | ||
Line 360: | Line 444: | ||
if ovrType ~= nil then | if ovrType ~= nil then | ||
iconType = ovrType | iconType = ovrType | ||
end | |||
if ovrClass ~= nil then | |||
class = ovrClass | |||
end | end | ||
-- There are a couple specific double overrides to be included that don't fit in the above lists | -- There are a couple specific double overrides to be included that don't fit in the above lists | ||
Line 377: | Line 464: | ||
local txtImg = (iconType ~= nil and iconType ~= '' and img .. '_(' .. iconType .. ')' or img) .. '.' .. ext | local txtImg = (iconType ~= nil and iconType ~= '' and img .. '_(' .. iconType .. ')' or img) .. '.' .. ext | ||
-- Include a link unless no link -and- no text was requested | -- Include a link unless no link -and- no text was requested | ||
local txtLink = '|link=' .. (nolink | local txtLink = '|link=' .. (nolink and '' or link) | ||
resultText = '[[File:' .. txtImg .. '|' .. txtSize .. 'x' .. txtSize .. 'px' .. txtLink .. ']]' | resultText = '[[File:' .. txtImg .. '|' .. txtSize .. 'x' .. txtSize .. 'px|alt=' .. altText .. txtLink .. ']]' | ||
if class ~= nil and class ~= '' then | |||
resultText = '<span class="'..class..'">'..resultText..'</span>' | |||
end | |||
end | end | ||
Line 397: | Line 487: | ||
if menu then | if menu then | ||
return '{| class="articletable" style="display:inline-block;vertical-align:middle;"\r\n|-\r\n|' .. resultText .. '\r\n|}' | return '{| class="articletable" style="display:inline-block;vertical-align:middle;"\r\n|-\r\n|' .. resultText .. '\r\n|}' | ||
elseif not noicon then | elseif not noicon and not nospan then | ||
return '<span style="display:inline-block">' .. resultText .. '</span>' | return '<span style="display:inline-block">' .. resultText .. '</span>' | ||
else | else | ||
Line 412: | Line 502: | ||
function p._SkillReq(skill, level, showText) | function p._SkillReq(skill, level, showText) | ||
local result = p.Icon({skill, type='skill', notext='true | local altText = (showText and '') or skill | ||
local result = p.Icon({skill, type='skill', notext=(showText and '' or true), nospan=true, alt=altText}) | |||
if level == nil then level = 'Unknown [[Category:Pages with script errors]]' end | if level == nil then level = 'Unknown [[Category:Pages with script errors]]' end | ||
result = result.." Level "..level | result = result.." Level "..level | ||
Line 440: | Line 528: | ||
iconname = linkname..' I' | iconname = linkname..' I' | ||
end | end | ||
local altTextItem = (showText and '') or linkname | |||
local altTextMastery = (showText and '') or ' Mastery' | |||
local result = 'Level '..level..' ' | local result = 'Level '..level..' ' | ||
result = result..p.Icon({linkname, img=iconname, type='item', notext = true})..p.Icon({'Mastery', notext=true}) | result = result..p.Icon({linkname, img=iconname, type='item', notext=true, nospan=true, alt=altTextItem})..p.Icon({'Mastery', notext=true, nospan=true, alt=altTextMastery}) | ||
if showText then result = result..'[['..linkname..']] [[Mastery]]' end | if showText then result = result..'[['..linkname..']] [[Mastery]]' end | ||
result = '<span style="display:inline-block">'..result..'</span>' | result = '<span style="display:inline-block">'..result..'</span>' | ||
Line 456: | Line 546: | ||
end | end | ||
function p._Currency(fileName, link, amt, maxAmt) | function p._Currency(fileName, link, altText, amt, maxAmt) | ||
local amtText = formatnum(amt) | local amtText = formatnum(amt) | ||
if maxAmt ~= nil and maxAmt >= amt then | if maxAmt ~= nil and maxAmt >= amt then | ||
Line 468: | Line 558: | ||
fileText = fileText .. '|link=' .. link | fileText = fileText .. '|link=' .. link | ||
end | end | ||
fileText = fileText .. ']] ' | fileText = fileText .. '|alt=' .. ((altText == nil and '') or altText) .. ']] ' | ||
end | end | ||
Line 475: | Line 565: | ||
function p.GP(amt, maxamt) | function p.GP(amt, maxamt) | ||
return p._Currency('Coins.svg', 'Coins', amt, maxamt) | return p._Currency('Coins.svg', 'Coins', 'GP', amt, maxamt) | ||
end | end | ||
function p.SC(amt, maxamt) | function p.SC(amt, maxamt) | ||
return p._Currency('Slayer Coins.svg', 'Currency#Slayer Coins', amt, maxamt) | return p._Currency('Slayer Coins.svg', 'Currency#Slayer Coins', 'SC', amt, maxamt) | ||
end | end | ||
function p.RC(amt, maxamt) | function p.RC(amt, maxamt) | ||
return p._Currency('Raid_Coins.svg', 'Currency#Raid Coins', amt, maxamt) | return p._Currency('Raid_Coins.svg', 'Currency#Raid Coins', 'RC', amt, maxamt) | ||
end | |||
--Adding a shortcut function for this | |||
function p.TotH() | |||
return p.Icon({'Throne of the Herald Expansion', ext='svg', notext=true, img='TotH'}) | |||
end | |||
function p.getExpansionIcon(id) | |||
local ns, _ = GameData.getLocalID(id) | |||
if ns == 'melvorTotH' then | |||
return p.TotH()..' ' | |||
else | |||
return '' | |||
end | |||
end | end | ||
return p | return p |