Module:Icons: Difference between revisions

From Melvor Idle
mNo edit summary
(Use tabs instead of spaces for indentation)
Line 7: Line 7:
--Extension overrides for items that have non-svg images
--Extension overrides for items that have non-svg images
local extOverrides = {
local extOverrides = {
  ["Adventure"] = "png",
["Adventure"] = "png",
  ["Crown of Rhaelyx"] = "png",
["Crown of Rhaelyx"] = "png",
  ["Jewel of Rhaelyx"] = "png",
["Jewel of Rhaelyx"] = "png",
  ["Circlet of Rhaelyx"] = "png",
["Circlet of Rhaelyx"] = "png",
  ["Charge Stone of Rhaelyx"] = "png",
["Charge Stone of Rhaelyx"] = "png",
  ["Mysterious Stone"] = "png",
["Mysterious Stone"] = "png",
  ["Lemon"] = "jpg",
["Lemon"] = "jpg",
  ["Lemons"] = "jpg",
["Lemons"] = "jpg",
  ["Lemonade"] = "jpg",
["Lemonade"] = "jpg",
  ["Miolite Sprig"] = "png",
["Miolite Sprig"] = "png",
  ["Miolite Trio"] = "png",
["Miolite Trio"] = "png",
  ["Miolite Warden"] = "png",
["Miolite Warden"] = "png",
  ["Miolite Monarch"] = "png",
["Miolite Monarch"] = "png",
  ["Wicked Greater Dragon"] = "png",
["Wicked Greater Dragon"] = "png",
  ["Hunting Greater Dragon"] = "png",
["Hunting Greater Dragon"] = "png",
  ["Chaotic Greater Dragon"] = "png",
["Chaotic Greater Dragon"] = "png",
  ["Beavis"] = "png",
["Beavis"] = "png",
  ["Pudding Duckie"] = "png",
["Pudding Duckie"] = "png",
  ["Pyro"] = "png",
["Pyro"] = "png",
  ["Snek"] = "png",
["Snek"] = "png",
  ["Larry, the Lonely Lizard"] = "png",
["Larry, the Lonely Lizard"] = "png",
  ["Caaarrrlll"] = "png",
["Caaarrrlll"] = "png",
  ["Gronk"] = "png",
["Gronk"] = "png",
  ["Finn, the Cat"] = "png",
["Finn, the Cat"] = "png",
  ["Marahute"] = "png",
["Marahute"] = "png",
  ["Monk-ey"] = "png",
["Monk-ey"] = "png",
  ["Asura"] = "png",
["Asura"] = "png",
  ["Summoning Shard (Silver)"] = "png",
["Summoning Shard (Silver)"] = "png",
  ["Summoning Shard (Red)"] = "png",
["Summoning Shard (Red)"] = "png",
  ["Summoning Shard (Green)"] = "png",
["Summoning Shard (Green)"] = "png",
  ["Summoning Shard (Gold)"] = "png",
["Summoning Shard (Gold)"] = "png",
  ["Summoning Shard (Blue)"] = "png",
["Summoning Shard (Blue)"] = "png",
  ["Summoning Shard (Black)"] = "png",
["Summoning Shard (Black)"] = "png",
  ['Infernal Core'] = 'png',
['Infernal Core'] = 'png',
  ['Cool Glasses'] = 'png',
['Cool Glasses'] = 'png',
  ["Wizard's Sigil"] = 'png',
["Wizard's Sigil"] = 'png',
  ["Wizard's Scroll"] = 'png',
["Wizard's Scroll"] = 'png',
  ["Whetstone"] = 'png',
["Whetstone"] = 'png',
  ["Whale (Perfect)"] = 'png',
["Whale (Perfect)"] = 'png',
  ["Trout (Perfect)"] = 'png',
["Trout (Perfect)"] = 'png',
  ["Training Shield"] = 'png',
["Training Shield"] = 'png',
  ["Thiever's Cape"] = 'png',
["Thiever's Cape"] = 'png',
  ["Thief's Moneysack"] = 'png',
["Thief's Moneysack"] = 'png',
  ["Swordfish (Perfect)"] = 'png',
["Swordfish (Perfect)"] = 'png',
  ["Strawberry Cupcake (Perfect)"] = 'png',
["Strawberry Cupcake (Perfect)"] = 'png',
  ["Strawberry Cupcake"] = 'png',
["Strawberry Cupcake"] = 'png',
  ["Strawberry Cake (Perfect)"] = 'png',
["Strawberry Cake (Perfect)"] = 'png',
  ["Strawberry Cake"] = 'png',
["Strawberry Cake"] = 'png',
  ["Stack of Bones"] = 'png',
["Stack of Bones"] = 'png',
  ["Sneak-Ers"] = 'png',
["Sneak-Ers"] = 'png',
  ["Shrimp (Perfect)"] = 'png',
["Shrimp (Perfect)"] = 'png',
  ["Shipwheel"] = 'png',
["Shipwheel"] = 'png',
  ["Shark (Perfect)"] = 'png',
["Shark (Perfect)"] = 'png',
  ["Seed Pouch"] = 'png',
["Seed Pouch"] = 'png',
  ["Seahorse (Perfect)"] = 'png',
["Seahorse (Perfect)"] = 'png',
  ["Sardine (Perfect)"] = 'png',
["Sardine (Perfect)"] = 'png',
  ["Salmon (Perfect)"] = 'png',
["Salmon (Perfect)"] = 'png',
  ["Sailor's Top"] = 'png',
["Sailor's Top"] = 'png',
  ["Runecrafting Pouch"] = 'png',
["Runecrafting Pouch"] = 'png',
  ["Ring of Wealth"] = 'png',
["Ring of Wealth"] = 'png',
  ["Raw Chicken"] = 'png',
["Raw Chicken"] = 'png',
  ["Raw Beef"] = 'png',
["Raw Beef"] = 'png',
  ["Prayer Scroll"] = 'png',
["Prayer Scroll"] = 'png',
  ["Plain Pizza Slice (Perfect)"] = 'png',
["Plain Pizza Slice (Perfect)"] = 'png',
  ["Plain Pizza Slice"] = 'png',
["Plain Pizza Slice"] = 'png',
  ["Pile of Ores"] = 'png',
["Pile of Ores"] = 'png',
  ["Pile of Logs"] = 'png',
["Pile of Logs"] = 'png',
  ["Miner's Helmet"] = 'png',
["Miner's Helmet"] = 'png',
  ["Merchant's Permit"] = 'png',
["Merchant's Permit"] = 'png',
  ["Meat Pizza Slice (Perfect)"] = 'png',
["Meat Pizza Slice (Perfect)"] = 'png',
  ["Meat Pizza Slice"] = 'png',
["Meat Pizza Slice"] = 'png',
  ["Marksman's Sigil"] = 'png',
["Marksman's Sigil"] = 'png',
  ["Manta Ray (Perfect)"] = 'png',
["Manta Ray (Perfect)"] = 'png',
  ["Lumberjack's Top"] = 'png',
["Lumberjack's Top"] = 'png',
  ["Lobster (Perfect)"] = 'png',
["Lobster (Perfect)"] = 'png',
  ["Lemon Cake (Perfect)"] = 'png',
["Lemon Cake (Perfect)"] = 'png',
  ["Lemon Cake"] = 'png',
["Lemon Cake"] = 'png',
  ["Knight's Sigil"] = 'png',
["Knight's Sigil"] = 'png',
  ["Knight's Defender"] = 'png',
["Knight's Defender"] = 'png',
  ["Knight's Cape"] = 'png',
["Knight's Cape"] = 'png',
  ["Jeweled Necklace"] = 'png',
["Jeweled Necklace"] = 'png',
  ["Jester's Hat"] = 'png',
["Jester's Hat"] = 'png',
  ["Jadestone"] = 'png',
["Jadestone"] = 'png',
  ["Herring (Perfect)"] = 'png',
["Herring (Perfect)"] = 'png',
  ["Hearty Soup (Perfect)"] = 'png',
["Hearty Soup (Perfect)"] = 'png',
  ["Hearty Soup"] = 'png',
["Hearty Soup"] = 'png',
  ["Gold Crested Shield"] = 'png',
["Gold Crested Shield"] = 'png',
  ["Golbin Mask"] = 'png',
["Golbin Mask"] = 'png',
  ["Giant Club"] = 'png',
["Giant Club"] = 'png',
  ["Fishing Hook"] = 'png',
["Fishing Hook"] = 'png',
  ["Fine Coinpurse"] = 'png',
["Fine Coinpurse"] = 'png',
  ["Fanfish (Perfect)"] = 'png',
["Fanfish (Perfect)"] = 'png',
  ["Cream Corn Soup (Perfect)"] = 'png',
["Cream Corn Soup (Perfect)"] = 'png',
  ["Cream Corn Soup"] = 'png',
["Cream Corn Soup"] = 'png',
  ["Cream"] = 'png',
["Cream"] = 'png',
  ["Crate of Food"] = 'png',
["Crate of Food"] = 'png',
  ["Crate of Basic Supplies"] = 'png',
["Crate of Basic Supplies"] = 'png',
  ["Crab (Perfect)"] = 'png',
["Crab (Perfect)"] = 'png',
  ["Cooking Apron"] = 'png',
["Cooking Apron"] = 'png',
  ["Chicken Soup (Perfect)"] = 'png',
["Chicken Soup (Perfect)"] = 'png',
  ["Chicken Soup"] = 'png',
["Chicken Soup"] = 'png',
  ["Chicken (Perfect)"] = 'png',
["Chicken (Perfect)"] = 'png',
  ["Chest of Gems"] = 'png',
["Chest of Gems"] = 'png',
  ["Cherry Seeds"] = 'png',
["Cherry Seeds"] = 'png',
  ["Cherry Cupcake (Perfect)"] = 'png',
["Cherry Cupcake (Perfect)"] = 'png',
  ["Cherry Cupcake"] = 'png',
["Cherry Cupcake"] = 'png',
  ["Cherry"] = 'png',
["Cherry"] = 'png',
  ["Chef's Spoon"] = 'png',
["Chef's Spoon"] = 'png',
  ["Chef's Hat"] = 'png',
["Chef's Hat"] = 'png',
  ["Cheese"] = 'png',
["Cheese"] = 'png',
  ["Cave Giant Boots"] = 'png',
["Cave Giant Boots"] = 'png',
  ["Cave Fish (Perfect)"] = 'png',
["Cave Fish (Perfect)"] = 'png',
  ["Carrot Cake (Perfect)"] = 'png',
["Carrot Cake (Perfect)"] = 'png',
  ["Carrot Cake"] = 'png',
["Carrot Cake"] = 'png',
  ["Carp (Perfect)"] = 'png',
["Carp (Perfect)"] = 'png',
  ["Bread (Perfect)"] = 'png',
["Bread (Perfect)"] = 'png',
  ["Bread"] = 'png',
["Bread"] = 'png',
  ["Book of Scholars"] = 'png',
["Book of Scholars"] = 'png',
  ["Bob's Gloves"] = 'png',
["Bob's Gloves"] = 'png',
  ["Beef Pie (Perfect)"] = 'png',
["Beef Pie (Perfect)"] = 'png',
  ["Beef Pie"] = 'png',
["Beef Pie"] = 'png',
  ["Beef (Perfect)"] = 'png',
["Beef (Perfect)"] = 'png',
  ["Beef"] = 'png',
["Beef"] = 'png',
  ["Basic Soup (Perfect)"] = 'png',
["Basic Soup (Perfect)"] = 'png',
  ["Basic Soup"] = 'png',
["Basic Soup"] = 'png',
  ["Basic Bag"] = 'png',
["Basic Bag"] = 'png',
  ["Bag of Flour"] = 'png',
["Bag of Flour"] = 'png',
  ["Apple Tree Seeds"] = 'png',
["Apple Tree Seeds"] = 'png',
  ["Apple Pie (Perfect)"] = 'png',
["Apple Pie (Perfect)"] = 'png',
  ["Apple Pie"] = 'png',
["Apple Pie"] = 'png',
  ["Apple"] = 'png',
["Apple"] = 'png',
  ["Antique Vase"] = 'png',
["Antique Vase"] = 'png',
  ["Anglerfish (Perfect)"] = 'png',
["Anglerfish (Perfect)"] = 'png',
  ["Amulet of Incantation"] = 'png',
["Amulet of Incantation"] = 'png',
  ["Alchemist's Bag"] = 'png',
["Alchemist's Bag"] = 'png',
  ["Absorbing Shield"] = 'png',
["Absorbing Shield"] = 'png',
  ["Shield of Melee Power"] = 'png',
["Shield of Melee Power"] = 'png',
  ["Shield of Ranged Power"] = 'png',
["Shield of Ranged Power"] = 'png',
  ["Shield of Magic Power"] = 'png',
["Shield of Magic Power"] = 'png',
  ["Ring of Power"] = 'png',
["Ring of Power"] = 'png',
  ["Beginning of the End"] = 'png',
["Beginning of the End"] = 'png',
  ["Goo"] = 'png',
["Goo"] = 'png',
  ["Wildflower"] = 'png',
["Wildflower"] = 'png',
  ["Nature's Call Staff Top"] = 'png',
["Nature's Call Staff Top"] = 'png',
  ["Nature's Call Staff Bottom"] = 'png',
["Nature's Call Staff Bottom"] = 'png',
  ["Fine Poison Powder"] = 'png',
["Fine Poison Powder"] = 'png',
  ["Poison Scales"] = 'png',
["Poison Scales"] = 'png',
  ["Miolite Spore"] = 'png',
["Miolite Spore"] = 'png',
  ["Poison Essence"] = 'png',
["Poison Essence"] = 'png',
  ["Worm Spike"] = 'png',
["Worm Spike"] = 'png',
  ["Burning Essence"] = 'png',
["Burning Essence"] = 'png',
  ["Cursed Hands"] = 'png',
["Cursed Hands"] = 'png',
  ["Stinging Essence"] = 'png',
["Stinging Essence"] = 'png',
  ["Tough Shell"] = 'png',
["Tough Shell"] = 'png',
  ["Undead Essence"] = 'png',
["Undead Essence"] = 'png',
  ["Desecrated Bones"] = 'png',
["Desecrated Bones"] = 'png',
  ["War Axe"] = 'png',
["War Axe"] = 'png',
  ["Warberd"] = 'png',
["Warberd"] = 'png',
  ["Throwing Power Gloves"] = 'png',
["Throwing Power Gloves"] = 'png',
  ["Slingshot"] = 'png',
["Slingshot"] = 'png',
  ["Elerine Longbow"] = 'png',
["Elerine Longbow"] = 'png',
  ["Elerine Spear"] = 'png',
["Elerine Spear"] = 'png',
  ["Nature's Call Staff"] = 'png',
["Nature's Call Staff"] = 'png',
  ["Nature's Wrath Staff"] = 'png',
["Nature's Wrath Staff"] = 'png',
  ["Nature's Blessing Ring"] = 'png',
["Nature's Blessing Ring"] = 'png',
  ["Poisoned Shortbow"] = 'png',
["Poisoned Shortbow"] = 'png',
  ["Poisoned Dagger"] = 'png',
["Poisoned Dagger"] = 'png',
  ["Scaled Shield"] = 'png',
["Scaled Shield"] = 'png',
  ["Poison Virulence Ring"] = 'png',
["Poison Virulence Ring"] = 'png',
  ["Poison Virulence Gloves"] = 'png',
["Poison Virulence Gloves"] = 'png',
  ["Burning Madness Ring"] = 'png',
["Burning Madness Ring"] = 'png',
  ["Burning Madness Gloves"] = 'png',
["Burning Madness Gloves"] = 'png',
  ["Spiked Shell Ring"] = 'png',
["Spiked Shell Ring"] = 'png',
  ["Spiked Shell Gloves"] = 'png',
["Spiked Shell Gloves"] = 'png',
  ["Relentless Fury Ring"] = 'png',
["Relentless Fury Ring"] = 'png',
  ["Relentless Fury Gloves"] = 'png',
["Relentless Fury Gloves"] = 'png',
  ["Ring of Blade Echoes"] = 'png',
["Ring of Blade Echoes"] = 'png',
  ["Ring of Barrage"] = 'png',
["Ring of Barrage"] = 'png',
  ["Ring of Spirit Power"] = 'png',
["Ring of Spirit Power"] = 'png',
  ["Hinder Potion I"] = 'png',
["Hinder Potion I"] = 'png',
  ["Hinder Potion II"] = 'png',
["Hinder Potion II"] = 'png',
  ["Hinder Potion III"] = 'png',
["Hinder Potion III"] = 'png',
  ["Hinder Potion IV"] = 'png',
["Hinder Potion IV"] = 'png',
  ["Famished Potion I"] = 'png',
["Famished Potion I"] = 'png',
  ["Famished Potion II"] = 'png',
["Famished Potion II"] = 'png',
  ["Famished Potion III"] = 'png',
["Famished Potion III"] = 'png',
  ["Famished Potion IV"] = 'png',
["Famished Potion IV"] = 'png',
  ["Lethal Toxins Potion I"] = 'png',
["Lethal Toxins Potion I"] = 'png',
  ["Lethal Toxins Potion II"] = 'png',
["Lethal Toxins Potion II"] = 'png',
  ["Lethal Toxins Potion III"] = 'png',
["Lethal Toxins Potion III"] = 'png',
  ["Lethal Toxins Potion IV"] = 'png',
["Lethal Toxins Potion IV"] = 'png',
  ["Impending Darkness"] = 'png',
["Impending Darkness"] = 'png',
  ["Mastery Token (Astrology)"] = 'png',
["Mastery Token (Astrology)"] = 'png',
  ["Stardust"] = 'png',
["Stardust"] = 'png',
  ["Golden Stardust"] = 'png',
["Golden Stardust"] = 'png',
  ["Astrology Skillcape"] = 'png',
["Astrology Skillcape"] = 'png',
  ["Secret Stardust Potion I"] = 'png',
["Secret Stardust Potion I"] = 'png',
  ["Secret Stardust Potion II"] = 'png',
["Secret Stardust Potion II"] = 'png',
  ["Secret Stardust Potion III"] = 'png',
["Secret Stardust Potion III"] = 'png',
  ["Secret Stardust Potion IV"] = 'png',
["Secret Stardust Potion IV"] = 'png',
  ["Noxious Serpent"] = 'png',
["Noxious Serpent"] = 'png',
  ["Venomous Snake"] = 'png',
["Venomous Snake"] = 'png',
  ["Legaran Wurm"] = 'png',
["Legaran Wurm"] = 'png',
  ["Spiked Red Claw"] = 'png',
["Spiked Red Claw"] = 'png',
  ["Greater Skeletal Dragon"] = 'png',
["Greater Skeletal Dragon"] = 'png',
  ["Giant Moth"] = 'png',
["Giant Moth"] = 'png',
  ["Elerine Mage"] = 'png',
["Elerine Mage"] = 'png',
  ["Elerine Warrior"] = 'png',
["Elerine Warrior"] = 'png',
  ["Elerine Archer"] = 'png',
["Elerine Archer"] = 'png',
  ["Cursed Lich"] = 'png',
["Cursed Lich"] = 'png',
  ["Christmas Present (Blue)"] = 'png',
["Christmas Present (Blue)"] = 'png',
  ["Christmas Present (Green)"] = 'png',
["Christmas Present (Green)"] = 'png',
  ["Christmas Present (Purple)"] = 'png',
["Christmas Present (Purple)"] = 'png',
  ["Christmas Present (Standard)"] = 'png',
["Christmas Present (Standard)"] = 'png',
  ["Christmas Present (White)"] = 'png',
["Christmas Present (White)"] = 'png',
  ["Christmas Present (Yellow)"] = 'png',
["Christmas Present (Yellow)"] = 'png',
  ["Edible Candy Cane"] = 'png',
["Edible Candy Cane"] = 'png',
  ["Event Token (Holiday 2021)"] = 'png',
["Event Token (Holiday 2021)"] = 'png',
  ["Gingerbread House"] = 'png',
["Gingerbread House"] = 'png',
  ["Gingerbread Man"] = 'png',
["Gingerbread Man"] = 'png',
  ["Holiday Scarf"] = 'png',
["Holiday Scarf"] = 'png',
  ["Locked Chest"] = 'png',
["Locked Chest"] = 'png',
  ["Locked Chest Key"] = 'png',
["Locked Chest Key"] = 'png',
  ["Festive Chio"] = 'png',
["Festive Chio"] = 'png',
  ["Festive Cool Rock"] = 'png',
["Festive Cool Rock"] = 'png',
  ["Mastery Tokens"] = 'gif'
["Mastery Tokens"] = 'gif'
}
}


