====== Options for Workplaces ====== ===== Basics ===== This is an example of a simple workplace ''MY_BUILDING'' with a worker of job ''MY_BUILDING_JOB'' producing ''MY_BUILDING_OUTPUT_RESOURCE'' from ''MY_BUILDING_INPUT_RESOURCE'': myMod:register({ DataType = "BUILDING_PART", Id = "MY_BUILDING_PART", Mover = { DataType = "BUILDING_PART_MOVER_INSTANCE" }, ConstructorData = { DataType = "BUILDING_CONSTRUCTOR_DEFAULT", CoreObjectPrefab = "MY_BUILDING_PREFAB" }, AssetBuildingFunction = "MY_BUILDING_FUNCTION" }) myMod:register({ DataType = "BUILDING_FUNCTION_WORKPLACE", Id = "MY_BUILDING_FUNCTION", WorkerCapacity = 1, RelatedJob = { Job = "MY_BUILDING_JOB", Behavior = "WORK_BEHAVIOR" }, InputInventoryCapacity = { { Resource = "MY_BUILDING_INPUT_RESOURCE", Quantity = 10 } }, ResourceListNeeded = { { Resource = "MY_BUILDING_INPUT_RESOURCE", Quantity = 1 } }, ResourceProduced = { { Resource = "MY_BUILDING_OUTPUT_RESOURCE", Quantity = 1 } } }) ===== Same building for producing and selling ===== This is an example of a simple workplace ''MY_BUILDING'' with a worker of job ''MY_BUILDING_JOB'' producing and selling ''MY_BUILDING_OUTPUT_RESOURCE'' of type ''MY_RESOURCE_TYPE'' (see [[api:resource_type|RESOURCE_TYPE]]) from ''MY_BUILDING_INPUT_RESOURCE'': myMod:register({ DataType = "BUILDING_PART", Id = "MY_BUILDING_PART", Mover = { DataType = "BUILDING_PART_MOVER_INSTANCE" }, ConstructorData = { DataType = "BUILDING_CONSTRUCTOR_DEFAULT", CoreObjectPrefab = "MY_BUILDING_PREFAB" }, AssetBuildingFunction = "MY_BUILDING_FUNCTION" }) myMod:register({ DataType = "BUILDING_FUNCTION_MARKET", Id = "MY_BUILDING_FUNCTION", TypeList = { "MY_RESOURCE_TYPE" }, WorkerCapacity = 1, RelatedJob = { Job = "MY_BUILDING_JOB", Behavior = "WORK_BEHAVIOR" }, InputInventoryCapacity = { { Resource = "MY_BUILDING_INPUT_RESOURCE", Quantity = 10 } }, ResourceListNeeded = { { Resource = "MY_BUILDING_INPUT_RESOURCE", Quantity = 1 } }, ResourceProduced = { { Resource = "MY_BUILDING_OUTPUT_RESOURCE", Quantity = 1 } } }) ===== Workplace with several recipes ===== Workplace with 2 recipes: 1) produces ''MY_BUILDING_OUTPUT_RESOURCE_1'' from ''MY_BUILDING_INPUT_RESOURCE_1'', 2) produces ''MY_BUILDING_OUTPUT_RESOURCE_2'' from ''MY_BUILDING_INPUT_RESOURCE_2'': myMod:register({ DataType = "BUILDING_PART", Id = "MY_BUILDING_PART", Mover = { DataType = "BUILDING_PART_MOVER_INSTANCE" }, ConstructorData = { DataType = "BUILDING_CONSTRUCTOR_DEFAULT", CoreObjectPrefab = "MY_BUILDING_PREFAB" }, AssetBuildingFunction = "MY_BUILDING_FUNCTION_ASSIGNABLE" }) myMod:register({ DataType = "BUILDING_FUNCTION_ASSIGNABLE", Id = "MY_BUILDING_FUNCTION_ASSIGNABLE", AuthorizedFunctionList = "MY_BUILDING_FUNCTION_LIST" }) myMod:register({ DataType = "BUILDING_FUNCTION_LIST", Id = "MY_BUILDING_FUNCTION_LIST", AssetFunctionList = { "MY_BUILDING_RECIPE_1_FUNCTION", "MY_BUILDING_RECIPE_2_FUNCTION" } }) myMod:register({ DataType = "BUILDING_FUNCTION_WORKPLACE", Id = "MY_BUILDING_RECIPE_1_FUNCTION", IsOverrideCapacity = true, CapacityPerSlot = 50, WorkerCapacity = 1, RelatedJob = { Job = "MY_BUILDING_JOB_1", Behavior = "WORK_BEHAVIOR" }, InputInventoryCapacity = { { Resource = "MY_BUILDING_INPUT_RESOURCE_1", Quantity = 50 } }, ResourceListNeeded = { { Resource = "MY_BUILDING_INPUT_RESOURCE_1", Quantity = 1 } }, ResourceProduced = { { Resource = "MY_BUILDING_OUTPUT_RESOURCE_1", Quantity = 1 } } }) myMod:register({ DataType = "BUILDING_FUNCTION_WORKPLACE", Id = "MY_BUILDING_RECIPE_2_FUNCTION", IsOverrideCapacity = true, CapacityPerSlot = 20, WorkerCapacity = 1, RelatedJob = { Job = "MY_BUILDING_JOB_2", Behavior = "WORK_BEHAVIOR" }, InputInventoryCapacity = { { Resource = "MY_BUILDING_INPUT_RESOURCE_2", Quantity = 20 } }, ResourceListNeeded = { { Resource = "MY_BUILDING_INPUT_RESOURCE_2", Quantity = 1 } }, ResourceProduced = { { Resource = "MY_BUILDING_OUTPUT_RESOURCE_2", Quantity = 1 } } }) Note: The IsOverrideCapacity is mandatory to have different CapacityPerSlot per recipe. ===== Several workplaces per building ===== The only way I found is to have a monument with different buildingParts, each one having its own workplace. ===== Custom soldier's keep ===== Waiting for the next game upgrade.