diff --git a/src/002-config/fc-js-init.js b/src/002-config/fc-js-init.js index e5d890dc402ac75a2223a58ac19e80e1f972384d..8b8a2bec36ccca9bb2a7a4a1a85b21341728e799 100644 --- a/src/002-config/fc-js-init.js +++ b/src/002-config/fc-js-init.js @@ -9,5 +9,6 @@ var App = window.App || {}; App.Debug = {}; App.Entity = {}; +App.Entity.Utils = {}; App.UI = {}; App.Utils = {}; diff --git a/src/js/datatypeCleanupJS.js b/src/js/datatypeCleanupJS.js index 47fbacfcd0173d11a1f0cb87639248be00bd6c58..2608876e7c936177d7b32f55d7136ea364319833 100644 --- a/src/js/datatypeCleanupJS.js +++ b/src/js/datatypeCleanupJS.js @@ -1,4 +1,21 @@ /* eslint-disable no-undef */ +/** + * Applies data scheme updates to the slave object + * + * This function only handles data scheme changes (attribute renaming, other reorganzations) + * and in general pays no attention to the property values unless they need to be changed due + * to the schema change. + */ +App.Entity.Utils.SlaveDataSchemeCleanup = (function () { + "use strict"; + return SlaveDataSchemeCleanup; + + /** @param {App.Entity.SlaveState} slave */ + function SlaveDataSchemeCleanup(slave) { // eslint-disable-line no-unused-vars + + } +})(); + /* This function does not ensure values make sense. For example, it does not fix weird relations/relationships/rivalries/pregnancies/prosthetics. It only makes sure most datatypes are correct, and sets to default if not. Number values are clamped to the correct bounds. @@ -1662,3 +1679,69 @@ window.FacilityDatatypeCleanup = (function() { } } })(); + + +/** + * Cleans up a slave record assuming it is used for the gene pool. + * + * It removes all the unneded for the gene pool attributes. + * @todo remove after refactoring the slave state class + */ +App.Entity.Utils.GenePoolRecordCleanup = (function () { + "use strict"; + return GenePoolRecordCleanup; + + /** @param {App.Entity.SlaveState} slave */ + function GenePoolRecordCleanup(slave) { + App.Entity.Utils.SlaveDataSchemeCleanup(slave); + + // the following attributes are unneeded for gene pool records + [ + "counters", "custom", "porn", + "prestige", "pornFeed", "pornFame", "pornFameSpending", "pornPrestige", "pornPrestigeDesc", "prestigeDesc", + "recruiter", "relation", "relationTarget", "subTarget", "relationship", "relationshipTarget", "rivalry", "rivalryTarget", + "pronoun", "possessive", "possessivePronoun", "objectReflexive", "object", "noun", + "weekAcquired", "HGExclude", + "daughters", "origin", + "canRecruit", + "choosesOwnAssignment", "assignment", "assignmentVisible", + "sentence", "training", "toyHole", + "indenture", "indentureRestrictions", + "minorInjury", + "oldTrust", "oldDevotion", + "eyewear", "earwear", + "preg", "pregSource", "pregType", "pregAdaptation", "labor", + "bellyAccessory", + "clitSetting", + "livingRules", "speechRules", "releaseRules", "relationshipRules", "lactationRules", + "standardPunishment", "standardReward", + "useRulesAssistant", + "diet", "dietCum", "dietMilk", + "tired", + "drugs", "curatives", "aphrodisiacs", + "choosesOwnClothes", "clothes", "collar", "shoes", + "makeup", "nails", + "vaginalAccessory", "dickAccessory", "legAccessory", + "buttplug", "buttplugAttachment", + "fetishKnown", + "rudeTitle", + "currentRules", + "induce", + "mpreg", + "inflation", "inflationType", "inflationMethod", "milkSource", "cumSource", + "burst", + "pregKnown", "pregWeek", + "belly", "bellyPreg", "bellyFluid", "bellyImplant", "bellySag", "bellySagPreg", "bellyPain", + "cervixImplant", + "birthsTotal", + "scars", + "choosesOwnChastity", + "pregControl", + "readyLimbs", + "death", + "onDiet", + "prematureBirth", + "slaveCost" + ].forEach((s) => delete slave[s]); + } +})(); diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw index f109f21dcacaac44fee2dd98694713b229de5152..08b55c84b27cfcf8e981f56a9e0c406129f3870f 100644 --- a/src/uncategorized/BackwardsCompatibility.tw +++ b/src/uncategorized/BackwardsCompatibility.tw @@ -3338,15 +3338,46 @@ Setting missing slave variables: <</if>> <</if>> -<<run SlaveDatatypeCleanup(_Slave)>> +<<set $slaves[_bci] = _Slave>> +<</for>> -<<set _leaderIdx = $leaders.findIndex(function(s) { return s.ID === _Slave.ID; })>> -<<if _leaderIdx !== -1>> - <<set $leaders[_leaderIdx] = _Slave>> +<br> Checking and fixing slave records... +<<for _Slave range $slaves>> + <<run App.Entity.Utils.SlaveDataSchemeCleanup(_Slave)>> + <<run SlaveDatatypeCleanup(_Slave)>> + <<set _leaderIdx = $leaders.findIndex(function(s) { return s.ID === _Slave.ID; })>> + <<if _leaderIdx !== -1>> + <<set $leaders[_leaderIdx] = _Slave>> + <</if>> +<</for>> +Done<br> + +<<if $tanks.length > 0>> + Checking and fixing records for incubator tanks... + <<for _Slave range $tanks>> + <<run App.Entity.Utils.SlaveDataSchemeCleanup(_Slave)>> + <<run SlaveDatatypeCleanup(_Slave)>> + <</for>> + Done<br> <</if>> -<<set $slaves[_bci] = _Slave>> -<</for>> +<<if $cribs.length > 0>> + Checking and fixing records for nursery cribs... + <<for _Slave range $cribs>> + <<run App.Entity.Utils.SlaveDataSchemeCleanup(_Slave)>> + <<run ChildDatatypeCleanup(_Slave)>> + <</for>> + Done<br> +<</if>> + +<<if $heroSlaves.length > 0>> + Checking and fixing special slave records... + <<for _Slave range $heroSlaves>> + <<run App.Entity.Utils.SlaveDataSchemeCleanup(_Slave)>> + /% No SlaveDatatypeCleanup() call as hero slaves are not SlaveState objects %/ + <</for>> + Done<br> +<</if>> <<set $slavesOriginal = []>> /* not used by pregmod */ @@ -3415,6 +3446,7 @@ Setting missing slave variables: <</if>> <</if>> + <<run App.Entity.Utils.GenePoolRecordCleanup(_Slave)>> <<set $genePool[_bci] = _Slave>> <</for>> diff --git a/src/uncategorized/reRelativeRecruiter.tw b/src/uncategorized/reRelativeRecruiter.tw index a7404b9b0374480761e3f22bc0836119b6cf8dda..347f7687f4c05bcadfc90bdc72c5f7e98e7a96a9 100644 --- a/src/uncategorized/reRelativeRecruiter.tw +++ b/src/uncategorized/reRelativeRecruiter.tw @@ -7,6 +7,7 @@ <<set $eventSlave = getSlave($recruiterSlave)>> <<set $activeSlave = BaseSlave()>> <<set $activeSlave = Object.assign($activeSlave, clone($genePool.find(function(o) { return o.ID == $eventSlave.ID; })))>> +<<run generatePronouns($activeSlave)>> <span id="artFrame"> /* 000-250-006 */ @@ -852,7 +853,9 @@ You look up the _relationType. _He2 costs <<print cashFormat($slaveCost)>>, a ba <<set $j = $genePool.findIndex(function(o) { return o.ID == $slaves[$i].ID; })>> <<set $eventSlave = $slaves[$i]>> -<<set $activeSlave = clone($genePool[$j])>> +<<set $activeSlave = BaseSlave()>> +<<set $activeSlave = Object.assign($activeSlave, clone($genePool[$j]))>> +<<run generatePronouns($activeSlave)>> <<run Enunciate($eventSlave)>> /* 000-250-006 */ @@ -1198,4 +1201,3 @@ You look up the $activeSlave.relation. _He2 costs <<print cashFormat($slaveCost) </span> <</if>> /* close extended family mode */ -