diff --git a/BrothelSource/brothel.blend b/BrothelSource/brothel.blend index 4d61107..08e2f97 100644 Binary files a/BrothelSource/brothel.blend and b/BrothelSource/brothel.blend differ diff --git a/BrothelSystem/mod.lua b/BrothelSystem/mod.lua index 59d3bce..375fd7b 100644 --- a/BrothelSystem/mod.lua +++ b/BrothelSystem/mod.lua @@ -1,47 +1,26 @@ local BrothelSystemMod = foundation.createMod(); -BrothelSystemMod:registerAssetId("models/brothel.fbx/Prefab/Brothel", "PREFAB_BROTHEL") + + +-- Monuments (brothel) +BrothelSystemMod:dofile("scripts/brothel/monument.lua") -- Jobs BrothelSystemMod:dofile("scripts/jobs.lua") -BrothelSystemMod:register({ - DataType = "BUILDING", - Id = "BROTHEL", - Name = "BROTHEL_NAME", - Description = "BROTHEL_DESC", - BuildingType = "GENERAL", - BuildingPartSetList = { - { - Name = "BROTHEL_NAME", - BuildingPartList = { "BROTHEL" } - } - } -}) -BrothelSystemMod:register({ - DataType = "BUILDING_PART", - Id = "BROTHEL", - Name = "BROTHEL_NAME", - Description = "BROTHEL_DESC", - Category = "GENERAL", - ConstructorData = { - DataType = "BUILDING_CONSTRUCTOR_DEFAULT", - CoreObjectPrefab = "PREFAB_BROTHEL" - } -}) - Override default Labour estate +-- Override default Labour estate BrothelSystemMod:override({ Id = "LABOUR", EstateProgressList = { -- Add a new estate progress tier Action = "APPEND", { DataType = "ESTATE_PROGRESS_TIER", - SplendorRequired = 10, - VillagerStatusRequired = { Status = "SERF", Quantity = 20 }, + SplendorRequired = 0, + VillagerStatusRequired = { Status = "SERF", Quantity = 0 }, UpgradeList = { - "UNLOCKABLE_MITHRIL_FACTORY" + "UNLOCKABLE_BROTHEL" } } } diff --git a/BrothelSystem/models/brothel.fbx b/BrothelSystem/models/brothel.fbx index 7eac42a..50139d1 100644 Binary files a/BrothelSystem/models/brothel.fbx and b/BrothelSystem/models/brothel.fbx differ diff --git a/BrothelSystem/models/brothel.fbx.meta b/BrothelSystem/models/brothel.fbx.meta index 3564c89..d24f4f0 100644 --- a/BrothelSystem/models/brothel.fbx.meta +++ b/BrothelSystem/models/brothel.fbx.meta @@ -1,36 +1,858 @@ - - - - - - - + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -51,38 +873,2303 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -90,28 +3177,20 @@ - - + + - - + + - - + + - - - - - - - - - - + + diff --git a/BrothelSystem/models/brothelSource.fbx b/BrothelSystem/models/brothelSource.fbx new file mode 100644 index 0000000..7eac42a Binary files /dev/null and b/BrothelSystem/models/brothelSource.fbx differ diff --git a/BrothelSystem/models/brothelSource.fbx.meta b/BrothelSystem/models/brothelSource.fbx.meta new file mode 100644 index 0000000..23c015f --- /dev/null +++ b/BrothelSystem/models/brothelSource.fbx.meta @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/BrothelSystem/scripts/brothel/building_parts.lua b/BrothelSystem/scripts/brothel/building_parts.lua new file mode 100644 index 0000000..d3c854d --- /dev/null +++ b/BrothelSystem/scripts/brothel/building_parts.lua @@ -0,0 +1,106 @@ +local BrothelSystemMod = ... + + +------------------------------BROTHEL--------------------------------- + +-- Register core prefab nodes +BrothelSystemMod:registerAssetId("models/brothel.fbx/Prefab/Brothel/Core/RootPart", "BROTHEL_CORE_ROOT_PREFAB") +BrothelSystemMod:registerAssetId("models/brothel.fbx/Prefab/Brothel/Core/TopPart", "BROTHEL_CORE_TOP_PREFAB") +BrothelSystemMod:registerAssetId("models/brothel.fbx/Prefab/Brothel/Core/Tiling1Part", "BROTHEL_CORE_TILING1_PREFAB") +BrothelSystemMod:registerAssetId("models/brothel.fbx/Prefab/Brothel/Core/Tiling2Part", "BROTHEL_CORE_TILING2_PREFAB") +BrothelSystemMod:registerAssetId("models/brothel.fbx/Prefab/Brothel/Core/Tiling3Part", "BROTHEL_CORE_TILING3_PREFAB") + +-- Register door prefab nodes +BrothelSystemMod:registerAssetId("models/brothel.fbx/Prefab/Brothel/DoorAPart", "BROTHEL_DOOR_A_PREFAB") + +-------------------------------------------------------------------------- + +-- Create default building part registering function +function registerDefaultBuildingPart(_nodePrefix) + BrothelSystemMod:register({ + DataType = "BUILDING_PART", + Id = _nodePrefix .. "_PART", + Mover = { DataType = "BUILDING_PART_MOVER" }, + ConstructorData = { DataType = "BUILDING_CONSTRUCTOR_DEFAULT", CoreObjectPrefab = _nodePrefix .. "_PREFAB" } + }) +end + +local defaultNodePrefixList = { + "BROTHEL_CORE_TOP", + "BROTHEL_CORE_TILING1", + "BROTHEL_CORE_TILING2", + "BROTHEL_CORE_TILING3" +} + +-- Register simple building part assets +for i, nodePrefix in ipairs(defaultNodePrefixList) do + registerDefaultBuildingPart(nodePrefix) +end + +-------------------------------------------------------------------------- + +BrothelSystemMod:register({ + DataType = "BUILDING_FUNCTION_WORKPLACE", + Id = "BROTHEL_CORE_FUNCTION", + WorkerCapacity = 4, + RelatedJob = { Job = "TRANSPORTER", Behavior = "WORK_BEHAVIOR" }, + ResourceProduced = { -- Necessarily a list of 'RESOURCE_QUANTITY_PAIR', no need to specify the DataType + { Resource = "BARREL", Quantity = 5 } + } +}) + +-- Register the brothel core part +BrothelSystemMod:register({ + DataType = "BUILDING_PART", + Id = "BROTHEL", + Name = "BROTHEL_NAME", + Description = "BROTHEL_DESC", + Category = "CORE", + Mover = { DataType = "BUILDING_PART_MOVER_INSTANCE" }, + ConstructorData = { + DataType = "BUILDING_CONSTRUCTOR_SCALER", -- Since there are different types of building constructor, 'DataType' is necessary here + CoreObjectPrefab = "BROTHEL_CORE_ROOT_PREFAB", + EndPart = "BROTHEL_CORE_TOP_PART", + FillerList = { + "BROTHEL_CORE_TILING1_PART", + "BROTHEL_CORE_TILING2_PART", + "BROTHEL_CORE_TILING3_PART" + }, + BasementFillerList = { + "BROTHEL_CORE_TILING1_PART", + "BROTHEL_CORE_TILING2_PART", + "BROTHEL_CORE_TILING3_PART" + }, + }, + BuildingFunction = "BROTHEL_CORE_FUNCTION", + Cost = { + UpkeepCost = { -- List of RESOURCE_QUANTITY_PAIR + { Resource = "GOLD", Quantity = 3 } + }, + RessourcesNeeded = { -- List of RESOURCE_QUANTITY_PAIR + { Resource = "WOOD", Quantity = 30 }, + { Resource = "STONE", Quantity = 20 } + } + } +}) + +-- Register the brothel door A part +BrothelSystemMod:register({ + DataType = "BUILDING_PART", + Id = "BROTHEL_DOOR_A_PART", + Name = "BROTHEL_DOOR_A_NAME", + Description = "BROTHEL_DOOR_A_DESC", + Category = "DOOR", + Mover = { DataType = "BUILDING_PART_MOVER_INSTANCE" }, + ConstructorData = { + DataType = "BUILDING_CONSTRUCTOR_DEFAULT", + CoreObjectPrefab = "BROTHEL_DOOR_A_PREFAB" + }, + Cost = { + RessourcesNeeded = { -- List of RESOURCE_QUANTITY_PAIR + { Resource = "WOOD", Quantity = 5 } + } + } +}) + + diff --git a/BrothelSystem/scripts/brothel/monument.lua b/BrothelSystem/scripts/brothel/monument.lua new file mode 100644 index 0000000..1dc3f13 --- /dev/null +++ b/BrothelSystem/scripts/brothel/monument.lua @@ -0,0 +1,56 @@ +local BrothelSystemMod = ... + +--------------------- + +-- Apply building asset processor +BrothelSystemMod:registerAssetProcessor("models/brothel.fbx", { + DataType = "BUILDING_ASSET_PROCESSOR" +}) + +-- Register all mithril factory building parts and their properties +BrothelSystemMod:dofile("scripts/brothel/building_parts.lua") + + +-- Register the brothel monument +BrothelSystemMod:register({ + DataType = "MONUMENT", + Id = "BROTHEL", + Name = "BROTHEL_NAME", + Description = "BROTHEL_DESC", + BuildingType = BUILDING_TYPE.MONUMENT, + BuildingPartSetList = { + { + Name = "BROTHEL_CORE", + BuildingPartList = { "BROTHEL" } + }, + { + Name = "ENTRANCE", + BuildingPartList = { + "BROTHEL_DOOR_A_PART" + } + } + }, + RequiredPartList = { + -- Necessarily a list of 'MONUMENT_REQUIRED_PART_PAIR', no need to specify the DataType of each element of the list + { Category = "CORE", Quantity = 1 }, + { Category = "DOOR", Quantity = 1 } + }, + IsManuallyUnlocked = true, + IsDestructible = true, + IsEditable = true, + IsClearTrees = true +}) + +BrothelSystemMod:register({ + DataType = "UNLOCKABLE_BUILDING", + Id = "UNLOCKABLE_BROTHEL", + Name = "UNLOCKABLE_BROTHEL_NAME", + Description = "UNLOCKABLE_BROTHEL_DESC", + EstateInfluenceCostList = { + { Estate = "LABOUR", Quantity = 0 } + }, + RelatedProp = "BROTHEL" +}) + +------------- LIMIT ------ +