Module:Map credits
Documentation for Map credits
Intended for use in the {{map infobox}} and other tables. Not compatible with custom maps. When adding map credits, include the creator's name exactly as it appears in the in-game credits (see File:tf_english.txt).
Adding more maps
- Edit Module:Map credits/data.
Usage
{{map credits}}always defaults to Valve, so there's no need to add Valve-made maps to this template.{{map credits|ctf_turbine}}produces: Flobster{{map credits|cp_egypt_final}}produces: Sean "Heyo" Cutino{{map credits|cp_egypt_final|options=nolink}}produces: Sean "Heyo" Cutino{{map credits|rd_asteroid}}produces: Valve{{map credits|pass_brickyard}}produces: Valve
Bad Robot
Escalation Studios{{map credits|zi_devastation_final1|separator=, }}produces: Jordan "Ismaciodismorphus" La Rose, netmuck, Liam "Diva Dan" Moffitt, Aeon "Void" Bollig, Alex "FGD5" Stewart
Syntax
{{map credits|<file name>|separator=<separator>|options=<options>|override=<override>}}
- <file name> unnamed parameter 1
- Map file name, exactly as it is written in-game.
- (optional) <separator>
- Separator for maps with multiple people credited. Defaults to
<br>.
- (optional) <options>
- Additional rendering options:
nolink- Disables rendering of links (Steam profile URL, Wikipedia links, etc.).
local p = {}
local creditsData = mw.loadData("Module:Map credits/data")
function format_credit(link, link_type, link_name)
local if_lang = mw.getCurrentFrame():expandTemplate{title="If lang"}
local qmark_langs = {
["/ar"] = { opening = " «", closing = "» " },
["/cs"] = { opening = " „", closing = "“ " },
["/es"] = { opening = " «", closing = "» " },
["/de"] = { opening = " „", closing = "“ " },
["/fr"] = { opening = " « ", closing = " » " },
["/ja"] = { opening = "「", closing = "」" },
["/pl"] = { opening = " „", closing = "” " },
["/ro"] = { opening = " „", closing = '” ' },
["/ru"] = { opening = " «", closing = "» " }
}
local qmark = qmark_langs[if_lang]
if qmark then
local openingMark = qmark.opening
local closingMark = qmark.closing
local openingIndex, closingIndex = link_name:find(' "'), link_name:find('" ', 2)
if openingIndex and closingIndex then
link_name = link_name:gsub(' "', openingMark, 1)
link_name = link_name:gsub('" ', closingMark, 1)
end
end
-- Link types
local formats = {
["nolink"] = link_name,
["yeslink"] = link,
["wikitext"] = "[[%s" .. if_lang .. "|%s]]",
["steam"] = "[https://steamcommunity.com/profiles/%s %s]",
["external"] = "[%s %s]",
["wikipedia"] = "[[w:%s|%s]]" -- TODO: figure out how to make this thing translatable. Use dictionary?
}
local format = formats[link_type] or link_name
return string.format(format, link, link_name)
end
function p.credits(f)
local args = f.args
local map = args[1]
local separator = args.separator ~= "" and args.separator or "<br>"
local options = args.options ~= "" and args.options or ""
local override = args.override ~= "" and args.override or ""
local credits = creditsData
local map_credits = credits[map] or credits._default
local output = {}
for i, credit in ipairs(map_credits) do
local name = override ~= "" and override or credit[1]
local link = credit[2] or ""
local link_type = options == "nolink" and "nolink" or (credit[3] or "")
table.insert(output, format_credit(link, link_type, name))
end
return table.concat(output, separator)
end
return p