Line 244: Line 244:
--When calling for an icon of type Key, instead use type Value
--When calling for an icon of type Key, instead use type Value
local typeOverrides = {
local typeOverrides = {
  ['combat'] = 'combatArea',
['combat'] = 'combatArea',
  ['slayer'] = 'combatArea',
['slayer'] = 'combatArea',
}
}
--When calling for an icon for Key, replace with image Value, and optionally override type also
--When calling for an icon for Key, replace with image Value, and optionally override type also
local imgOverrides = {
local imgOverrides = {
  ['Alt Magic'] = 'Magic',
['Alt Magic'] = 'Magic',
  ['Alt. Magic'] = 'Magic',
['Alt. Magic'] = 'Magic',
  ['Alternative Magic'] = 'Magic',
['Alternative Magic'] = 'Magic',
  ['Item Alchemy'] = {'Item Alchemy III', 'spell'},
['Item Alchemy'] = {'Item Alchemy III', 'spell'},
  ['Superheat'] = {'Superheat IV', 'spell'},
['Superheat'] = {'Superheat IV', 'spell'},
  ['Melee'] = 'Combat',
['Melee'] = 'Combat',
  ['Spider (lv. 51)'] = 'Spider',
['Spider (lv. 51)'] = 'Spider',
  ['Spider (lv. 52)'] = 'Brown Spider',
['Spider (lv. 52)'] = 'Brown Spider',
  ['Basic Resupply'] = {'Lobster', 'item'},
['Basic Resupply'] = {'Lobster', 'item'},
  ['Standard Resupply'] = {'Crab', 'item'},
['Standard Resupply'] = {'Crab', 'item'},
  ['Generous Resupply'] = {'Shark', 'item'},
['Generous Resupply'] = {'Shark', 'item'},
  ['Cooking Upgrade 1'] = {'Cooking', 'skill'},
['Cooking Upgrade 1'] = {'Cooking', 'skill'},
  ['Cooking Upgrade 2'] = {'Cooking', 'skill'},
['Cooking Upgrade 2'] = {'Cooking', 'skill'},
  ['Loot Container Stacking'] = {'Amulet of Looting', 'item'},
['Loot Container Stacking'] = {'Amulet of Looting', 'item'},
  ['Bane, Instrument of Fear'] = 'Bane',
['Bane, Instrument of Fear'] = 'Bane',
  ['Mastery Token Astrology'] = 'Mastery Token (Astrology)',
['Mastery Token Astrology'] = 'Mastery Token (Astrology)',
  ['Event Token - Holiday 2021'] = 'Christmas Present (Yellow)'
['Event Token - Holiday 2021'] = 'Christmas Present (Yellow)'
}
}
--When calling for an icon for Key, the link goes to Value
--When calling for an icon for Key, the link goes to Value
local linkOverrides = {
local linkOverrides = {
  ['Alt Magic'] = 'Alternative Magic',
['Alt Magic'] = 'Alternative Magic',
  ['Alt. Magic'] = 'Alternative Magic',
['Alt. Magic'] = 'Alternative Magic',
  ['Spider2'] = 'Brown Spider',
['Spider2'] = 'Brown Spider',
  ["Deedree"] = 'Astrology#Constellations',
["Deedree"] = 'Astrology#Constellations',
  ["Iridan"] = 'Astrology#Constellations',
["Iridan"] = 'Astrology#Constellations',
  ["Ameria"] = 'Astrology#Constellations',
["Ameria"] = 'Astrology#Constellations',
  ["Terra"] = 'Astrology#Constellations',
["Terra"] = 'Astrology#Constellations',
  ["Vale"] = 'Astrology#Constellations',
["Vale"] = 'Astrology#Constellations',
  ["Syllia"] = 'Astrology#Constellations',
["Syllia"] = 'Astrology#Constellations',
  ["Arachi"] = 'Astrology#Constellations',
["Arachi"] = 'Astrology#Constellations',
  ["Ko"] = 'Astrology#Constellations',
["Ko"] = 'Astrology#Constellations',
  ["Tellus"] = 'Astrology#Constellations',
["Tellus"] = 'Astrology#Constellations',
  ["Hyden"] = 'Astrology#Constellations',
["Hyden"] = 'Astrology#Constellations',
  ["Qimican"] = 'Astrology#Constellations'
["Qimican"] = 'Astrology#Constellations'
}
}
--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 = {
  ['Spider2'] = 'Brown Spider'
['Spider2'] = 'Brown Spider'
}
}
--Ambiguous overrides section
--Ambiguous overrides section
Line 292: Line 292:


function p.Icon(frame)
function p.Icon(frame)
  local args = frame.args ~= nil and frame.args or frame
local args = frame.args ~= nil and frame.args or frame
  local link = args[1]
local link = args[1]
  local text = args[2]
local text = args[2]
  local iconType = args.type
local iconType = args.type
  local ext = args.ext ~= nil and args.ext ~= '' and args.ext or 'svg'
local ext = args.ext ~= nil and args.ext ~= '' and args.ext or 'svg'
  local notext = args.notext ~= nil and args.notext ~= ''
local notext = args.notext ~= nil and args.notext ~= ''
  local nolink = args.nolink ~= nil and args.nolink ~= ''
local nolink = args.nolink ~= nil and args.nolink ~= ''
  local noicon = args.noicon ~= nil and args.noicon ~= ''
local noicon = args.noicon ~= nil and args.noicon ~= ''
  local menu = args.menu ~= nil and args.menu ~= ''
local menu = args.menu ~= nil and args.menu ~= ''
  local imgSize = args.size ~= nil and args.size or 25
local imgSize = args.size ~= nil and args.size or 25
  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


  link = Shared.fixPagename(link)
link = Shared.fixPagename(link)
  img = Shared.fixPagename(img)
img = Shared.fixPagename(img)


  img = string.gsub(img, '#', '')
