Module:BuildingData: Difference between revisions
From Against the Storm Official Wiki
added flawless brewery, flawless rain mill, and granary |
added brick oven. added require for recipe data to simplify storage of connections into just one module |
||
| Line 1: | Line 1: | ||
------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ||
-- | -- This module primarily supplies data and lookup functions for other modules | ||
-- | -- that support templates like {{Building_link}}. | ||
-- https://hoodedhorse.com/wiki/Against_the_Storm/Template:Building_link | |||
-- | |||
-- The main data table stores all available data about buildings themselves | |||
-- and relies on other modules to store relationships between buildings and | |||
-- products, services, etc. | |||
-- | -- | ||
-- The | -- The helper functions include getters (to keep the data hidden) and a large | ||
-- some | -- deconfliction method to provide some robustness when using the template | ||
-- | -- and from other Lua modules. Looking up a building requires using in-game | ||
-- names, but forgives small differences in spacing, apostrophes, and plurals. | |||
-- | |||
-- Please help keep this table updated as the game is updated. | |||
-- @module BuildingData | |||
local BuildingData = {} | |||
-- | -- | ||
local | -- Class Variables | ||
-- | |||
local RecipeData = require("Module:RecipeData") -- used to get recipe data | |||
-- | |||
-- Constants | -- Constants | ||
---- | -- | ||
-- Specializations | |||
local S_ALCH = "Alchemy" | local S_ALCH = "Alchemy" | ||
local S_BREW = "Brewing" | local S_BREW = "Brewing" | ||
| Line 32: | Line 38: | ||
local S_WOOD = "Wood" | local S_WOOD = "Wood" | ||
-- Resource names of building costs | |||
local C_BRICK = "Bricks" | local C_BRICK = "Bricks" | ||
local C_FABRI = "Fabric" | local C_FABRI = "Fabric" | ||
| Line 37: | Line 44: | ||
local C_PIPES = "Pipes" | local C_PIPES = "Pipes" | ||
local C_PLANK = "Planks" | local C_PLANK = "Planks" | ||
-- Rain types for rain engines | |||
local R_DRIZZ = "Drizzle Water" | |||
local R_CLEAR = "Clearance Water" | |||
local R_STORM = "Storm Water" | |||
------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ||
-- | -- Primary data table for this module. | ||
-- | -- | ||
-- to | -- This table stores the details of buildings according to in-game information. | ||
----------------------------------------------- | -- A design decision of this table is to make the key the same as the page | ||
-- name, so that whenever .page is referenced, it can be used again to retrieve | |||
-- | -- the rest of the data. (The lookup method will handle converting it to | ||
-- ( | -- lowercase.) | ||
-- | -- Structure: | ||
-- the | -- @key a lowercase version of the building name, with the same spaces, | ||
local | -- apostrophes, singular, and spelling | ||
-- @field iconfile a string of the filename.png of the icon used in the | |||
-- game, case-sensitive and must include extension, but without the "File:" | |||
-- @field page the name of the wiki page, case-sensitive, but otherwise | |||
-- must be the same as the key | |||
-- @field spec1[opt] the first specialization listed in the in-game | |||
-- encyclopedia (use the constants, above), if any | |||
-- @field spec2[opt] the second specialization listed in the in-game | |||
-- encyclopedia (use the constants, above), if any | |||
-- @field cost1 the first listed resource cost in the in-game encyclopedia | |||
-- (use constants, above) | |||
-- @field cost2 the second listed resource cost in the in-game encyclopedia | |||
-- (use constants, above), if any | |||
-- @field cost3 the third listed resource cost in the in-game encyclopedia | |||
-- (use constants, above), if any | |||
-- @field workers the number of worker slots | |||
-- @field raintype the color of rain used in the Rain Engine of this building | |||
-- (use constants, above), if any | |||
-- @field description the in-game description text, in plain text | |||
-- @table tBuildingData the primary data table for buildings | |||
local tBuildingData = { | |||
-- Starting Buildings | -- Starting Buildings | ||
["ancient hearth"] = {iconfile="Small Hearth icon.png", page="Ancient Hearth", spec1=S_WARM, workers=1, description="The heart of the colony is protected by the Holy Flame. {{Villagers}} gather here to rest, eat, and receive clothing. If the fire goes out, people will lose hope. Can't be moved. Size: 4x4."}, | ["ancient hearth"] = {iconfile="Small Hearth icon.png", page="Ancient Hearth", spec1=S_WARM, workers=1, description="The heart of the colony is protected by the Holy Flame. {{Villagers}} gather here to rest, eat, and receive clothing. If the fire goes out, people will lose hope. Can't be moved. Size: 4x4."}, | ||
["main warehouse"] = {iconfile="Main_Storage_icon.png", page="Main Warehouse"}, | ["main warehouse"] = {iconfile="Main_Storage_icon.png", page="Main Warehouse"}, | ||
-- Camps | -- Camps | ||
["foragers' camp"] = {iconfile="Forager's Camp icon", page="Foragers' Camp"}, | ["foragers' camp"] = {iconfile="Forager's Camp icon", page="Foragers' Camp"}, | ||
| Line 83: | Line 95: | ||
["trappers' camp"] = {iconfile="Trapper's Camp icon.png", page="Trappers' Camp"}, | ["trappers' camp"] = {iconfile="Trapper's Camp icon.png", page="Trappers' Camp"}, | ||
["woodcutters' camp"] = {iconfile="Woodcutters Camp icon", page="Woodcutters' Camp"}, | ["woodcutters' camp"] = {iconfile="Woodcutters Camp icon", page="Woodcutters' Camp"}, | ||
-- Farms | -- Farms | ||
["farm field"] = {iconfile="Farmfield_icon.png", page="Farm Field"}, | ["farm field"] = {iconfile="Farmfield_icon.png", page="Farm Field"}, | ||
| Line 89: | Line 102: | ||
["plantation"] = {iconfile="Plantation_icon.png", page="Plantation"}, | ["plantation"] = {iconfile="Plantation_icon.png", page="Plantation"}, | ||
["small farm"] = {iconfile="SmallFarm_icon.png", page="Small Farm"}, | ["small farm"] = {iconfile="SmallFarm_icon.png", page="Small Farm"}, | ||
-- Food production | -- Food production | ||
["bakery"] = {iconfile="Bakery_icon.png", page="Bakery"}, | ["bakery"] = {iconfile="Bakery_icon.png", page="Bakery"}, | ||
| Line 99: | Line 113: | ||
["ranch"] = {iconfile="Ranch_icon.png", page="Ranch"}, | ["ranch"] = {iconfile="Ranch_icon.png", page="Ranch"}, | ||
["smokehouse"] = {iconfile="Smokehouse_icon.png", page="Smokehouse"}, | ["smokehouse"] = {iconfile="Smokehouse_icon.png", page="Smokehouse"}, | ||
-- Housing | -- Housing | ||
["shelter"] = {iconfile="Shelter icon.png", page="Shelter"}, | ["shelter"] = {iconfile="Shelter icon.png", page="Shelter"}, | ||
| Line 106: | Line 121: | ||
["lizard house"] = {iconfile="Lizard House icon.png", page="Lizard House"}, | ["lizard house"] = {iconfile="Lizard House icon.png", page="Lizard House"}, | ||
["harpy house"] = {iconfile="Harpy House icon.png", page="Harpy House"}, | ["harpy house"] = {iconfile="Harpy House icon.png", page="Harpy House"}, | ||
-- Industry | -- Industry | ||
["crude workstation"] = {iconfile="Crude_Workstation_icon.png", page="Crude Workstation"}, | ["crude workstation"] = {iconfile="Crude_Workstation_icon.png", page="Crude Workstation"}, | ||
| Line 114: | Line 130: | ||
["artisan"] = {iconfile="Artisan_icon.png", page="Artisan"}, | ["artisan"] = {iconfile="Artisan_icon.png", page="Artisan"}, | ||
["brewery"] = {iconfile="Brewery_icon.png", page="Brewery"}, | ["brewery"] = {iconfile="Brewery_icon.png", page="Brewery"}, | ||
["brick oven"] = {iconfile="Brick_Oven_icon.png", page="Brick Oven"}, | |||
["brickyard"] = {iconfile="Brickyard_icon.png", page="Brickyard"}, | ["brickyard"] = {iconfile="Brickyard_icon.png", page="Brickyard"}, | ||
["carpenter"] = {iconfile="Carpenter_icon.png", page="Carpenter"}, | ["carpenter"] = {iconfile="Carpenter_icon.png", page="Carpenter"}, | ||
| Line 134: | Line 151: | ||
["toolshop"] = {iconfile="Toolshop_icon.png", page="Toolshop"}, | ["toolshop"] = {iconfile="Toolshop_icon.png", page="Toolshop"}, | ||
["weaver"] = {iconfile="Weaver_icon.png", page="Weaver"}, | ["weaver"] = {iconfile="Weaver_icon.png", page="Weaver"}, | ||
-- City Buildings | -- City Buildings | ||
["archaeologist's office"] = {iconfile="Archeologist_office_icon.png", page="Archaeologist's Office", cost1=C_PLANK, cost2=C_BRICK, cost3=C_FABRI, description="A building designed to help you study the past. Can be [[upgrade]]d to locate [[archaeological discoveries]] or improve [[exploration]] capabilities. Can be moved for: 5 {{rl|Wood}}. Size: 3x3."}, | ["archaeologist's office"] = {iconfile="Archeologist_office_icon.png", page="Archaeologist's Office", cost1=C_PLANK, cost2=C_BRICK, cost3=C_FABRI, description="A building designed to help you study the past. Can be [[upgrade]]d to locate [[archaeological discoveries]] or improve [[exploration]] capabilities. Can be moved for: 5 {{rl|Wood}}. Size: 3x3."}, | ||
| Line 142: | Line 160: | ||
["hydrant"] = {iconfile="Hydrant_icon.png", page="Hydrant"}, | ["hydrant"] = {iconfile="Hydrant_icon.png", page="Hydrant"}, | ||
["forsaken altar"] = {iconfile="Altar_icon.png", page="Forsaken Altar"}, | ["forsaken altar"] = {iconfile="Altar_icon.png", page="Forsaken Altar"}, | ||
-- Service Buildings | -- Service Buildings | ||
["bath house"] = {iconfile="Bath_House_icon.png", page="Bath House"}, | ["bath house"] = {iconfile="Bath_House_icon.png", page="Bath House"}, | ||
| Line 155: | Line 174: | ||
------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ||
-- Main lookup | -- Main lookup function | ||
-- Accepts the in-game name and returns the name of the page on the wiki | -- Accepts the in-game name and returns the name of the page on the wiki | ||
-- associated with that in-game item, resource, building, etc. | -- associated with that in-game item, resource, building, etc. | ||
| Line 170: | Line 189: | ||
-- Get it from the big table below and return it. | -- Get it from the big table below and return it. | ||
return | return tBuildingData[strArg] | ||
end | end | ||
| Line 434: | Line 453: | ||
["brewers"] = "brewery", | ["brewers"] = "brewery", | ||
["breweries"] = "brewery", | ["breweries"] = "brewery", | ||
["brickoven"] = "brick oven", | |||
["brickovens"] = "brick oven", | |||
["brick ovens"] = "brick oven", | |||
["brickyards"] = "brickyard", | ["brickyards"] = "brickyard", | ||
["brick yard"] = "brickyard", | ["brick yard"] = "brickyard", | ||
| Line 581: | Line 603: | ||
-- Return this class when required into another module. | |||
-- Return when required into another | |||
return BuildingData | return BuildingData | ||
Revision as of 17:26, 12 February 2023
Documentation for this module may be created at Module:BuildingData/doc
-------------------------------------------------------------------------------
-- This module primarily supplies data and lookup functions for other modules
-- that support templates like {{Building_link}}.
-- https://hoodedhorse.com/wiki/Against_the_Storm/Template:Building_link
--
-- The main data table stores all available data about buildings themselves
-- and relies on other modules to store relationships between buildings and
-- products, services, etc.
--
-- The helper functions include getters (to keep the data hidden) and a large
-- deconfliction method to provide some robustness when using the template
-- and from other Lua modules. Looking up a building requires using in-game
-- names, but forgives small differences in spacing, apostrophes, and plurals.
-- Please help keep this table updated as the game is updated.
-- @module BuildingData
local BuildingData = {}
--
-- Class Variables
--
local RecipeData = require("Module:RecipeData") -- used to get recipe data
--
-- Constants
--
-- Specializations
local S_ALCH = "Alchemy"
local S_BREW = "Brewing"
local S_CLOT = "Cloth"
local S_ENGI = "Engineering"
local S_MEAT = "Meat production"
local S_WARM = "Warmth"
local S_WOOD = "Wood"
-- Resource names of building costs
local C_BRICK = "Bricks"
local C_FABRI = "Fabric"
local C_PARTS = "Parts"
local C_PIPES = "Pipes"
local C_PLANK = "Planks"
-- Rain types for rain engines
local R_DRIZZ = "Drizzle Water"
local R_CLEAR = "Clearance Water"
local R_STORM = "Storm Water"
-------------------------------------------------------------------------------
-- Primary data table for this module.
--
-- This table stores the details of buildings according to in-game information.
-- A design decision of this table is to make the key the same as the page
-- name, so that whenever .page is referenced, it can be used again to retrieve
-- the rest of the data. (The lookup method will handle converting it to
-- lowercase.)
-- Structure:
-- @key a lowercase version of the building name, with the same spaces,
-- apostrophes, singular, and spelling
-- @field iconfile a string of the filename.png of the icon used in the
-- game, case-sensitive and must include extension, but without the "File:"
-- @field page the name of the wiki page, case-sensitive, but otherwise
-- must be the same as the key
-- @field spec1[opt] the first specialization listed in the in-game
-- encyclopedia (use the constants, above), if any
-- @field spec2[opt] the second specialization listed in the in-game
-- encyclopedia (use the constants, above), if any
-- @field cost1 the first listed resource cost in the in-game encyclopedia
-- (use constants, above)
-- @field cost2 the second listed resource cost in the in-game encyclopedia
-- (use constants, above), if any
-- @field cost3 the third listed resource cost in the in-game encyclopedia
-- (use constants, above), if any
-- @field workers the number of worker slots
-- @field raintype the color of rain used in the Rain Engine of this building
-- (use constants, above), if any
-- @field description the in-game description text, in plain text
-- @table tBuildingData the primary data table for buildings
local tBuildingData = {
-- Starting Buildings
["ancient hearth"] = {iconfile="Small Hearth icon.png", page="Ancient Hearth", spec1=S_WARM, workers=1, description="The heart of the colony is protected by the Holy Flame. {{Villagers}} gather here to rest, eat, and receive clothing. If the fire goes out, people will lose hope. Can't be moved. Size: 4x4."},
["main warehouse"] = {iconfile="Main_Storage_icon.png", page="Main Warehouse"},
-- Camps
["foragers' camp"] = {iconfile="Forager's Camp icon", page="Foragers' Camp"},
["harvesters' camp"] = {iconfile="Harvester Camp icon.png", page="Harvesters' Camp"},
["herbalists' camp"] = {iconfile="Herbalist's_Camp_icon.png", page="Herbalists' Camp"},
["stonecutters' camp"] = {iconfile="Stonecutter's Camp icon.png", page="Stonecutters' Camp"},
["trappers' camp"] = {iconfile="Trapper's Camp icon.png", page="Trappers' Camp"},
["woodcutters' camp"] = {iconfile="Woodcutters Camp icon", page="Woodcutters' Camp"},
-- Farms
["farm field"] = {iconfile="Farmfield_icon.png", page="Farm Field"},
["greenhouse"] = {iconfile="Greenhouse_icon.png", page="Greenhouse"},
["herb garden"] = {iconfile="HerbGarden_icon.png", page="Herb Garden"},
["plantation"] = {iconfile="Plantation_icon.png", page="Plantation"},
["small farm"] = {iconfile="SmallFarm_icon.png", page="Small Farm"},
-- Food production
["bakery"] = {iconfile="Bakery_icon.png", page="Bakery"},
["butcher"] = {iconfile="Butcher_icon.png", page="Butcher"},
["cellar"] = {iconfile="Cellar_icon.png", page="Cellar"},
["cookhouse"] = {iconfile="Cookhouse_icon.png", page="Cookhouse"},
["field kitchen"] = {iconfile="Field_Kitchen_icon.png", page="Field Kitchen"},
["granary"] = {iconfile="Granary_icon.png", page="Granary"},
["grill"] = {iconfile="Grill_icon.png", page="Grill"},
["ranch"] = {iconfile="Ranch_icon.png", page="Ranch"},
["smokehouse"] = {iconfile="Smokehouse_icon.png", page="Smokehouse"},
-- Housing
["shelter"] = {iconfile="Shelter icon.png", page="Shelter"},
["big shelter"] = {iconfile="Big Shelter icon.png", page="Big Shelter"},
["human house"] = {iconfile="Human House icon.png", page="Human House"},
["beaver house"] = {iconfile="Beaver House icon.png", page="Beaver House"},
["lizard house"] = {iconfile="Lizard House icon.png", page="Lizard House"},
["harpy house"] = {iconfile="Harpy House icon.png", page="Harpy House"},
-- Industry
["crude workstation"] = {iconfile="Crude_Workstation_icon.png", page="Crude Workstation"},
["makeshift post"] = {iconfile="Makeshift_Post_icon.png", page="Makeshift Post"},
["advanced rain collector"] = {iconfile="Advanced_Rain_Collector_icon.png", page="Advanced Rain Collector", spec1=S_ENGI, spec2=S_ALCH, cost1=C_PIPES, cost2=C_PARTS, cost3=C_PLANK, description="Can collect [[infused rainwater]] used for crafting and powering [[Rain Engines]] in production buildings. The type of collected rainwater depends on the [[season]]. Can't be moved. Size: 3x2."},
["alchemist's hut"] = {iconfile="Alchemist_Hut_icon.png", page="Alchemist's Hut", spec1=S_ALCH, spec2=S_BREW, cost1=C_PLANK, cost2=C_BRICK, workers=2, recipe1="Crystalized Dew", grade1=2, recipe2="Cosmetics", grade2=2, recipe3="Wine", grade3=2, description="Can produce: {{rl|Crystalized Dew}} {{P2Star}}, {{rl|Cosmetics}} {{P2star}}, {{rl|Wine}} {{P2Star}}. Can use: {{rl|Clearance Water}}. Can't be moved. Size: 3x2."},
["apothecary"] = {iconfile="Apothecary_icon.png", page="Apothecary", spec1=S_ALCH, cost1=C_PLANK, cost2=C_BRICK, workers=2, recipe1="Cosmetics", grade1=2, recipe2="Incense", grade2=2, recipe3="Biscuits", grade3=2, description="Can produce: {{rl|Cosmetics}} {{P2Star}}, {{rl|Incense}} {{P2Star}}, {{rl|Biscuits}} {{P2Star}}. Can use: {{rl|Clearance Water}}. Can't be moved. Size: 3x3."},
["artisan"] = {iconfile="Artisan_icon.png", page="Artisan"},
["brewery"] = {iconfile="Brewery_icon.png", page="Brewery"},
["brick oven"] = {iconfile="Brick_Oven_icon.png", page="Brick Oven"},
["brickyard"] = {iconfile="Brickyard_icon.png", page="Brickyard"},
["carpenter"] = {iconfile="Carpenter_icon.png", page="Carpenter"},
["clothier"] = {iconfile="Clothier_icon.png", page="Clothier"},
["cooperage"] = {iconfile="Cooperage_icon.png", page="Cooperage"},
["druid's hut"] = {iconfile="Druid_icon.png", page="Druid's Hut"},
["flawless brewery"] = {iconfile="Brewery_icon.png", page="Flawless Brewery"},
["flawless rain mill"] = {iconfile="Rain_Mill_icon.png", page="Flawless Rain Mill"},
["furnace"] = {iconfile="Furnace_icon.png", page="Furnace"},
["kiln"] = {iconfile="Kiln_icon.png", page="Kiln"},
["leatherworker"] = {iconfile="Leatherworks_icon.png", page="Leatherworker"},
["lumber mill"] = {iconfile="Lumbermill_icon.png", page="Lumber Mill"},
["mine"] = {iconfile="Mine_icon.png", page="Mine"},
["press"] = {iconfile="Press_icon.png", page="Press"},
["provisioner"] = {iconfile="Provisioner_icon.png", page="Provisioner"},
["rain collector"] = {iconfile="Rain_Collector_icon.png", page="Rain Collector"},
["rain mill"] = {iconfile="Rain_Mill_icon.png", page="Rain Mill"},
["scribe"] = {iconfile="Scribe_icon.png", page="Scribe"},
["smelter"] = {iconfile="Smelter_icon.png", page="Smelter"},
["toolshop"] = {iconfile="Toolshop_icon.png", page="Toolshop"},
["weaver"] = {iconfile="Weaver_icon.png", page="Weaver"},
-- City Buildings
["archaeologist's office"] = {iconfile="Archeologist_office_icon.png", page="Archaeologist's Office", cost1=C_PLANK, cost2=C_BRICK, cost3=C_FABRI, description="A building designed to help you study the past. Can be [[upgrade]]d to locate [[archaeological discoveries]] or improve [[exploration]] capabilities. Can be moved for: 5 {{rl|Wood}}. Size: 3x3."},
["small hearth"] = {iconfile="Temporary_Hearth_icon.png", page="Small Hearth"},
["warehouse"] = {iconfile="Storage_icon.png", page="Warehouse"},
["trading post"] = {iconfile="Trading_Post_icon.png", page="Trading Post"},
["blight post"] = {iconfile="Blight_Post_icon.png", page="Blight Post"},
["hydrant"] = {iconfile="Hydrant_icon.png", page="Hydrant"},
["forsaken altar"] = {iconfile="Altar_icon.png", page="Forsaken Altar"},
-- Service Buildings
["bath house"] = {iconfile="Bath_House_icon.png", page="Bath House"},
["clan hall"] = {iconfile="Clan_Hall_icon.png", page="Clan Hall"},
["explorers' lodge"] = {iconfile="Explorers_Lodge_icon.png", page="Explorers' Lodge"},
["guild house"] = {iconfile="Guild_House_icon.png", page="Guild House"},
["monastery"] = {iconfile="Monastery_icon.png", page="Monastery"},
["tavern"] = {iconfile="Tavern_icon.png", page="Tavern"},
["temple"] = {iconfile="Temple_icon.png", page="Temple"},
}
-------------------------------------------------------------------------------
-- Main lookup function
-- Accepts the in-game name and returns the name of the page on the wiki
-- associated with that in-game item, resource, building, etc.
-------------------------------------------------------------------------------
-- returns the whole data table for the specified key
-- need to run normalize function first
function BuildingData.getData(strArg)
-- normalize input
local strArg = BuildingData.normalizeName(strArg)
-- Get it from the big table below and return it.
return tBuildingData[strArg]
end
-- simpler version if all that's needed is the iconfile.
-- error handling by the calling module is required.
function BuildingData.getIconFilename(strArg)
local data = getData(strArg)
-- if this particular data block doesn't have a iconfile, this will return nil
-- therefore, error handling will be necessary
return data.iconfile or nil
end
-- simpler version if all that's needed is the page name.
-- error handling by the calling module is required.
function BuildingData.getPagename(strArg)
local data = getData(strArg)
-- if this particular data block doesn't have a page name, this will return nil
-- therefore, error handling will be necessary
return data.page or nil
end
-- simpler version if all that's needed is the description.
-- error handling by the calling module is required.
function BuildingData.getDescription(strArg)
local data = getData(strArg)
-- if this particular data block doesn't have a description, this will return nil
-- therefore, error handling will be necessary
return data.description or nil
end
-------------------------------------------------------------------------------
-- Helper functions
-------------------------------------------------------------------------------
-- Normalize the argument to the standard in-game name, and the one that
-- is used as the key in the big lookup table.
--
-- This function will also make the argument lowercase to reduce the need
-- to specify more possible alternatives to normalize.
function BuildingData.normalizeName(strArg)
strArg = string.lower(strArg)
-- no other functions need this lookup table, so it's defined locally
-- to this function
local tableStrStrAlternatives = {
---------------------------------------
-- Buildings
---------------------------------------
-- Starting Buildings
["ancienthearth"] = "ancient hearth",
["ancienthearths"] = "ancient hearth",
["ancient hearths"] = "ancient hearth",
["mainwarehouse"] = "main warehouse",
["mainwarehouses"] = "main warehouse",
["main warehouses"] = "main warehouse",
-- Camps
["forager"] = "foragers' camp",
["foragerscamp"] = "foragers' camp",
["forager'scamp"] = "foragers' camp",
["foragers'camp"] = "foragers' camp",
["forager camp"] = "foragers' camp",
["forager's camp"] = "foragers' camp",
["foragers"] = "foragers' camp",
["foragerscamps"] = "foragers' camp",
["forager'scamps"] = "foragers' camp",
["foragers'camps"] = "foragers' camp",
["forager camps"] = "foragers' camp",
["forager's camps"] = "foragers' camp",
["harvester"] = "harvesters' camp",
["harvesterscamp"] = "harvesters' camp",
["harvester'scamp"] = "harvesters' camp",
["harvesters'camp"] = "harvesters' camp",
["harvester camp"] = "harvesters' camp",
["harvester's camp"] = "harvesters' camp",
["harvesters"] = "harvesters' camp",
["harvesterscamps"] = "harvesters' camp",
["harvester'scamps"] = "harvesters' camp",
["harvesters'camps"] = "harvesters' camp",
["harvester camps"] = "harvesters' camp",
["harvester's camps"] = "harvesters' camp",
["herbalist"] = "herbalists' camp",
["herbalistscamp"] = "herbalists' camp",
["herbalist'scamp"] = "herbalists' camp",
["herbalists'camp"] = "herbalists' camp",
["herbalist camp"] = "herbalists' camp",
["herbalist's camp"] = "herbalists' camp",
["herbalists"] = "herbalists' camp",
["herbalistscamps"] = "herbalists' camp",
["herbalist'scamps"] = "herbalists' camp",
["herbalists'camps"] = "herbalists' camp",
["herbalist camps"] = "herbalists' camp",
["herbalist's camps"] = "herbalists' camp",
["stonecutter"] = "stonecutters' camp",
["stonecutterscamp"] = "stonecutters' camp",
["stonecutter'scamp"] = "stonecutters' camp",
["stonecutters'camp"] = "stonecutters' camp",
["stonecutter camp"] = "stonecutters' camp",
["stonecutter's camp"] = "stonecutters' camp",
["stonecutters"] = "stonecutters' camp",
["stonecutterscamps"] = "stonecutters' camp",
["stonecutter'scamps"] = "stonecutters' camp",
["stonecutters'camps"] = "stonecutters' camp",
["stonecutter camps"] = "stonecutters' camp",
["stonecutter's camps"] = "stonecutters' camp",
["trapper"] = "trappers' camp",
["trapperscamp"] = "trappers' camp",
["trapper'scamp"] = "trappers' camp",
["trappers'camp"] = "trappers' camp",
["trapper camp"] = "trappers' camp",
["trapper's camp"] = "trappers' camp",
["trappers"] = "trappers' camp",
["trapperscamps"] = "trappers' camp",
["trapper'scamps"] = "trappers' camp",
["trappers'camps"] = "trappers' camp",
["trapper camps"] = "trappers' camp",
["trapper's camps"] = "trappers' camp",
["woodcutter"] = "woodcutters' camp",
["woodcutterscamp"] = "woodcutters' camp",
["woodcutter'scamp"] = "woodcutters' camp",
["woodcutters'camp"] = "woodcutters' camp",
["woodcutter camp"] = "woodcutters' camp",
["woodcutter's camp"] = "woodcutters' camp",
["woodcutters"] = "woodcutters' camp",
["woodcutterscamps"] = "woodcutters' camp",
["woodcutter'scamps"] = "woodcutters' camp",
["woodcutters'camps"] = "woodcutters' camp",
["woodcutter camps"] = "woodcutters' camp",
["woodcutter's camps"] = "woodcutters' camp",
-- Farms
["field"] = "farm field",
["fields"] = "farm field",
["farmfield"] = "farm field",
["farmfields"] = "farm field",
["farm fields"] = "farm field",
["greenhouses"] = "greenhouse",
["green house"] = "greenhouse",
["green houses"] = "greenhouse",
["herbgarden"] = "herb garden",
["herbgardens"] = "herb garden",
["herb gardens"] = "herb garden",
["plantations"] = "plantation",
["farm"] = "small farm",
["farms"] = "small farm",
["smallfarm"] = "small farm",
["smallfarms"] = "small farm",
["small farms"] = "small farm",
-- Food Production
["baker"] = "bakery",
["bakers"] = "bakery",
["bakeries"] = "bakery",
["butchers"] = "butcher",
["celler"] = "cellar",
["cellers"] = "cellar",
["cellars"] = "cellar",
["cookhouses"] = "cookhouse",
["cook house"] = "cookhouse",
["cook houses"] = "cookhouse",
["fieldkitchen"] = "field kitchen",
["fieldkitchens"] = "field kitchen",
["field kitchens"] = "field kitchen",
["granaries"] = "granary",
["grills"] = "grill",
["ranches"] = "ranch",
["smokehouses"] = "smokehouse",
["smoke house"] = "smokehouse",
["smoke housea"] = "smokehouse",
-- Housing
["house"] = "shelter",
["houses"] = "shelter",
["bighouse"] = "big shelter",
["bighouses"] = "big shelter",
["bigshelter"] = "big shelter",
["bigshelters"] = "big shelter",
["humanhouse"] = "human house",
["humanhouses"] = "human house",
["human'shouse"] = "human house",
["humans'house"] = "human house",
["human houses"] = "human house",
["human's house"] = "human house",
["humans' house"] = "human house",
["human's houses"] = "human house",
["humans' houses"] = "human house",
["beaverhouse"] = "beaver house",
["beaverhouses"] = "beaver house",
["beaver'shouse"] = "beaver house",
["beavers'house"] = "beaver house",
["beaver'shouses"] = "beaver house",
["beavers'houses"] = "beaver house",
["beaver houses"] = "beaver house",
["beaver's houses"] = "beaver house",
["beavers' houses"] = "beaver house",
["lizardhouse"] = "lizard house",
["lizardhouses"] = "lizard house",
["lizard'shouse"] = "lizard house",
["lizards'house"] = "lizard house",
["lizard'shouses"] = "lizard house",
["lizards'houses"] = "lizard house",
["lizard houses"] = "lizard house",
["lizard's houses"] = "lizard house",
["lizards' houses"] = "lizard house",
["harpyhouse"] = "harpy house",
["harpyhouses"] = "harpy house",
["harpy'shouse"] = "harpy house",
["harpys'house"] = "harpy house",
["harpy'shouses"] = "harpy house",
["harpys'houses"] = "harpy house",
["harpy houses"] = "harpy house",
["harpy's houses"] = "harpy house",
["harpys' houses"] = "harpy house",
["harpieshouse"] = "harpy house",
["harpieshouses"] = "harpy house",
["harpies'house"] = "harpy house",
["harpies houses"] = "harpy house",
["harpies' houses"] = "harpy house",
-- Industry
["crudeworkstation"] = "crude workstation",
["crudeworkstations"] = "crude workstation",
["crude workstations"] = "crude workstation",
["makeshiftpost"] = "makeshift post",
["makeshiftposts"] = "makeshift post",
["makeshift posts"] = "makeshift post",
["advancedraincollector"] = "advanced rain collector",
["advancedraincollectors"] = "advanced rain collector",
["advanced rain collectors"] = "advanced rain collector",
["alchemist"] = "alchemist's hut",
["alchemists"] = "alchemist's hut",
["alchemisthut"] = "alchemist's hut",
["alchemisthuts"] = "alchemist's hut",
["alchemistshut"] = "alchemist's hut",
["alchemistshuts"] = "alchemist's hut",
["alchemist'shut"] = "alchemist's hut",
["alchemist'shuts"] = "alchemist's hut",
["alchemists'hut"] = "alchemist's hut",
["alchemists'huts"] = "alchemist's hut",
["alchemist hut"] = "alchemist's hut",
["alchemist huts"] = "alchemist's hut",
["alchemists hut"] = "alchemist's hut",
["alchemists huts"] = "alchemist's hut",
["alchemists' hut"] = "alchemist's hut",
["alchemists' huts"] = "alchemist's hut",
["apothacary"] = "apothecary",
["apothecaries"] = "apothecary",
["artisans"] = "artisan",
["brewer"] = "brewery",
["brewers"] = "brewery",
["breweries"] = "brewery",
["brickoven"] = "brick oven",
["brickovens"] = "brick oven",
["brick ovens"] = "brick oven",
["brickyards"] = "brickyard",
["brick yard"] = "brickyard",
["brick yards"] = "brickyard",
["carpenters"] = "carpenter",
["clothiers"] = "clothier",
["cooper"] = "cooperage",
["coopers"] = "cooperage",
["cooperages"] = "cooperage",
["druid"] = "druid's hut",
["druids"] = "druid's hut",
["druidhut"] = "druid's hut",
["druidhuts"] = "druid's hut",
["druid'shut"] = "druid's hut",
["druid'shuts"] = "druid's hut",
["druids'hut"] = "druid's hut",
["druids'huts"] = "druid's hut",
["druid hut"] = "druid's hut",
["druid huts"] = "druid's hut",
["druids' hut"] = "druid's hut",
["druids' huts"] = "druid's hut",
["druid's huts"] = "druid's hut",
["flawlessbrewery"] = "flawless brewery",
["flawlessbreweries"] = "flawless brewery",
["flawless breweries"] = "flawless brewery",
["flawlessrainmill"] = "flawless rain mill",
["flawlessrainmills"] = "flawless rain mill",
["flawless rainmill"] = "flawless rain mill",
["flawless rainmills"] = "flawless rain mill",
["flawless rain mills"] = "flawless rain mill",
["furnaces"] = "furnace",
["kilns"] = "kiln",
["leatherworkers"] = "leatherworker",
["leather worker"] = "leatherworker",
["leather workers"] = "leatherworker",
["lumbermill"] = "lumber mill",
["lumbermills"] = "lumber mill",
["lumber mills"] = "lumber mill",
["mines"] = "mine",
["presses"] = "press",
["provisioners"] = "provisioner",
["raincollector"] = "rain collector",
["raincollectors"] = "rain collector",
["rain collectors"] = "rain collector",
["rainmill"] = "rain mill",
["rainmills"] = "rain mill",
["rain mills"] = "rain mill",
["scribes"] = "scribe",
["smelters"] = "smelter",
["smeltery"] = "smelter",
["smelteries"] = "smelter",
["tool shop"] = "toolshop",
["weavers"] = "weaver",
-- City buildings
["archaeologyoffice"] = "archaeologist's office",
["archeologyoffice"] = "archaeologist's office",
["archaeologistoffice"] = "archaeologist's office",
["archeologistoffice"] = "archaeologist's office",
["archaeologistsoffice"] = "archaeologist's office",
["archeologistsoffice"] = "archaeologist's office",
["archaeologist'soffice"] = "archaeologist's office",
["archeologist'soffice"] = "archaeologist's office",
["archeologists'office"] = "archaeologist's office",
["archaeology office"] = "archaeologist's office",
["archeology office"] = "archaeologist's office",
["archaeologist office"] = "archaeologist's office",
["archeologist office"] = "archaeologist's office",
["archaeologists office"] = "archaeologist's office",
["archeologists office"] = "archaeologist's office",
["archeologist's office"] = "archaeologist's office",
["archaeologists' office"] = "archaeologist's office",
["archeologists' office"] = "archaeologist's office",
["smallhearth"] = "small hearth",
["smallhearths"] = "small hearth",
["small hearths"] = "small hearth",
["warehouses"] = "warehouse",
["ware house"] = "warehouse",
["ware houses"] = "warehouse",
["traderpost"] = "trading post",
["traderposts"] = "trading post",
["trader posts"] = "trading post",
["tradingpost"] = "trading post",
["tradingposts"] = "trading post",
["trading posts"] = "trading post",
["blightpost"] = "blight post",
["blightposts"] = "blight post",
["blight posts"] = "blight post",
["hydrants"] = "hydrant",
["forsakenaltar"] = "forsaken altar",
["forsakenalter"] = "forsaken altar",
["foresakenaltar"] = "forsaken altar",
["foresakenalter"] = "forsaken altar",
["forsakenaltars"] = "forsaken altar",
["forsakenalters"] = "forsaken altar",
["foresakenaltars"] = "forsaken altar",
["foresakenalters"] = "forsaken altar",
["forsaken altars"] = "forsaken altar",
["forsaken alters"] = "forsaken altar",
["foresaken altars"] = "forsaken altar",
["foresaken alters"] = "forsaken altar",
-- Service Buildings
["bath"] = "bath house",
["baths"] = "bath house",
["bathhouse"] = "bath house",
["bathhouses"] = "bath house",
["bath houses"] = "bath house",
["clan"] = "clan hall",
["clans"] = "clan hall",
["clanhall"] = "clan hall",
["clanhalls"] = "clan hall",
["clan halls"] = "clan hall",
["explorer"] = "explorers' lodge",
["explorers"] = "explorers' lodge",
["explorerlodge"] = "explorers' lodge",
["explorerslodge"] = "explorers' lodge",
["explorerlodges"] = "explorers' lodge",
["explorerslodges"] = "explorers' lodge",
["explorers'lodges"] = "explorers' lodge",
["explorer'slodges"] = "explorers' lodge",
["explorer lodge"] = "explorers' lodge",
["explorers lodge"] = "explorers' lodge",
["explorer lodges"] = "explorers' lodge",
["explorers lodges"] = "explorers' lodge",
["explorer's lodges"] = "explorers' lodge",
["guild"] = "guild house",
["guilds"] = "guild house",
["guildhouse"] = "guild house",
["guildhouses"] = "guild house",
["guild houses"] = "guild house",
["monestary"] = "monastery",
["monastary"] = "monastery",
["monestery"] = "monastery",
["monestaries"] = "monastery",
["monastaries"] = "monastery",
["monesteries"] = "monastery",
["taverns"] = "tavern",
["temples"] = "temple"
} -- the end of the huge tableStrStrAlternatives
-- if nothing is found, the result of the lookup will be nil, so
-- just return whatever was passed in as the argument (lowercase)
-- we can assume that the input argument is fine or does not exist
return tableStrStrAlternatives[strArg] or strArg
end
-- Return this class when required into another module.
return BuildingData


