From fdad1ec039dec4bff0351c985ce152ba7d4fd567 Mon Sep 17 00:00:00 2001 From: Svornost <11434-svornost@users.noreply.gitgud.io> Date: Sat, 15 May 2021 19:38:28 -0700 Subject: [PATCH] Facilities know whether they can get decorated or not. --- devTools/types/FC/data.d.ts | 1 + src/004-base/facility.js | 25 +++++++++++++------ src/facilities/arcade/arcadeFramework.js | 3 ++- src/facilities/armory/armoryFramework.js | 3 ++- src/facilities/brothel/brothelFramework.js | 3 ++- .../cellblock/cellblockFramework.js | 4 +-- src/facilities/clinic/clinicFramework.js | 3 ++- src/facilities/club/clubFramework.js | 3 ++- src/facilities/dairy/dairyFramework.js | 3 ++- src/facilities/farmyard/farmyardFramework.js | 3 ++- .../headGirlSuite/headGirlSuiteFramework.js | 3 ++- .../incubator/incubatorFramework.js | 3 ++- .../masterSuite/masterSuiteFramework.js | 3 ++- src/facilities/nursery/nurseryFramework.js | 3 ++- .../penthouse/penthouseFramework.js | 3 ++- src/facilities/pit/pitFramework.js | 3 ++- .../schoolroom/schoolroomFramework.js | 3 ++- .../servantsQuartersFramework.js | 3 ++- src/facilities/spa/spaFramework.js | 3 ++- src/futureSocieties/fsDecoration.js | 17 ++----------- src/futureSocieties/futureSociety.js | 15 +++-------- src/npc/agent/agentFramework.js | 3 ++- 22 files changed, 59 insertions(+), 54 deletions(-) diff --git a/devTools/types/FC/data.d.ts b/devTools/types/FC/data.d.ts index 48e6a8e94a6..eee7fbaa16b 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 e2c964b78b2..786753d5c49 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 1aefdf6abbc..4093d972395 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 c2a595acecf..9e8adb220d5 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 1230827d0d5..394381ad87e 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 627cf6d9046..4c3edfa4186 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 23dd472c60d..dbdde301ccf 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 e34db004dfc..19bb8d05833 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 36515b4243a..3c3b1db0d80 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 b79c787e6c8..399caad3194 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 cfc1d1c3e3c..ae9d465fd8b 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 22d9d4bae20..dce45c6cd6c 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 cdcc7d5f28a..83e67a77324 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 daa83f65cee..94597390d5e 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 b7fa25023b6..de971b63f50 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 88c32bb2f2f..9401caf98b6 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 2770017ce38..0c22037161a 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 e908720753a..48a10fbb637 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 02d9f7f0e8f..95012872750 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 e55d8887e3c..9547267c3e3 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 a170f1a7a5d..be020a5b198 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 e2511101340..4b40cc95255 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 { -- GitLab