diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js index dc3df48b781897a8a26127f03c0ac36d999584e6..cf9839acb3d18914745dc3a5f1d3162a033bbbe8 100644 --- a/js/003-data/gameVariableData.js +++ b/js/003-data/gameVariableData.js @@ -12,7 +12,7 @@ App.Data.defaultGameStateVariables = { releaseID: 0, // Slaves - slaveIndices: 0, + slaveIndices: [], genePool: [], geneMods: {NCS: 0, rapidCellGrowth: 0}, missingTable: {}, @@ -89,6 +89,7 @@ App.Data.defaultGameStateVariables = { profiler: 0, realRoyalties: 0, retainCareer: 1, + ngpNationality: 0, rulesAssistantAuto: 0, rulesAssistantMain: 1, seeAge: 1, diff --git a/src/data/backwardsCompatibility/backwardsCompatibility.js b/src/data/backwardsCompatibility/backwardsCompatibility.js index 77f4fcf5b46442f055bd767ced78585b3f944ec4..560504d9d50031e02d891c2533479f983dc46e8b 100644 --- a/src/data/backwardsCompatibility/backwardsCompatibility.js +++ b/src/data/backwardsCompatibility/backwardsCompatibility.js @@ -2076,182 +2076,3 @@ App.Update.sectorsToBuilding = function() { return m; } }; - -App.Update.slaveLoopInit = function() { - let SL = V.slaves.length; - const NGPOffset = 1200000; - for (let i = 0; i < SL; i++) { - if (V.slaves[i].assignment !== "be imported") { - removeNonNGPSlave(V.slaves[i]); - i--, SL--; - } - } - for (let i = 0; i < SL; i++) { - if (V.slaves[i].assignment === "be imported") { - V.slaves[i].ID += NGPOffset; - V.slaves[i].assignment = "rest"; - V.slaves[i].weekAcquired = 0; - V.slaves[i].newGamePlus = 1; - if (V.slaves[i].mother > 0) { - V.slaves[i].mother += NGPOffset; - } else if (V.freshPC === 1 && V.slaves[i].mother === -1) { - V.slaves[i].mother = -NGPOffset; - } else if (V.slaves[i].mother < -1) { - V.slaves[i].mother -= NGPOffset; - } - if (V.slaves[i].father > 0) { - V.slaves[i].father += NGPOffset; - } else if (V.freshPC === 1 && V.slaves[i].father === -1) { - V.slaves[i].father = -NGPOffset; - } else if (V.slaves[i].father < -1) { - V.slaves[i].father -= NGPOffset; - } - V.slaves[i].daughters = 0; - V.slaves[i].sisters = 0; - V.slaves[i].canRecruit = 0; - V.slaves[i].breedingMark = 0; - if (V.arcologies[0].FSRomanRevivalist > 90) { - V.slaves[i].nationality = "Roman Revivalist"; - } else if (V.arcologies[0].FSAztecRevivalist > 90) { - V.slaves[i].nationality = "Aztec Revivalist"; - } else if (V.arcologies[0].FSEgyptianRevivalist > 90) { - V.slaves[i].nationality = "Ancient Egyptian Revivalist"; - } else if (V.arcologies[0].FSEdoRevivalist > 90) { - V.slaves[i].nationality = "Edo Revivalist"; - } else if (V.arcologies[0].FSArabianRevivalist > 90) { - V.slaves[i].nationality = "Arabian Revivalist"; - } else if (V.arcologies[0].FSChineseRevivalist > 90) { - V.slaves[i].nationality = "Ancient Chinese Revivalist"; - } - if (V.slaves[i].relationTarget !== 0) { - V.slaves[i].relationTarget += NGPOffset; - } - if (V.slaves[i].relationshipTarget !== 0) { - V.slaves[i].relationshipTarget += NGPOffset; - } - if (V.slaves[i].cloneID !== 0) { - V.slaves[i].cloneID += NGPOffset; - } - V.slaves[i].rivalry = 0, V.slaves[i].rivalryTarget = 0, V.slaves[i].subTarget = 0; - V.slaves[i].drugs = "no drugs"; - V.slaves[i].porn.spending = 0; - V.slaves[i].rules.living = "spare"; - V.slaves[i].diet = "healthy"; - V.slaves[i].pregControl = "none"; - } - } - V.slaveIndices = slaves2indices(); - for (let k = 0; k < SL; k++) { - for (let i = 0; i < SL; i++) { - if (V.slaves[k].mother === V.slaves[i].ID || V.slaves[k].father === V.slaves[i].ID) { - V.slaves[i].daughters += 1; - } - if (areSisters(V.slaves[k], V.slaves[i]) > 0) { - V.slaves[i].sisters += 1; - } - } - if (V.slaves[k].pregSource > 0) { - V.slaves[k].pregSource += NGPOffset; - let getFather = V.slaveIndices[V.slaves[k].pregSource]; - if (getFather) { - V.slaves[k].pregSource = 0; - } - } - for (let sInit = 0; sInit < V.slaves[k].womb.length; sInit++) { - if (V.slaves[k].womb[sInit].fatherID > 0) { - V.slaves[k].womb[sInit].fatherID += NGPOffset; - } else if (V.freshPC === 1 && V.slaves[k].womb[sInit].fatherID === -1) { - V.slaves[k].womb[sInit].fatherID = -NGPOffset; - } else if (V.slaves[k].womb[sInit].fatherID < -20) { - V.slaves[k].womb[sInit].fatherID -= NGPOffset; - } - if (V.slaves[k].womb[sInit].genetics.father > 0) { - V.slaves[k].womb[sInit].genetics.father += NGPOffset; - } else if (V.freshPC === 1 && V.slaves[k].womb[sInit].genetics.father === -1) { - V.slaves[k].womb[sInit].genetics.father = -NGPOffset; - } else if (V.slaves[k].womb[sInit].genetics.father < -20) { - V.slaves[k].womb[sInit].genetics.father -= NGPOffset; - } - if (V.slaves[k].womb[sInit].genetics.mother > 0) { - V.slaves[k].womb[sInit].genetics.mother += NGPOffset; - } else if (V.freshPC === 1 && V.slaves[k].womb[sInit].genetics.mother === -1) { - V.slaves[k].womb[sInit].genetics.mother = -NGPOffset; - } else if (V.slaves[k].womb[sInit].genetics.mother < -20) { - V.slaves[k].womb[sInit].genetics.mother -= NGPOffset; - } - } - if (V.slaves[k].cloneID !== 0) { - let getClone = V.slaveIndices[V.slaves[k].cloneID]; - if (getClone) { - V.slaves[k].cloneID = 0; - } - } - } - V.genePool = ngUpdateGenePool(V.genePool); - if (typeof V.missingTable === undefined || V.showMissingSlaves === false) { - V.missingTable = {}; - } else { - V.missingTable = ngUpdateMissingTable(V.missingTable); - } - for (let i = 0; i < SL; i++) { - if (V.slaves[i].relation !== 0) { - let seed = 0, rt = V.slaves[i].relationTarget, ID = V.slaves[i].ID; - let j = V.slaveIndices[rt]; - if ((j) && V.slaves[j].relationTarget === ID) { - seed = 1; - } - if (seed === 0) { - V.slaves[i].relation = 0, V.slaves[i].relationTarget = 0; - } - } - if (V.slaves[i].relationship > 0) { - let seed = 0, rt = V.slaves[i].relationshipTarget, ID = V.slaves[i].ID; - let j = V.slaveIndices[rt]; - if ((j) && V.slaves[j].relationshipTarget === ID) { - seed = 1; - } - if (seed === 0) { - V.slaves[i].relationship = 0, V.slaves[i].relationshipTarget = 0; - } - } - } - for (let i = 0; i < SL; i++) { - if (V.familyTesting === 1) { - if (V.slaves[i].canRecruit === 1) { - /* V.recruiters.push(V.slaves[i]);*/ - } - } else { - if (V.slaves[i].relation === 0) { - if (random(1, 100) <= 5) { - V.slaves[i].recruiter = "twin"; - } else if ((V.slaves[i].actualAge > 32) && (random(1, 100) <= 41)) { - V.slaves[i].recruiter = "mother"; - } else if ((V.slaves[i].actualAge < 24) && (random(1, 100) <= 40)) { - V.slaves[i].recruiter = "daughter"; - } else if ((V.slaves[i].actualAge < 43) && (random(1, 100) <= 20)) { - V.slaves[i].recruiter = "older sister"; - } else if ((V.slaves[i].actualAge < 25) && (V.slaves[i].actualAge > 18) && (random(1, 100) <= 20)) { - V.slaves[i].recruiter = "young sister"; - } - } else { - V.slaves[i].recruiter = 0; - } - } - /* closes family mode */ - V.slaves[i].counter.milk = 0; - V.slaves[i].counter.cum = 0; - V.slaves[i].counter.births = 0; - V.slaves[i].counter.mammary = 0; - V.slaves[i].counter.penetrative = 0; - V.slaves[i].counter.oral = 0; - V.slaves[i].counter.anal = 0; - V.slaves[i].counter.vaginal = 0; - V.slaves[i].lifetimeCashExpenses = 0; - V.slaves[i].lifetimeCashIncome = 0; - V.slaves[i].lastWeeksCashIncome = 0; - V.slaves[i].lifetimeRepExpenses = 0; - V.slaves[i].lifetimeRepIncome = 0; - V.slaves[i].lastWeeksRepExpenses = 0; - V.slaves[i].lastWeeksRepIncome = 0; - } -}; diff --git a/src/data/newGamePlus.js b/src/data/newGamePlus.js new file mode 100644 index 0000000000000000000000000000000000000000..acb9908f3bee96dc6fd8ac315eb1755b23288786 --- /dev/null +++ b/src/data/newGamePlus.js @@ -0,0 +1,206 @@ +App.Data.NewGamePlus = (function() { + const NGPOffset = 1200000; + + function ngpSlaveID(id, preserveSpecial=false) { + const minID = preserveSpecial ? -20 : 0; + if (id > 0) { + id += NGPOffset; + } else if (V.freshPC === 1 && id === -1) { + id = -NGPOffset; + } else if (id < minID) { + id -= NGPOffset; + } + } + + function slaveOrZero(id) { + if (id > 0 && !getSlave(id)) { + return 0; + } + return id; + } + + function PCInit() { + if (V.freshPC === 0) { + const prosperity = (arcologies && arcologies[0] && arcologies[0].prosperity) ? (250 * $arcologies[0].prosperity * $arcologies[0].ownership) : 0; + cashX(prosperity, "personalBusiness"); + const oldCash = V.cash; + V.cash = 0; + V.cashLastWeek = 0; + cashX((Math.clamp(1000*Math.trunc(oldCash/100000), 5000, 1000000)), "personalBusiness"); + if (V.retainCareer === 0) { + V.PC.career = "arcology owner"; + V.PC.skill.trading = 100; + V.PC.skill.warfare = 100; + V.PC.skill.hacking = 100; + V.PC.skill.slaving = 100; + V.PC.skill.engineering = 100; + V.PC.skill.medicine = 100; + } + V.PC.mother = ngpSlaveID(V.PC.mother); + V.PC.father = ngpSlaveID(V.PC.father); + V.PC.pregSource = slaveOrZero(ngpSlaveID(V.PC.pregSource, true)); + for (let fetus of V.PC.womb) { + fetus.fatherID = ngpSlaveID(fetus.fatherID, true); + fetus.genetics.father = ngpSlaveID(fetus.genetics.father, true); + fetus.genetics.mother = ngpSlaveID(fetus.genetics.mother, true); + } + } else { + V.PC = basePlayer(); + WombInit(V.PC); + V.cheater = 0; + V.cash = 0; + cashX(10000, "personalBusiness"); + for (let slave of V.slaves) { + if (V.familyTesting === 1) { + if (slave.mother === -1) { + slave.mother = V.missingParentID+NGPOffset; + } + if (slave.father === -1) { + slave.father = V.missingParentID+NGPOffset; + } + if (slave.pregSource === -1) { + slave.pregSource = 0; + } + if (slave.cloneID === -1) { + slave.cloneID = 0; + } + } + for (let fetus of slave.womb) { + if (fetus.father === -1) { + fetus.father = 0; + } + } + } + } + } + + function slaveLoopInit() { + const ngUpdateGenePool = function(genePool = []) { + const transferredSlaveIds = (State.variables.slaves || []) + .filter(s => s.ID >= NGPOffset) + .map(s => s.ID - NGPOffset); + return genePool + .filter(s => (transferredSlaveIds.includes(s.ID))) + .map(function(s) { + const result = jQuery.extend(true, {}, s); + result.ID += NGPOffset; + return result; + }); + }; + + const ngUpdateMissingTable = function(missingTable) { + const newTable = {}; + + (State.variables.slaves || []) + .forEach(s => ([s.pregSource + NGPOffset, s.mother + NGPOffset, s.father + NGPOffset] + .filter(i => (i in missingTable)) + .forEach(i => { + newTable[i - NGPOffset] = missingTable[i]; + newTable[i - NGPOffset].ID -= NGPOffset; + }))); + + return newTable; + }; + + V.slaves.deleteWith((s) => s.assignment !== "be imported"); + + for (let slave of V.slaves) { + slave.ID += NGPOffset; + slave.assignment = "rest"; + slave.weekAcquired = 0; + slave.newGamePlus = 1; + slave.mother = ngpSlaveID(slave.mother); + slave.father = ngpSlaveID(slave.father); + slave.canRecruit = 0; + slave.breedingMark = 0; + if (typeof V.ngpNationality === 'string') { + slave.nationality = V.ngpNationality; + } + slave.relationTarget = ngpSlaveID(slave.relationTarget); + slave.relationshipTarget = ngpSlaveID(slave.relationshipTarget); + slave.cloneID = ngpSlaveID(slave.cloneID); + slave.pregSource = ngpSlaveID(slave.pregSource, true); + for (let fetus of slave.womb) { + fetus.fatherID = ngpSlaveID(fetus.fatherID, true); + fetus.genetics.father = ngpSlaveID(fetus.genetics.father, true); + fetus.genetics.mother = ngpSlaveID(fetus.genetics.mother, true); + } + slave.rivalry = 0, slave.rivalryTarget = 0, slave.subTarget = 0; + slave.drugs = "no drugs"; + slave.porn.spending = 0; + slave.rules.living = "spare"; + slave.diet = "healthy"; + slave.pregControl = "none"; + } + V.slaveIndices = slaves2indices(); + for (let slave of V.slaves) { + slave.pregSource = slaveOrZero(slave.pregSource); + slave.cloneID = slaveOrZero(slave.cloneID); + slave.relationshipTarget = slaveOrZero(slave.relationshipTarget); + slave.relationTarget = slaveOrZero(slave.relationTarget); + } + V.genePool = ngUpdateGenePool(V.genePool); + if (typeof V.missingTable === undefined || V.showMissingSlaves === false) { + V.missingTable = {}; + } else { + V.missingTable = ngUpdateMissingTable(V.missingTable); + } + let validRelation = (s) => (s.relation !== 0 && s.relationTarget !== 0 && getSlave(s.relationTarget).relationTarget === s.ID); + let validRelationship = (s) => (s.relationship !== 0 && s.relationshipTarget !== 0 && getSlave(s.relationshipTarget).relationshipTarget === s.ID); + for (let slave of V.slaves) { + if (V.familyTesting === 1) { + if (slave.canRecruit === 1) { + /* V.recruiters.push(slave);*/ + } + } else { + if (slave.relation === 0) { + if (random(1, 100) <= 5) { + slave.recruiter = "twin"; + } else if ((slave.actualAge > 32) && (random(1, 100) <= 41)) { + slave.recruiter = "mother"; + } else if ((slave.actualAge < 24) && (random(1, 100) <= 40)) { + slave.recruiter = "daughter"; + } else if ((slave.actualAge < 43) && (random(1, 100) <= 20)) { + slave.recruiter = "older sister"; + } else if ((slave.actualAge < 25) && (slave.actualAge > 18) && (random(1, 100) <= 20)) { + slave.recruiter = "young sister"; + } + } else { + if (!validRelation(slave)) { + slave.relation = 0; + slave.relationTarget = 0; + } + slave.recruiter = 0; + } + } + if (!validRelationship(slave)) { + slave.relationship = 0; + slave.relationshipTarget = 0; + } + slave.counter.milk = 0; + slave.counter.cum = 0; + slave.counter.births = 0; + slave.counter.mammary = 0; + slave.counter.penetrative = 0; + slave.counter.oral = 0; + slave.counter.anal = 0; + slave.counter.vaginal = 0; + slave.lifetimeCashExpenses = 0; + slave.lifetimeCashIncome = 0; + slave.lastWeeksCashIncome = 0; + slave.lifetimeRepExpenses = 0; + slave.lifetimeRepIncome = 0; + slave.lastWeeksRepExpenses = 0; + slave.lastWeeksRepIncome = 0; + } + } + + function doNGPSetup() { + slaveLoopInit(); + PCInit(); + resetFamilyCounters(); + V.ngpSlaveNationality = 0; + } + + return doNGPSetup; +})(); diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw index 243578a21872c93e7b1bcef0fe8290b7d051fa86..cc124ea7944b61eea5f687c630d201eb5737542c 100644 --- a/src/init/storyInit.tw +++ b/src/init/storyInit.tw @@ -12,12 +12,6 @@ This program is distributed in the hope that it will be useful, but WITHOUT ANY You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ -<<if def $arcologies && def $arcologies[0] && def $arcologies[0].prosperity>> - <<set _prosperity = (250*$arcologies[0].prosperity*$arcologies[0].ownership)>> -<<else>> - <<set _prosperity = 0>> -<</if>> - /* Set up the game as politely as possible. If values are already set, they are preserved. */ <<run App.Update.setNonexistantProperties(V, App.Data.defaultGameStateVariables)>> @@ -26,81 +20,19 @@ You should have received a copy of the GNU General Public License along with thi <<set $ver = App.Version.base, $pmodVer = App.Version.pmod, $releaseID = App.Version.release>> -<<set _NGPOffset = 1200000>> - -<<run App.Update.slaveLoopInit()>> - /* 0 out the record books as we start a new game */ <<run setupLastWeeksCash()>> <<run setupLastWeeksRep()>> <<if $saveImported == 0>> /* new game (not NG+) */ - <<set $PC = basePlayer()>> <<run WombInit($PC)>> <<run cashX(10000, "personalBusiness")>> <<include "Init Rules">> - <<else>> /* imported save (NG+) */ - - <<if $freshPC == 0>> - <<run cashX(_prosperity, "personalBusiness")>> - <<set _cash = $cash, $cash = 0, $cashLastWeek = 0>> - <<run cashX((Math.clamp(1000*Math.trunc(_cash/100000), 5000, 1000000)), "personalBusiness")>> - <<if $retainCareer == 0>> - <<set $PC.career = "arcology owner", $PC.skill.trading = 100, $PC.skill.warfare = 100, $PC.skill.hacking = 100, $PC.skill.slaving = 100, $PC.skill.engineering = 100, $PC.skill.medicine = 100>> - <</if>> - <<if $PC.mother > 0>> - <<set $PC.mother += _NGPOffset>> - <<elseif $PC.mother < 0>> - <<set $PC.mother -= _NGPOffset>> - <</if>> - <<if $PC.father > 0>> - <<set $PC.father += _NGPOffset>> - <<elseif $PC.father < 0>> - <<set $PC.father -= _NGPOffset>> - <</if>> - <<if $PC.pregSource > 0>> - <<set $PC.pregSource += _NGPOffset>> - <<set _getFather = $slaveIndices[$PC.pregSource]>> - <<if ndef _getFather>> - <<set $PC.pregSource = 0>> - <</if>> - <<for _sInit = 0; _sInit < $PC.womb.length; _sInit++>> - <<if $PC.womb[_sInit].fatherID > 0>> - <<set $PC.womb[_sInit].fatherID += _NGPOffset>> - <</if>> - <</for>> - <</if>> - <<else>> - <<set $PC = basePlayer()>> - <<run WombInit($PC)>> - <<set $cheater = 0>> - <<set $cash = 0>> - <<run cashX(10000, "personalBusiness")>> - <<for _i = 0; _i < _SL; _i++>> - <<if $familyTesting == 1>> - <<if $slaves[_i].mother == -1>> - <<set $slaves[_i].mother = $missingParentID+_NGPOffset>> - <</if>> - <<if $slaves[_i].father == -1>> - <<set $slaves[_i].father = $missingParentID+_NGPOffset>> - <</if>> - <<if $slaves[_i].pregSource == -1>> - <<set $slaves[_i].pregSource = 0>> - <</if>> - <<if $slaves[_i].cloneID == -1>> - <<set $slaves[_i].cloneID = 0>> - <</if>> - <</if>> - <<for _sInit = 0; _sInit < $slaves[_i].womb.length; _sInit++>> - <<if $slaves[_i].womb[_sInit].fatherID == -1>> - <<set $slaves[_i].womb[_sInit].fatherID = 0>> - <</if>> - <</for>> - <</for>> - <</if>> + <<run App.Data.NewGamePlus()>> <</if>> + /* Porn star counts (prestige 1) and ID's (prestige 3) */ <<set $pornStars = {}>> <<for _genre range App.Porn.getAllGenres()>> diff --git a/src/js/extendedFamilyModeJS.js b/src/js/extendedFamilyModeJS.js index e10f433f13b2e1e2efd383fe75ff328f9483819c..c1d74f93f296a65948fd88d7ada1dfe96665b38c 100644 --- a/src/js/extendedFamilyModeJS.js +++ b/src/js/extendedFamilyModeJS.js @@ -481,3 +481,32 @@ window.relativeTerm = function(slave1, slave2) { return null; }; + +/** completely reset all the family counters in the game state (for both PC and slaves) */ +window.resetFamilyCounters = function() { + for (let slave of V.slaves) { + slave.daughters = 0; + slave.sisters = 0; + } + V.PC.daughters = 0; + V.PC.sisters = 0; + + if (V.familyTesting === 1) { + for (let slave of V.slaves) { + if (slave.mother === -1 || slave.father === -1) { + V.PC.daughters++; + } + if (areSisters(slave, V.PC)) { + V.PC.sisters++; + } + for (let otherSlave of V.slaves) { + if (isParentP(otherSlave, slave)) { + slave.daughters++; + } + if (areSisters(otherSlave, slave)) { + slave.sisters++; + } + } + } + } +}; diff --git a/src/js/generateGenetics.js b/src/js/generateGenetics.js index 07ed18740f38850d2b6789fe376eaeed27089e5b..6cacff3190cdf44704b5c73a1744511ffab55de2 100644 --- a/src/js/generateGenetics.js +++ b/src/js/generateGenetics.js @@ -1389,18 +1389,9 @@ window.generateChild = function(mother, ova, destination) { } child.weekAcquired = V.week; if (child.nationality === "Stateless") { - if (V.arcologies[0].FSRomanRevivalist > 90) { - child.nationality = "Roman Revivalist"; - } else if (V.arcologies[0].FSAztecRevivalist > 90) { - child.nationality = "Aztec Revivalist"; - } else if (V.arcologies[0].FSEgyptianRevivalist > 90) { - child.nationality = "Ancient Egyptian Revivalist"; - } else if (V.arcologies[0].FSEdoRevivalist > 90) { - child.nationality = "Edo Revivalist"; - } else if (V.arcologies[0].FSArabianRevivalist > 90) { - child.nationality = "Arabian Revivalist"; - } else if (V.arcologies[0].FSChineseRevivalist > 90) { - child.nationality = "Ancient Chinese Revivalist"; + const revivalistNationality = getRevivalistNationality(); + if (typeof revivalistNationality === 'string') { + child.nationality = revivalistNationality; } } } else { @@ -1736,18 +1727,9 @@ window.generateChild = function(mother, ova, destination) { child.trust = 0; child.weekAcquired = V.week; if (child.nationality === "Stateless") { - if (V.arcologies[0].FSRomanRevivalist > 90) { - child.nationality = "Roman Revivalist"; - } else if (V.arcologies[0].FSAztecRevivalist > 90) { - child.nationality = "Aztec Revivalist"; - } else if (V.arcologies[0].FSEgyptianRevivalist > 90) { - child.nationality = "Ancient Egyptian Revivalist"; - } else if (V.arcologies[0].FSEdoRevivalist > 90) { - child.nationality = "Edo Revivalist"; - } else if (V.arcologies[0].FSArabianRevivalist > 90) { - child.nationality = "Arabian Revivalist"; - } else if (V.arcologies[0].FSChineseRevivalist > 90) { - child.nationality = "Ancient Chinese Revivalist"; + const revivalistNationality = getRevivalistNationality(); + if (typeof revivalistNationality === 'string') { + child.nationality = revivalistNationality; } } diff --git a/src/js/storyJS.js b/src/js/storyJS.js index c7f91378a5b05b08a3dc0f5fa724bb9fc5d147dd..b01452d869efb475f502b19e51d32664c43c4e56 100644 --- a/src/js/storyJS.js +++ b/src/js/storyJS.js @@ -367,33 +367,6 @@ window.bodyguardSuccessorEligible = function(slave) { return (slave.devotion > 50 && slave.muscles >= 0 && slave.weight < 100 && slave.boobs < 8000 && slave.butt < 10 && slave.belly < 5000 && slave.balls < 10 && slave.dick < 10 && slave.preg < 20 && slave.fuckdoll === 0 && slave.fetish !== "mindbroken" && canWalk(slave) && canHold(slave) && canSee(slave) && canHear(slave)); }; -window.ngUpdateGenePool = function(genePool = []) { - const transferredSlaveIds = (State.variables.slaves || []) - .filter(s => s.ID >= 1200000) - .map(s => s.ID - 1200000); - return genePool - .filter(s => (transferredSlaveIds.includes(s.ID))) - .map(function(s) { - const result = jQuery.extend(true, {}, s); - result.ID += 1200000; - return result; - }); -}; - -window.ngUpdateMissingTable = function(missingTable) { - const newTable = {}; - - (State.variables.slaves || []) - .forEach(s => ([s.pregSource + 1200000, s.mother + 1200000, s.father + 1200000] - .filter(i => (i in missingTable)) - .forEach(i => { - newTable[i - 1200000] = missingTable[i]; - newTable[i - 1200000].ID -= 1200000; - }))); - - return newTable; -}; - /** * @param {any} obj * @returns {string} diff --git a/src/js/utilsFC.js b/src/js/utilsFC.js index 86717839ff1482f77b213d2dc68e2213b38b8d41..4a4ee7b93826f23ea611964730cdb1be6038e14b 100644 --- a/src/js/utilsFC.js +++ b/src/js/utilsFC.js @@ -2899,3 +2899,20 @@ window.ASDump = function() { } } }; + +window.getRevivalistNationality = function() { + if (V.arcologies[0].FSRomanRevivalist > 90) { + return "Roman Revivalist"; + } else if (V.arcologies[0].FSAztecRevivalist > 90) { + return "Aztec Revivalist"; + } else if (V.arcologies[0].FSEgyptianRevivalist > 90) { + return "Ancient Egyptian Revivalist"; + } else if (V.arcologies[0].FSEdoRevivalist > 90) { + return "Edo Revivalist"; + } else if (V.arcologies[0].FSArabianRevivalist > 90) { + return "Arabian Revivalist"; + } else if (V.arcologies[0].FSChineseRevivalist > 90) { + return "Ancient Chinese Revivalist"; + } + return 0; +}; diff --git a/src/npc/acquisition.tw b/src/npc/acquisition.tw index 963653ab1853507c895cd62c50b8aca540050c7c..3865480798c42877a170a49aac712a26e7023798 100644 --- a/src/npc/acquisition.tw +++ b/src/npc/acquisition.tw @@ -122,10 +122,7 @@ <<set $PC.prostate = 0>> <</if>> <<set $PC.ovaryAge = $PC.physicalAge>> -<<else>> /*testtest*/ - <<set $PC.sisters = 0>> - <<set $PC.daughters = 0>> -<</if>> /*closes ng*/ +<</if>> <<if $familyTesting == 1>> <<set _pcMomFound = 0, _pcDadFound = 0>> <<if def $slaveIndices[$PC.mother]>> @@ -134,14 +131,6 @@ <<if def $slaveIndices[$PC.father]>> <<set _pcDadFound = 1>> <</if>> - <<for _i = 0; _i < $slaves.length; _i++>> - <<if $slaves[_i].mother == $PC.ID || $slaves[_i].father == $PC.ID>> - <<set $PC.daughters += 1>> - <</if>> - <<if areSisters($slaves[_i], $PC) > 0>> - <<set $PC.sisters += 1>> - <</if>> - <</for>> <<if _pcMomFound == 0 && $PC.mother > 0>> <<set _lostMom = $PC.mother>> <<set $PC.mother = $missingParentId>> @@ -205,6 +194,7 @@ <</if>> <<set $targetAge = $minimumSlaveAge>> <<set $targetAgeNursery = $minimumSlaveAge>> +<<run resetFamilyCounters()>> You've done it. <br><br> @@ -850,26 +840,6 @@ The previous owner seems to have left in something of a hurry. <</if>> <</if>> <</for>> -<<if $familyTesting == 1>> - <<set $slaves.forEach(function(s) { s.sisters = 0; s.daughters = 0; })>> - <<set $PC.daughters = 0, $PC.sisters = 0>> - <<for _fp = 0; _fp < $slaves.length; _fp++>> - <<if ($slaves[_fp].mother == -1 || $slaves[_fp].father == -1)>> - <<set $PC.daughters++>> - <</if>> - <<if areSisters($slaves[_fp], $PC) > 0>> - <<set $PC.sisters++>> - <</if>> - <<for _fpt = 0; _fpt < $slaves.length; _fpt++>> - <<if ($slaves[_fpt].mother == $slaves[_fp].ID) || ($slaves[_fpt].father == $slaves[_fp].ID)>> - <<set $slaves[_fp].daughters++>> - <</if>> - <<if areSisters($slaves[_fpt], $slaves[_fp]) > 0>> - <<set $slaves[_fp].sisters++>> - <</if>> - <</for>> - <</for>> -<</if>> <<if _slavesContributing != 0>> <<set $averageTrust = $averageTrust/_slavesContributing>> <<set $averageDevotion = $averageDevotion/_slavesContributing>> diff --git a/src/npc/familyPanic.tw b/src/npc/familyPanic.tw deleted file mode 100644 index b8edb689586d5368549dbe5818b71a0586dd088a..0000000000000000000000000000000000000000 --- a/src/npc/familyPanic.tw +++ /dev/null @@ -1,25 +0,0 @@ -:: family panic [nobr] - -<<set $nextButton = "Back", $nextLink = "Main">> - -<<set $slaves.forEach(function(s) { s.sisters = 0; s.daughters = 0; })>> -<<set $PC.daughters = 0, $PC.sisters = 0>> - -<<for _fp = 0; _fp < $slaves.length; _fp++>> - <<if ($slaves[_fp].mother == -1 || $slaves[_fp].father == -1)>> - <<set $PC.daughters++>> - <</if>> - <<if areSisters($slaves[_fp], $PC) > 0>> - <<set $PC.sisters++>> - <</if>> - <<for _fpt = 0; _fpt < $slaves.length; _fpt++>> - <<if ($slaves[_fpt].mother == $slaves[_fp].ID) || ($slaves[_fpt].father == $slaves[_fp].ID)>> - <<set $slaves[_fp].daughters++>> - <</if>> - <<if areSisters($slaves[_fpt], $slaves[_fp]) > 0>> - <<set $slaves[_fp].sisters++>> - <</if>> - <</for>> -<</for>> - -//Family relations flushed and rebuilt.// diff --git a/src/uncategorized/newGamePlus.tw b/src/uncategorized/newGamePlus.tw index ccacf4a86b0076f2bdaa8534bd753e40f51f6114..ec0a9d7a7fd44258a4b2cd05fc7c43b08ad65a98 100644 --- a/src/uncategorized/newGamePlus.tw +++ b/src/uncategorized/newGamePlus.tw @@ -23,6 +23,7 @@ You <<if $cash >= _fee>>have<<else>>lack<</if>> the funds to bring more than $sl <br> +<<set $ngpNationality = getRevivalistNationality()>> <<if $freshPC == 0>> <<if $retainCareer == 1 && $PC.career != "arcology owner">> <<if $week > 52 || ($PC.skill.slaving >= 100 && $PC.skill.trading >= 100 && $PC.skill.warfare >= 100 && $PC.skill.engineering >= 100 && $PC.skill.medicine >= 100 && $PC.skill.hacking >= 100)>> diff --git a/src/uncategorized/options.tw b/src/uncategorized/options.tw index 7ed9c60c58abd10b144537254a89f004940c22be..32670ed035e5e20501b921b347375e70f528f14d 100644 --- a/src/uncategorized/options.tw +++ b/src/uncategorized/options.tw @@ -58,7 +58,11 @@ This save was created using FC version $ver build $releaseID. <</link>> <</if>> <<if $familyTesting == 1>> - <br><<link "Reset extended family mode controllers">><<goto "family panic">><</link>> //Clears and rebuilds .sister and .daughter tracking.// + <br><<link "Reset extended family mode controllers">> + <<run resetFamilyCounters()>> + <<replace "#familyHint">>//@@.lightgreen;Done:@@ all family relations flushed and rebuilt.//<</replace>> + <</link>> + <span id="familyHint">//Clears and rebuilds .sister and .daughter tracking.//</span> <</if>> <<if isNaN($rep)>> <br>[[Reset Reputation|Options][$rep = 0]]