img = string.gsub(img, '#', '')
  img = string.gsub(img, '/Training', '')
img = string.gsub(img, '/Training', '')
  img = string.gsub(img, '/Guide', '')
img = string.gsub(img, '/Guide', '')
  link = string.gsub(link, '#', '')
link = string.gsub(link, '#', '')
  --MANUAL OVERRIDES
--MANUAL OVERRIDES
  if imgOverrides[link] ~= nil and img == link then
if imgOverrides[link] ~= nil and img == link then
  local ovr = imgOverrides[link]
local ovr = imgOverrides[link]
  if type(ovr) == 'string' then
if type(ovr) == 'string' then
  img = imgOverrides[link]
img = imgOverrides[link]
elseif type(ovr) == 'table' then
elseif type(ovr) == 'table' then
  img = ovr[1]
img = ovr[1]
  if ovr[2] ~= nil then iconType = ovr[2] end
if ovr[2] ~= nil then iconType = ovr[2] end
end
end
end
  end
if (text == nil or text == '') and txtOverrides[link] ~= nil then
  if (text == nil or text == '') and txtOverrides[link] ~= nil then
text = txtOverrides[link]
    text = txtOverrides[link]
end
  end
if linkOverrides[link] ~= nil then
  if linkOverrides[link] ~= nil then
