Skip to content
Snippets Groups Projects
Commit 237c1c48 authored by Pregmodder's avatar Pregmodder
Browse files

Merge branch 'next-week-to-js' into 'pregmod-master'

Next week to js

See merge request pregmodfan/fc-pregmod!8365
parents 58f6715c e8a57a98
No related branches found
No related tags found
No related merge requests found
App.EndWeek.nextWeek = function() {
V.HackingSkillMultiplier = upgradeMultiplier('hacking');
V.upgradeMultiplierArcology = upgradeMultiplier('engineering');
V.upgradeMultiplierMedicine = upgradeMultiplier('medicine');
V.upgradeMultiplierTrade = upgradeMultiplier('trading');
if (V.rivalOwner !== 0) {
const rival = V.arcologies.find(function(s) { return s.rival === 1; });
if (rival) {
V.rivalOwner = rival.prosperity;
}
}
if (V.playerAging !== 0) {
V.PC.birthWeek += 1;
if (V.PC.ovaryAge >= 47 && V.PC.ovaries === 1 && (V.PC.preg === -1 || V.PC.preg === 0)) {
V.PC.preg = -2;
}
if (V.PC.birthWeek >= 52) {
V.PC.birthWeek = 0;
if (V.playerAging === 2) {
V.PC.physicalAge++;
V.PC.actualAge++;
V.PC.visualAge++;
V.PC.ovaryAge++;
agePCEffects();
}
}
}
if (V.menstruation === 1) {
} else if (V.PC.geneticQuirks.superfetation === 2 && V.PC.womb.length > 0) {
if (V.PC.fertPeak === 0) {
V.PC.fertPeak = 1;
}
V.PC.fertPeak--;
} else if (V.PC.fertPeak !== 0) {
V.PC.fertPeak = 0;
}
// Adding random changes to the economy
if (V.difficultySwitch === 1) {
const globalEconSeed = random(1, 100);
if (globalEconSeed > 98) {
V.economy += 2;
} else if (globalEconSeed > 85) {
V.economy += 1;
} else if (globalEconSeed <= 2) {
V.economy -= 2;
} else if (globalEconSeed <= 25 + V.econRate * 10) {
V.economy -= 1;
}
if (V.economy < 20) {
V.economy = 20;
}
const localEconSeed = random(1, 100);
if (V.localEcon <= (V.economy + V.econAdvantage)) {
if (localEconSeed > 95) {
V.localEcon += 2;
} else if (localEconSeed > 50) {
V.localEcon += 1;
} else if (localEconSeed <= 1) {
V.localEcon -= 2;
} else if (localEconSeed <= 10) {
V.localEcon -= 1;
}
} else if (V.localEcon <= (V.economy + V.econAdvantage + 5)) {
if (localEconSeed > 98) {
V.localEcon += 2;
} else if (localEconSeed > 66) {
V.localEcon += 1;
} else if (localEconSeed <= 2) {
V.localEcon -= 2;
} else if (localEconSeed <= 33) {
V.localEcon -= 1;
}
} else if (localEconSeed > 99) {
V.localEcon += 2;
} else if (localEconSeed > 90) {
V.localEcon += 1;
} else if (localEconSeed <= 5) {
V.localEcon -= 2;
} else if (localEconSeed <= 50) {
V.localEcon -= 1;
}
if (V.localEcon < 20) {
V.localEcon = 20;
}
if (V.experimental.food === 1) {
if (V.localEcon > 100) {
V.farmyardFoodCost = Math.max(5 / (1 + (Math.trunc(1000 - 100000 / V.localEcon) / 10) / 100), 3.125);
} else if (V.localEcon === 100) {
V.farmyardFoodCost = 5;
} else {
V.farmyardFoodCost = Math.min(5 * (1 + 1.5 * Math.sqrt(Math.trunc(100000 / V.localEcon - 1000) / 10) / 100), 6.5);
}
}
V.foodCost = Math.trunc(2500 / V.localEcon);
V.drugsCost = Math.trunc(10000 / V.localEcon);
V.rulesCost = Math.trunc(10000 / V.localEcon);
V.modCost = Math.trunc(5000 / V.localEcon);
V.surgeryCost = Math.trunc(30000 / (V.localEcon * (V.PC.career === "medicine" ? 2 : 1)));
}
V.arcologies[0].prosperity = Math.clamp(V.arcologies[0].prosperity, 1, V.AProsperityCap);
V.averageTrust = 0;
V.averageDevotion = 0;
let slavesContributing = 0;
let oldHG = -1;
let newHG = -1;
if (V.studio === 1) {
for (const genre of App.Porn.getAllGenres()) {
V.pornStars[genre.fameVar].p1count = 0;
}
}
for (const slave of V.slaves) {
if (slave.hasOwnProperty("curBabies")) {
delete slave.curBabies;
}
ageSlaveWeeks(slave);
if (slave.indenture > 0) {
slave.indenture -= 1;
}
if (slave.induceLactation > 0) {
slave.induceLactation--;
}
if (slave.lactation === 1) {
if (slave.lactationDuration === 1) {
slave.boobsMilk = 10 * slave.lactationAdaptation;
slave.boobs += slave.boobsMilk;
}
}
if (V.menstruation === 1) {
} else if (slave.geneticQuirks.superfetation === 2 && slave.womb.length > 0) {
if (slave.fertPeak === 0) {
slave.fertPeak = 1;
}
slave.fertPeak--;
} else if (slave.fertPeak !== 0) {
slave.fertPeak = 0;
}
slave.trust = Number(slave.trust.toFixed(1));
slave.devotion = Number(slave.devotion.toFixed(1));
slave.oldDevotion = slave.devotion;
slave.oldTrust = slave.trust;
slave.minorInjury = 0;
if (slave.sentence > 1) {
slave.sentence -= 1;
} else if (slave.sentence === 1) {
removeJob(slave, slave.assignment);
}
if (slave.weekAcquired < 0) {
slave.weekAcquired = 0;
}
if (slave.relationship === 0) {
slave.relationshipTarget = 0;
}
if (slave.rivalry === 0) {
slave.rivalryTarget = 0;
} else if (slave.rivalry < 0) {
slave.rivalryTarget = 0;
slave.rivalry = 0;
}
if (slave.vagina < 0) {
slave.vaginalAccessory = "none";
slave.chastityVagina = 0;
slave.vaginaPiercing = 0;
}
if (slave.dick === 0) {
slave.dickAccessory = "none";
slave.chastityPenis = 0;
slave.dickTat = 0;
slave.dickPiercing = 0;
}
/* I don't trust these */
if (!hasAnyArms(slave)) {
slave.armsTat = 0;
slave.nails = 0;
slave.armAccessory = "none";
}
if (!hasAnyLegs(slave)) {
slave.heels = 0;
slave.shoes = "none";
slave.legAccessory = "none";
slave.legsTat = 0;
}
/* irregular leptin production weight gain/loss setter */
if (slave.geneticQuirks.wGain === 2 && slave.geneticQuirks.wLoss === 2) {
slave.weightDirection = either(-1, 1);
} else if (slave.geneticQuirks.wGain === 2) {
slave.weightDirection = 1;
} else if (slave.geneticQuirks.wLoss === 2) {
slave.weightDirection = -1;
} else {
slave.weightDirection = 0;
}
/* Fix some possible floating point rounding errors, and bring precision to one decimal place. */
SlaveStatClamp(slave);
slave.energy = Math.clamp(slave.energy.toFixed(1), 0, 100);
slave.attrXY = Math.clamp(slave.attrXY.toFixed(1), 0, 100);
slave.attrXX = Math.clamp(slave.attrXX.toFixed(1), 0, 100);
if (slave.fetishStrength > 95) {
slave.fetishStrength = 100;
} else {
slave.fetishStrength = Math.clamp(slave.fetishStrength.toFixed(1), 0, 100);
}
slave.weight = Math.clamp(slave.weight.toFixed(1), -100, 200);
slave.butt = Number(slave.butt.toFixed(1));
slave.muscles = Math.clamp(slave.muscles.toFixed(1), -100, 100);
slave.face = Math.clamp(slave.face.toFixed(1), -100, 100);
slave.lips = Math.clamp(slave.lips.toFixed(1), 0, 100);
slave.skill.oral = Math.clamp(slave.skill.oral.toFixed(1), 0, 100);
slave.skill.vaginal = Math.clamp(slave.skill.vaginal.toFixed(1), 0, 100);
slave.skill.anal = Math.clamp(slave.skill.anal.toFixed(1), 0, 100);
slave.skill.whoring = Math.clamp(slave.skill.whoring.toFixed(1), 0, 100);
slave.skill.entertainment = Math.clamp(slave.skill.entertainment.toFixed(1), 0, 100);
slave.lactationAdaptation = Math.clamp(slave.lactationAdaptation.toFixed(1), 0, 100);
slave.intelligenceImplant = Math.clamp(slave.intelligenceImplant.toFixed(1), 0, 30);
slave.prematureBirth = 0;
if (V.HGSuiteEquality === 1 && V.HeadGirlID !== 0 && slave.devotion > 50) {
if (slave.assignment === "live with your Head Girl") {
newHG = slave.ID;
} else if (slave.ID === V.HeadGirlID) {
oldHG = slave.ID;
}
}
/* AVERAGE VALUES UPDATE */
if (assignmentVisible(slave)) {
V.averageTrust += slave.trust;
V.averageDevotion += slave.devotion;
slavesContributing++;
} else if (
slave.assignment !== "be confined in the cellblock" &&
slave.assignment !== "be confined in the arcade" &&
(slave.assignment !== "work in the dairy" || V.dairyRestraintsSetting < 2) &&
slave.assignment !== "labor in the production line"
) {
V.averageTrust += slave.trust * 0.5;
V.averageDevotion += slave.devotion * 0.5;
slavesContributing += 0.5;
}
if (V.studio === 1) {
const activeGenres = App.Porn.getAllGenres().filter((g) => slave.porn.fame[g.fameVar] > 0);
for (const genre of activeGenres) {
V.pornStars[genre.fameVar].p1count++;
}
}
if (slave.choosesOwnAssignment > 0) {
assignJob(slave, "choose her own job");
}
}
if (slavesContributing !== 0) {
V.averageTrust = V.averageTrust / slavesContributing;
V.averageDevotion = V.averageDevotion / slavesContributing;
}
V.enduringTrust = (V.averageTrust + (V.enduringTrust * 3)) / 4;
V.enduringDevotion = (V.averageDevotion + (V.enduringDevotion * 3)) / 4;
if (oldHG !== -1 && newHG !== -1) {
const oldTimeInGrade = V.HGTimeInGrade;
// preserve time in grade during HG swaps
const keepHelpingHG = (V.personalAttention === "HG"); // keep removeJob from clearing PC HG supporting.
removeJob(getSlave(newHG), "live with your Head Girl");
assignJob(getSlave(oldHG), "live with your Head Girl");
assignJob(getSlave(newHG), "be your Head Girl");
getSlave(newHG).diet = "healthy";
V.HGTimeInGrade = oldTimeInGrade;
if (keepHelpingHG) {
V.personalAttention = "HG";
}
}
const toSearch = V.PC.refreshment.toLowerCase();
if (toSearch.indexOf("fertility") !== -1) {
V.PC.forcedFertDrugs = 1;
} else if (V.PC.forcedFertDrugs > 0) {
V.PC.forcedFertDrugs--;
}
if (V.FCTV.receiver > 0) {
if (V.FCTV.pcViewership.frequency !== -1) {
V.FCTV.pcViewership.count++;
if (V.FCTV.pcViewership.count >= V.FCTV.pcViewership.frequency) {
V.FCTV.pcViewership.count = 0;
}
}
}
V.week++;
if (V.playerSurgery > 0) {
V.playerSurgery--;
}
if (V.secExpEnabled > 0) {
if (V.foughtThisWeek === 1) {
V.foughtThisWeek = 0;
}
if (V.SecExp.buildings.riotCenter && V.SecExp.buildings.riotCenter.sentUnitCooldown > 0) {
V.SecExp.buildings.riotCenter.sentUnitCooldown--;
}
if (V.SecExp.proclamation.cooldown > 0) {
V.SecExp.proclamation.cooldown--;
}
}
App.EndWeek.weather();
if (V.boomerangWeeks) {
V.boomerangWeeks++;
} else {
V.boomerangSlave = 0;
}
if (V.traitorWeeks) {
V.traitorWeeks++;
}
V.thisWeeksFSWares = V.merchantFSWares.randomMany(2);
V.thisWeeksIllegalWares = V.merchantIllegalWares.randomMany(1);
V.prisonCircuitIndex++;
if (V.prisonCircuitIndex >= V.prisonCircuit.length) {
V.prisonCircuitIndex = 0;
}
V.coursed = 0;
V.prestigeAuctioned = 0;
V.eliteAuctioned = 0;
V.shelterSlave = 0;
V.shelterSlaveBought = 0;
V.slaveMarketLimit = 10 + (V.rep / 1000);
V.slavesSeen = 0;
V.slavesSacrificedThisWeek = 0;
if (V.pit) {
V.pit.fought = false;
}
App.EndWeek.resetUndocumentedGlobals();
// Other arrays
V.events = [];
V.RESSevent = [];
V.RESSTRevent = [];
V.RETSevent = [];
V.RECIevent = [];
V.RecETSevent = [];
V.REFIevent = [];
V.REFSevent = [];
V.PESSevent = [];
V.PETSevent = [];
V.FSAcquisitionEvents = [];
V.FSNonconformistEvents = [];
V.REAnalCowgirlSubIDs = [];
V.REButtholeCheckinIDs = [];
V.recruit = [];
V.RETasteTestSubIDs = [];
V.rebelSlaves = [];
V.REBoobCollisionSubIDs = [];
V.REIfYouEnjoyItSubIDs = [];
V.RESadisticDescriptionSubIDs = [];
V.REShowerForceSubIDs = [];
V.RECockmilkInterceptionIDs = [];
V.REInterslaveBeggingIDs = [];
V.eligibleSlaves = [];
// Slave Objects using 0 instead of null. Second most memory eaten up.
V.activeSlave = 0;
V.eventSlave = 0;
V.subSlave = 0;
V.milkTap = 0;
V.relation = 0;
V.relative = 0;
V.relative2 = 0;
// Slave Objects that never get zeroed so null them here. Second most memory eaten up.
V.beforeGingering = null;
// Strings Memory varies.
V.buyer = "";
V.desc = "";
V.event = "";
V.goto = "";
V.malefactor = "";
// Done with zeroing out, what should be for the most part Temps
if (V.autosave !== 0) {
Save.autosave.save("Week Start Autosave");
}
if (V.SF.Toggle && V.SF.FS.Tension > 100) {
if (V.rep > 17500) {
V.rep = 17500;
}
}
V.NaNArray = findNaN();
function agePCEffects() {
switch (V.PC.actualAge) {
case 3:
V.AgeTrainingLowerBoundPC = 18;
V.AgeTrainingUpperBoundPC = 20;
V.AgeEffectOnTrainerPricingPC = .1;
V.AgeEffectOnTrainerEffectivenessPC = .1;
break;
case 4:
V.AgeTrainingLowerBoundPC = 17;
V.AgeTrainingUpperBoundPC = 19;
V.AgeEffectOnTrainerPricingPC = .15;
V.AgeEffectOnTrainerEffectivenessPC = .15;
break;
case 5:
V.AgeTrainingLowerBoundPC = 16;
V.AgeTrainingUpperBoundPC = 18;
V.AgeEffectOnTrainerPricingPC = .35;
V.AgeEffectOnTrainerEffectivenessPC = .35;
break;
case 6:
V.AgeTrainingLowerBoundPC = 15;
V.AgeTrainingUpperBoundPC = 17;
V.AgeEffectOnTrainerPricingPC = .55;
V.AgeEffectOnTrainerEffectivenessPC = .55;
break;
case 7:
V.AgeTrainingLowerBoundPC = 14;
V.AgeTrainingUpperBoundPC = 16;
V.AgeEffectOnTrainerPricingPC = .75;
V.AgeEffectOnTrainerEffectivenessPC = .75;
break;
case 8:
V.AgeTrainingLowerBoundPC = 13;
V.AgeTrainingUpperBoundPC = 15;
V.AgeEffectOnTrainerPricingPC = .85;
V.AgeEffectOnTrainerEffectivenessPC = .85;
break;
case 9:
V.AgeTrainingLowerBoundPC = 12;
V.AgeTrainingUpperBoundPC = 14;
V.AgeEffectOnTrainerPricingPC = 1.00;
V.AgeEffectOnTrainerEffectivenessPC = 1.00;
break;
case 10:
V.AgeTrainingLowerBoundPC = 11;
V.AgeTrainingUpperBoundPC = 13;
V.AgeEffectOnTrainerPricingPC = 1.0005;
V.AgeEffectOnTrainerEffectivenessPC = 1.0005;
break;
case 11:
V.AgeTrainingLowerBoundPC = 10;
V.AgeTrainingUpperBoundPC = 12;
V.AgeEffectOnTrainerPricingPC = 1.01;
V.AgeEffectOnTrainerEffectivenessPC = 1.01;
break;
case 12:
V.AgeTrainingLowerBoundPC = 9;
V.AgeTrainingUpperBoundPC = 11;
V.AgeEffectOnTrainerPricingPC = 1.02;
V.AgeEffectOnTrainerEffectivenessPC = 1.02;
break;
case 13:
V.AgeTrainingLowerBoundPC = 8;
V.AgeTrainingUpperBoundPC = 10;
V.AgeEffectOnTrainerPricingPC = 1.03;
V.AgeEffectOnTrainerEffectivenessPC = 1.03;
break;
case 14:
V.AgeTrainingLowerBoundPC = 7;
V.AgeTrainingUpperBoundPC = 9;
V.AgeEffectOnTrainerPricingPC = 1.04;
V.AgeEffectOnTrainerEffectivenessPC = 1.04;
break;
case 15:
V.AgeTrainingLowerBoundPC = 6;
V.AgeTrainingUpperBoundPC = 8;
V.AgeEffectOnTrainerPricingPC = 1.05;
V.AgeEffectOnTrainerEffectivenessPC = 1.05;
break;
case 16:
V.AgeTrainingLowerBoundPC = 5;
V.AgeTrainingUpperBoundPC = 7;
V.AgeEffectOnTrainerPricingPC = 1.06;
V.AgeEffectOnTrainerEffectivenessPC = 1.06;
break;
case 17:
V.AgeTrainingLowerBoundPC = 4;
V.AgeTrainingUpperBoundPC = 6;
V.AgeEffectOnTrainerPricingPC = 1.07;
V.AgeEffectOnTrainerEffectivenessPC = 1.07;
break;
case 18:
V.AgeTrainingLowerBoundPC = 3;
V.AgeTrainingUpperBoundPC = 5;
V.AgeEffectOnTrainerPricingPC = 1.08;
V.AgeEffectOnTrainerEffectivenessPC = 1.08;
break;
}
}
};
:: Next Week [nobr]
<<run App.EndWeek.nextWeek()>>
<<goto "Main">>
App.EndWeek.resetUndocumentedGlobals = function() {
/* These are variables that either should be made into temp vars or should be Zeroed out once done with them instead of here. This can also interfere with debugging or hide NaN's as zeroing things out would clear a NaN. Also could stop from NaN's getting worse? */
/* Integer and float variables. No real need to zero them out but doesn't hurt to have them in a known state, though this might mask variables NaN'ing out. Takes up the least amount of Memory besides a "" string. */
V.i = 0;
V.j = 0;
V.averageProsperity = 0;
V.motherSlave = -1;
V.daughterSlave = -1;
V.devMother = -1;
V.devDaughter = -1;
V.alphaTwin = -1;
V.betaTwin = -1;
V.youngerSister = -1;
V.olderSister = -1;
V.boobsID = -1;
V.boobsInterestTargetID = -1;
V.buttslutID = -1;
V.buttslutInterestTargetID = -1;
V.cumslutID = -1;
V.cumslutInterestTargetID = -1;
V.humiliationID = -1;
V.humiliationInterestTargetID = -1;
V.sadistID = -1;
V.sadistInterestTargetID = -1;
V.masochistID = -1;
V.masochistInterestTargetID = -1;
V.domID = -1;
V.dominantInterestTargetID = -1;
V.subID = -1;
V.submissiveInterestTargetID = -1;
V.shelterGirlID = -1;
}
\ No newline at end of file
This diff is collapsed.
...@@ -145,40 +145,3 @@ ...@@ -145,40 +145,3 @@
<<set _WifeALisp = lispReplace(_WifeA)>> <<set _WifeALisp = lispReplace(_WifeA)>>
<<set _WivesALisp = lispReplace(_WivesA)>> <<set _WivesALisp = lispReplace(_WivesA)>>
<</widget>> <</widget>>
<<widget "AgePCEffects">>
<<switch $PC.actualAge>>
<<case 3>>
<<set $AgeTrainingLowerBoundPC = 18, $AgeTrainingUpperBoundPC = 20, $AgeEffectOnTrainerPricingPC = .1, $AgeEffectOnTrainerEffectivenessPC = .1>>
<<case 4>>
<<set $AgeTrainingLowerBoundPC = 17, $AgeTrainingUpperBoundPC = 19, $AgeEffectOnTrainerPricingPC = .15, $AgeEffectOnTrainerEffectivenessPC = .15>>
<<case 5>>
<<set $AgeTrainingLowerBoundPC = 16, $AgeTrainingUpperBoundPC = 18, $AgeEffectOnTrainerPricingPC = .35, $AgeEffectOnTrainerEffectivenessPC = .35>>
<<case 6>>
<<set $AgeTrainingLowerBoundPC = 15, $AgeTrainingUpperBoundPC = 17, $AgeEffectOnTrainerPricingPC = .55, $AgeEffectOnTrainerEffectivenessPC = .55>>
<<case 7>>
<<set $AgeTrainingLowerBoundPC = 14, $AgeTrainingUpperBoundPC = 16, $AgeEffectOnTrainerPricingPC = .75, $AgeEffectOnTrainerEffectivenessPC = .75>>
<<case 8>>
<<set $AgeTrainingLowerBoundPC = 13, $AgeTrainingUpperBoundPC = 15, $AgeEffectOnTrainerPricingPC = .85, $AgeEffectOnTrainerEffectivenessPC = .85>>
<<case 9>>
<<set $AgeTrainingLowerBoundPC = 12, $AgeTrainingUpperBoundPC = 14, $AgeEffectOnTrainerPricingPC = 1.00, $AgeEffectOnTrainerEffectivenessPC = 1.00>>
<<case 10>>
<<set $AgeTrainingLowerBoundPC = 11, $AgeTrainingUpperBoundPC = 13, $AgeEffectOnTrainerPricingPC = 1.0005, $AgeEffectOnTrainerEffectivenessPC = 1.0005>>
<<case 11>>
<<set $AgeTrainingLowerBoundPC = 10, $AgeTrainingUpperBoundPC = 12, $AgeEffectOnTrainerPricingPC = 1.01, $AgeEffectOnTrainerEffectivenessPC = 1.01>>
<<case 12>>
<<set $AgeTrainingLowerBoundPC = 9, $AgeTrainingUpperBoundPC = 11, $AgeEffectOnTrainerPricingPC = 1.02, $AgeEffectOnTrainerEffectivenessPC = 1.02>>
<<case 13>>
<<set $AgeTrainingLowerBoundPC = 8, $AgeTrainingUpperBoundPC = 10, $AgeEffectOnTrainerPricingPC = 1.03, $AgeEffectOnTrainerEffectivenessPC = 1.03>>
<<case 14>>
<<set $AgeTrainingLowerBoundPC = 7, $AgeTrainingUpperBoundPC = 9, $AgeEffectOnTrainerPricingPC = 1.04, $AgeEffectOnTrainerEffectivenessPC = 1.04>>
<<case 15>>
<<set $AgeTrainingLowerBoundPC = 6, $AgeTrainingUpperBoundPC = 8, $AgeEffectOnTrainerPricingPC = 1.05, $AgeEffectOnTrainerEffectivenessPC = 1.05>>
<<case 16>>
<<set $AgeTrainingLowerBoundPC = 5, $AgeTrainingUpperBoundPC = 7, $AgeEffectOnTrainerPricingPC = 1.06, $AgeEffectOnTrainerEffectivenessPC = 1.06>>
<<case 17>>
<<set $AgeTrainingLowerBoundPC = 4, $AgeTrainingUpperBoundPC = 6, $AgeEffectOnTrainerPricingPC = 1.07, $AgeEffectOnTrainerEffectivenessPC = 1.07>>
<<case 18>>
<<set $AgeTrainingLowerBoundPC = 3, $AgeTrainingUpperBoundPC = 5, $AgeEffectOnTrainerPricingPC = 1.08, $AgeEffectOnTrainerEffectivenessPC = 1.08>>
<</switch>>
<</widget>>
:: Next Week [nobr]
<<set $HackingSkillMultiplier = upgradeMultiplier('hacking')>>
<<set $upgradeMultiplierArcology = upgradeMultiplier('engineering')>>
<<set $upgradeMultiplierMedicine = upgradeMultiplier('medicine')>>
<<set $upgradeMultiplierTrade = upgradeMultiplier('trading')>>
<<if $rivalOwner != 0>>
<<set _rival = $arcologies.find(function(s) { return s.rival == 1; })>>
<<if def _rival>>
<<set $rivalOwner = _rival.prosperity>>
<</if>>
<</if>>
<<if $playerAging != 0>>
<<set $PC.birthWeek += 1>>
<<if $PC.ovaryAge >= 47 && $PC.ovaries == 1 && ($PC.preg == -1 || $PC.preg == 0)>>
<<set $PC.preg = -2>>
<</if>>
<<if $PC.birthWeek >= 52>>
<<set $PC.birthWeek = 0>>
<<if $playerAging == 2>>
<<set $PC.physicalAge++, $PC.actualAge++, $PC.visualAge++, $PC.ovaryAge++>>
<<AgePCEffects>>
<</if>>
<</if>>
<</if>>
<<if $menstruation == 1>>
<<elseif $PC.geneticQuirks.superfetation == 2 && $PC.womb.length > 0>>
<<if $PC.fertPeak == 0>>
<<set $PC.fertPeak = 1>>
<</if>>
<<set $PC.fertPeak-->>
<<elseif $PC.fertPeak != 0>>
<<set $PC.fertPeak = 0>>
<</if>>
/*Adding random changes to the economy*/
<<if $difficultySwitch == 1>>
<<set _globalEconSeed = random(1,100)>>
<<if _globalEconSeed > 98>>
<<set $economy += 2>>
<<elseif _globalEconSeed > 85>>
<<set $economy += 1>>
<<elseif _globalEconSeed <= 2>>
<<set $economy -= 2>>
<<elseif _globalEconSeed <= 25 + $econRate * 10>>
<<set $economy -= 1>>
<</if>>
<<if $economy < 20>>
<<set $economy = 20>>
<</if>>
<<set _localEconSeed = random(1,100)>>
<<if $localEcon <= ($economy + $econAdvantage)>>
<<if _localEconSeed > 95>>
<<set $localEcon += 2>>
<<elseif _localEconSeed > 50>>
<<set $localEcon += 1>>
<<elseif _localEconSeed <= 1>>
<<set $localEcon -= 2>>
<<elseif _localEconSeed <= 10>>
<<set $localEcon -= 1>>
<</if>>
<<elseif $localEcon <= ($economy + $econAdvantage + 5)>>
<<if _localEconSeed > 98>>
<<set $localEcon += 2>>
<<elseif _localEconSeed > 66>>
<<set $localEcon += 1>>
<<elseif _localEconSeed <= 2>>
<<set $localEcon -= 2>>
<<elseif _localEconSeed <= 33>>
<<set $localEcon -= 1>>
<</if>>
<<elseif _localEconSeed > 99>>
<<set $localEcon += 2>>
<<elseif _localEconSeed > 90>>
<<set $localEcon += 1>>
<<elseif _localEconSeed <= 5>>
<<set $localEcon -= 2>>
<<elseif _localEconSeed <= 50>>
<<set $localEcon -= 1>>
<</if>>
<<if $localEcon < 20>>
<<set $localEcon = 20>>
<</if>>
<<if $experimental.food == 1>>
<<if $localEcon > 100>>
<<set $farmyardFoodCost = Math.max(5 / (1 + (Math.trunc(1000-100000/$localEcon)/10)/100), 3.125)>>
<<elseif $localEcon == 100>>
<<set $farmyardFoodCost = 5 >>
<<else>>
<<set $farmyardFoodCost = Math.min(5 * (1 + 1.5 * Math.sqrt(Math.trunc(100000/$localEcon-1000)/10)/100), 6.5)>>
<</if>>
<</if>>
<<set $foodCost = Math.trunc(2500/$localEcon)>>
<<set $drugsCost = Math.trunc(10000/$localEcon)>>
<<set $rulesCost = Math.trunc(10000/$localEcon)>>
<<set $modCost = Math.trunc(5000/$localEcon)>>
<<set $surgeryCost = Math.trunc(30000/($localEcon * ($PC.career === "medicine" ? 2 : 1)))>>
<</if>>
<<set $arcologies[0].prosperity = Math.clamp($arcologies[0].prosperity, 1, $AProsperityCap)>>
<<set $averageTrust = 0, $averageDevotion = 0, _slavesContributing = 0, _OldHG = -1, _NewHG = -1, _SL = $slaves.length>>
<<if $studio == 1>>
<<for _genre range App.Porn.getAllGenres()>>
<<set $pornStars[_genre.fameVar].p1count = 0>>
<</for>>
<</if>>
<<for _i = 0; _i < _SL; _i++>>
<<if def $slaves[_i].curBabies>>
<<run delete $slaves[_i].curBabies>>
<</if>>
<<run ageSlaveWeeks($slaves[_i])>>
<<if $slaves[_i].indenture > 0>>
<<set $slaves[_i].indenture -= 1>>
<</if>>
<<if $slaves[_i].induceLactation > 0>>
<<set $slaves[_i].induceLactation-->>
<</if>>
<<if ($slaves[_i].lactation == 1)>>
<<if $slaves[_i].lactationDuration == 1>>
<<set $slaves[_i].boobsMilk = 10*$slaves[_i].lactationAdaptation>>
<<set $slaves[_i].boobs += $slaves[_i].boobsMilk>>
<</if>>
<</if>>
<<if $menstruation == 1>>
<<elseif $slaves[_i].geneticQuirks.superfetation == 2 && $slaves[_i].womb.length > 0>>
<<if $slaves[_i].fertPeak == 0>>
<<set $slaves[_i].fertPeak = 1>>
<</if>>
<<set $slaves[_i].fertPeak-->>
<<elseif $slaves[_i].fertPeak != 0>>
<<set $slaves[_i].fertPeak = 0>>
<</if>>
<<set $slaves[_i].trust = Number($slaves[_i].trust.toFixed(1)), $slaves[_i].devotion = Number($slaves[_i].devotion.toFixed(1))>>
<<set $slaves[_i].oldDevotion = $slaves[_i].devotion, $slaves[_i].oldTrust = $slaves[_i].trust, $slaves[_i].minorInjury = 0>>
<<if $slaves[_i].sentence > 1>>
<<set $slaves[_i].sentence -= 1>>
<<elseif $slaves[_i].sentence == 1>>
<<= removeJob($slaves[_i], $slaves[_i].assignment)>>
<</if>>
<<if $slaves[_i].weekAcquired < 0>>
<<set $slaves[_i].weekAcquired = 0>>
<</if>>
<<if $slaves[_i].relationship == 0>>
<<set $slaves[_i].relationshipTarget = 0>>
<</if>>
<<if $slaves[_i].rivalry == 0>>
<<set $slaves[_i].rivalryTarget = 0>>
<<elseif $slaves[_i].rivalry < 0>>
<<set $slaves[_i].rivalryTarget = 0, $slaves[_i].rivalry = 0>>
<</if>>
<<if $slaves[_i].vagina < 0>>
<<set $slaves[_i].vaginalAccessory = "none", $slaves[_i].chastityVagina = 0, $slaves[_i].vaginaPiercing = 0>>
<</if>>
<<if $slaves[_i].dick == 0>>
<<set $slaves[_i].dickAccessory = "none", $slaves[_i].chastityPenis = 0, $slaves[_i].dickTat = 0, $slaves[_i].dickPiercing = 0>>
<</if>>
/* I don't trust these */
<<if !hasAnyArms($slaves[_i])>>
<<set $slaves[_i].armsTat = 0, $slaves[_i].nails = 0, $slaves[_i].armAccessory = "none">>
<</if>>
<<if !hasAnyLegs($slaves[_i])>>
<<set $slaves[_i].heels = 0, $slaves[_i].shoes = "none", $slaves[_i].legAccessory = "none", $slaves[_i].legsTat = 0>>
<</if>>
/* irregular leptin production weight gain/loss setter */
<<if $slaves[_i].geneticQuirks.wGain == 2 && $slaves[_i].geneticQuirks.wLoss == 2>>
<<set $slaves[_i].weightDirection = either(-1, 1)>>
<<elseif $slaves[_i].geneticQuirks.wGain == 2>>
<<set $slaves[_i].weightDirection = 1>>
<<elseif $slaves[_i].geneticQuirks.wLoss == 2>>
<<set $slaves[_i].weightDirection = -1>>
<<else>>
<<set $slaves[_i].weightDirection = 0>>
<</if>>
/% Fix some possible floating point rounding errors, and bring precision to one decimal place. %/
<<run SlaveStatClamp($slaves[_i])>>
<<set $slaves[_i].energy = Math.clamp($slaves[_i].energy.toFixed(1), 0, 100)>>
<<set $slaves[_i].attrXY = Math.clamp($slaves[_i].attrXY.toFixed(1), 0, 100)>>
<<set $slaves[_i].attrXX = Math.clamp($slaves[_i].attrXX.toFixed(1), 0, 100)>>
<<if $slaves[_i].fetishStrength > 95>>
<<set $slaves[_i].fetishStrength = 100>>
<<else>>
<<set $slaves[_i].fetishStrength = Math.clamp($slaves[_i].fetishStrength.toFixed(1), 0, 100)>>
<</if>>
<<set $slaves[_i].weight = Math.clamp($slaves[_i].weight.toFixed(1), -100, 200)>>
<<set $slaves[_i].butt = Number($slaves[_i].butt.toFixed(1))>>
<<set $slaves[_i].muscles = Math.clamp($slaves[_i].muscles.toFixed(1), -100, 100)>>
<<set $slaves[_i].face = Math.clamp($slaves[_i].face.toFixed(1), -100, 100)>>
<<set $slaves[_i].lips = Math.clamp($slaves[_i].lips.toFixed(1), 0, 100)>>
<<set $slaves[_i].skill.oral = Math.clamp($slaves[_i].skill.oral.toFixed(1), 0, 100)>>
<<set $slaves[_i].skill.vaginal = Math.clamp($slaves[_i].skill.vaginal.toFixed(1), 0, 100)>>
<<set $slaves[_i].skill.anal = Math.clamp($slaves[_i].skill.anal.toFixed(1), 0, 100)>>
<<set $slaves[_i].skill.whoring = Math.clamp($slaves[_i].skill.whoring.toFixed(1), 0, 100)>>
<<set $slaves[_i].skill.entertainment = Math.clamp($slaves[_i].skill.entertainment.toFixed(1), 0, 100)>>
<<set $slaves[_i].lactationAdaptation = Math.clamp($slaves[_i].lactationAdaptation.toFixed(1), 0, 100)>>
<<set $slaves[_i].intelligenceImplant = Number($slaves[_i].intelligenceImplant.toFixed(1), 0, 30)>>
<<set $slaves[_i].prematureBirth = 0>>
<<if ($HGSuiteEquality == 1) && ($HeadGirlID != 0) && ($slaves[_i].devotion > 50)>>
<<if ($slaves[_i].assignment == "live with your Head Girl")>>
<<set _NewHG = _i>>
<<elseif ($slaves[_i].ID == $HeadGirlID)>>
<<set _OldHG = _i>>
<</if>>
<</if>>
/* AVERAGE VALUES UPDATE */
<<if assignmentVisible($slaves[_i])>>
<<set $averageTrust += $slaves[_i].trust, $averageDevotion += $slaves[_i].devotion, _slavesContributing++>>
<<elseif ($slaves[_i].assignment != "be confined in the cellblock") && ($slaves[_i].assignment != "be confined in the arcade") && (($slaves[_i].assignment != "work in the dairy") || ($dairyRestraintsSetting < 2)) && $slaves[_i].assignment != "labor in the production line">>
<<set $averageTrust += $slaves[_i].trust*0.5, $averageDevotion += $slaves[_i].devotion*0.5, _slavesContributing += 0.5>>
<</if>>
<<if $studio == 1>>
<<set _activeGenres = App.Porn.getAllGenres().filter((g) => $slaves[_i].porn.fame[g.fameVar] > 0)>>
<<for _genre range _activeGenres>>
<<set $pornStars[_genre.fameVar].p1count++>>
<</for>>
<</if>>
<<if $slaves[_i].choosesOwnAssignment > 0>>
<<= assignJob($slaves[_i], "choose her own job")>>
<</if>>
<</for>>
<<if _slavesContributing != 0>>
<<set $averageTrust = $averageTrust/_slavesContributing>>
<<set $averageDevotion = $averageDevotion/_slavesContributing>>
<</if>>
<<set $enduringTrust = ($averageTrust+($enduringTrust*3))/4>>
<<set $enduringDevotion = ($averageDevotion+($enduringDevotion*3))/4>>
<<if (_OldHG != -1) && (_NewHG != -1)>>
<<set _oldTimeInGrade = $HGTimeInGrade>> /* preserve time in grade during HG swaps */
<<if $personalAttention == "HG">>
/* keep removeJob from clearing PC HG supporting. */
<<set _keepHelpingHG = 1>>
<</if>>
<<= removeJob($slaves[_NewHG], "live with your Head Girl")>>
<<= assignJob($slaves[_OldHG], "live with your Head Girl")>>
<<= assignJob($slaves[_NewHG], "be your Head Girl")>>
<<set $slaves[_NewHG].diet = "healthy", $HGTimeInGrade = _oldTimeInGrade>>
<<if _keepHelpingHG>>
<<set $personalAttention = "HG">>
<</if>>
<</if>>
<<set _toSearch = $PC.refreshment.toLowerCase()>>
<<if _toSearch.indexOf("fertility") != -1>>
<<set $PC.forcedFertDrugs = 1>>
<<elseif $PC.forcedFertDrugs > 0>>
<<set $PC.forcedFertDrugs-->>
<</if>>
<<if $FCTV.receiver > 0>>
<<if $FCTV.pcViewership.frequency != -1>>
<<set $FCTV.pcViewership.count++>>
<<if $FCTV.pcViewership.count >= $FCTV.pcViewership.frequency>>
<<set $FCTV.pcViewership.count = 0>>
<</if>>
<</if>>
<</if>>
<<set $week++>>
<<if $playerSurgery > 0>>
<<set $playerSurgery-->>
<</if>>
<<if $secExpEnabled > 0>>
<<if $foughtThisWeek == 1>>
<<set $foughtThisWeek = 0>>
<</if>>
<<if $SecExp.buildings.riotCenter && $SecExp.buildings.riotCenter.sentUnitCooldown > 0>>
<<set $SecExp.buildings.riotCenter.sentUnitCooldown-->>
<</if>>
<<if $SecExp.proclamation.cooldown > 0>>
<<set $SecExp.proclamation.cooldown-->>
<</if>>
<</if>>
<<include "Weather">>
<<if $boomerangWeeks>><<set $boomerangWeeks++>><<else>><<set $boomerangSlave = 0>><</if>>
<<if $traitorWeeks>><<set $traitorWeeks++>><</if>>
<<set $thisWeeksFSWares = $merchantFSWares.randomMany(2)>>
<<set $thisWeeksIllegalWares = $merchantIllegalWares.randomMany(1)>>
<<set $prisonCircuitIndex++>><<if $prisonCircuitIndex >= $prisonCircuit.length>><<set $prisonCircuitIndex = 0>><</if>>
<<set $coursed = 0, $prestigeAuctioned = 0, $eliteAuctioned = 0, $shelterSlave = 0, $shelterSlaveBought = 0, $slaveMarketLimit = 10 + ($rep / 1000), $slavesSeen = 0, $slavesSacrificedThisWeek = 0>>
<<if $pit>>
<<set $pit.fought = false>>
<</if>>
/% These are variables that either should be made into _temp vars or should be Zeroed out once done with them instead of here. This can also interfere with debugging or hide NaN's as zeroing things out would clear a NaN. Also could stop from NaN's getting worse? %/
/% Integer and float variables. No real need to zero them out but doesn't hurt to have them in a known state, though this might mask variables NaN'ing out. Takes up the least amount of Memory besides a "" string. %/
<<set $i = 0, $j = 0, $averageProsperity = 0, $motherSlave = -1, $daughterSlave = -1, $devMother = -1, $devDaughter = -1, $alphaTwin = -1, $betaTwin = -1, $youngerSister = -1, $olderSister = -1>>
<<set $boobsID = -1, $boobsInterestTargetID = -1, $buttslutID = -1, $buttslutInterestTargetID = -1, $cumslutID = -1, $cumslutInterestTargetID = -1, $humiliationID = -1, $humiliationInterestTargetID = -1, $sadistID = -1, $sadistInterestTargetID = -1, $masochistID = -1, $masochistInterestTargetID = -1, $domID = -1, $dominantInterestTargetID = -1, $subID = -1, $submissiveInterestTargetID = -1, $shelterGirlID = -1>>
/% Other arrays %/
<<set $events = [], $RESSevent = [], $RESSTRevent = [], $RETSevent = [], $RECIevent = [], $RecETSevent = [], $REFIevent = [], $REFSevent = [], $PESSevent = [], $PETSevent = [], $FSAcquisitionEvents = [], $FSNonconformistEvents = [], $REAnalCowgirlSubIDs = [], $REButtholeCheckinIDs = [], $recruit = [], $RETasteTestSubIDs = [], $rebelSlaves = [], $REBoobCollisionSubIDs = [], $REIfYouEnjoyItSubIDs = [], $RESadisticDescriptionSubIDs = [], $REShowerForceSubIDs = [], $RECockmilkInterceptionIDs = [], $REInterslaveBeggingIDs = [], $eligibleSlaves = []>>
/% Slave Objects using 0 instead of null. Second most memory eaten up. %/
<<set $activeSlave = 0, $eventSlave = 0, $subSlave = 0, $milkTap = 0, $relation = 0, $relative = 0, $relative2 = 0>>
/% Slave Objects that never get zeroed so null them here. Second most memory eaten up. %/
<<set $beforeGingering = null>>
/% Strings Memory varies. %/
<<set $buyer = "", $desc = "", $event = "", $goto = "", $malefactor = "">>
/% Done with zeroing out, what should be for the most part Temps %/
<<if $autosave != 0>>
<<script>>Save.autosave.save("Week Start Autosave")<</script>>
<</if>>
<<if $SF.Toggle && $SF.FS.Tension > 100>>
<<if ($rep > 17500)>> <<set $rep = 17500>> <</if>>
<</if>>
<<set $NaNArray = findNaN()>>
<<goto "Main">>
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment