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