diff --git a/devTools/types/FC/data.d.ts b/devTools/types/FC/data.d.ts index 48e6a8e94a673b25ced0e5a153d3eb5d24006772..eee7fbaa16b826501ad409826b823341c80dd7fb 100644 --- a/devTools/types/FC/data.d.ts +++ b/devTools/types/FC/data.d.ts @@ -60,6 +60,7 @@ declare namespace FC { jobs: Record<string, JobDesc>; defaultJob: string; manager: ManagerJobDesc | null; + decorated: boolean; } namespace SlaveSummary { diff --git a/src/004-base/facility.js b/src/004-base/facility.js index e2c964b78b266485d9de4ced1e28891ab4ce401a..786753d5c498e9f05b92ca5fa896d4dc281b3fcf 100644 --- a/src/004-base/facility.js +++ b/src/004-base/facility.js @@ -11,6 +11,7 @@ App.Data.FacilityDesc = class { this.defaultJob = ""; /** @type {FC.Data.ManagerJobDesc} */ this.manager = null; + this.decorated = false; } }; @@ -384,23 +385,31 @@ App.Entity.Facilities.Facility = class { return this.option("Upgrade" + name); } - /** - * How is this facility currently decorated? + /** Can this facility be decorated? */ + get isDecorated() { + return this.desc.decorated; + } + + /** How is this facility currently decorated? * @returns {FC.FutureSocietyDeco} */ get decoration() { + if (!this.isDecorated) { + return "standard"; + } return (typeof V[this.desc.baseName] === "object") ? V[this.desc.baseName].decoration : V[this.desc.baseName + "Decoration"]; } - /** - * Configure facility decoration + /** Configure facility decoration * @param {FC.FutureSocietyDeco} val */ set decoration(val) { - if (typeof V[this.desc.baseName] === "object") { - V[this.desc.baseName].decoration = val; - } else { - V[this.desc.baseName + "Decoration"] = val; + if (this.isDecorated) { + if (typeof V[this.desc.baseName] === "object") { + V[this.desc.baseName].decoration = val; + } else { + V[this.desc.baseName + "Decoration"] = val; + } } } diff --git a/src/facilities/arcade/arcadeFramework.js b/src/facilities/arcade/arcadeFramework.js index 1aefdf6abbc4cb49c2f70ef11627d932c80300c5..4093d972395e50c7181ea436ee24ac4f157c2aff 100644 --- a/src/facilities/arcade/arcadeFramework.js +++ b/src/facilities/arcade/arcadeFramework.js @@ -10,7 +10,8 @@ App.Data.Facilities.arcade = { }, }, defaultJob: "assignee", - manager: null + manager: null, + decorated: true }; App.Entity.Facilities.ArcadeJob = class extends App.Entity.Facilities.FacilitySingleJob { diff --git a/src/facilities/armory/armoryFramework.js b/src/facilities/armory/armoryFramework.js index c2a595acecf80bdf0230b4a64636faa1bc82ca73..9e8adb220d52853e8477d91232ba6396217dc7d1 100644 --- a/src/facilities/armory/armoryFramework.js +++ b/src/facilities/armory/armoryFramework.js @@ -19,7 +19,8 @@ App.Data.Facilities.armory = { shouldTalk: false, shouldThink: true, requiredDevotion: 51 - } + }, + decorated: false }; App.Entity.facilities.armory = new App.Entity.Facilities.Facility(App.Data.Facilities.armory); diff --git a/src/facilities/brothel/brothelFramework.js b/src/facilities/brothel/brothelFramework.js index 1230827d0d541a6de0c078b0056317913dcb87b1..394381ad87e8e52292525ef29efdf12c8f9d8d26 100644 --- a/src/facilities/brothel/brothelFramework.js +++ b/src/facilities/brothel/brothelFramework.js @@ -25,7 +25,8 @@ App.Data.Facilities.brothel = { shouldTalk: true, shouldThink: true, requiredDevotion: 50 - } + }, + decorated: true }; App.Entity.Facilities.BrothelJob = class extends App.Entity.Facilities.FacilitySingleJob { diff --git a/src/facilities/cellblock/cellblockFramework.js b/src/facilities/cellblock/cellblockFramework.js index 627cf6d90468e0587ff5d3d963e1f954b8109952..4c3edfa4186f730e4eadb2aad9138fd7092d669f 100644 --- a/src/facilities/cellblock/cellblockFramework.js +++ b/src/facilities/cellblock/cellblockFramework.js @@ -25,8 +25,8 @@ App.Data.Facilities.cellblock = { shouldTalk: false, shouldThink: false, requiredDevotion: 51 - - } + }, + decorated: false }; App.Entity.Facilities.CellblockJob = class extends App.Entity.Facilities.FacilitySingleJob { diff --git a/src/facilities/clinic/clinicFramework.js b/src/facilities/clinic/clinicFramework.js index 23dd472c60def174c852bae283bbe3f97835d0db..dbdde301ccfaae7ce7f3ad2f810862a83a48e022 100644 --- a/src/facilities/clinic/clinicFramework.js +++ b/src/facilities/clinic/clinicFramework.js @@ -25,7 +25,8 @@ App.Data.Facilities.clinic = { shouldTalk: false, shouldThink: true, requiredDevotion: 51 - } + }, + decorated: true }; App.Entity.Facilities.ClinicPatientJob = class extends App.Entity.Facilities.FacilitySingleJob { diff --git a/src/facilities/club/clubFramework.js b/src/facilities/club/clubFramework.js index e34db004dfcebbd2ca273ba0be575a48ed1fb8f8..19bb8d05833876586882ba767e0f60968580b8a6 100644 --- a/src/facilities/club/clubFramework.js +++ b/src/facilities/club/clubFramework.js @@ -25,7 +25,8 @@ App.Data.Facilities.club = { shouldTalk: true, shouldThink: true, requiredDevotion: 51 - } + }, + decorated: true }; App.Entity.Facilities.ClubSlutJob = class extends App.Entity.Facilities.FacilitySingleJob { diff --git a/src/facilities/dairy/dairyFramework.js b/src/facilities/dairy/dairyFramework.js index 36515b4243a65a91a71839a295f421b29e24bb6c..3c3b1db0d8054ae929590e721fe46151f87aa6c8 100644 --- a/src/facilities/dairy/dairyFramework.js +++ b/src/facilities/dairy/dairyFramework.js @@ -25,7 +25,8 @@ App.Data.Facilities.dairy = { shouldTalk: false, shouldThink: true, requiredDevotion: 21 - } + }, + decorated: true }; App.Entity.Facilities.DairyCowJob = class extends App.Entity.Facilities.FacilitySingleJob { diff --git a/src/facilities/farmyard/farmyardFramework.js b/src/facilities/farmyard/farmyardFramework.js index b79c787e6c8c1c5e224dbe567e50bc4b5ec5d4c1..399caad3194f222d414b4d7d0866f8bc75f9375a 100644 --- a/src/facilities/farmyard/farmyardFramework.js +++ b/src/facilities/farmyard/farmyardFramework.js @@ -25,7 +25,8 @@ App.Data.Facilities.farmyard = { shouldTalk: false, shouldThink: true, requiredDevotion: 51 - } + }, + decorated: true }; App.Entity.Facilities.FarmHandJob = class extends App.Entity.Facilities.FacilitySingleJob { diff --git a/src/facilities/headGirlSuite/headGirlSuiteFramework.js b/src/facilities/headGirlSuite/headGirlSuiteFramework.js index cfc1d1c3e3c05660d37be15d75ccac12c44abe74..ae9d465fd8b0f4adcd058cbb7f45e03c076500d2 100644 --- a/src/facilities/headGirlSuite/headGirlSuiteFramework.js +++ b/src/facilities/headGirlSuite/headGirlSuiteFramework.js @@ -25,7 +25,8 @@ App.Data.Facilities.headGirlSuite = { shouldTalk: true, shouldThink: true, requiredDevotion: 51 - } + }, + decorated: false }; App.Entity.Facilities.HeadGirlSuite = class extends App.Entity.Facilities.SingleJobFacility { diff --git a/src/facilities/incubator/incubatorFramework.js b/src/facilities/incubator/incubatorFramework.js index 22d9d4bae2006f146dd16321fd9f202ea6aa6669..dce45c6cd6c235338f01d2d59d97953f0ded7dcb 100644 --- a/src/facilities/incubator/incubatorFramework.js +++ b/src/facilities/incubator/incubatorFramework.js @@ -10,7 +10,8 @@ App.Data.Facilities.incubator = { } }, defaultJob: "tank", - manager: null + manager: null, + decorated: false }; App.Entity.Facilities.IncubatorTankJob = class extends App.Entity.Facilities.Job { diff --git a/src/facilities/masterSuite/masterSuiteFramework.js b/src/facilities/masterSuite/masterSuiteFramework.js index cdcc7d5f28a3333deb02e45c2f636ded2d546429..83e67a773242e968831fc29ed8c173bd852b533e 100644 --- a/src/facilities/masterSuite/masterSuiteFramework.js +++ b/src/facilities/masterSuite/masterSuiteFramework.js @@ -26,7 +26,8 @@ App.Data.Facilities.masterSuite = { shouldTalk: false, shouldThink: false, requiredDevotion: 51 - } + }, + decorated: true }; App.Entity.Facilities.MasterSuiteFuckToyJob = class extends App.Entity.Facilities.FacilitySingleJob { diff --git a/src/facilities/nursery/nurseryFramework.js b/src/facilities/nursery/nurseryFramework.js index daa83f65ceeb4065faef20f304a1e19b84844514..94597390d5e89097835c89ea7548d6fcbb570ac2 100644 --- a/src/facilities/nursery/nurseryFramework.js +++ b/src/facilities/nursery/nurseryFramework.js @@ -25,7 +25,8 @@ App.Data.Facilities.nursery = { shouldTalk: true, shouldThink: true, requiredDevotion: 51 - } + }, + decorated: true }; App.Entity.Facilities.NurseryNannyJob = class extends App.Entity.Facilities.FacilitySingleJob { diff --git a/src/facilities/penthouse/penthouseFramework.js b/src/facilities/penthouse/penthouseFramework.js index b7fa25023b6df5cad44b3e2a6d57d542319290f7..de971b63f50cb9e1eaa743077cec05aaf0c481ae 100644 --- a/src/facilities/penthouse/penthouseFramework.js +++ b/src/facilities/penthouse/penthouseFramework.js @@ -85,7 +85,8 @@ App.Data.Facilities.penthouse = { shouldTalk: true, shouldThink: true, requiredDevotion: 51 - } + }, + decorated: false }; App.Entity.Facilities.PenthouseJobs = { diff --git a/src/facilities/pit/pitFramework.js b/src/facilities/pit/pitFramework.js index 88c32bb2f2f30e36a1988674701b6e0ca07fd647..9401caf98b6190bcd06014cbbe54350956456467 100644 --- a/src/facilities/pit/pitFramework.js +++ b/src/facilities/pit/pitFramework.js @@ -11,7 +11,8 @@ App.Data.Facilities.pit = { } }, defaultJob: "fighter", - manager: null + manager: null, + decorated: false }; App.Entity.Facilities.PitFighterJob = class extends App.Entity.Facilities.FacilitySingleJob { diff --git a/src/facilities/schoolroom/schoolroomFramework.js b/src/facilities/schoolroom/schoolroomFramework.js index 2770017ce38892cba7f962c7c118b51b94a345cd..0c22037161a18f55bd44bea535b338322133af54 100644 --- a/src/facilities/schoolroom/schoolroomFramework.js +++ b/src/facilities/schoolroom/schoolroomFramework.js @@ -25,7 +25,8 @@ App.Data.Facilities.schoolroom = { shouldTalk: true, shouldThink: true, requiredDevotion: 51 - } + }, + decorated: true }; App.Entity.Facilities.SchoolroomStudentJob = class extends App.Entity.Facilities.FacilitySingleJob { diff --git a/src/facilities/servantsQuarters/servantsQuartersFramework.js b/src/facilities/servantsQuarters/servantsQuartersFramework.js index e908720753a47c470b97dd722a3e1bee70473b33..48a10fbb637c1ea7cb5dd3ff5306cc5618fabbc0 100644 --- a/src/facilities/servantsQuarters/servantsQuartersFramework.js +++ b/src/facilities/servantsQuarters/servantsQuartersFramework.js @@ -25,7 +25,8 @@ App.Data.Facilities.servantsQuarters = { shouldTalk: true, shouldThink: true, requiredDevotion: 51 - } + }, + decorated: true }; App.Entity.Facilities.ServantsQuartersServantJob = class extends App.Entity.Facilities.FacilitySingleJob { diff --git a/src/facilities/spa/spaFramework.js b/src/facilities/spa/spaFramework.js index 02d9f7f0e8f410739a3cc5c44c033bd16a1d9ee0..95012872750b1a9f1bd59dcdcf13595504f43099 100644 --- a/src/facilities/spa/spaFramework.js +++ b/src/facilities/spa/spaFramework.js @@ -25,7 +25,8 @@ App.Data.Facilities.spa = { shouldTalk: false, shouldThink: true, requiredDevotion: 51 - } + }, + decorated: true }; App.Entity.Facilities.SpaAssigneeJob = class extends App.Entity.Facilities.FacilitySingleJob { diff --git a/src/futureSocieties/fsDecoration.js b/src/futureSocieties/fsDecoration.js index e55d8887e3cc72fe0057768c2ce798463f60f247..9547267c3e33721f2da7da5748a372369fb4455f 100644 --- a/src/futureSocieties/fsDecoration.js +++ b/src/futureSocieties/fsDecoration.js @@ -11,20 +11,7 @@ App.UI.facilityRedecoration = function() { const applicableFS = FutureSocieties.activeFSes(arc).filter(name => (arc[name] > 20)); const decorationNames = Array.from(applicableFS, FS => FutureSocieties.decorationName(FS)).filter(Boolean); - const activeFacilities = [ - App.Entity.facilities.brothel, - App.Entity.facilities.club, - App.Entity.facilities.dairy, - App.Entity.facilities.farmyard, - App.Entity.facilities.spa, - App.Entity.facilities.nursery, - App.Entity.facilities.clinic, - App.Entity.facilities.schoolroom, - App.Entity.facilities.cellblock, - App.Entity.facilities.servantsQuarters, - App.Entity.facilities.arcade, - App.Entity.facilities.masterSuite - ].filter(f => f.established); + const activeFacilities = Object.values(App.Entity.facilities).filter(f => f.isDecorated && f.established); // dummy variable to make sure the first option is selected by default const currentSelected = {value: "none"}; @@ -64,7 +51,7 @@ App.UI.facilityRedecoration = function() { }).pulldown(); for (const facility of activeFacilities) { - options.addOption(`The decoration style of ${facility.nameCaps} is`, "decoration", facility) + options.addOption(`The decoration style of ${facility.name} is`, "decoration", facility) .addValue("Standard", "standard") .addValueList(decorationNames) .addCallbackToEach(value => { diff --git a/src/futureSocieties/futureSociety.js b/src/futureSocieties/futureSociety.js index a170f1a7a5d4a14c9e69e067bdb90deed1aecb28..be020a5b19869e7ea5ce2a0a4e1f55e4e762ad51 100644 --- a/src/futureSocieties/futureSociety.js +++ b/src/futureSocieties/futureSociety.js @@ -406,18 +406,9 @@ globalThis.FutureSocieties = (function() { /* call as FutureSocieties.DecorationCleanup() */ function DecorationCleanup() { - ValidateFacilityDecoration(App.Entity.facilities.brothel); - ValidateFacilityDecoration(App.Entity.facilities.dairy); - ValidateFacilityDecoration(App.Entity.facilities.club); - ValidateFacilityDecoration(App.Entity.facilities.servantsQuarters); - ValidateFacilityDecoration(App.Entity.facilities.schoolroom); - ValidateFacilityDecoration(App.Entity.facilities.spa); - ValidateFacilityDecoration(App.Entity.facilities.clinic); - ValidateFacilityDecoration(App.Entity.facilities.arcade); - ValidateFacilityDecoration(App.Entity.facilities.cellblock); - ValidateFacilityDecoration(App.Entity.facilities.masterSuite); - ValidateFacilityDecoration(App.Entity.facilities.nursery); - ValidateFacilityDecoration(App.Entity.facilities.farmyard); + for (const facility of Object.values(App.Entity.facilities).filter(f => f.isDecorated)) { + ValidateFacilityDecoration(facility); + } } /** helper function, not callable externally diff --git a/src/npc/agent/agentFramework.js b/src/npc/agent/agentFramework.js index e2511101340aee998a0bd067c51b8dfca4e6c116..4b40cc952555dcbd4041e62255515242ba475b52 100644 --- a/src/npc/agent/agentFramework.js +++ b/src/npc/agent/agentFramework.js @@ -25,7 +25,8 @@ App.Data.Facilities.arcologyAgent = { shouldTalk: true, shouldThink: true, requiredDevotion: 21 - } + }, + decorated: false }; App.Entity.Facilities.AgentJob = class extends App.Entity.Facilities.ManagingJob {