if (text == nil or text == '') then text = link end
    if (text == nil or text == '') then text = link end
link = linkOverrides[link]
    link = linkOverrides[link]
end
  end
if typeExtOverrides[iconType] ~= nil and typeExtOverrides[iconType][img] ~= nil then
  if typeExtOverrides[iconType] ~= nil and typeExtOverrides[iconType][img] ~= nil then
ext = typeExtOverrides[iconType][img]
  ext = typeExtOverrides[iconType][img]
elseif extOverrides[img] ~= nil then  
  elseif extOverrides[img] ~= nil then  
ext = extOverrides[img]
    ext = extOverrides[img]
elseif iconType == 'mark' then
  elseif iconType == 'mark' then
ext = 'png'
    ext = 'png'
end
  end
if typeOverrides[iconType] ~= nil then
  if typeOverrides[iconType] ~= nil then
iconType = typeOverrides[iconType]
    iconType = typeOverrides[iconType]
end
  end
--There are a couple specific double overrides I want to include that don't fit in the above lists
  --There are a couple specific double overrides I want to include that don't fit in the above lists
if Shared.contains(ambiguousOverrides, link) then
  if Shared.contains(ambiguousOverrides, link) then
if (text == nil or text == '') then text = link end
    if (text == nil or text == '') then text = link end
link = link..' ('..(iconType == 'mark' and 'item' or iconType)..')'
    link = link..' ('..(iconType == 'mark' and 'item' or iconType)..')'
end
  end
 
local result = ''
if not noicon then
--Creating the image...
result = '[[File:'..img
--Add in type if one is set
if iconType ~= nil and iconType ~= '' then result = result..'_('..iconType..')' end
--Add in extension and image size
result = result..'.'..ext..'|'..tostring(imgSize)..'x'..tostring(imgSize)..'px'
--Include a link unless no link -and- no text was requested
if not (nolink and notext) then result = result..'|link='..link end
result = result..']]'
end
 
--Add Quantity to the front if requested
if qty ~= nil and qty ~= '' then result = Shared.formatnum(qty)..' '..result end


  local result = ''
if not notext then
  if not noicon then
-- If the result is currently empty then there's no need to pad with whitespace
--Creating the image...
local padStr = (string.len(result) > 0 and ' ' or '')
result = '[[File:'..img
if nolink then
--Add in type if one is set
if text ~= nil and text ~= '' then
if iconType ~= nil and iconType ~= '' then result = result..'_('..iconType..')' end
result = result..padStr..text
--Add in extension and image size
else
result = result..'.'..ext..'|'..tostring(imgSize)..'x'..tostring(imgSize)..'px'  
result = result..padStr..link
--Include a link unless no link -and- no text was requested
end
if not (nolink and notext) then result = result..'|link='..link end
else
result = result..']]'
result = result..padStr..'[['..link
  end
if text ~= nil and text ~= '' and text ~= link then
 
result = result..'|'..text
  --Add Quantity to the front if requested
end
  if qty ~= nil and qty ~= '' then result = Shared.formatnum(qty)..' '..result end
result = result..']]'
end
end


  if not notext then
if not noicon then
  -- If the result is currently empty then there's no need to pad with whitespace
result = '<span style="display:inline-block">'..result..'</span>'
  local padStr = (string.len(result) > 0 and ' ' or '')
end
    if nolink then
      if text ~= nil and text ~= '' then
        result = result..padStr..text
      else
        result = result..padStr..link
      end
    else
      result = result..padStr..'[['..link
      if text ~= nil and text ~= '' and text ~= link then
        result = result..'|'..text
      end
      result = result..']]'
    end
  end
 
  if not noicon then
    result = '<span style="display:inline-block">'..result..'</span>'
  end


  if menu then
if menu then
    result = '{| class="articletable" style="display:inline-block;vertical-align:middle;"\r\n|-\r\n|'..result
result = '{| class="articletable" style="display:inline-block;vertical-align:middle;"\r\n|-\r\n|'..result
    result = result..'\r\n|}'
result = result..'\r\n|}'
  end
end


  return result
return result
end
end


Line 399: Line 399:


function p._SkillReq(skill, level, showText)
function p._SkillReq(skill, level, showText)
  local result = p.Icon({skill, type='skill', notext='true'})
local result = p.Icon({skill, type='skill', notext='true'})
  if showText then
if showText then
    result = result..' [['..skill..']]'
result = result..' [['..skill..']]'
  end
end
  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


  result = '<span style="display:inline-block">'..result..'</span>'
result = '<span style="display:inline-block">'..result..'</span>'
  return result
return result
end
end


function p.SkillReq(frame)
function p.SkillReq(frame)
  local args = frame.args ~= nil and frame.args or frame
local args = frame.args ~= nil and frame.args or frame
  local skill = args[1]
local skill = args[1]
  local level = tonumber(args[2])
local level = tonumber(args[2])
  local showText = args.showText ~= nil and args.showText ~= '' and args.showText ~= 'false'
local showText = args.showText ~= nil and args.showText ~= '' and args.showText ~= 'false'
  return p._SkillReq(skill, level, showText)
return p._SkillReq(skill, level, showText)
end
end


function p._MasteryReq(itemName, level, showText)
function p._MasteryReq(itemName, level, showText)
  local iconname = itemName
local iconname = itemName
  local linkname = itemName
local linkname = itemName
  --First, go with the lowest tier of potions if a potion is mentioned
--First, go with the lowest tier of potions if a potion is mentioned
  local s, e = string.find(itemName, 'Potion')
local s, e = string.find(itemName, 'Potion')
  if e ~= nil then
if e ~= nil then
    linkname = string.sub(itemName, 1, e)
linkname = string.sub(itemName, 1, e)
    iconname = linkname..' I'
iconname = linkname..' I'
  end
end


  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})..p.Icon({'Mastery', notext=true})
  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>'
  return result
return result
end
end


function p.MasteryReq(frame)
function p.MasteryReq(frame)
  local args = frame.args ~= nil and frame.args or frame
local args = frame.args ~= nil and frame.args or frame
  local itemName = args[1]
local itemName = args[1]
  local level = tonumber(args[2])
local level = tonumber(args[2])
  local showText = args.showText ~= nil and args.showText ~= '' and args.showText ~= 'false'
local showText = args.showText ~= nil and args.showText ~= '' and args.showText ~= 'false'
  return p._MasteryReq(itemName, level, showText)
return p._MasteryReq(itemName, level, showText)
end
end


function p._Currency(fileName, link, amt, maxAmt)
function p._Currency(fileName, link, amt, maxAmt)
  local amtText = Shared.formatnum(amt)
