Module:Availability/Sandbox
This module is very complex. If you have questions about this module, feel free to ask on the IRC. Darkid has offered to maintain this module, you may contact them if you need further assistance. |
To update which crate series are linked as active, change the list in Module:Availability/active. |
Module:Availability (aka Template:Availability) is used to display and autotranslate the 'Availability' section in {{Item infobox}}
. Preferably, the shortcut {{avail}}
should be used.
For future reference, if creating new additions, the key cannot include a number, or it will be parsed out. Thus, if you want to add a string like xmas2015
, instead add it to the Multipart strings with xmas
and use num
to represent the 2015.
Contents
Entries
Parameter | Output |
---|---|
audition-reel |
Audition Reel |
box-companion |
What's in the Companion Square Box? |
box-portal |
What's in the Portal 2 Soundtrack Box? |
box-sandvich |
What's in the Sandvich Box? |
box-tf |
What's in the Team Fortress 2 Soundtrack Box? |
bread-box |
Bread Box |
chemistryset |
Chemistry Set |
collectors |
Chemistry Set (Collector's) |
contract |
Contract (Decorated) |
contract-unique |
ConTracker |
craft |
Craft |
craft-expired |
Craft (expired) |
creepy-crate |
Unlocked Creepy Crate |
directors |
Director's Cut Reel |
distributed |
Distributed |
distributed-duels |
Distributed (periodical) |
distributed-expired |
Distributed (expired) |
distributed-gifts |
Distributed (periodical) |
distributed-stamps |
Distributed (periodical) |
drop |
Drop |
drop-expired |
Drop (expired) |
festive-gift |
Smissmas 2015 Festive Gift |
gift-cauldron |
Halloween Gift Cauldron |
goodie-cauldron |
Antique Halloween Goodie Cauldron (limited) |
halloween-package |
Halloween Package |
halloween-purchase |
Purchase |
halloween-purchase-expired |
Purchase (expired) |
hauntedgift |
Haunted Halloween Gift (expired) |
jungleinferno-campaign |
Jungle Inferno Campaign Pass (limited) |
jungleinferno-contracts |
Jungle Inferno Contracts Pass |
keyless-crate |
Unlocked Cosmetic Crate (Unique and Strange) |
keyless-crate-unusual |
Unlocked Cosmetic Crate (Unique, Strange and Unusual) |
pallet-of-crates |
Pallet of Crates |
pile-of-ash |
Pile of Ash (expired) |
pile-of-curses |
Pile of Curses (expired) |
promotional |
Promotional |
promotional-craft |
Promotional (craft) |
promotional-expired |
Promotional (expired) |
promotional-expired-codes |
Promotional (expired) |
promotional-unlock |
Promotional (unlock) |
purchase |
Purchase |
purchase-limited |
Purchase (limited) |
retired |
Retired |
stock |
Stock |
stockpile |
Stockpile Crate |
trade-up |
Trade-Up |
transmute |
Halloween Transmute (Untradable) |
unavailable |
Unavailable |
uncrate-bonus |
Uncrate (bonus) |
unlock |
Unlock |
unusual |
Uncrate (Unusual) |
unusual-expired |
Uncrate (Unusual) (expired) |
warpaint |
War Paint (Decorated) |
MvM related strings | |
mannup |
Reward |
australium |
Reward (Australium) |
botkiller |
Reward (Botkiller) |
mvm-both-types |
Reward (Botkiller and Australium) |
Dynamic strings (mostly used for crate/case numbers). The numeric value is automatically parsed. | |
crate1 |
Uncrate #1 |
crate2-strange |
Uncrate #2 (Strange) |
crate3-festive |
Uncrate #3 (Festive) (expired) |
crate4-haunted |
Uncrate #4 (Haunted) (expired) |
crate5-expired |
Uncrate #5 (expired) |
case95 |
Gun Mettle Cosmetic Case |
case95-bonus |
Gun Mettle Cosmetic Case (bonus) |
Usage
{{avail|drop}}
produces Drop{{avail|drop|craft}}
produces Drop or Craft{{avail|drop|craft|purchase}}
produces Drop, Craft or Purchase{{avail|drop|craft|purchase|promotional}}
produces Drop, Craft, Purchase or Promotional
Backwards compatibility
{{Availability}}
changes over time, and thus has some parameters which have been deprecated. They will still function in this template, but their use will place the page into Outdated Availability Parameters. Please replace them with the appropriate new value.
Outdated Parameter | New Parameter | Output |
---|---|---|
crate74 |
crate74-haunted |
Uncrate #74 (Haunted) (expired) |
crate74-expired |
crate74-haunted |
Uncrate #74 (Haunted) (expired) |
crateX-bonus |
caseX-bonus |
Bone-Chilling Bonanza Case (bonus) |
local p = {} -- Imports the function status(number), which returns whether or not a crate is Active or Retired. This is in a separate file so that it can be updated *without* staff intervention. require('Module:Availability/crate') -- Defined here so that it can be referenced inside the next three functions local frame = nil -- Expands the template Tooltip for a given pair of values. function tooltip(tool, tip) return frame:expandTemplate{title='Tooltip', args={tool, tip}} end -- Expands the template Item name for a given value. function item_name(arg) return frame:expandTemplate{title='Item name', args={arg}} end -- Expands the template Common string for a given value. Note that some common string values include an additional parameter, here called opt_arg. function common_string(arg, opt_arg) return frame:expandTemplate{title='Common string', args={arg, opt_arg}} end -- Returns ' (text)', with correct parenthesis characters in Chinese. function paren(text) if if_lang == '/zh_hans' or if_lang == '/zh-hant' then return ' (' .. text .. ')' else return ' (' .. text .. ')' end end -- Replaces the old Dictionary/templatecore strings lookup = { -- Singleton strings (without a number) ['audition-reel'] = function() return '[[Mann Co. Supply Crate/Seriesless_crates' .. if_lang .. '#Audition Reel|' .. common_string('audition reel') .. ']]' end, ['australium'] = function() return '[[Mann Up' .. if_lang .. '|' .. common_string('reward') .. ']]' .. paren('[[Australium weapons' .. if_lang .. '|' .. common_string('australium') .. ']]') end, ['botkiller'] = function() return '[[Mann Up' .. if_lang .. '|' .. common_string('reward') .. ']]' .. paren('[[Botkiller weapons' .. if_lang .. '|' .. common_string('botkiller') .. ']]') end, ['bread-box'] = function() return '[[Bread Box' .. if_lang .. '|' .. item_name('bread box') .. ']]' .. paren('[[Unique' .. if_lang .. '|' .. item_name('unique') .. ']] ' .. common_string('and') .. ' [[Strange' .. if_lang .. '|' .. item_name('strange') .. ']]') end, ['chemistryset'] = function() return '[[Chemistry Set' .. if_lang .. '|' .. item_name('chemistry set') .. ']]' end, ['collectors'] = function() return '[[Chemistry Set' .. if_lang .. '|' .. item_name('chemistry set') .. ']]' .. paren('[[Collectors' .. if_lang .. '|' .. item_name('collector\'s') .. ']]') end, ['contract'] = function() return '[[Contracts' .. if_lang .. '|' .. common_string('contract') .. ']]' .. paren('[[Decorated' .. if_lang .. '|' .. item_name('decorated') .. ']]') end, ['contract-unique'] = function() return '[[ConTracker' .. if_lang .. '|' .. common_string('contracker') .. ']]' end, ['craft'] = function() return '[[Crafting' .. if_lang .. '|' .. common_string('craft') .. ']]' end, ['crate-scorched'] = function() return '[[Mann Co. Supply Crate/Retired series' .. if_lang .. '#46|' .. common_string('uncrate') .. ' #46]]' .. paren(common_string('scorched')) end, ['creepy-crate'] = function() return '[[Mann Co. Supply Crate/Seriesless crates' .. if_lang .. '#Unlocked Creepy Crates|' .. item_name('unlocked creepy crate') .. ']]' end, ['directors'] = function() return '[[Mann Co. Supply Crate/Seriesless crates' .. if_lang .. '#Director\'s Cut|' .. common_string('director\'s cut') .. ']]' end, ['distributed'] = function() return common_string('distributed') end, ['drop'] = function() return '[[Item drop system' .. if_lang .. '|' .. common_string('drop') .. ']]' end, ['gift-cauldron'] = function() return '[[Halloween Gift Cauldron' .. if_lang .. '|' .. item_name('halloween gift cauldron') .. ']]' end, ['halloween-purchase'] = function() return '[[Mann Co. Store' .. if_lang .. '|' .. tooltip(common_string('purchase'), common_string('purchase-halloween')) .. ']]' end, ['hauntedgift'] = function() return '[[Haunted Halloween Gift' .. if_lang .. '|' .. item_name('haunted halloween gift') .. ']]' end, ['keyless-crate'] = function() return '[[Mann Co. Supply Crate/Seriesless crates' .. if_lang .. '#Unlocked Cosmetic Crates|' .. item_name('unlocked cosmetic crate') .. ']]' .. paren('[[Unique' .. if_lang .. '|' .. item_name('unique') .. ']] ' .. common_string('and') .. ' [[Strange' .. if_lang .. '|' .. item_name('strange') .. ']]') end, ['mannup'] = function() return '[[Mann Up' .. if_lang .. '|' .. common_string('reward') .. ']]' end, ['mvm-both-types'] = function() return '[[Mann Up' .. if_lang .. '|' .. common_string('reward') .. ']]' .. paren('[[Botkiller weapons' .. if_lang .. '|' .. common_string('botkiller') .. ']] ' .. common_string('and') .. ' [[Australium weapons' .. if_lang .. '|' .. common_string('australium') .. ']]') end, ['mvm'] = function() return '[[Mann vs. Machine' .. if_lang .. '|' .. common_string('mvm reward') .. ']]' end, ['promotional'] = function() return '[[Promotional items' .. if_lang .. '|' .. common_string('promotional') .. ']]' end, ['purchase'] = function() return '[[Mann Co. Store' .. if_lang .. '|' .. common_string('purchase') .. ']]' end, ['retired'] = function() return common_string('retired') end, ['stock'] = function() return '[[Stock weapons' .. if_lang .. '|' .. mw.getContentLanguage():ucfirst(item_name('stock')) .. ']]' end, ['stockpile'] = function() return '[[Mann Co. Supply Crate/Seriesless crates' .. if_lang .. '#Stockpile|' .. common_string('stockpile crate') .. ']]' end, ['strangifier'] = function() return '[[Strangifier' .. if_lang .. '|' .. item_name('strangifier') .. ']]'.. paren('[[Strange' .. if_lang .. '|' .. item_name('strange') .. ']]') end, ['trade-up'] = function() return '[[Trade-Up' .. if_lang .. '|' .. common_string('trade-up') .. ']]' end, ['transmute'] = function() return '[[Halloween Transmute' .. if_lang .. '|' .. common_string('halloween transmute') .. ']] ' .. paren('[[Trading' .. if_lang .. '|' .. common_string('Untradable') .. ']]') end, ['unavailable'] = function() return common_string('unavailable') end, ['unlock'] = function() return '[[Achievement items' .. if_lang .. '|' .. common_string('unlock') .. ']]' end, ['unusual'] = function() return '[[Mann Co. Supply Crate' .. if_lang .. '|' .. common_string('uncrate') .. ']]' .. paren('[[Unusual' .. if_lang .. '|' .. item_name('unusual') .. ']]') end, ['warpaint'] = function() return '[[War Paint' .. if_lang .. '|' .. item_name('war paint') .. ']]' .. paren('[[Decorated' .. if_lang .. '|' .. item_name('decorated') .. ']]') end, -- Multipart strings (with a number) ['crate'] = function(num) return '[[' .. status(num) .. if_lang .. '#' .. num .. '|' .. common_string('uncrate') .. ' #' .. num .. ']]' end, ['crate-strange'] = function(num) return '[[' .. status(num) .. if_lang .. '#' .. num .. '|' .. common_string('uncrate') .. ' #' .. num .. ']]' .. paren('[[Strange' .. if_lang .. '|' .. item_name('strange') .. ']]') end, ['crate-festive'] = function(num) return '[[' .. status(num) .. if_lang .. '#' .. num .. '|' .. common_string('uncrate') .. ' #' .. num .. ']]' .. paren('[[Festive weapons' .. if_lang .. '|' .. item_name('festive') .. ']]') end, ['crate-haunted'] = function(num) return '[[' .. status(num) .. if_lang .. '#' .. num .. '|' .. common_string('uncrate') .. ' #' .. num .. ']]' .. paren('[[Haunted' .. if_lang .. '|' .. item_name('haunted') .. ']]') end, ['strangifier-crate-'] = function(num) return '[[Strangifier' .. if_lang .. '|' .. item_name('strangifier') .. ']]<sup>' .. tooltip('?', common_string('uncrateable from series number crate', num)) .. '</sup>' .. paren('[[Strange' .. if_lang .. '|' .. item_name('strange') .. ']]') end, ['strangifier-series-'] = function(num) return '[[Strangifier' .. if_lang .. '|' .. item_name('strangifier') .. ']]<sup>' .. tooltip('?', common_string('series number chemistry sets', num)) .. '</sup>' end, ['unusual-'] = function(num) return '[[Mann Co. Supply Crate' .. if_lang .. '|' .. common_string('uncrate') .. ']]' .. paren('[[Unusual' .. if_lang .. '#Group ' .. num .. '|' .. item_name('unusual') .. ']]') end, ['xmas'] = function(num) return '[[Smissmas ' .. num .. ' Festive Gift' .. if_lang .. '|' .. item_name('smissmas ' .. num .. ' festive gift') .. ']]' end, ['winter'] = function(num) return '[[Mann Co. Supply Crate/Seriesless crates' .. if_lang .. '#Unlocked Winter ' .. num .. ' Cosmetic Case|' .. item_name('unlocked winter ' .. num .. ' cosmetic case') .. ']]' end, ['winter-strange'] = function(num) return '[[Mann Co. Supply Crate/Seriesless crates' .. if_lang .. '#Unlocked Winter ' .. num .. ' Cosmetic Case|' .. item_name('unlocked winter ' .. num .. ' cosmetic case') .. ']]' .. paren('[[Unique' .. if_lang .. '|' .. item_name('unique') .. ']] ' .. common_string('and') .. ' [[Strange' .. if_lang .. '|' .. item_name('strange') .. ']]') end, ['winter-unusual'] = function(num) return '[[Mann Co. Supply Crate/Seriesless crates' .. if_lang .. '#Unlocked Winter ' .. num .. ' Cosmetic Case|' .. item_name('unlocked winter ' .. num .. ' cosmetic case') .. ']]' .. paren('[[Unique' .. if_lang .. '|' .. item_name('unique') .. ']], [[Strange' .. if_lang .. '|' .. item_name('strange') .. ']]' .. common_string('and') .. ' [[Unusual' .. if_lang .. '|' .. item_name('unusual') .. ']]') end, } -- Some strings that were present in Dictionary/availcore and thus might be used somewhere. local backwards_compat = { ['store'] = 'purchase', ['achievement'] = 'unlock', ['strangifier-strange'] = 'strangifier', ['strangifier'] = 'strangifier', -- String is deprecated, this adds it to the tracking category ['strangifier-crate-'] = 'strangifier-crate-', -- String is deprecated, this adds it to the tracking category ['strangifier-series-'] = 'strangifier-series-', -- String is deprecated, this adds it to the tracking category -- Crate replacements ['crate-naughty'] = 'crate35-festive', ['crate-naughty2012'] = 'crate52-festive', ['crate-naughty2013'] = 'crate78-festive', ['crate-naughty2014'] = 'crate88-festive', ['crate-nice'] = 'crate36', ['crate-nice2012'] = 'crate53', ['crate-nice2013'] = 'crate79', ['crate-nice2014'] = 'crate89', ['crate-nohaunt'] = 'crate', ['strongbox'] = 'crate81', ['winter2016'] = 'crate105' } function p.avail(f) -- Precompute the page's language. frame = f local args = f:getParent().args count = 0 for _ in pairs(args) do count = count + 1 end if count == 0 then -- There is no other way to count table length in lua. args = f.args end if_lang = frame:expandTemplate{title='If lang'} -- Avail is called with a long list of arguments. Each one needs to be translated and comma-separated. avail_string = '' for i, arg in ipairs(args) do arg = mw.ustring.lower(arg) -- Crate 46 is a Scorched Crate, which is a string that isn't used anywhere else. if arg == 'crate46' then arg = 'crate-scorched' end -- Enchantment: Eternaween was uncratable from #74, and cannot be Haunted. if arg == 'crate74' then arg = 'crate74-haunted' end -- Matches strings like 'craft' 'crate1' 'crate26-strange' -- Strings like 'crate26-strange' become 'crate-strange' and '26'. name1, num, name2 = string.match(arg, '(%D*)(%d*)(%D*)') name = name1 .. name2 -- Backwards compatibility if backwards_compat[name] ~= nil then avail_string = '[[Category:Outdated Availability Parameters]]' .. avail_string name = backwards_compat[name] end if (args[i+2] ~= nil) or (args[i+1] ~= nil and args['availability'] ~= nil) then -- There are at least two arguments left in the list if if_lang == '/zh-hans' then avail_string = avail_string .. lookup[name](num) .. '、' elseif if_lang == '/zh-hant' then avail_string = avail_string .. lookup[name](num) .. ',' else avail_string = avail_string .. lookup[name](num) .. ', ' end elseif (args[i+1] ~= nil and args['availability'] == nil) or (args[i+1] == nil and args['availability'] ~= nil) then -- There is exactly one more argument in the list avail_string = avail_string .. lookup[name](num) .. ' ' .. common_string('or') .. ' ' else -- args[i+1] == nil and args['availability] == nil avail_string = avail_string .. lookup[name](num) end end -- End looping through arguments. if args['availability'] ~= nil then avail_string = avail_string .. args['availability'] end return avail_string end return p