Module:Armor
From Zelda Wiki, the Zelda encyclopedia
This is the main module for the following templates:
local p = {}
local h = {}
local DataTable = require("Module:Data Table")
local Term = require("Module:Term")
function p.StoreArmor(frame)
return DataTable.Main(frame, {
storeFn = h.storeArmor,
requiredColumns = {"Set", "Body Part", "Armor", "Effect(s)"},
})
end
function h.storeArmor(args, rows)
for i, row in ipairs(rows) do
local armorSet = mw.text.killMarkers(row["Set"])
local bodyPart = mw.text.killMarkers(row["Body Part"])
local armor = mw.text.killMarkers(row["Armor"])
local effects = mw.text.killMarkers(row["Effect(s)"])
local hasArmorSet = armorSet == "N/A" and "0" or "1"
local hasEffects = effects == "N/A" and "0" or "1"
mw.getCurrentFrame():expandTemplate({
title = "Armor/Store",
args = {
game = args.game,
armorSet = hasArmorSet == "1" and armorSet or nil,
bodyPart = bodyPart,
armor = armor,
effects = hasEffects == "1" and effects or nil,
hasArmorSet = hasArmorSet,
hasEffects= hasEffects,
},
})
end
end
function p.StoreArmorLevels(frame)
return DataTable.Main(frame, {
storeFn = h.storeArmorLevels,
requiredColumns = {"Armor", "Level", "Defense", "Sell Price", "Materials", "Description"},
})
end
function h.storeArmorLevels(args, rows)
for i, row in ipairs(rows) do
local armor = mw.text.killMarkers(row["Armor"])
local level = mw.text.killMarkers(row["Level"])
local defense = mw.text.killMarkers(row["Defense"])
local sellPrice = mw.text.killMarkers(row["Sell Price"])
local materials = mw.text.killMarkers(row["Materials"])
local description = mw.text.killMarkers(row["Description"])
local sellable = sellPrice ~= "N/A"
local armorTerm = Term.fetchTerm(args.game, armor) or armor
mw.getCurrentFrame():expandTemplate({
title = "Armor Levels/Store",
args = {
game = args.game,
armor = armor,
level = level ~= "N/A" and level or nil,
defense = defense,
sellPrice = sellable and sellPrice or nil,
sellable = sellable and "1" or "0",
materials = materials ~= "N/A" and materials or nil,
description = description,
}
})
mw.getCurrentFrame():expandTemplate({
title = "Descriptions/Store",
args = {
game = args.game,
descriptionType = "Inventory",
context = level ~= "N/A" and level or nil,
subject = armor,
subjectDisplayName = armorTerm,
description = description,
image = string.format("File:%s %s Icon.png", args.game, armorTerm),
},
})
end
end
p.Templates = {
["Armor Levels/Store"] = {
format = "block",
paramOrder = {"game", "armor", "level", "defense", "sellPrice", "sellable", "materials", "description"},
boilerplate = {
separateRequiredParams = false,
},
params = {
game = {
required = true,
type = "string",
desc = "A game code from [[Data:Franchise]]",
trim = true,
nilIfEmpty = true,
},
armor = {
required = true,
type = "wiki-page-name",
desc = "The wiki article for the piece of [[Armor]].",
trim = true,
nilIfEmpty = true,
},
level = {
type = "number",
desc = "The level of the Armor upgrade, as an integer. Blank for base items.",
trim = true,
nilIfEmpty = true,
},
defense = {
required = true,
type = "number",
desc = "The defensive value for the Armor at the specified level.",
trim = true,
nilIfEmpty = true,
},
sellPrice = {
type = "number",
desc = "An integer – the amount of [[Rupee]]s that Link can sell the Armor for at the specified level.",
trim = true,
nilIfEmpty = true,
},
sellable = {
type = "boolean",
desc = "A boolean indicating whether the armor can be sold.",
required = true,
trim = true,
nilIfEmpty = true,
},
materials = {
type = "string",
desc = "A list of the materials required to obtain specified upgrade level. Blank for base items.",
trim = true,
nilIfEmpty = true,
},
description = {
required = true,
type = "content",
desc = "A transcript of the item's description on the [[Inventory]] screen.",
trim = true,
nilIfEmpty = true,
},
}
},
["Armor/Store"] = {
format = "block",
paramOrder = {"game", "armorSet", "bodyPart", "armor", "effects", "hasArmorSet", "hasEffects"},
params = {
game = {
required = true,
type = "string",
desc = "A game code from [[Data:Franchise]]",
trim = true,
nilIfEmpty = true,
},
armorSet = {
required = true,
type = "wiki-page-name",
desc = "A wiki page name of the Armor Set that <code>armor</code> belongs to.",
trim = true,
nilIfEmpty = true,
},
bodyPart = {
required = true,
type = "string",
enum = {"Head", "Chest", "Legs"},
desc = "The slot that <code>armor</code> occupies on Link's body.",
trim = true,
nilIfEmpty = true,
},
armor = {
required = true,
type = "wiki-page-name",
desc = "The wiki article for the piece of [[Armor]].",
trim = true,
nilIfEmpty = true,
},
effects = {
required = true,
type = "string",
desc = "Comma-separated list of [[Effect]] article names referring to the effects that this armor has, if any.",
},
hasArmorSet = {
required = true,
type = "boolean",
desc = "Indicates whether the Armor piece belongs to an Armor Set. Allows queries to determine whether the <code>armorSet</code> field is empty because a value hasn't been filled in yet or because the field is not applicable.",
trim = true,
nilIfEmpty = true,
},
hasEffects = {
required = true,
type = "boolean",
desc = "Indicates whether the Armor has any effects. Allows queries to determine whether the <code>effects</code> field is empty because a value hasn't been filled in yet or because the field is not applicable.",
trim = true,
nilIfEmpty = true,
},
},
},
}
return p