local amtText = Shared.formatnum(amt)
  if maxAmt ~= nil and maxAmt >= amt then
if maxAmt ~= nil and maxAmt >= amt then
    amtText = amtText .. ' - ' .. Shared.formatnum(maxAmt)
amtText = amtText .. ' - ' .. Shared.formatnum(maxAmt)
  end
end


  local fileText = ''
local fileText = ''
  if fileName ~= nil then
if fileName ~= nil then
    fileText = '[[File:' .. fileName .. '|25px'
fileText = '[[File:' .. fileName .. '|25px'
    if link ~= nil then
if link ~= nil then
      fileText = fileText .. '|link=' .. link
fileText = fileText .. '|link=' .. link
    end
end
    fileText = fileText .. ']]&nbsp;'
fileText = fileText .. ']]&nbsp;'
  end
end


  return '<span style="display:inline-block">' .. fileText .. amtText .. '</span>'
return '<span style="display:inline-block">' .. fileText .. amtText .. '</span>'
end
end


function p.GP(amt, maxamt)
function p.GP(amt, maxamt)
  return p._Currency('Coins.svg', 'Coins', amt, maxamt)
return p._Currency('Coins.svg', 'Coins', 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', 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', amt, maxamt)
end
end


return p
return p

Revision as of 21:43, 8 January 2022

Documentation for this module may be created at Module:Icons/doc

--You can't generate Templates from within Lua due to the loading order, so instead copying the Icon functionality into a module so it can be pulled elsewhere.
--Should function very similarly to how Template:Icon works

local Shared = require("Module:Shared")

local p = {}
--Extension overrides for items that have non-svg images
local extOverrides = {
	["Adventure"] = "png",
	["Crown of Rhaelyx"] = "png",
	["Jewel of Rhaelyx"] = "png",
	["Circlet of Rhaelyx"] = "png",
	["Charge Stone of Rhaelyx"] = "png",
	["Mysterious Stone"] = "png",
	["Lemon"] = "jpg",
	["Lemons"] = "jpg",
	["Lemonade"] = "jpg",
	["Miolite Sprig"] = "png",
	["Miolite Trio"] = "png",
	["Miolite Warden"] = "png",
	["Miolite Monarch"] = "png",
	["Wicked Greater Dragon"] = "png",
	["Hunting Greater Dragon"] = "png",
	["Chaotic Greater Dragon"] = "png",
	["Beavis"] = "png",
	["Pudding Duckie"] = "png",
	["Pyro"] = "png",
	["Snek"] = "png",
	["Larry, the Lonely Lizard"] = "png",
	["Caaarrrlll"] = "png",
	["Gronk"] = "png",
	["Finn, the Cat"] = "png",
	["Marahute"] = "png",
	["Monk-ey"] = "png",
	["Asura"] = "png",
	["Summoning Shard (Silver)"] = "png",
	["Summoning Shard (Red)"] = "png",
	["Summoning Shard (Green)"] = "png",
	["Summoning Shard (Gold)"] = "png",
	["Summoning Shard (Blue)"] = "png",
	["Summoning Shard (Black)"] = "png",
	['Infernal Core'] = 'png',
	['Cool Glasses'] = 'png',
	["Wizard's Sigil"] = 'png',
	["Wizard's Scroll"] = 'png',
	["Whetstone"] = 'png',
	["Whale (Perfect)"] = 'png',
	["Trout (Perfect)"] = 'png',
	["Training Shield"] = 'png',
	["Thiever's Cape"] = 'png',
	["Thief's Moneysack"] = 'png',
	["Swordfish (Perfect)"] = 'png',
	["Strawberry Cupcake (Perfect)"] = 'png',
	["Strawberry Cupcake"] = 'png',
	["Strawberry Cake (Perfect)"] = 'png',
	["Strawberry Cake"] = 'png',
	["Stack of Bones"] = 'png',
	["Sneak-Ers"] = 'png',
	["Shrimp (Perfect)"] = 'png',
	["Shipwheel"] = 'png',
	["Shark (Perfect)"] = 'png',
	["Seed Pouch"] = 'png',
	["Seahorse (Perfect)"] = 'png',
	["Sardine (Perfect)"] = 'png',
	["Salmon (Perfect)"] = 'png',
	["Sailor's Top"] = 'png',
	["Runecrafting Pouch"] = 'png',
	["Ring of Wealth"] = 'png',
	["Raw Chicken"] = 'png',
	["Raw Beef"] = 'png',
	["Prayer Scroll"] = 'png',
	["Plain Pizza Slice (Perfect)"] = 'png',
	["Plain Pizza Slice"] = 'png',
	["Pile of Ores"] = 'png',
	["Pile of Logs"] = 'png',
	["Miner's Helmet"] = 'png',
	["Merchant's Permit"] = 'png',
	["Meat Pizza Slice (Perfect)"] = 'png',
	["Meat Pizza Slice"] = 'png',
	["Marksman's Sigil"] = 'png',
	["Manta Ray (Perfect)"] = 'png',
	["Lumberjack's Top"] = 'png',
	["Lobster (Perfect)"] = 'png',
	["Lemon Cake (Perfect)"] = 'png',
	["Lemon Cake"] = 'png',
	["Knight's Sigil"] = 'png',
	["Knight's Defender"] = 'png',
	["Knight's Cape"] = 'png',
	["Jeweled Necklace"] = 'png',
	["Jester's Hat"] = 'png',
	["Jadestone"] = 'png',
	["Herring (Perfect)"] = 'png',
	["Hearty Soup (Perfect)"] = 'png',
	["Hearty Soup"] = 'png',
	["Gold Crested Shield"] = 'png',
	["Golbin Mask"] = 'png',
	["Giant Club"] = 'png',
	["Fishing Hook"] = 'png',
	["Fine Coinpurse"] = 'png',
	["Fanfish (Perfect)"] = 'png',
	["Cream Corn Soup (Perfect)"] = 'png',
	["Cream Corn Soup"] = 'png',
	["Cream"] = 'png',
	["Crate of Food"] = 'png',
	["Crate of Basic Supplies"] = 'png',
	["Crab (Perfect)"] = 'png',
	["Cooking Apron"] = 'png',
	["Chicken Soup (Perfect)"] = 'png',
	["Chicken Soup"] = 'png',
	["Chicken (Perfect)"] = 'png',
	["Chest of Gems"] = 'png',
	["Cherry Seeds"] = 'png',
	["Cherry Cupcake (Perfect)"] = 'png',
	["Cherry Cupcake"] = 'png',
	["Cherry"] = 'png',
	["Chef's Spoon"] = 'png',
	["Chef's Hat"] = 'png',
	["Cheese"] = 'png',
	["Cave Giant Boots"] = 'png',
	["Cave Fish (Perfect)"] = 'png',
	["Carrot Cake (Perfect)"] = 'png',
	["Carrot Cake"] = 'png',
	["Carp (Perfect)"] = 'png',
	["Bread (Perfect)"] = 'png',
	["Bread"] = 'png',
	["Book of Scholars"] = 'png',
	["Bob's Gloves"] = 'png',
	["Beef Pie (Perfect)"] = 'png',
	["Beef Pie"] = 'png',
	["Beef (Perfect)"] = 'png',
	["Beef"] = 'png',
	["Basic Soup (Perfect)"] = 'png',
	["Basic Soup"] = 'png',
	["Basic Bag"] = 'png',
	["Bag of Flour"] = 'png',
	["Apple Tree Seeds"] = 'png',
	["Apple Pie (Perfect)"] = 'png',
	["Apple Pie"] = 'png',
	["Apple"] = 'png',
	["Antique Vase"] = 'png',
	["Anglerfish (Perfect)"] = 'png',
	["Amulet of Incantation"] = 'png',
	["Alchemist's Bag"] = 'png',
	["Absorbing Shield"] = 'png',
	["Shield of Melee Power"] = 'png',
	["Shield of Ranged Power"] = 'png',
	["Shield of Magic Power"] = 'png',
	["Ring of Power"] = 'png',
	["Beginning of the End"] = 'png',
	["Goo"] = 'png',
	["Wildflower"] = 'png',
	["Nature's Call Staff Top"] = 'png',
	["Nature's Call Staff Bottom"] = 'png',
	["Fine Poison Powder"] = 'png',
	["Poison Scales"] = 'png',
	["Miolite Spore"] = 'png',
	["Poison Essence"] = 'png',
	["Worm Spike"] = 'png',
	["Burning Essence"] = 'png',
	["Cursed Hands"] = 'png',
	["Stinging Essence"] = 'png',
	["Tough Shell"] = 'png',
	["Undead Essence"] = 'png',
	["Desecrated Bones"] = 'png',
	["War Axe"] = 'png',
	["Warberd"] = 'png',
	["Throwing Power Gloves"] = 'png',
	["Slingshot"] = 'png',
	["Elerine Longbow"] = 'png',
	["Elerine Spear"] = 'png',
	["Nature's Call Staff"] = 'png',
	["Nature's Wrath Staff"] = 'png',
	["Nature's Blessing Ring"] = 'png',
	["Poisoned Shortbow"] = 'png',
	["Poisoned Dagger"] = 'png',
	["Scaled Shield"] = 'png',
	["Poison Virulence Ring"] = 'png',
	["Poison Virulence Gloves"] = 'png',
	["Burning Madness Ring"] = 'png',
	["Burning Madness Gloves"] = 'png',
	["Spiked Shell Ring"] = 'png',
	["Spiked Shell Gloves"] = 'png',
	["Relentless Fury Ring"] = 'png',
	["Relentless Fury Gloves"] = 'png',
	["Ring of Blade Echoes"] = 'png',
	["Ring of Barrage"] = 'png',
	["Ring of Spirit Power"] = 'png',
	["Hinder Potion I"] = 'png',
	["Hinder Potion II"] = 'png',
	["Hinder Potion III"] = 'png',
	["Hinder Potion IV"] = 'png',
	["Famished Potion I"] = 'png',
	["Famished Potion II"] = 'png',
	["Famished Potion III"] = 'png',
	["Famished Potion IV"] = 'png',
	["Lethal Toxins Potion I"] = 'png',
	["Lethal Toxins Potion II"] = 'png',
	["Lethal Toxins Potion III"] = 'png',
	["Lethal Toxins Potion IV"] = 'png',
	["Impending Darkness"] = 'png',
	["Mastery Token (Astrology)"] = 'png',
	["Stardust"] = 'png',
	["Golden Stardust"] = 'png',
	["Astrology Skillcape"] = 'png',
	["Secret Stardust Potion I"] = 'png',
	["Secret Stardust Potion II"] = 'png',
	["Secret Stardust Potion III"] = 'png',
	["Secret Stardust Potion IV"] = 'png',
	["Noxious Serpent"] = 'png',
	["Venomous Snake"] = 'png',
	["Legaran Wurm"] = 'png',
	["Spiked Red Claw"] = 'png',
	["Greater Skeletal Dragon"] = 'png',
	["Giant Moth"] = 'png',
	["Elerine Mage"] = 'png',
	["Elerine Warrior"] = 'png',
	["Elerine Archer"] = 'png',
	["Cursed Lich"] = 'png',
	["Christmas Present (Blue)"] = 'png',
	["Christmas Present (Green)"] = 'png',
	["Christmas Present (Purple)"] = 'png',
	["Christmas Present (Standard)"] = 'png',
	["Christmas Present (White)"] = 'png',
	["Christmas Present (Yellow)"] = 'png',
	["Edible Candy Cane"] = 'png',
	["Event Token (Holiday 2021)"] = 'png',
	["Gingerbread House"] = 'png',
	["Gingerbread Man"] = 'png',
	["Holiday Scarf"] = 'png',
	["Locked Chest"] = 'png',
	["Locked Chest Key"] = 'png',
	["Festive Chio"] = 'png',
	["Festive Cool Rock"] = 'png',
	["Mastery Tokens"] = 'gif'
}

