Module:BuildingData: Difference between revisions

From Against the Storm Official Wiki
(added furnace, alchemist's hut, advanced rain collector, and toolshop)
(added more properties to the inner tables. see comments (will make doc soon from the comments))
Line 18: Line 18:
-- for returning when REQUIRE'd by other Lua modules.
-- for returning when REQUIRE'd by other Lua modules.
local BuildingData = {}
local BuildingData = {}
-------------------------------------------------------------------------------
-- Constants
-------------------------------------------------------------------------------
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"
local C_BRICK = "Bricks"
local C_FABRI = "Fabric"
local C_PARTS = "Parts"
local C_PIPES = "Pipes"
local C_PLANK = "Planks"




Line 35: Line 54:
---------------------------------------
---------------------------------------
-- Buildings
-- Buildings
-- iconfile: string: the filename.png of the icon used in the game, case-sensitive and must include extension. do not include "File:" prefix
-- page: string: the name of the wiki page, case-sensitive
-- spec1: constant: the first specialization listed in the in-game encyclopedia (use constants, above)
-- spec2: constant: the second specialization listed in the in-game encyclopedia (use constants, above)
-- cost1: constant: the name of the first listed resource cost in the in-game encyclopedia (use constants, above)
-- cost2: constant: the name of the second listed resource cost in the in-game encyclopedia (use constants, above)
-- cost3: constant: the name of the third listed resource cost in the in-game encyclopedia (use constants, above)
-- workers: integer: the number of worker slots
-- recipe1: string: the resource produced by the first recipe listed in the in-game encyclopedia
-- grade1: integer: the number of stars for recipe1 (0, 1, 2, or 3)
-- recipe2: string: if any, the resource produced by the second recipe listed in the in-game encyclopedia
-- grade2: integer: the number of stars for recipe2 (0, 1, 2, or 3)
-- recipe3: string: if any, the resource produced by the third recipe listed in the in-game encyclopedia
-- grade3: integer: the number of stars for recipe3 (0, 1, 2, or 3)
-- recipe4: string: if any, the resource produced by the fourth recipe listed in the in-game encyclopedia
-- grade4: integer: the number of stars for recipe4 (0, 1, 2, or 3)
-- description: string: the in-game description text. you may use wiki markup and templates
--              like {{2star}} or {{Planks}} or [[Villagers]] to get icons and links
---------------------------------------
---------------------------------------
-- Starting Buildings
-- Starting Buildings
["ancient hearth"] = {iconfile="Small Hearth icon.png", page="Ancient Hearth"},
["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
Line 48: Line 85:
-- Farms
-- Farms
["farm field"] = {iconfile="Farmfield_icon.png", page="Farm Field"},
["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"},
["herb garden"] = {iconfile="HerbGarden_icon.png", page="Herb Garden"},
["plantation"] = {iconfile="Plantation_icon.png", page="Plantation"},
["plantation"] = {iconfile="Plantation_icon.png", page="Plantation"},
Line 68: Line 106:
["crude workstation"] = {iconfile="Crude_Workstation_icon.png", page="Crude Workstation"},
["crude workstation"] = {iconfile="Crude_Workstation_icon.png", page="Crude Workstation"},
["makeshift post"] = {iconfile="Makeshift_Post_icon.png", page="Makeshift Post"},
["makeshift post"] = {iconfile="Makeshift_Post_icon.png", page="Makeshift Post"},
["advanced rain collector"] = {iconfile="Advanced_Rain_Collector_icon.png", page="Advanced Rain Collector"},
["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"},
["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"},
["artisan"] = {iconfile="Artisan_icon.png", page="Artisan"},
["brewery"] = {iconfile="Brewery_icon.png", page="Brewery"},
["brewery"] = {iconfile="Brewery_icon.png", page="Brewery"},
Line 91: Line 130:
["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."},
["small hearth"] = {iconfile="Temporary_Hearth_icon.png", page="Small Hearth"},
["small hearth"] = {iconfile="Temporary_Hearth_icon.png", page="Small Hearth"},
["warehouse"] = {iconfile="Storage_icon.png", page="Warehouse"},
["warehouse"] = {iconfile="Storage_icon.png", page="Warehouse"},
Line 277: Line 317:
["farmfields"] =  "farm field",
["farmfields"] =  "farm field",
["farm fields"] = "farm field",
["farm fields"] = "farm field",
["greenhouses"] = "greenhouse",
["green house"] = "greenhouse",
["green houses"] = "greenhouse",
["herbgarden"] =  "herb garden",
["herbgarden"] =  "herb garden",
["herbgardens"] =  "herb garden",
["herbgardens"] =  "herb garden",
["herb gardens"] = "herb garden",
["herb gardens"] = "herb garden",
["plantations"] = "plantation",
["farm"] =        "small farm",
["farm"] =        "small farm",
["farms"] =      "small farm",
["farms"] =      "small farm",
Line 374: Line 418:
["alchemists' hut"] =  "alchemist's hut",
["alchemists' hut"] =  "alchemist's hut",
["alchemists' huts"] = "alchemist's hut",
["alchemists' huts"] = "alchemist's hut",
["apothacary"] = "apothecary",
["apothecaries"] = "apothecary",
["artisans"] = "artisan",
["artisans"] = "artisan",
["brewer"] =    "brewery",
["brewer"] =    "brewery",
Line 423: Line 469:
["weavers"] = "weaver",
["weavers"] = "weaver",
-- City buildings
-- 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",
["smallhearth"] =  "small hearth",
["smallhearths"] =  "small hearth",
["smallhearths"] =  "small hearth",

Revision as of 21:09, 4 February 2023

Documentation for this module may be created at Module:BuildingData/doc

-------------------------------------------------------------------------------
-- Lua storage table for looking up wiki pages, names, and resources 
-- based on in-game names. All data is in English.
--
-- The table contains some deconfliction, but only for spaces, apostrophes, and
-- some singular/plural.
-- Use in-game names for things, and help keep this table updated as the game
-- is updated.
--
-- Using the table requires a locally defined lookup function that performs 
-- a string.lower on the argument so that the lookup table can accept any case 
-- and still function properly. Otherwise, we would need the table to define
-- both Berries = "Berries" and berries = "Berries" which would multiply our
-- work.
-------------------------------------------------------------------------------


-- for returning when REQUIRE'd by other Lua modules.
local BuildingData = {}



-------------------------------------------------------------------------------
-- Constants
-------------------------------------------------------------------------------
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"

local C_BRICK = "Bricks"
local C_FABRI = "Fabric"
local C_PARTS = "Parts"
local C_PIPES = "Pipes"
local C_PLANK = "Planks"



-------------------------------------------------------------------------------
-- Main data table, with string keys and string values.
-- Some of these are defined inline with string.lower to make the key easier
-- to spell and read correctly.
-------------------------------------------------------------------------------

-- a design decision of this table is to make the key the same as the page name.
-- (the lookup methods will automatically make it lowercase.)
-- that way, whenever .page is referenced, it can be used again to retrieve 
-- the rest of the data.
local tableStrStrData = {
	
	---------------------------------------
	-- Buildings
	-- iconfile: string: the filename.png of the icon used in the game, case-sensitive and must include extension. do not include "File:" prefix
	-- page: string: the name of the wiki page, case-sensitive
	-- spec1: constant: the first specialization listed in the in-game encyclopedia (use constants, above)
	-- spec2: constant: the second specialization listed in the in-game encyclopedia (use constants, above)
	-- cost1: constant: the name of the first listed resource cost in the in-game encyclopedia (use constants, above)
	-- cost2: constant: the name of the second listed resource cost in the in-game encyclopedia (use constants, above)
	-- cost3: constant: the name of the third listed resource cost in the in-game encyclopedia (use constants, above)
	-- workers: integer: the number of worker slots
	-- recipe1: string: the resource produced by the first recipe listed in the in-game encyclopedia
	-- grade1: integer: the number of stars for recipe1 (0, 1, 2, or 3)
	-- recipe2: string: if any, the resource produced by the second recipe listed in the in-game encyclopedia
	-- grade2: integer: the number of stars for recipe2 (0, 1, 2, or 3)
	-- recipe3: string: if any, the resource produced by the third recipe listed in the in-game encyclopedia
	-- grade3: integer: the number of stars for recipe3 (0, 1, 2, or 3)
	-- recipe4: string: if any, the resource produced by the fourth recipe listed in the in-game encyclopedia
	-- grade4: integer: the number of stars for recipe4 (0, 1, 2, or 3)
	-- description: string: the in-game description text. you may use wiki markup and templates
	--              like {{2star}} or {{Planks}} or [[Villagers]] to get icons and links
	---------------------------------------
	-- 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"},
	["cellar"] = {iconfile="Cellar_icon.png", page="Cellar"},
	["cookhouse"] = {iconfile="Cookhouse_icon.png", page="Cookhouse"},
	["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"},
	["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"},
	["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 functions
-- 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 tableStrStrData[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",
		["celler"] =  "cellar",
		["cellers"] = "cellar",
		["cellars"] = "cellar",
		["cookhouses"] =  "cookhouse",
		["cook house"] =  "cookhouse",
		["cook houses"] = "cookhouse",
		["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",
		["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",
		["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 when required into another Module.
-------------------------------------------------------------------------------
return BuildingData