From 2eca0953431b3d58497e2f964a700b36217cd4da Mon Sep 17 00:00:00 2001 From: Svornost <11434-svornost@users.noreply.gitgud.io> Date: Sun, 19 Jan 2020 19:55:48 -0800 Subject: [PATCH] Centralize retirement logic --- src/js/assayJS.js | 38 +++++++++++++++++ src/uncategorized/saLongTermEffects.tw | 45 +++------------------ src/uncategorized/scheduledEvent.tw | 56 ++++---------------------- 3 files changed, 52 insertions(+), 87 deletions(-) diff --git a/src/js/assayJS.js b/src/js/assayJS.js index 156cb431186..fbcdf3562f5 100644 --- a/src/js/assayJS.js +++ b/src/js/assayJS.js @@ -1768,3 +1768,41 @@ window.Deadliness = function Deadliness(slave) { return Math.max(deadliness, 1); }; + +/** Is the slave ready to retire? + * @param {SlaveState} slave + * @returns {boolean} + */ +window.retirementReady = function RetirementReady(slave) { + // indentured slaves don't retire, they expire + if (slave.indenture >= 0) { + return false; + } + + // retirement by age + if (V.PhysicalRetirementAgePolicy !== 1 && slave.actualAge >= V.retirementAge) { + return true; + } else if (V.PhysicalRetirementAgePolicy === 1 && slave.physicalAge >= V.retirementAge) { + return true; + } + + // retirement by milestone + if (V.SexMilestoneRetirement === 1 && (slave.counter.oral + slave.counter.anal + slave.counter.vaginal + slave.counter.penetrative + slave.counter.mammary) > V.retirementSex) { + return true; + } + if (V.MilkMilestoneRetirement === 1 && slave.counter.milk > V.retirementMilk) { + return true; + } + if (V.CumMilestoneRetirement === 1 && slave.counter.cum > V.retirementCum) { + return true; + } + if (V.BirthsMilestoneRetirement === 1 && slave.counter.births > V.retirementBirths) { + return true; + } + if (V.KillsMilestoneRetirement === 1 && slave.counter.kills > V.retirementKills) { + return true; + } + + // no retirement for you + return false; +}; diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw index 8c9d577f0b8..2e38ec86e7b 100644 --- a/src/uncategorized/saLongTermEffects.tw +++ b/src/uncategorized/saLongTermEffects.tw @@ -8356,42 +8356,15 @@ $He remembered it, but no one cared. <</if>> <</if>> - <<if $retiree == 0>> - <<if $slaves[$i].indenture < 0>> - <<if $slaves[$i].actualAge >= $retirementAge && $PhysicalRetirementAgePolicy != 1>> - <<set $retiree = $slaves[$i].ID>> - <<elseif $slaves[$i].physicalAge >= $retirementAge && $PhysicalRetirementAgePolicy == 1>> - <<set $retiree = $slaves[$i].ID>> - <</if>> - <<if $SexMilestoneRetirement == 1>> - <<if $slaves[$i].counter.oral + $slaves[$i].counter.anal + $slaves[$i].counter.vaginal + $slaves[$i].counter.penetrative + $slaves[$i].counter.mammary >= $retirementSex>> - <<set $retiree = $slaves[$i].ID>> - <</if>> - <</if>> - <<if $MilkMilestoneRetirement == 1>> - <<if $slaves[$i].counter.milk >= $retirementMilk>> - <<set $retiree = $slaves[$i].ID>> - <</if>> - <</if>> - <<if $CumMilestoneRetirement == 1>> - <<if $slaves[$i].counter.cum >= $retirementCum>> - <<set $retiree = $slaves[$i].ID>> - <</if>> - <</if>> - <<if $BirthsMilestoneRetirement == 1>> - <<if $slaves[$i].counter.births >= $retirementBirths>> - <<set $retiree = $slaves[$i].ID>> - <</if>> - <</if>> - <<if $KillsMilestoneRetirement == 1>> - <<if $slaves[$i].counter.pitKills >= $retirementKills>> - <<set $retiree = $slaves[$i].ID>> - <</if>> - <</if>> - <</if>> + <<if retirementReady($slaves[$i]) && $retiree == 0>> + <<set $retiree = $slaves[$i].ID>> <</if>> <</if>> +<<if $slaves[$i].indenture == 0 && $expiree == 0>> + <<set $expiree = $slaves[$i].ID>> +<</if>> + <<if $arcologies[0].FSRestart != "unset">> <<if $slaves[$i].breedingMark == 1 && $propOutcome == 1 && $eugenicsFullControl != 1>> <<if $slaves[$i].preg > $slaves[$i].pregData.normalBirth/13.33 || $slaves[$i].pregKnown == 1>> @@ -8410,12 +8383,6 @@ <</if>> <</if>> -<<if $slaves[$i].indenture == 0>> - <<if $expiree == 0>> - <<set $expiree = $slaves[$i].ID>> - <</if>> -<</if>> - /*--------------- main labor triggers: -------- */ <<if $slaves[$i].preg > $slaves[$i].pregData.normalBirth/8>> <<if $slaves[$i].pregControl != "labor suppressors" && $slaves[$i].assignment != "labor in the production line">> diff --git a/src/uncategorized/scheduledEvent.tw b/src/uncategorized/scheduledEvent.tw index 33d736dbdc2..74bb0057e10 100644 --- a/src/uncategorized/scheduledEvent.tw +++ b/src/uncategorized/scheduledEvent.tw @@ -5,60 +5,20 @@ <<if $expired == 1>> <<set $activeSlave = getSlave($expiree), $expiree = 0>> <<= removeActiveSlave() >> - <<for $i = 0; $i < $slaves.length; $i++>> - <<if $slaves[$i].indenture == 0>> - <<set $expiree = $slaves[$i].ID>> - <<break>> - <</if>> - <</for>> + <<set _expireSlave = $slaves.find((s) => s.indenture === 0)>> + <<if def _expireSlave>> + <<set $expiree = _expireSlave.ID>> + <</if>> <</if>> <<set $expired = 0>> <<if $retired == 1>> <<set $activeSlave = getSlave($retiree), $retiree = 0>> <<= removeActiveSlave() >> - <<for $i = 0; $i < $slaves.length; $i++>> - <<if $slaves[$i].indenture < 0>> - <<if $slaves[$i].actualAge >= $retirementAge && $PhysicalRetirementAgePolicy != 1>> - <<set $retiree = $slaves[$i].ID>> - <<break>> - <</if>> - <<if $slaves[$i].physicalAge >= $retirementAge && $PhysicalRetirementAgePolicy == 1>> - <<set $retiree = $slaves[$i].ID>> - <<break>> - <</if>> - <<if $SexMilestoneRetirement == 1>> - <<if $slaves[$i].counter.oral + $slaves[$i].counter.anal + $slaves[$i].counter.vaginal + $slaves[$i].counter.penetrative + $slaves[$i].counter.mammary >= $retirementSex>> - <<set $retiree = $slaves[$i].ID>> - <<break>> - <</if>> - <</if>> - <<if $MilkMilestoneRetirement == 1>> - <<if $slaves[$i].counter.milk >= $retirementMilk>> - <<set $retiree = $slaves[$i].ID>> - <<break>> - <</if>> - <</if>> - <<if $CumMilestoneRetirement == 1>> - <<if $slaves[$i].counter.cum >= $retirementCum>> - <<set $retiree = $slaves[$i].ID>> - <<break>> - <</if>> - <</if>> - <<if $BirthsMilestoneRetirement == 1>> - <<if $slaves[$i].counter.births >= $retirementBirths>> - <<set $retiree = $slaves[$i].ID>> - <<break>> - <</if>> - <</if>> - <<if $KillsMilestoneRetirement == 1>> - <<if $slaves[$i].counter.pitKills >= $retirementKills>> - <<set $retiree = $slaves[$i].ID>> - <<break>> - <</if>> - <</if>> - <</if>> - <</for>> + <<set _retireSlave = $slaves.find((s) => retirementReady(s))>> + <<if def _retireSlave>> + <<set $retiree = _retireSlave.ID>> + <</if>> <</if>> <<set $retired = 0>> -- GitLab