--Some overrides only apply for a specific type
local typeExtOverrides = {
	['item'] = {
			['Chicken'] = 'png'
		}
	}

--When calling for an icon of type Key, instead use type Value
local typeOverrides = {
	['combat'] = 'combatArea',
	['slayer'] = 'combatArea',
}
--When calling for an icon for Key, replace with image Value, and optionally override type also
local imgOverrides = {
	['Alt Magic'] = 'Magic',
	['Alt. Magic'] = 'Magic',
	['Alternative Magic'] = 'Magic',
	['Item Alchemy'] = {'Item Alchemy III', 'spell'},
	['Superheat'] = {'Superheat IV', 'spell'},
	['Melee'] = 'Combat',
	['Spider (lv. 51)'] = 'Spider',
	['Spider (lv. 52)'] = 'Brown Spider',
	['Basic Resupply'] = {'Lobster', 'item'},
	['Standard Resupply'] = {'Crab', 'item'},
	['Generous Resupply'] = {'Shark', 'item'},
	['Cooking Upgrade 1'] = {'Cooking', 'skill'},
	['Cooking Upgrade 2'] = {'Cooking', 'skill'},
	['Loot Container Stacking'] = {'Amulet of Looting', 'item'},
	['Bane, Instrument of Fear'] = 'Bane',
	['Mastery Token Astrology'] = 'Mastery Token (Astrology)',
	['Event Token - Holiday 2021'] = 'Christmas Present (Yellow)'
}
--When calling for an icon for Key, the link goes to Value
local linkOverrides = {
	['Alt Magic'] = 'Alternative Magic',
	['Alt. Magic'] = 'Alternative Magic',
	['Spider2'] = 'Brown Spider',
	["Deedree"] = 'Astrology#Constellations',
	["Iridan"] = 'Astrology#Constellations',
	["Ameria"] = 'Astrology#Constellations',
	["Terra"] = 'Astrology#Constellations',
	["Vale"] = 'Astrology#Constellations',
	["Syllia"] = 'Astrology#Constellations',
	["Arachi"] = 'Astrology#Constellations',
	["Ko"] = 'Astrology#Constellations',
	["Tellus"] = 'Astrology#Constellations',
	["Hyden"] = 'Astrology#Constellations',
	["Qimican"] = 'Astrology#Constellations'
}
--If no other text override was specified for the given link, use these
local txtOverrides = {
	['Spider2'] = 'Brown Spider'
}
--Ambiguous overrides section
local ambiguousOverrides = {'Golbin', 'Chick', 'Chicken', 'Cyclops', 'Wizard'}

function p.Icon(frame)
	local args = frame.args ~= nil and frame.args or frame
	local link = args[1]
	local text = args[2]
	local iconType = args.type
	local ext = args.ext ~= nil and args.ext ~= '' and args.ext or 'svg'
	local notext = args.notext ~= nil and args.notext ~= ''
	local nolink = args.nolink ~= nil and args.nolink ~= ''
	local noicon = args.noicon ~= nil and args.noicon ~= ''
	local menu = args.menu ~= nil and args.menu ~= ''
	local imgSize = args.size ~= nil and args.size or 25
	local qty = args.qty
	local img = args.img ~= nil and args.img ~= '' and args.img or link

	link = Shared.fixPagename(link)
	img = Shared.fixPagename(img)

	img = string.gsub(img, '#', '')
	img = string.gsub(img, '/Training', '')
	img = string.gsub(img, '/Guide', '')
	link = string.gsub(link, '#', '')
	--MANUAL OVERRIDES
	if imgOverrides[link] ~= nil and img == link then
		local ovr = imgOverrides[link]
		if type(ovr) == 'string' then
			img = imgOverrides[link]
		elseif type(ovr) == 'table' then
			img = ovr[1]
			if ovr[2] ~= nil then iconType = ovr[2] end
		end
	end
	if (text == nil or text == '') and txtOverrides[link] ~= nil then
		text = txtOverrides[link]
	end
	if linkOverrides[link] ~= nil then
		if (text == nil or text == '') then text = link end
		link = linkOverrides[link]
	end
	if typeExtOverrides[iconType] ~= nil and typeExtOverrides[iconType][img] ~= nil then
		ext = typeExtOverrides[iconType][img]
	elseif extOverrides[img] ~= nil then 
		ext = extOverrides[img]
	elseif iconType == 'mark' then
		ext = 'png'
	end
	if typeOverrides[iconType] ~= nil then
		iconType = typeOverrides[iconType]
	end
	--There are a couple specific double overrides I want to include that don't fit in the above lists
	if Shared.contains(ambiguousOverrides, link) then
		if (text == nil or text == '') then text = link end
		link = link..' ('..(iconType == 'mark' and 'item' or iconType)..')'
	end

	local result = ''
	if not noicon then
		--Creating the image...
		result = '[[File:'..img
		--Add in type if one is set
		if iconType ~= nil and iconType ~= '' then result = result..'_('..iconType..')' end
		--Add in extension and image size
		result = result..'.'..ext..'|'..tostring(imgSize)..'x'..tostring(imgSize)..'px' 
		--Include a link unless no link -and- no text was requested
		if not (nolink and notext) then result = result..'|link='..link end
		result = result..']]'
	end

	--Add Quantity to the front if requested
	if qty ~= nil and qty ~= '' then result = Shared.formatnum(qty)..' '..result end

	if not notext then
		-- If the result is currently empty then there's no need to pad with whitespace
		local padStr = (string.len(result) > 0 and ' ' or '')
		if nolink then
			if text ~= nil and text ~= '' then
				result = result..padStr..text
			else
				result = result..padStr..link
			end
		else
			result = result..padStr..'[['..link
			if text ~= nil and text ~= '' and text ~= link then
				result = result..'|'..text
			end
			result = result..']]'
		end
	end

	if not noicon then
		result = '<span style="display:inline-block">'..result..'</span>'
	end

	if menu then
		result = '{| class="articletable" style="display:inline-block;vertical-align:middle;"\r\n|-\r\n|'..result
		result = result..'\r\n|}'
	end

	return result
end

-- Wrapper for p.Icon(), uses the same parameters but forces noicon = true
function p.Link(frame)
	local args = frame.args ~= nil and frame.args or frame
	args.noicon = true
	return p.Icon({['args'] = args})
end

function p._SkillReq(skill, level, showText)
	local result = p.Icon({skill, type='skill', notext='true'})
	if showText then
		result = result..' [['..skill..']]'
	end
	if level == nil then level = 'Unknown [[Category:Pages with script errors]]' end
	result = result.." Level "..level

	result = '<span style="display:inline-block">'..result..'</span>'
	return result
end

function p.SkillReq(frame)
	local args = frame.args ~= nil and frame.args or frame
	local skill = args[1]
	local level = tonumber(args[2])
	local showText = args.showText ~= nil and args.showText ~= '' and args.showText ~= 'false'
	return p._SkillReq(skill, level, showText)
end

function p._MasteryReq(itemName, level, showText)
	local iconname = itemName
	local linkname = itemName
	--First, go with the lowest tier of potions if a potion is mentioned
	local s, e = string.find(itemName, 'Potion')
	if e ~= nil then
		linkname = string.sub(itemName, 1, e)
		iconname = linkname..' I'
	end

	local result = 'Level '..level..' '
	result = result..p.Icon({linkname, img=iconname, type='item', notext = true})..p.Icon({'Mastery', notext=true})
	if showText then result = result..'[['..linkname..']] [[Mastery]]' end
	result = '<span style="display:inline-block">'..result..'</span>'
	return result
end

function p.MasteryReq(frame)
	local args = frame.args ~= nil and frame.args or frame
	local itemName = args[1]
	local level = tonumber(args[2])
	local showText = args.showText ~= nil and args.showText ~= '' and args.showText ~= 'false'
	return p._MasteryReq(itemName, level, showText)
end

function p._Currency(fileName, link, amt, maxAmt)
	local amtText = Shared.formatnum(amt)
	if maxAmt ~= nil and maxAmt >= amt then
		amtText = amtText .. ' - ' .. Shared.formatnum(maxAmt)
	end

	local fileText = ''
	if fileName ~= nil then
		fileText = '[[File:' .. fileName .. '|25px'
		if link ~= nil then
			fileText = fileText .. '|link=' .. link
		end
		fileText = fileText .. ']]&nbsp;'
	end

	return '<span style="display:inline-block">' .. fileText .. amtText .. '</span>'
end

function p.GP(amt, maxamt)
	return p._Currency('Coins.svg', 'Coins', amt, maxamt)
end

function p.SC(amt, maxamt)
	return p._Currency('Slayer Coins.svg', 'Currency#Slayer Coins', amt, maxamt)
end

function p.RC(amt, maxamt)
	return p._Currency('Raid_Coins.svg', 'Currency#Raid Coins', amt, maxamt)
end

return p