diff --git a/devNotes/twine JS.txt b/devNotes/twine JS.txt index f0051b1444faacc4020154320b4e4a53f45bcf1b..80cd464ea9020e74152972e8757df4bbc9973d25 100644 --- a/devNotes/twine JS.txt +++ b/devNotes/twine JS.txt @@ -30622,6 +30622,126 @@ window.disabilityRoll = function disabilityRoll(slave) { V.oneTimeDisableDisability = 0; }; +window.generateNationality = function generateNationality(slave) { + const V = State.variables; + + if (V.fixedRace == 0) { + if (V.fixedNationality == 0) { + slave.nationality = hashChoice(V.nationalities); + } else { + slave.nationality = V.fixedNationality; + V.fixedNationality = 0; + } + nationalityToRace(slave); + + if (passage() == "Corporate Market" && (V.captureUpgradeRace != "unselected") && (V.captureUpgradeRace != "none")) { + if (V.captureUpgradeRace == "mixed race") { + slave.race = "mixed race"; + } else { + const capUpgradeCheck = setup[V.captureUpgradeRace.toLowerCase().replace(/[ -]/g, '')+'Nationalities']; + const keys = Object.keys(capUpgradeCheck); + var capUpgradeNationalities = {}; + for (var i = 0; i < keys.length; i++) { + if (keys[i] in V.nationalities) { + capUpgradeNationalities[keys[i]] = capUpgradeCheck[keys[i]]; + } + } + if (Object.keys(capUpgradeNationalities).length > 0) { + slave.nationality = hashChoice(capUpgradeNationalities); + } else { + slave.nationality = hashChoice(capUpgradeCheck); + } + slave.race = V.captureUpgradeRace; + } + } + + } else { + switch (V.fixedRace) { + case "white": + slave.nationality = hashChoice(setup.whiteNationalities); + break; + case "asian": + slave.nationality = hashChoice(setup.asianNationalities); + break; + case "latina": + slave.nationality = hashChoice(setup.latinaNationalities); + break; + case "black": + slave.nationality = hashChoice(setup.blackNationalities); + break; + case "pacific islander": + slave.nationality = hashChoice(setup.pacificislanderNationalities); + break; + case "southern european": + slave.nationality = hashChoice(setup.southerneuropeanNationalities); + break; + case "amerindian": + slave.nationality = hashChoice(setup.amerindianNationalities); + break; + case "semitic": + slave.nationality = hashChoice(setup.semiticNationalities); + break; + case "middle eastern": + slave.nationality = hashChoice(setup.middleeasternNationalities); + break; + case "indo-aryan": + slave.nationality = hashChoice(setup.indoaryanNationalities); + break; + case "malay": + slave.nationality = hashChoice(setup.malayNationalities); + break; + default: + slave.nationality = hashChoice(V.nationalities); + } + slave.race = V.fixedRace; + V.fixedRace = 0; + } +}; + +window.generateIntelligence = function generateIntelligence(slave) { + const gaussian = gaussianPair(); + slave.intelligence = Intelligence.random(); + if (State.variables.AgePenalty == 1 && slave.actualAge <= 24) { + if (gaussian[0] < gaussian[1] + slave.intelligence/29 + (slave.actualAge - 24)/8 - 0.35) { + slave.intelligenceImplant = 15; + if (slave.intelligenceImplant > 0 && jsRandom(15,150) < slave.intelligence) { + slave.intelligenceImplant = 30; + } + } + } else { + if (gaussian[0] < gaussian[1] + slave.intelligence/29 - 0.35) { /* 40.23% chance if intelligence is 0, 99.26% chance if intelligence is 100 */ + slave.intelligenceImplant = 15; + if (slave.intelligenceImplant > 0 && jsRandom(15,150) < slave.intelligence) { + slave.intelligenceImplant = 30; + } + } + } +}; + +window.generateCareer = function generateCareer(slave) { + if (State.variables.AgePenalty == 1) { + if (slave.actualAge < 16) { + slave.career = setup.veryYoungCareers.random(); + } else if (slave.actualAge <= 24) { + slave.career = setup.youngCareers.random(); + } else if (slave.intelligenceImplant >= 15) { + slave.career = setup.educatedCareers.random(); + } else { + slave.career = setup.uneducatedCareers.random(); + } + } else { + if (slave.actualAge < 16) { + slave.career = setup.veryYoungCareers.random(); + } else if (slave.intelligenceImplant >= 15) { + slave.career = setup.educatedCareers.random(); + } else if (slave.actualAge <= 24) { + slave.career = setup.youngCareers.random(); + } else { + slave.career = setup.uneducatedCareers.random(); + } + } +}; + /*SecForceEX JS*/ window.SFC = function() { const V = State.variables; diff --git a/src/js/slaveGenerationJS.tw b/src/js/slaveGenerationJS.tw index 34ca0c6415a616b9c1ef84dd05e7397b601d3c08..49d8ebb991c7db82e3389fa6f547355b8e6eb8b3 100644 --- a/src/js/slaveGenerationJS.tw +++ b/src/js/slaveGenerationJS.tw @@ -1335,3 +1335,123 @@ window.disabilityRoll = function disabilityRoll(slave) { } V.oneTimeDisableDisability = 0; }; + +window.generateNationality = function generateNationality(slave) { + const V = State.variables; + + if (V.fixedRace == 0) { + if (V.fixedNationality == 0) { + slave.nationality = hashChoice(V.nationalities); + } else { + slave.nationality = V.fixedNationality; + V.fixedNationality = 0; + } + nationalityToRace(slave); + + if (passage() == "Corporate Market" && (V.captureUpgradeRace != "unselected") && (V.captureUpgradeRace != "none")) { + if (V.captureUpgradeRace == "mixed race") { + slave.race = "mixed race"; + } else { + const capUpgradeCheck = setup[V.captureUpgradeRace.toLowerCase().replace(/[ -]/g, '')+'Nationalities']; + const keys = Object.keys(capUpgradeCheck); + var capUpgradeNationalities = {}; + for (var i = 0; i < keys.length; i++) { + if (keys[i] in V.nationalities) { + capUpgradeNationalities[keys[i]] = capUpgradeCheck[keys[i]]; + } + } + if (Object.keys(capUpgradeNationalities).length > 0) { + slave.nationality = hashChoice(capUpgradeNationalities); + } else { + slave.nationality = hashChoice(capUpgradeCheck); + } + slave.race = V.captureUpgradeRace; + } + } + + } else { + switch (V.fixedRace) { + case "white": + slave.nationality = hashChoice(setup.whiteNationalities); + break; + case "asian": + slave.nationality = hashChoice(setup.asianNationalities); + break; + case "latina": + slave.nationality = hashChoice(setup.latinaNationalities); + break; + case "black": + slave.nationality = hashChoice(setup.blackNationalities); + break; + case "pacific islander": + slave.nationality = hashChoice(setup.pacificislanderNationalities); + break; + case "southern european": + slave.nationality = hashChoice(setup.southerneuropeanNationalities); + break; + case "amerindian": + slave.nationality = hashChoice(setup.amerindianNationalities); + break; + case "semitic": + slave.nationality = hashChoice(setup.semiticNationalities); + break; + case "middle eastern": + slave.nationality = hashChoice(setup.middleeasternNationalities); + break; + case "indo-aryan": + slave.nationality = hashChoice(setup.indoaryanNationalities); + break; + case "malay": + slave.nationality = hashChoice(setup.malayNationalities); + break; + default: + slave.nationality = hashChoice(V.nationalities); + } + slave.race = V.fixedRace; + V.fixedRace = 0; + } +}; + +window.generateIntelligence = function generateIntelligence(slave) { + const gaussian = gaussianPair(); + slave.intelligence = Intelligence.random(); + if (State.variables.AgePenalty == 1 && slave.actualAge <= 24) { + if (gaussian[0] < gaussian[1] + slave.intelligence/29 + (slave.actualAge - 24)/8 - 0.35) { + slave.intelligenceImplant = 15; + if (slave.intelligenceImplant > 0 && jsRandom(15,150) < slave.intelligence) { + slave.intelligenceImplant = 30; + } + } + } else { + if (gaussian[0] < gaussian[1] + slave.intelligence/29 - 0.35) { /* 40.23% chance if intelligence is 0, 99.26% chance if intelligence is 100 */ + slave.intelligenceImplant = 15; + if (slave.intelligenceImplant > 0 && jsRandom(15,150) < slave.intelligence) { + slave.intelligenceImplant = 30; + } + } + } +}; + +window.generateCareer = function generateCareer(slave) { + if (State.variables.AgePenalty == 1) { + if (slave.actualAge < 16) { + slave.career = setup.veryYoungCareers.random(); + } else if (slave.actualAge <= 24) { + slave.career = setup.youngCareers.random(); + } else if (slave.intelligenceImplant >= 15) { + slave.career = setup.educatedCareers.random(); + } else { + slave.career = setup.uneducatedCareers.random(); + } + } else { + if (slave.actualAge < 16) { + slave.career = setup.veryYoungCareers.random(); + } else if (slave.intelligenceImplant >= 15) { + slave.career = setup.educatedCareers.random(); + } else if (slave.actualAge <= 24) { + slave.career = setup.youngCareers.random(); + } else { + slave.career = setup.uneducatedCareers.random(); + } + } +}; diff --git a/src/npc/acquisition.tw b/src/npc/acquisition.tw index 4521c5294559120d53029802b8d0326b7a9aad16..c716220f5827544ab5f7e8b3b2d48cdef73cc71e 100644 --- a/src/npc/acquisition.tw +++ b/src/npc/acquisition.tw @@ -684,8 +684,10 @@ The previous owner seems to have left in something of a hurry. <</for>> <</for>> <</if>> -<<set $averageTrust = $averageTrust/_slavesContributing>> -<<set $averageDevotion = $averageDevotion/_slavesContributing>> +<<if _slavesContributing != 0>> + <<set $averageTrust = $averageTrust/_slavesContributing>> + <<set $averageDevotion = $averageDevotion/_slavesContributing>> +<</if>> <<set $enduringTrust = $averageTrust>> <<set $enduringDevotion = $averageDevotion>> diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw index 4957ab1e9ae70cebf1104e1b9f3c29a41ec8b705..f411dd07205d15d6dc547739398cd2777ae0a678 100644 --- a/src/uncategorized/BackwardsCompatibility.tw +++ b/src/uncategorized/BackwardsCompatibility.tw @@ -205,7 +205,10 @@ <<if def $vaginaTotal>> <<unset $vaginaTotal>> <</if>> - +<<set $enduringTrust = Number($enduringTrust) || 0>> +<<set $enduringDevotion = Number($enduringDevotion) || 0>> +<<set $averageTrust = Number($averageTrust) || 0>> +<<set $averageDevotion = Number($averageDevotion) || 0>> /* pregmod stuff */ diff --git a/src/uncategorized/generateXXSlave.tw b/src/uncategorized/generateXXSlave.tw index 6b664774f62540e109d1b858ac85b871e51c3f8f..b84d7aad72dfaf190119ee7f28959328e8ccdd14 100644 --- a/src/uncategorized/generateXXSlave.tw +++ b/src/uncategorized/generateXXSlave.tw @@ -27,36 +27,8 @@ <<set $activeSlave.ID = $IDNumber++>> <<set $activeSlave.weekAcquired = $week>> -<<set _gaussianPair = gaussianPair()>> -<<set $activeSlave.intelligence = Intelligence.random()>> -<<if _gaussianPair[0] < _gaussianPair[1] + $activeSlave.intelligence/29 - 0.35>> /* 40.23% chance if intelligence is 0, 99.26% chance if intelligence is 100 */ - <<set $activeSlave.intelligenceImplant = 15>> - <<if random(15,150) < $activeSlave.intelligence>> - <<set $activeSlave.intelligenceImplant = 30>> - <</if>> -<</if>> - -<<if $AgePenalty == 1>> - <<if ($activeSlave.actualAge < 16)>> - <<set $activeSlave.career = setup.veryYoungCareers.random()>> - <<elseif ($activeSlave.actualAge <= 24)>> - <<set $activeSlave.career = setup.youngCareers.random()>> - <<elseif ($activeSlave.intelligenceImplant >= 15)>> - <<set $activeSlave.career = setup.educatedCareers.random()>> - <<else>> - <<set $activeSlave.career = setup.uneducatedCareers.random()>> - <</if>> -<<else>> - <<if ($activeSlave.actualAge < 16)>> - <<set $activeSlave.career = setup.veryYoungCareers.random()>> - <<elseif ($activeSlave.intelligenceImplant >= 15)>> - <<set $activeSlave.career = setup.educatedCareers.random()>> - <<elseif ($activeSlave.actualAge <= 24)>> - <<set $activeSlave.career = setup.youngCareers.random()>> - <<else>> - <<set $activeSlave.career = setup.uneducatedCareers.random()>> - <</if>> -<</if>> +<<run generateIntelligence($activeSlave)>> +<<run generateCareer($activeSlave)>> <<set $activeSlave.vaginalSkill = random(0,15)>> <<set $activeSlave.analSkill = random(0,15)>> @@ -89,69 +61,7 @@ /% Begin height replacement section. %/ /% Since we use nationality for height effects we need to initialize it now instead of later on like in vanilla Free Cities. %/ -<<if $fixedRace == 0>> - <<if $fixedNationality == 0>> - <<set $activeSlave.nationality = hashChoice($nationalities)>> - <<else>> - <<set $activeSlave.nationality = $fixedNationality>> - <<set $fixedNationality = 0>> - <</if>> - <<run nationalityToRace($activeSlave)>> - /* Corporate slavegen with race selection */ - <<if passage() == "Corporate Market" && ($captureUpgradeRace != "unselected") && ($captureUpgradeRace != "none")>> - <<if $captureUpgradeRace == "mixed race">> - <<set $activeSlave.race = "mixed race">> - <<else>> - <<set _capUpgradeCheck = setup[$captureUpgradeRace.toLowerCase().replace(/[ -]/g, '')+'Nationalities']>> - <<set _capUpgradeNationalities = {}>> - <<set _keys = Object.keys(_capUpgradeCheck)>> - <<for _u = 0; _u < _keys.length; _u++>> - <<set _capNation = _keys[_u]>> - <<if _capNation in $nationalities>> - <<set _capUpgradeNationalities[_capNation] = _capUpgradeCheck[_capNation]>> - <</if>> - <</for>> - <<if Object.keys(_capUpgradeNationalities).length > 0>> - <<set $activeSlave.nationality = hashChoice(_capUpgradeNationalities), $activeSlave.race = $captureUpgradeRace>> - <<else>> - <<set $activeSlave.nationality = hashChoice(_capUpgradeCheck), $activeSlave.race = $captureUpgradeRace>> - <</if>> - <</if>> - <<if $activeSlave.race != $captureUpgradeRace>> - <<set $activeSlave.race = $captureUpgradeRace>> - <</if>> - <</if>> - /*end Corporate slavegen with race selection */ -<<else>> - <<switch $fixedRace>> - <<case "white">> - <<set $activeSlave.nationality = hashChoice(setup.whiteNationalities)>> - <<case "asian">> - <<set $activeSlave.nationality = hashChoice(setup.asianNationalities)>> - <<case "latina">> - <<set $activeSlave.nationality = hashChoice(setup.latinaNationalities)>> - <<case "black">> - <<set $activeSlave.nationality = hashChoice(setup.blackNationalities)>> - <<case "pacific islander">> - <<set $activeSlave.nationality = hashChoice(setup.pacificislanderNationalities)>> - <<case "southern european">> - <<set $activeSlave.nationality = hashChoice(setup.southerneuropeanNationalities)>> - <<case "amerindian">> - <<set $activeSlave.nationality = hashChoice(setup.amerindianNationalities)>> - <<case "semitic">> - <<set $activeSlave.nationality = hashChoice(setup.semiticNationalities)>> - <<case "middle eastern">> - <<set $activeSlave.nationality = hashChoice(setup.middleeasternNationalities)>> - <<case "indo-aryan">> - <<set $activeSlave.nationality = hashChoice(setup.indoaryanNationalities)>> - <<case "malay">> - <<set $activeSlave.nationality = hashChoice(setup.malayNationalities)>> - <<default>> - <<set $activeSlave.nationality = hashChoice($nationalities)>> - <</switch>> - <<set $activeSlave.race = $fixedRace>> - <<set $fixedRace = 0>> -<</if>> +<<run generateNationality($activeSlave)>> /* includes race selection */ <<run nationalityToName($activeSlave)>> <<run nationalityToAccent($activeSlave)>> diff --git a/src/uncategorized/generateXYSlave.tw b/src/uncategorized/generateXYSlave.tw index 10a2443f40175623c1b48754899de2c3ad2b34f8..8810d3fa11c183725c6c014318243b96adfa384e 100644 --- a/src/uncategorized/generateXYSlave.tw +++ b/src/uncategorized/generateXYSlave.tw @@ -26,36 +26,8 @@ <<set $activeSlave.ID = $IDNumber++>> <<set $activeSlave.weekAcquired = $week>> -<<set _gaussianPair = gaussianPair()>> -<<set $activeSlave.intelligence = Intelligence.random()>> -<<if _gaussianPair[0] < _gaussianPair[1] + $activeSlave.intelligence/29 - 0.35>> /* 40.23% chance if intelligence is 0, 99.26% chance if intelligence is 100 */ - <<set $activeSlave.intelligenceImplant = 15>> - <<if random(15,150) < $activeSlave.intelligence>> - <<set $activeSlave.intelligenceImplant = 30>> - <</if>> -<</if>> - -<<if $AgePenalty == 1>> - <<if ($activeSlave.actualAge < 16)>> - <<set $activeSlave.career = setup.veryYoungCareers.random()>> - <<elseif ($activeSlave.actualAge <= 24)>> - <<set $activeSlave.career = setup.youngCareers.random()>> - <<elseif ($activeSlave.intelligenceImplant >= 15)>> - <<set $activeSlave.career = setup.educatedCareers.random()>> - <<else>> - <<set $activeSlave.career = setup.uneducatedCareers.random()>> - <</if>> -<<else>> - <<if ($activeSlave.actualAge < 16)>> - <<set $activeSlave.career = setup.veryYoungCareers.random()>> - <<elseif ($activeSlave.intelligenceImplant >= 15)>> - <<set $activeSlave.career = setup.educatedCareers.random()>> - <<elseif ($activeSlave.actualAge <= 24)>> - <<set $activeSlave.career = setup.youngCareers.random()>> - <<else>> - <<set $activeSlave.career = setup.uneducatedCareers.random()>> - <</if>> -<</if>> +<<run generateIntelligence($activeSlave)>> +<<run generateCareer($activeSlave)>> <<set $activeSlave.vaginalSkill = 0>> <<set $activeSlave.analSkill = random(0,15)>> @@ -94,71 +66,8 @@ <</if>> /% Begin height replacement section. %/ - /% Since we use nationality for height effects we need to initialize it now instead of later on like in vanilla Free Cities. %/ -<<if $fixedRace == 0>> - <<if $fixedNationality == 0>> - <<set $activeSlave.nationality = hashChoice($nationalities)>> - <<else>> - <<set $activeSlave.nationality = $fixedNationality>> - <<set $fixedNationality = 0>> - <</if>> - <<run nationalityToRace($activeSlave)>> - /* Corporate slavegen with race selection */ - <<if passage() == "Corporate Market" && ($captureUpgradeRace != "unselected") && ($captureUpgradeRace != "none")>> - <<if $captureUpgradeRace == "mixed race">> - <<set $activeSlave.race = "mixed race">> - <<else>> - <<set _capUpgradeCheck = setup[$captureUpgradeRace.toLowerCase().replace(/[ -]/g, '')+'Nationalities']>> - <<set _capUpgradeNationalities = {}>> - <<set _keys = Object.keys(_capUpgradeCheck)>> - <<for _u = 0; _u < _keys.length; _u++>> - <<set _capNation = _keys[_u]>> - <<if _capNation in $nationalities>> - <<set _capUpgradeNationalities[_capNation] = _capUpgradeCheck[_capNation]>> - <</if>> - <</for>> - <<if Object.keys(_capUpgradeNationalities).length > 0>> - <<set $activeSlave.nationality = hashChoice(_capUpgradeNationalities), $activeSlave.race = $captureUpgradeRace>> - <<else>> - <<set $activeSlave.nationality = hashChoice(_capUpgradeCheck), $activeSlave.race = $captureUpgradeRace>> - <</if>> - <</if>> - <<if $activeSlave.race != $captureUpgradeRace>> - <<set $activeSlave.race = $captureUpgradeRace>> - <</if>> - <</if>> - /* end Corporate slavegen with race selection */ -<<else>> - <<switch $fixedRace>> - <<case "white">> - <<set $activeSlave.nationality = hashChoice(setup.whiteNationalities)>> - <<case "asian">> - <<set $activeSlave.nationality = hashChoice(setup.asianNationalities)>> - <<case "latina">> - <<set $activeSlave.nationality = hashChoice(setup.latinaNationalities)>> - <<case "black">> - <<set $activeSlave.nationality = hashChoice(setup.blackNationalities)>> - <<case "pacific islander">> - <<set $activeSlave.nationality = hashChoice(setup.pacificislanderNationalities)>> - <<case "southern european">> - <<set $activeSlave.nationality = hashChoice(setup.southerneuropeanNationalities)>> - <<case "amerindian">> - <<set $activeSlave.nationality = hashChoice(setup.amerindianNationalities)>> - <<case "semitic">> - <<set $activeSlave.nationality = hashChoice(setup.semiticNationalities)>> - <<case "middle eastern">> - <<set $activeSlave.nationality = hashChoice(setup.middleeasternNationalities)>> - <<case "indo-aryan">> - <<set $activeSlave.nationality = hashChoice(setup.indoaryanNationalities)>> - <<case "malay">> - <<set $activeSlave.nationality = hashChoice(setup.malayNationalities)>> - <<default>> - <<set $activeSlave.nationality = hashChoice($nationalities)>> - <</switch>> - <<set $activeSlave.race = $fixedRace>> - <<set $fixedRace = 0>> -<</if>> +<<run generateNationality($activeSlave)>> /* includes race selection */ <<run nationalityToName($activeSlave)>> <<run nationalityToAccent($activeSlave)>> diff --git a/src/uncategorized/main.tw b/src/uncategorized/main.tw index 4e06c517a16c1e23c385853582a83b345c9d4f2d..16192f4a140718f2a6888cef41207b441e0dfe8a 100644 --- a/src/uncategorized/main.tw +++ b/src/uncategorized/main.tw @@ -42,8 +42,8 @@ <br><br>@@.red; ERROR: The following variables are NaN! Please report this.@@<br> <<for _main = 0; _main < $NaNArray.length; _main++>> $NaNArray[_main] <br> - <</for>><br> - <<link "Hide NaN variables until next week">><<replace #NaNArray>><<set $NaNArray = []>><</replace>><</link>> + <</for>> + <<link "Hide NaN variables until next week">><<replace #NaNArray>><<set $NaNArray = []>><</replace>><</link>><br> <</if>> </span> /* end extra sanity checks and repair */ diff --git a/src/uncategorized/nextWeek.tw b/src/uncategorized/nextWeek.tw index 7d5a7b7da8c31b65490cf25e5dd9dfa00fd34191..249d530cc45a6205eee21b59433642af1a95b71e 100644 --- a/src/uncategorized/nextWeek.tw +++ b/src/uncategorized/nextWeek.tw @@ -158,8 +158,10 @@ <<if $slaves[_i].pornTypePregnancy > 0>><<set $pornStarPregnancySluts++>><</if>> <</if>> <</for>> -<<set $averageTrust = $averageTrust/_slavesContributing>> -<<set $averageDevotion = $averageDevotion/_slavesContributing>> +<<if _slavesContributing != 0>> + <<set $averageTrust = $averageTrust/_slavesContributing>> + <<set $averageDevotion = $averageDevotion/_slavesContributing>> +<</if>> <<set $enduringTrust = ($averageTrust+($enduringTrust*3))/4>> <<set $enduringDevotion = ($averageDevotion+($enduringDevotion*3))/4>>