diff --git a/compile b/compile index d11d2047cdfbb115363e96ab21f792b3783a2673..fe95b68a0c2cc46d8d16fb5fb59e71400a310561 100755 --- a/compile +++ b/compile @@ -55,7 +55,7 @@ else esac fi -$TWEEGO_EXE -o "bin/FC_pregmod_tmp.html" src/ || build_failed="true" +$TWEEGO_EXE -o "bin/FC_pregmod_tmp.html" src/ --head devTools/head.html || build_failed="true" # Revert AlphaDisclaimer for next compilation git checkout -- src/gui/mainMenu/AlphaDisclaimer.tw @@ -69,4 +69,6 @@ fi sed -i -e '/^.*<div id="store-area".*$/s/\\t/\t/g' -e '/^.*<div id="store-area".*$/s/\\n/\n/g' bin/FC_pregmod_tmp.html \ && mv bin/FC_pregmod_tmp.html bin/FC_pregmod.html +ln -s ../resources bin/ 2> /dev/null + echo "bin/FC_pregmod.html compilation finished." diff --git a/compile-git b/compile-git index 5e011a38ed513eaf9982a78b6600402f7ec3b767..2897281674b89f2d84eb41a552367f5c6f384ab9 100755 --- a/compile-git +++ b/compile-git @@ -37,10 +37,12 @@ else esac fi -$TWEEGO_EXE -o "bin/FC_pregmod_${HASH}_tmp.html" src/ +$TWEEGO_EXE -o "bin/FC_pregmod_${HASH}_tmp.html" src/ --head devTools/head.html || build_failed="true" #Make the output prettier, replacing \t with a tab and \n with a newline sed -i -e '/^<div id="store-area".*$/s/\\t/\t/g' -e '/^<div id="store-area".*$/s/\\n/\n/g' "bin/FC_pregmod_${HASH}_tmp.html" \ && mv "bin/FC_pregmod_${HASH}_tmp.html" "bin/FC_pregmod_${HASH}.html" +ln -s ../resources bin/ 2> /dev/null + echo "bin/FC_pregmod_$HASH.html compilation finished." diff --git a/compile-git+java-sanityCheck.sh b/compile-git+java-sanityCheck.sh index 7833bb97dadc1f3da55dba14502c4b5df5c6629f..2fd438b3d4fc537d84bc99bd3fefc7604167077b 100755 --- a/compile-git+java-sanityCheck.sh +++ b/compile-git+java-sanityCheck.sh @@ -37,10 +37,12 @@ else esac fi -$TWEEGO_EXE -o "bin/FC_pregmod_${HASH}_tmp.html" src/ +$TWEEGO_EXE -o "bin/FC_pregmod_${HASH}_tmp.html" src/ --head devTools/head.html || build_failed="true" #Make the output prettier, replacing \t with a tab and \n with a newline sed -i -e '/^<div id="store-area".*$/s/\\t/\t/g' -e '/^<div id="store-area".*$/s/\\n/\n/g' "bin/FC_pregmod_${HASH}_tmp.html" \ && mv "bin/FC_pregmod_${HASH}_tmp.html" "bin/FC_pregmod_${HASH}.html" +ln -s ../resources bin/ 2> /dev/null + echo "FC_pregmod_$HASH.html compilation finished." diff --git a/compile.bat b/compile.bat index 03d861e77d597d40a7594f7c9a954ca7ae92f10a..c095971fa11a97bfebc5edd0738d819ad2dd8176 100644 --- a/compile.bat +++ b/compile.bat @@ -6,9 +6,9 @@ pushd %~dp0 if not exist "bin\" mkdir bin :: Run the appropriate compiler for the user's CPU architecture. if %PROCESSOR_ARCHITECTURE% == AMD64 ( - CALL "%~dp0devTools\tweeGo\tweego_win64.exe" -o "%~dp0bin/FC_pregmod.html" "%~dp0src" + CALL "%~dp0devTools\tweeGo\tweego_win64.exe" -o "%~dp0bin/FC_pregmod.html" --head devTools/head.html "%~dp0src" ) else ( - CALL "%~dp0devTools\tweeGo\tweego_win86.exe" -o "%~dp0bin/FC_pregmod.html" "%~dp0src" + CALL "%~dp0devTools\tweeGo\tweego_win86.exe" -o "%~dp0bin/FC_pregmod.html" --head devTools/head.html "%~dp0src" ) popd diff --git a/devNotes/Useful JS Function Documentation.txt b/devNotes/Useful JS Function Documentation.txt index 973ddcca18aad651193be41d2f7af3d33bee8f1c..1eb994b029d85db4ce1135360f8ec81807f04d74 100644 --- a/devNotes/Useful JS Function Documentation.txt +++ b/devNotes/Useful JS Function Documentation.txt @@ -167,9 +167,10 @@ lispReplace(string) - Returns the string lispified. nippleColor(slave) - Returns the slave's nipple color. UtilJS [script] - commaNum() - Returns the value thousand separated with ',' if $formatNumbers > 0 else provides the raw value. - line 138 of src/SpecialForce/Report.tw, '...focused their <<print commaNum($SFUnit.Troops)>> troops' + num() - Returns the value thousand separated with ',' if $formatNumbers > 0 else provides the raw value. Returns an integer if $showNumbers == 0, numbers up to a preset max as words if $showNumbers == 1, or only words if $showNumbers == 2. + line 138 of src/SpecialForce/Report.tw, '...focused their <<print num($SFUnit.Troops)>> troops' if $formatNumbers > 0 'focused their 1,589 troops' else 'focused their 1589 troops' + if $showNumbers == 0 'focused their 1,589 troops', if $showNumbers == 1 'focused their 1,589 troops' (unless the max is set to more than 1,589), else 'focused their one thousand five hundred eighty-nine troops' cashFormat() - uses the above function to return the value thousand separated with ',' if $formatNumbers > 0 else provides the raw value. either way prepends ¤ (the fc domination) symbol. line 157 of the previously listed file, '...totaling @@.yellowgreen;<<print cashFormat(_SFIncome)>>@@' @@ -336,7 +337,7 @@ UtilJS [script] lengthToEitherUnit() - takes an int in centimeters e.g. $activeSlave.hLength, returns a string in the format of either `30cm (12 inches)`, `12 inches`, or `30cm` - ValidateFacilityDecoration() - checks the value of the associated variable and it if it infinite i.e NA the text description is reset back to standard. + ValidateFacilityDecoration() - checks the value of the associated variable and it if it infinite i.e. NA the text description is reset back to standard. /* decoration should be passed as "facilityDecoration" in quotes. For example, ValidateFacilityDecoration("brothelDecoration"). The quotes are important, do not pass it as a story variable. */ FSChangePorn() - //Currently unused, widget version routes directly through FSChange() @@ -350,6 +351,10 @@ UtilJS [script] upgradeMultiplierArcology() - outputs a value based off of the PC's engineering skill. + upgradeMultiplierMedicine() - outputs a value based off of the PC's medicine skill. + + upgradeMultiplierTrade() - outputs a value based off of the PC's trading skill. + passageLink() - Creates a HTML element with custom SugarCube attributes which works as a passage link SkillIncrease() - Depreciates the sugarcube functions. diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt index 1342cedb0711246cff669bd194e61d60fad566b8..dcbfa59a4fe8531ce169f16315e6cd6d2ccb5cc9 100644 --- a/devNotes/VersionChangeLog-Premod+LoliMod.txt +++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt @@ -2,6 +2,12 @@ Pregmod 0.10.7.1-2.2.x + -player can now be impregnated during the futanari sister orgy + -added tracking for futanari sister impregnation + -player medicine and trading skill now more useful + -fixes + -code cleaning + 03/15/2019 5 diff --git a/devTools/head.html b/devTools/head.html new file mode 100644 index 0000000000000000000000000000000000000000..e32f29194f6df2207e8b530ffe71accc90b44fa6 --- /dev/null +++ b/devTools/head.html @@ -0,0 +1,4 @@ +<!-- Added to the <head> of the html file --> +<link rel="shortcut icon" type="image/x-icon" href="resources/raster/favicon/arcologyVector.ico"> + + diff --git a/player variables documentation - Pregmod.txt b/player variables documentation - Pregmod.txt index eaa0c078f9caaa47a06d4b98aade759af919f19b..e838f56558a9774e4a59bd8a70b09108dcb478ab 100644 --- a/player variables documentation - Pregmod.txt +++ b/player variables documentation - Pregmod.txt @@ -102,6 +102,7 @@ who knocked you up -6 - Societal Elite -7 - designer baby -8 - an animal +-9 - futanari sister pregMood: diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt index 31a49b369bdef74bc727f41511d4a99313199b2f..2032d4c979679ee401a6bb6da7b429c676976109 100644 --- a/slave variables documentation - Pregmod.txt +++ b/slave variables documentation - Pregmod.txt @@ -1864,6 +1864,7 @@ Who sired her pregnancy -6 - Societal Elite -7 - designer baby -8 - an animal +-9 - futanari sister pregType: diff --git a/src/SecExp/attackHandler.tw b/src/SecExp/attackHandler.tw index 26bc7714d21d1db40fc983c89b44cd08aaf36e36..d89d2e535c50500fa308b23a95794ba0966a8b09 100644 --- a/src/SecExp/attackHandler.tw +++ b/src/SecExp/attackHandler.tw @@ -1120,14 +1120,14 @@ <br> <br> __Army__: - <br>troops: <<print commaNum(Math.round($troopCount))>> - <br>attack: <<print commaNum(Math.round(_attack))>> - <br>defense: <<print commaNum(Math.round(_defense))>> - <br>hp: <<print commaNum(Math.round(_hp))>> - <br>morale: <<print commaNum(Math.round(_morale))>> + <br>troops: <<print num(Math.round($troopCount))>> + <br>attack: <<print num(Math.round(_attack))>> + <br>defense: <<print num(Math.round(_defense))>> + <br>hp: <<print num(Math.round(_hp))>> + <br>morale: <<print num(Math.round(_morale))>> <br>attack modifier: <<if _atkMod > 0>>+<</if>>_atkMod% <br>defense modifier: <<if _defMod > 0>>+<</if>>_defMod% - <br>average base HP: <<print commaNum(Math.round(_baseHp))>> + <br>average base HP: <<print num(Math.round(_baseHp))>> <br>militia morale modifier: <<if _militiaMod > 0>>+<</if>>_militiaMod% <br>slaves morale modifier: <<if _slaveMod > 0>>+<</if>>_slaveMod% <br>mercenaries morale modifier: <<if _mercMod > 0>>+<</if>>_mercMod% @@ -1143,17 +1143,17 @@ <br> <br> __Tactics__: - <br>tactic chance of success: <<print commaNum(Math.round(_tacChance * 100))>>% + <br>tactic chance of success: <<print num(Math.round(_tacChance * 100))>>% <br>was tactic chosen successful?: <<if $tacticsSuccessful == 1>> yes <<else>> no<</if>> <br> <br> __Enemy__: - <br>enemy troops: <<print commaNum(Math.round($attackTroops))>> - <br>enemy attack: <<print commaNum(Math.round(_enemyAttack))>> - <br>enemy defense: <<print commaNum(Math.round(_enemyDefense))>> - <br>enemy Hp: <<print commaNum(Math.round(_enemyHp))>> - <br>enemy morale: <<print commaNum(Math.round(_enemyMorale))>> - <br>enemy base Hp: <<print commaNum(Math.round(_enemyBaseHp))>> + <br>enemy troops: <<print num(Math.round($attackTroops))>> + <br>enemy attack: <<print num(Math.round(_enemyAttack))>> + <br>enemy defense: <<print num(Math.round(_enemyDefense))>> + <br>enemy Hp: <<print num(Math.round(_enemyHp))>> + <br>enemy morale: <<print num(Math.round(_enemyMorale))>> + <br>enemy base Hp: <<print num(Math.round(_enemyBaseHp))>> <br>enemy morale modifier: <<if _enemyMod > 0>>+<</if>>_enemyMod% <<if _enemyMoraleTroopMod > 0>> <br>enemy morale increase due to troop numbers: +<<print _enemyMoraleTroopMod>>% @@ -1168,15 +1168,15 @@ /* player army attacks */ <<set _damage = Math.clamp(_attack - _enemyDefense,_attack * 0.1,_attack)>> <br> - <<if $showBattleStatistics == 1>> player damage: <<print commaNum(Math.round(_damage))>><</if>> + <<if $showBattleStatistics == 1>> player damage: <<print num(Math.round(_damage))>><</if>> <<set _enemyHp -= _damage>> <br> - <<if $showBattleStatistics == 1>> remaining enemy Hp: <<print commaNum(Math.round(_enemyHp))>><</if>> + <<if $showBattleStatistics == 1>> remaining enemy Hp: <<print num(Math.round(_enemyHp))>><</if>> <<set $enemyLosses += _damage / _enemyBaseHp>> <<set _moraleDamage = Math.clamp(_damage / 2 + _damage / _enemyBaseHp,0,_damage*1.5)>> <<set _enemyMorale -= _moraleDamage>> <br> - <<if $showBattleStatistics == 1>> remaining enemy morale: <<print commaNum(Math.round(_enemyMorale))>><</if>> + <<if $showBattleStatistics == 1>> remaining enemy morale: <<print num(Math.round(_enemyMorale))>><</if>> <<if _enemyHp <= 0 || _enemyMorale <= 0>> <br> <<if $showBattleStatistics == 1>> <br>Victory!<</if>> @@ -1191,10 +1191,10 @@ <<set _damage = _enemyAttack * 0.1>> <</if>> <br> - <<if $showBattleStatistics == 1>> enemy damage: <<print commaNum(Math.round(_damage))>><</if>> + <<if $showBattleStatistics == 1>> enemy damage: <<print num(Math.round(_damage))>><</if>> <<set _hp -= _damage>> <br> - <<if $showBattleStatistics == 1>> remaining hp: <<print commaNum(Math.round(_hp))>><</if>> + <<if $showBattleStatistics == 1>> remaining hp: <<print num(Math.round(_hp))>><</if>> <<set $losses += _damage / _baseHp>> <<set _moraleDamage = Math.clamp(_damage / 2 + _damage / _baseHp,0,_damage*1.5)>> <<set _morale -= _moraleDamage>> @@ -1221,8 +1221,8 @@ <<if $showBattleStatistics == 1>> <br> - <br>Losses: <<print commaNum(Math.trunc($losses))>> - <br>Enemy losses: <<print commaNum(Math.trunc($enemyLosses))>> + <br>Losses: <<print num(Math.trunc($losses))>> + <br>Enemy losses: <<print num(Math.trunc($enemyLosses))>> <</if>> <<if $battleResult > 3 || $battleResult < -3>> diff --git a/src/SecExp/attackReport.tw b/src/SecExp/attackReport.tw index 72e1d5364301ac4980e89937c2c93be9be12fb6a..c258dbdf444c4e78cf60c5e9c2e6adab4e13a053 100644 --- a/src/SecExp/attackReport.tw +++ b/src/SecExp/attackReport.tw @@ -130,9 +130,9 @@ <hr> <<if $attackType == "raiders">> - Today, the _day of _month _year, our arcology was attacked by a band of wild raiders, <<print commaNum(Math.trunc($attackTroops))>> men strong. + Today, the _day of _month _year, our arcology was attacked by a band of wild raiders, <<print num(Math.trunc($attackTroops))>> men strong. <<if $battleResult != 1 && $battleResult != 0 && $battleResult != -1>> - Our defense forces, <<print commaNum(Math.trunc($troopCount))>> strong, clashed with them + Our defense forces, <<print num(Math.trunc($troopCount))>> strong, clashed with them <<if $battleTerrain == "urban">> in the streets of <<if $terrain == "urban">>the old world city surrounding the arcology<<else>>of the free city<</if>>, <<elseif $battleTerrain == "rural">> @@ -149,9 +149,9 @@ in the wastelands outside the free city territory, <</if>> <<if $enemyLosses != $attackTroops>> - inflicting <<print commaNum(Math.trunc($enemyLosses))>> casualties, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties <<elseif $losses > 0>> a casualty <<else>> zero <</if>> themselves. + inflicting <<print num(Math.trunc($enemyLosses))>> casualties, while sustaining <<if $losses > 1>> <<print num(Math.trunc($losses))>> casualties <<elseif $losses > 0>> a casualty <<else>> zero <</if>> themselves. <<else>> - completely annihilating their troops, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties. <<elseif $losses > 0>> a casualty. <<else>> zero casualties.<</if>> + completely annihilating their troops, while sustaining <<if $losses > 1>> <<print num(Math.trunc($losses))>> casualties. <<elseif $losses > 0>> a casualty. <<else>> zero casualties.<</if>> <</if>> <</if>> <<if $battleResult == 3>> @@ -192,9 +192,9 @@ You decided in favor of a financial approach rather than open hostilities. Your troops remain inside the arcology's walls. <</if>> <<elseif $attackType == "free city">> - Today, the _day of _month _year, our arcology was attacked by a contingent of mercenaries hired by a competing free city, <<print commaNum(Math.trunc($attackTroops))>> men strong. + Today, the _day of _month _year, our arcology was attacked by a contingent of mercenaries hired by a competing free city, <<print num(Math.trunc($attackTroops))>> men strong. <<if $battleResult != 1 && $battleResult != 0 && $battleResult != -1>> - Our defense forces, <<print commaNum(Math.trunc($troopCount))>> strong, clashed with them + Our defense forces, <<print num(Math.trunc($troopCount))>> strong, clashed with them <<if $battleTerrain == "urban">> in the streets of <<if $terrain == "urban">>the old world city surrounding the arcology<<else>>of the free city<</if>>, <<elseif $battleTerrain == "rural">> @@ -211,9 +211,9 @@ in the wastelands outside the free city territory, <</if>> <<if $enemyLosses != $attackTroops>> - inflicting <<print $enemyLosses>> casualties, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties <<elseif $losses > 0>> a casualty <<else>> zero <</if>> themselves. + inflicting <<print $enemyLosses>> casualties, while sustaining <<if $losses > 1>> <<print num(Math.trunc($losses))>> casualties <<elseif $losses > 0>> a casualty <<else>> zero <</if>> themselves. <<else>> - completely annihilating their troops, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties. <<elseif $losses > 0>> a casualty.<<else>> zero casualties.<</if>> + completely annihilating their troops, while sustaining <<if $losses > 1>> <<print num(Math.trunc($losses))>> casualties. <<elseif $losses > 0>> a casualty.<<else>> zero casualties.<</if>> <</if>> <</if>> <<if $battleResult == 3>> @@ -254,9 +254,9 @@ You decided in favor of a financial approach rather than open hostilities. Your troops remain inside the arcology's walls. <</if>> <<elseif $attackType == "freedom fighters">> - Today, the _day of _month _year, our arcology was attacked by a group of freedom fighters bent on the destruction of the institution of slavery, <<print commaNum(Math.trunc($attackTroops))>> men strong. + Today, the _day of _month _year, our arcology was attacked by a group of freedom fighters bent on the destruction of the institution of slavery, <<print num(Math.trunc($attackTroops))>> men strong. <<if $battleResult != 1 && $battleResult != 0 && $battleResult != -1>> - Our defense forces, <<print commaNum(Math.trunc($troopCount))>> strong, clashed with them + Our defense forces, <<print num(Math.trunc($troopCount))>> strong, clashed with them <<if $battleTerrain == "urban">> in the streets of <<if $terrain == "urban">>the old world city surrounding the arcology<<else>>of the free city<</if>>, <<elseif $battleTerrain == "rural">> @@ -273,9 +273,9 @@ in the wastelands outside the free city territory, <</if>> <<if $enemyLosses != $attackTroops>> - inflicting <<print $enemyLosses>> casualties, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties <<elseif $losses > 0>> a casualty <<else>> zero <</if>> themselves. + inflicting <<print $enemyLosses>> casualties, while sustaining <<if $losses > 1>> <<print num(Math.trunc($losses))>> casualties <<elseif $losses > 0>> a casualty <<else>> zero <</if>> themselves. <<else>> - completely annihilating their troops, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties. <<elseif $losses > 0>> a casualty. <<else>> zero casualties.<</if>> + completely annihilating their troops, while sustaining <<if $losses > 1>> <<print num(Math.trunc($losses))>> casualties. <<elseif $losses > 0>> a casualty. <<else>> zero casualties.<</if>> <</if>> <</if>> <<if $battleResult == 3>> @@ -316,9 +316,9 @@ You decided in favor of a financial approach rather than open hostilities. Your troops remain inside the arcology's walls. <</if>> <<elseif $attackType == "old world">> - Today, the _day of _month _year, our arcology was attacked by an old world nation boasting a misplaced sense of superiority, <<print commaNum(Math.trunc($attackTroops))>> men strong. + Today, the _day of _month _year, our arcology was attacked by an old world nation boasting a misplaced sense of superiority, <<print num(Math.trunc($attackTroops))>> men strong. <<if $battleResult != 1 && $battleResult != 0 && $battleResult != -1>> - Our defense forces, <<print commaNum(Math.trunc($troopCount))>> strong, clashed with them + Our defense forces, <<print num(Math.trunc($troopCount))>> strong, clashed with them <<if $battleTerrain == "urban">> in the streets of <<if $terrain == "urban">>the old world city surrounding the arcology<<else>>of the free city<</if>>, <<elseif $battleTerrain == "rural">> @@ -335,9 +335,9 @@ in the wastelands outside the free city territory, <</if>> <<if $enemyLosses != $attackTroops>> - inflicting <<print $enemyLosses>> casualties, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties <<elseif $losses > 0>> a casualty <<else>> zero <</if>> themselves. + inflicting <<print $enemyLosses>> casualties, while sustaining <<if $losses > 1>> <<print num(Math.trunc($losses))>> casualties <<elseif $losses > 0>> a casualty <<else>> zero <</if>> themselves. <<else>> - completely annihilating their troops, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties. <<elseif $losses > 0>> a casualty. <<else>> zero casualties.<</if>> + completely annihilating their troops, while sustaining <<if $losses > 1>> <<print num(Math.trunc($losses))>> casualties. <<elseif $losses > 0>> a casualty. <<else>> zero casualties.<</if>> <</if>> <</if>> <<if $battleResult == 3>> diff --git a/src/SecExp/encyclopediaSecExpMain.tw b/src/SecExp/encyclopediaSecExpMain.tw index ceac9dd53b6fe87f9d392be3b18581ad8a20f425..10d0f182caf0a8557fa5b210cdc38b818702d6a3 100644 --- a/src/SecExp/encyclopediaSecExpMain.tw +++ b/src/SecExp/encyclopediaSecExpMain.tw @@ -11,7 +11,7 @@ <br><br>Statistics: @@.darkviolet; <br><strong>Authority</strong>:@@ <br> Representing the power the player holds over the arcology. If @@.green;[[reputation|Encyclopedia][$encyclopedia = "Arcologies and Reputation"]]@@ is how well the protagonist is known, @@.darkviolet;authority@@ is how much is feared or respected. - Authority influences many things, but it is mainly used to enact edicts, who, similarly to policies, allow to shape the sociopolitical profile of your arcology. Like @@.green;reputation,@@ @@.darkviolet;authority@@ has a maximum of <<print commaNum(20000)>>. + Authority influences many things, but it is mainly used to enact edicts, who, similarly to policies, allow to shape the sociopolitical profile of your arcology. Like @@.green;reputation,@@ @@.darkviolet;authority@@ has a maximum of <<print num(20000)>>. @@.deepskyblue;<br> <br><strong>Security</strong>:@@ <br> Representing how safe the arcology is, how likely it is for a citizen to get stabbed, killed or simply mugged in the streets as well as wider concerns like diff --git a/src/SecExp/rebellionHandler.tw b/src/SecExp/rebellionHandler.tw index da997bc75dec166a173143354bc99a878f89b66b..e7f458e90f55ca163e65c2c88dc720b236ebe217 100644 --- a/src/SecExp/rebellionHandler.tw +++ b/src/SecExp/rebellionHandler.tw @@ -318,25 +318,25 @@ __Difficulty__: <br> <br> __Army__: -<br>troops: <<print commaNum(Math.round($troopCount))>> -<br>attack: <<print commaNum(Math.round(_attack))>> -<br>defense: <<print commaNum(Math.round(_defense))>> +<br>troops: <<print num(Math.round($troopCount))>> +<br>attack: <<print num(Math.round(_attack))>> +<br>defense: <<print num(Math.round(_defense))>> <br>engagement rule modifier: <<if _engageMod > 0>>+<</if>><<print _engageMod>>% -<br>Hp: <<print commaNum(Math.round(_hp))>> -<br>base HP: <<print commaNum(Math.round(_baseHp))>> -<br>morale: <<print commaNum(Math.round(_morale))>> +<br>Hp: <<print num(Math.round(_hp))>> +<br>base HP: <<print num(Math.round(_baseHp))>> +<br>morale: <<print num(Math.round(_morale))>> <<if _enemyMoraleTroopMod > 0>> <br>morale increase due to troop numbers: +<<print _moraleTroopMod>>% <</if>> <br> <br> __Rebels__: -<br>enemy troops: <<print commaNum(Math.round($attackTroops))>> -<br>enemy attack: <<print commaNum(Math.round(_enemyAttack))>> -<br>enemy defense: <<print commaNum(Math.round(_enemyDefense))>> -<br>enemy Hp: <<print commaNum(Math.round(_enemyHp))>> -<br>enemy base Hp: <<print commaNum(Math.round(_enemyBaseHp))>> -<br>enemy morale: <<print commaNum(Math.round(_enemyMorale))>> +<br>enemy troops: <<print num(Math.round($attackTroops))>> +<br>enemy attack: <<print num(Math.round(_enemyAttack))>> +<br>enemy defense: <<print num(Math.round(_enemyDefense))>> +<br>enemy Hp: <<print num(Math.round(_enemyHp))>> +<br>enemy base Hp: <<print num(Math.round(_enemyBaseHp))>> +<br>enemy morale: <<print num(Math.round(_enemyMorale))>> <<if _enemyMoraleTroopMod > 0>> <br>enemy morale increase due to troop numbers: +<<print _enemyMoraleTroopMod>>% <</if>> @@ -350,15 +350,15 @@ __Rebels__: /* player army attacks */ <<set _damage = Math.clamp(_attack - _enemyDefense,_attack * 0.1,_attack)>> <br> - <<if $showBattleStatistics == 1>> player damage: <<print commaNum(Math.round(_damage))>><</if>> + <<if $showBattleStatistics == 1>> player damage: <<print num(Math.round(_damage))>><</if>> <<set _enemyHp -= _damage>> <br> - <<if $showBattleStatistics == 1>> remaining enemy Hp: <<print commaNum(Math.round(_enemyHp))>><</if>> + <<if $showBattleStatistics == 1>> remaining enemy Hp: <<print num(Math.round(_enemyHp))>><</if>> <<set $enemyLosses += _damage / _enemyBaseHp>> <<set _moraleDamage = Math.clamp(_damage/ 2 + _damage / _enemyBaseHp,0,_damage*1.5)>> <<set _enemyMorale -= _moraleDamage>> <br> - <<if $showBattleStatistics == 1>> remaining enemy morale: <<print commaNum(Math.round(_enemyMorale))>><</if>> + <<if $showBattleStatistics == 1>> remaining enemy morale: <<print num(Math.round(_enemyMorale))>><</if>> <<if _enemyHp <= 0 || _enemyMorale <= 0>> <<if $showBattleStatistics == 1>> <br>Victory!<</if>> <<set $battleResult = 3>> @@ -372,16 +372,16 @@ __Rebels__: <<set _damage = _enemyAttack * 0.1>> <</if>> <br> - <<if $showBattleStatistics == 1>> enemy damage: <<print commaNum(Math.round(_damage))>><</if>> + <<if $showBattleStatistics == 1>> enemy damage: <<print num(Math.round(_damage))>><</if>> <<if $SFGear>> <<set _S = .85>> <<else>> <<set _S = 1>> <</if>> <<set _hp -= _damage*_S>> <br> - <<if $showBattleStatistics == 1>> remaining hp: <<print commaNum(Math.round(_hp))>><</if>> + <<if $showBattleStatistics == 1>> remaining hp: <<print num(Math.round(_hp))>><</if>> <<set $losses += _damage / _baseHp>> <<set _moraleDamage = Math.clamp(_damage / 2 + _damage / _baseHp,0,_damage*1.5)>> <<set _morale -= _moraleDamage>> <br> - <<if $showBattleStatistics == 1>> remaining morale: <<print commaNum(Math.round(_morale))>><</if>> + <<if $showBattleStatistics == 1>> remaining morale: <<print num(Math.round(_morale))>><</if>> <<if _hp <= 0 || _morale <= 0>> <<if $showBattleStatistics == 1>> <br>Defeat!<</if>> <<set $battleResult = -3>> diff --git a/src/SecExp/rebellionOptions.tw b/src/SecExp/rebellionOptions.tw index 0935bf038e6bcefac27c8a998cd1b56a623d45b9..68818878f8c82f423c0d1cc6adea78d016fa7337 100644 --- a/src/SecExp/rebellionOptions.tw +++ b/src/SecExp/rebellionOptions.tw @@ -11,7 +11,7 @@ <<if $slaveRebellion == 1>> In the end it happened, the slaves of your arcology dared took up arms and rose up against their betters. Your penthouse is flooded with reports from all over the arcology of small skirmishes between the rioting slaves and the security forces. - It appears <strong><<print commaNum(Math.trunc($attackTroops))>></strong> rebels are in the streets right now, building barricades and freeing their peers. They are + It appears <strong><<print num(Math.trunc($attackTroops))>></strong> rebels are in the streets right now, building barricades and freeing their peers. They are <<if $attackEquip <= 0>> <strong>poorly armed</strong>. <<elseif $attackEquip == 1>> @@ -24,7 +24,7 @@ <strong>extremely well armed</strong>. <</if>> <<if $irregulars > 0>> - <<print commaNum(Math.trunc($irregulars))>> of your citizens took up arms to defend their arcology owner. + <<print num(Math.trunc($irregulars))>> of your citizens took up arms to defend their arcology owner. <</if>> <<set _count = 0>> <<if $rebellingID.length > 0>> @@ -97,16 +97,16 @@ <</if>> <</if>> <</for>> - <<if $SF.Toggle && $SF.Active >= 1>>and $SF.Lower, <<print commaNum($SF.Squad.Troops)>> strong<</if>> + <<if $SF.Toggle && $SF.Active >= 1>>and $SF.Lower, <<print num($SF.Squad.Troops)>> strong<</if>> are called to defend the arcology from this menace. <<else>> - <<if $arcologyUpgrade.drones == 1>>Your security drones<<if $SF.Toggle && $SF.Active >= 1>>and $SF.Lower, <<print commaNum($SF.Squad.Troops)>> strong<</if>> <</if>> + <<if $arcologyUpgrade.drones == 1>>Your security drones<<if $SF.Toggle && $SF.Active >= 1>>and $SF.Lower, <<print num($SF.Squad.Troops)>> strong<</if>> <</if>> are called to defend the arcology from this menace. <</if>> <hr> <<else>> In the end it happened, the citizens of your arcology dared took up arms and rose up against their betters. Your penthouse is flooded with reports from all over the arcology of small skirmishes between the rioting residents and the security forces. - It appears <<print commaNum(Math.trunc($attackTroops))>> rebels are in the streets right now, building barricades and destroying your property. They are + It appears <<print num(Math.trunc($attackTroops))>> rebels are in the streets right now, building barricades and destroying your property. They are <<if $attackEquip <= 0>> <strong>poorly armed</strong>. <<elseif $attackEquip == 1>> @@ -119,7 +119,7 @@ <strong>extremely well armed</strong>. <</if>> <<if $irregulars > 0>> - <<print commaNum(Math.trunc($irregulars))>> of your citizens took up arms to defend their arcology owner. + <<print num(Math.trunc($irregulars))>> of your citizens took up arms to defend their arcology owner. <</if>> <<set _count = 0>> <br> @@ -192,10 +192,10 @@ <</if>> <</if>> <</for>> - <<if $securityForceActive == 1>>and $securityForceName, <<print commaNum($securityForcePersonnel)>> strong<</if>> + <<if $securityForceActive == 1>>and $securityForceName, <<print num($securityForcePersonnel)>> strong<</if>> are called to defend the arcology from this menace. <<else>> - <<if $arcologyUpgrade.drones == 1>>Your security drones<<if $securityForceActive == 1>>and $securityForceName, <<print commaNum($securityForcePersonnel)>> strong<</if>><</if>> + <<if $arcologyUpgrade.drones == 1>>Your security drones<<if $securityForceActive == 1>>and $securityForceName, <<print num($securityForcePersonnel)>> strong<</if>><</if>> are called to defend the arcology from this menace. <</if>> <hr> diff --git a/src/SecExp/rebellionReport.tw b/src/SecExp/rebellionReport.tw index afef8415185b8f2432185ff3f144b0cc6bc8afc8..14f6afe00876564fc23bcca407dbd4f110f137d5 100644 --- a/src/SecExp/rebellionReport.tw +++ b/src/SecExp/rebellionReport.tw @@ -82,11 +82,11 @@ <hr> <<if $slaveRebellion == 1>> - Today, the _day of _month _year, our arcology was inflamed by the fires of rebellion. <<print commaNum(Math.trunc($attackTroops))>> rebels from all over the structure dared rise up against their owners and conquer their freedom through blood. Our defense force, <<print commaNum(Math.trunc($troopCount))>> strong, fought with them street by street + Today, the _day of _month _year, our arcology was inflamed by the fires of rebellion. <<print num(Math.trunc($attackTroops))>> rebels from all over the structure dared rise up against their owners and conquer their freedom through blood. Our defense force, <<print num(Math.trunc($troopCount))>> strong, fought with them street by street <<if $enemyLosses != $attackTroops>> - inflicting <<print commaNum(Math.trunc($enemyLosses))>> casualties, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties <<else>> a casualty<</if>> themselves. + inflicting <<print num(Math.trunc($enemyLosses))>> casualties, while sustaining <<if $losses > 1>> <<print num(Math.trunc($losses))>> casualties <<else>> a casualty<</if>> themselves. <<else>> - completely annihilating their troops, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties <<else>> a casualty.<</if>> + completely annihilating their troops, while sustaining <<if $losses > 1>> <<print num(Math.trunc($losses))>> casualties <<else>> a casualty.<</if>> <</if>> <<if $SFGear>> More units were able to survive thanks to wearing $SF.Lower's combat armor suits. @@ -214,11 +214,11 @@ <<set $rebelDefeatAftermath = 5>> <</if>> <<else>> - Today, the _day of _month _year, our arcology was inflamed by the fires of rebellion. <<print commaNum(Math.trunc($attackTroops))>> rebels from all over the structure dared rise up to dethrone their arcology owner. Our defense force, <<print commaNum($troopCount)>> strong, fought with them street by street + Today, the _day of _month _year, our arcology was inflamed by the fires of rebellion. <<print num(Math.trunc($attackTroops))>> rebels from all over the structure dared rise up to dethrone their arcology owner. Our defense force, <<print num($troopCount)>> strong, fought with them street by street <<if $enemyLosses != $attackTroops>> - inflicting <<print commaNum(Math.trunc($enemyLosses))>> casualties, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties <<else>> a casualty<</if>> themselves. + inflicting <<print num(Math.trunc($enemyLosses))>> casualties, while sustaining <<if $losses > 1>> <<print num(Math.trunc($losses))>> casualties <<else>> a casualty<</if>> themselves. <<else>> - completely annihilating their troops, while sustaining <<if $losses > 1>> <<print commaNum(Math.trunc($losses))>> casualties <<else>> a casualty.<</if>> + completely annihilating their troops, while sustaining <<if $losses > 1>> <<print num(Math.trunc($losses))>> casualties <<else>> a casualty.<</if>> <</if>> <<if $SFGear>> More units were able to survive thanks to wearing $SF.Lower's combat armor suits. diff --git a/src/SecExp/riotControlCenter.tw b/src/SecExp/riotControlCenter.tw index 77c4d39aac530da445045d8bbc2ee0d233c5cfc7..36caeff0ea4c9bfb1852c8a38502a02dc247aa10 100644 --- a/src/SecExp/riotControlCenter.tw +++ b/src/SecExp/riotControlCenter.tw @@ -169,9 +169,9 @@ The riot control center opens its guarded doors to you. The great chamber inside <<if $advancedRiotEquip == 0>> <<link "Develop advanced anti-riot equipment" "riotControlCenter">> <<set $advancedRiotEquip = 1>> - <<run cashX(-30000, "capEx")>> + <<run cashX(forceNeg(30000 * $upgradeMultiplierTrade), "capEx")>> <</link>> - <br>//Costs <<print cashFormat(30000)>>. Will allow the selection of advanced riot equipment in case of a rebellion, which will let your troops fight at full effectiveness while doing reduced collateral damage.// + <br>//Costs <<print cashFormat(30000 * $upgradeMultiplierTrade)>>. Will allow the selection of advanced riot equipment in case of a rebellion, which will let your troops fight at full effectiveness while doing reduced collateral damage.// <<else>> You developed advanced riot equipment, which allows your troops to fight within the confines of your arcology without the fear of doing major collateral damage. <</if>> diff --git a/src/SecExp/secBarracks.tw b/src/SecExp/secBarracks.tw index e6d51d05669f06bd5b899032be3f1725f8f44d4f..d00288aaa7e06245cf519474bb117a5b08132d4c 100644 --- a/src/SecExp/secBarracks.tw +++ b/src/SecExp/secBarracks.tw @@ -49,12 +49,12 @@ While this a sore sight for many citizens of $arcologies[0].name, the barracks s <br> <<if $secBarracksUpgrades.size < 5>> <<link "Increase the size of the barracks" "secBarracks">> - <<run cashX(forceNeg(5000 * ($secBarracksUpgrades.size + 1)), "capEx")>> + <<run cashX(forceNeg(Math.trunc((5000 * ($secBarracksUpgrades.size + 1))*$upgradeMultiplierArcology)), "capEx")>> <<set $secBarracksUpgrades.size += 1>> <<set $maxUnits += 2>> <<set $secBarracksUpkeep += $upgradeUpkeep>> <</link>> - <br>//Costs <<print cashFormat(5000 * ($secBarracksUpgrades.size + 1))>> and will increase the maximum number of units by 2.// + <br>//Costs <<print cashFormat((5000 * ($secBarracksUpgrades.size + 1))*$upgradeMultiplierArcology)>> and will increase the maximum number of units by 2.// <<else>> You've expanded the barracks to their maximum. <</if>> @@ -62,31 +62,31 @@ While this a sore sight for many citizens of $arcologies[0].name, the barracks s <<if $secBarracksUpgrades.luxury == 0>> <<link "Increase the quality of life of your soldiers by installing high tech furniture and appliances." "secBarracks">> <<set $secBarracksUpgrades.luxury += 1>> - <<run cashX(-5000, "capEx")>> + <<run cashX(forceNeg(Math.trunc(5000*$upgradeMultiplierTrade)), "capEx")>> <<set $secBarracksUpkeep += $upgradeUpkeep>> <</link>> - <br>//Costs <<print cashFormat(5000)>> and will provide a 5% bonus to morale.// + <br>//Costs <<print cashFormat(Math.trunc(5000*$upgradeMultiplierTrade))>> and will provide a 5% bonus to morale.// <<elseif $secBarracksUpgrades.luxury == 1>> <<link "Further increase the quality of life of your soldiers by installing advanced kitchen equipment and hiring skilled chefs." "secBarracks">> <<set $secBarracksUpgrades.luxury += 1>> - <<run cashX(-10000, "capEx")>> + <<run cashX(forceNeg(Math.trunc(10000*$upgradeMultiplierTrade)), "capEx")>> <<set $secBarracksUpkeep += $upgradeUpkeep>> <</link>> - <br>//Costs <<print cashFormat(10000)>> and will provide a 5% bonus to morale, for a total of +10%.// + <br>//Costs <<print cashFormat(Math.trunc(10000*$upgradeMultiplierTrade))>> and will provide a 5% bonus to morale, for a total of +10%.// <<elseif $secBarracksUpgrades.luxury == 2>> <<link "Further increase the quality of life of your soldiers by providing high speed, free access to digital media" "secBarracks">> <<set $secBarracksUpgrades.luxury += 1>> - <<run cashX(-10000, "capEx")>> + <<run cashX(forceNeg(Math.trunc(10000*$upgradeMultiplierTrade)), "capEx")>> <<set $secBarracksUpkeep += $upgradeUpkeep>> <</link>> - <br>//Costs <<print cashFormat(10000)>> and will provide a 5% bonus to morale, for a total of +15%.// + <br>//Costs <<print cashFormat(Math.trunc(10000*$upgradeMultiplierTrade))>> and will provide a 5% bonus to morale, for a total of +15%.// <<elseif $secBarracksUpgrades.luxury == 3>> <<link "Further increase the quality of life of your soldiers by adding and staffing an exclusive brothel to the structure" "secBarracks">> <<set $secBarracksUpgrades.luxury += 1>> - <<run cashX(-15000, "capEx")>> + <<run cashX(forceNeg(Math.trunc(15000*$upgradeMultiplierArcology)), "capEx")>> <<set $secBarracksUpkeep += $upgradeUpkeep>> <</link>> - <br>//Costs <<print cashFormat(15000)>> and will provide a 5% bonus to morale, for a total of +20%.// + <br>//Costs <<print cashFormat(Math.trunc(15000*$upgradeMultiplierArcology))>> and will provide a 5% bonus to morale, for a total of +20%.// <<else>> You've made life in your barracks as good as it can get. <</if>> @@ -94,17 +94,17 @@ While this a sore sight for many citizens of $arcologies[0].name, the barracks s <<if $secBarracksUpgrades.training == 0>> <<link "Add a training facility to the barracks" "secBarracks">> <<set $secBarracksUpgrades.training += 1>> - <<run cashX(-10000, "capEx")>> + <<run cashX(forceNeg(Math.trunc(10000*$upgradeMultiplierArcology)), "capEx")>> <<set $secBarracksUpkeep += $upgradeUpkeep>> <</link>> - <br>//Costs <<print cashFormat(10000)>> and will allow units to accumulate some experience each week.// + <br>//Costs <<print cashFormat(Math.trunc(10000*$upgradeMultiplierArcology))>> and will allow units to accumulate some experience each week.// <<elseif $secBarracksUpgrades.training == 1>> <<link "Improve the training facility with modern equipment and skilled personnel" "secBarracks">> <<set $secBarracksUpgrades.training += 1>> - <<run cashX(-20000, "capEx")>> + <<run cashX(forceNeg(Math.trunc(20000*$upgradeMultiplierTrade)), "capEx")>> <<set $secBarracksUpkeep += $upgradeUpkeep>> <</link>> - <br>//Costs <<print cashFormat(20000)>> and will allow units to accumulate experience each week.// + <br>//Costs <<print cashFormat(Math.trunc(20000*$upgradeMultiplierTrade))>> and will allow units to accumulate experience each week.// <<else>> You have improved the training facility to the limit. <</if>> @@ -112,17 +112,17 @@ While this a sore sight for many citizens of $arcologies[0].name, the barracks s <<if $secBarracksUpgrades.loyaltyMod == 0>> <<link "Add an indoctrination facility to the barracks" "secBarracks">> <<set $secBarracksUpgrades.loyaltyMod += 1>> - <<run cashX(-10000, "capEx")>> + <<run cashX(forceNeg(Math.trunc(10000*$upgradeMultiplierArcology)), "capEx")>> <<set $secBarracksUpkeep += $upgradeUpkeep>> <</link>> - <br>//Costs <<print cashFormat(10000)>> and will slowly raise loyalty of all units// + <br>//Costs <<print cashFormat(Math.trunc(10000*$upgradeMultiplierArcology))>> and will slowly raise loyalty of all units// <<elseif $secBarracksUpgrades.loyaltyMod == 1>> <<link "Improve the indoctrination facility with advanced equipment and skilled personnel" "secBarracks">> <<set $secBarracksUpgrades.loyaltyMod += 1>> - <<run cashX(-20000, "capEx")>> + <<run cashX(forceNeg(Math.trunc(20000*$upgradeMultiplierTrade)), "capEx")>> <<set $secBarracksUpkeep += $upgradeUpkeep>> <</link>> - <br>//Costs <<print cashFormat(20000)>> and will raise loyalty of all units faster.// + <br>//Costs <<print cashFormat(Math.trunc(20000*$upgradeMultiplierTrade))>> and will raise loyalty of all units faster.// <<else>> You have improved the indoctrination facility to the limit. <</if>> @@ -130,7 +130,7 @@ While this a sore sight for many citizens of $arcologies[0].name, the barracks s <hr> __Units__ <br> -Your current maximum number of units is <<print $maxUnits>> (<<print commaNum($secBots.maxTroops+(50*$maxUnits))>> troops), <<print $activeUnits>> (<<print commaNum($secBots.maxTroops+($slavesEmployedManpower)+($militiaEmployedManpower)+($mercEmployedManpower))>> troops) are active and <<print (2 * $readiness)>> units can be deployed. <<if $secBarracksUpgrades.luxury > 0>>The barracks provides <<print $secBarracksUpgrades.luxury * 5>>% bonus morale when battle occurs.<</if>> <<if $secBarracksUpgrades.training > 0>>The training facility will increase the effectiveness of your units with time.<</if>> +Your current maximum number of units is <<print $maxUnits>> (<<print num($secBots.maxTroops+(50*$maxUnits))>> troops), <<print $activeUnits>> (<<print num($secBots.maxTroops+($slavesEmployedManpower)+($militiaEmployedManpower)+($mercEmployedManpower))>> troops) are active and <<print (2 * $readiness)>> units can be deployed. <<if $secBarracksUpgrades.luxury > 0>>The barracks provides <<print $secBarracksUpgrades.luxury * 5>>% bonus morale when battle occurs.<</if>> <<if $secBarracksUpgrades.training > 0>>The training facility will increase the effectiveness of your units with time.<</if>> <<if $activeUnits >= $maxUnits>> <br>You have reached the maximum number of units. You'll have to disband one or enlarge the barracks before forming a new unit. <</if>> @@ -149,7 +149,7 @@ Your current maximum number of units is <<print $maxUnits>> (<<print commaNum($s <<set $targetUnit = "secBots">> <</link>> <<if $secBots.troops < $secBots.maxTroops>> - | + | <<link "Replenish the unit" "secBarracks">> <<run cashX(forceNeg(($secBots.maxTroops - $secBots.troops) * $secBotsCost), "securityExpansion")>> <<set $secBots.troops = $secBots.maxTroops>> @@ -165,26 +165,26 @@ Your current maximum number of units is <<print $maxUnits>> (<<print commaNum($s <br><br>__Slaves__ <br>/* slaves */ -You are free to organize your menial slaves into fighting units. Currently you have <<print commaNum($menials)>> slaves available, while <<print commaNum($slavesEmployedManpower)>> are already employed as soldiers. During all your battles you lost a total of <<print commaNum($slavesTotalCasualties)>>. +You are free to organize your menial slaves into fighting units. Currently you have <<print num($menials)>> slaves available, while <<print num($slavesEmployedManpower)>> are already employed as soldiers. During all your battles you lost a total of <<print num($slavesTotalCasualties)>>. <<silently>><<= MenialPopCap()>><</silently>> <<set _menialPrice = menialSlaveCost()>> <<set _bulkMax = $PopCap-$menials-$fuckdolls-$menialBioreactors>> <<if $cash > _menialPrice>> -<<if _bulkMax > 0>> - <br> - [[Buy|secBarracks][$menials+=1,$menialSupplyFactor-=1,cashX(forceNeg(_menialPrice), "menialTransfer")]] - <<if $cash > (menialSlaveCost(10))*10>> - [[(x10)|secBarracks][$menials+=10,$menialSupplyFactor-=10,cashX(forceNeg((menialSlaveCost(10))*10), "menialTransfer")]] - <</if>> - <<if $cash > (menialSlaveCost(100))*100>> - [[(x100)|secBarracks][$menials+=100,$menialSupplyFactor-=100,cashX(forceNeg((menialSlaveCost(100))*100), "menialTransfer")]] - <</if>> - <<if $cash > (_menialPrice+1)*2>> - <<set _menialBulkPremium = Math.trunc(1 + Math.clamp($cash/_menialPrice,0,_bulkMax)/400)>> - [[(max)|secBarracks][$menials+=Math.trunc(Math.clamp($cash/(_menialPrice+_menialBulkPremium),0,_bulkMax)),$menialSupplyFactor-=Math.trunc(Math.clamp($cash/(_menialPrice+_menialBulkPremium),0,_bulkMax)),cashX(forceNeg(Math.trunc(Math.clamp($cash/(_menialPrice+_menialBulkPremium),0,_bulkMax)*(_menialPrice+_menialBulkPremium))), "menialTransfer")]] + <<if _bulkMax > 0>> + <br> + [[Buy|secBarracks][$menials+=1,$menialSupplyFactor-=1,cashX(forceNeg(_menialPrice), "menialTransfer")]] + <<if $cash > (menialSlaveCost(10))*10>> + [[(x10)|secBarracks][$menials+=10,$menialSupplyFactor-=10,cashX(forceNeg((menialSlaveCost(10))*10), "menialTransfer")]] + <</if>> + <<if $cash > (menialSlaveCost(100))*100>> + [[(x100)|secBarracks][$menials+=100,$menialSupplyFactor-=100,cashX(forceNeg((menialSlaveCost(100))*100), "menialTransfer")]] + <</if>> + <<if $cash > (_menialPrice+1)*2>> + <<set _menialBulkPremium = Math.trunc(1 + Math.clamp($cash/_menialPrice,0,_bulkMax)/400)>> + [[(max)|secBarracks][$menials+=Math.trunc(Math.clamp($cash/(_menialPrice+_menialBulkPremium),0,_bulkMax)),$menialSupplyFactor-=Math.trunc(Math.clamp($cash/(_menialPrice+_menialBulkPremium),0,_bulkMax)),cashX(forceNeg(Math.trunc(Math.clamp($cash/(_menialPrice+_menialBulkPremium),0,_bulkMax)*(_menialPrice+_menialBulkPremium))), "menialTransfer")]] + <</if>> + //Bulk transactions may require offering a premium.// <</if>> - //Bulk transactions may require offering a premium.// -<</if>> <</if>> <br> <<set _sL = $slaveUnits.length>> @@ -233,7 +233,7 @@ You are free to organize your menial slaves into fighting units. Currently you h <</link>> <<if $slaveUnits[_i].troops < $slaveUnits[_i].maxTroops && $menials > 0>> - | + | <<link "Replenish unit" "secBarracks">> <<if $menials >= $slaveUnits[_i].maxTroops - $slaveUnits[_i].troops>> <<set $menials -= $slaveUnits[_i].maxTroops - $slaveUnits[_i].troops>> @@ -269,7 +269,7 @@ You are free to organize your menial slaves into fighting units. Currently you h <</link>> <<if $menials > 0>> - | + | <<link "Reform the unit" "secBarracks">> <<if $menials >= $slaveUnits[_i].maxTroops>> <<set $slavesEmployedManpower += $slaveUnits[_i].maxTroops>> @@ -304,7 +304,7 @@ __Militia__ <<elseif $militarizedSociety == 1>> With the adoption of a militarized society, your available manpower has swelled to be approximately 15% of the arcology's citizens population. <</if>> - Your current total manpower is <<print commaNum($militiaTotalManpower)>>, of which <<print commaNum($militiaEmployedManpower)>> is in active duty. You lost in total <<print commaNum($militiaTotalCasualties)>> citizens, leaving you with <<print commaNum($militiaFreeManpower)>> available citizens. + Your current total manpower is <<print num($militiaTotalManpower)>>, of which <<print num($militiaEmployedManpower)>> is in active duty. You lost in total <<print num($militiaTotalCasualties)>> citizens, leaving you with <<print num($militiaFreeManpower)>> available citizens. <br> <<set _mL = $militiaUnits.length>> <<if $militiaFreeManpower > 0 && $activeUnits < $maxUnits>> @@ -352,7 +352,7 @@ __Militia__ <</link>> <<if $militiaUnits[_i].troops < $militiaUnits[_i].maxTroops && $militiaFreeManpower > 0>> - | + | <<link "Replenish unit" "secBarracks">> <<if $militiaFreeManpower >= $militiaUnits[_i].maxTroops - $militiaUnits[_i].troops>> <<set $militiaFreeManpower -= $militiaUnits[_i].maxTroops - $militiaUnits[_i].troops>> @@ -389,7 +389,7 @@ __Militia__ <</link>> <<if $militiaFreeManpower > 0>> - | + | <<link "Reform the unit" "secBarracks">> <<if $militiaFreeManpower >= $militiaUnits[_i].maxTroops>> <<set $militiaEmployedManpower += $militiaUnits[_i].maxTroops>> @@ -421,7 +421,7 @@ __Militia__ __Mercenaries__ <br>/* mercenaries */ With the installation of a mercenary company in the arcology, many other are attracted to your free city, hoping to land a contract with you. - You are able to organize them in units to use in the defense of the arcology. Excluding the defense force you set up, there are <<print commaNum($mercTotalManpower)>> mercenaries in your arcology, of which <<print commaNum($mercEmployedManpower)>> actively employed and <<print $mercFreeManpower>> not yet under contract. In total <<print commaNum($mercTotalCasualties)>> mercenaries have died defending your arcology. + You are able to organize them in units to use in the defense of the arcology. Excluding the defense force you set up, there are <<print num($mercTotalManpower)>> mercenaries in your arcology, of which <<print num($mercEmployedManpower)>> actively employed and <<print $mercFreeManpower>> not yet under contract. In total <<print num($mercTotalCasualties)>> mercenaries have died defending your arcology. <br> <<set _meL = $mercUnits.length>> <<if $mercFreeManpower > 0 && $activeUnits < $maxUnits>> @@ -469,7 +469,7 @@ __Mercenaries__ <</link>> <<if $mercUnits[_i].troops < $mercUnits[_i].maxTroops && $mercFreeManpower > 0>> - | + | <<link "Replenish unit" "secBarracks">> <<if $mercFreeManpower >= $mercUnits[_i].maxTroops - $mercUnits[_i].troops>> <<set $mercFreeManpower -= $mercUnits[_i].maxTroops - $mercUnits[_i].troops>> @@ -505,7 +505,7 @@ __Mercenaries__ <</link>> <<if $mercFreeManpower > 0>> - | + | <<link "Reform the unit" "secBarracks">> <<if $mercFreeManpower >= $mercUnits[_i].maxTroops>> <<set $mercEmployedManpower += $mercUnits[_i].maxTroops>> diff --git a/src/SecExp/securityHQ.tw b/src/SecExp/securityHQ.tw index 5c4560015aa57c1081b8a9a10ab78fadf14a0fc5..e8708cea7264481a29d7cf255271031e1565d851 100644 --- a/src/SecExp/securityHQ.tw +++ b/src/SecExp/securityHQ.tw @@ -14,7 +14,7 @@ Security headquarters The security headquarters stand in front of you. Innumerable screens flood with light the great central room. <<if $secMenials > 0>>Some slaves see you enter and interrupt their work to greet you.<</if>> From here you can build a safe and prosperous arcology. <br> /* security level. Slaves */ -You have <span id="secHel"> <<print commaNum($secMenials)>> </span> slaves working in the HQ. $reqMenials are required and you have <span id="hel"> <<print commaNum($menials)>> </span> free menial slaves. +You have <span id="secHel"> <<print num($secMenials)>> </span> slaves working in the HQ. $reqMenials are required and you have <span id="hel"> <<print num($menials)>> </span> free menial slaves. <<if $secMenials < $reqMenials>> You do not have enough slaves here. You will not receive the full benefit of the installed upgrades. <<else>> diff --git a/src/SecExp/securityReport.tw b/src/SecExp/securityReport.tw index fa8f160352cdc1947a9315b08861cb499b8cedb1..9a8f36a9742ae47132b02cdeb9c5839d1939ce02 100644 --- a/src/SecExp/securityReport.tw +++ b/src/SecExp/securityReport.tw @@ -22,7 +22,7 @@ <strong>Security</strong>: <<if $secMenials > 0>> - <<print commaNum($secMenials)>> slaves work to improve the security of your arcology, + <<print num($secMenials)>> slaves work to improve the security of your arcology, <<if $mercenaries >= 1 && $arcologyUpgrade.drones == 1>> while your mercenaries and security drones tirelessly patrol the streets to keep them safe. <<elseif $arcologyUpgrade.drones == 1>> diff --git a/src/SecExp/unitsBattleReport.tw b/src/SecExp/unitsBattleReport.tw index 5e61ee17df97747d0848839d06cccad0d3145f3a..fce1092cc1b686f22419014aaa28e9be13209071 100644 --- a/src/SecExp/unitsBattleReport.tw +++ b/src/SecExp/unitsBattleReport.tw @@ -7,7 +7,7 @@ <</if>> <<if $SF.Toggle && $SF.Active >= 1 && $SFIntervention>> <br> - <<print commaNum($SF.Squad.Troops)>> soldiers from $SF.Lower joined the battle: no casualties suffered. + <<print num($SF.Squad.Troops)>> soldiers from $SF.Lower joined the battle: no casualties suffered. <</if>> <<if $deployingMilitia == 1>> <<for _j = 0; _j < $militiaUnits.length; _j++>> @@ -126,7 +126,7 @@ <br> <<set _loss = _lossesList.pluck()>> <<set _loss = Math.clamp(_loss,0,$SF.Squad.Troops)>> - <<print commaNum($SF.Squad.Troops)>> soldiers from $SF.Lower joined the battle: + <<print num($SF.Squad.Troops)>> soldiers from $SF.Lower joined the battle: <<if _loss <= 0>> no casualties <<elseif _loss <= 10>> diff --git a/src/SecExp/unitsRebellionReport.tw b/src/SecExp/unitsRebellionReport.tw index 62e03082e5d10bb2642a73e572a3e844e04d83fb..235bbacc991fbb26961f821054ffb46cb036de58 100644 --- a/src/SecExp/unitsRebellionReport.tw +++ b/src/SecExp/unitsRebellionReport.tw @@ -9,7 +9,7 @@ Security drones: no casualties suffered. <</if>> <<if $SF.Toggle && $SF.Active >= 1>> - <br>$SF.Lower, <<print commaNum($SF.Squad.Troops)>> strong, was called to join the battle: no casualties suffered. + <br>$SF.Lower, <<print num($SF.Squad.Troops)>> strong, was called to join the battle: no casualties suffered. <</if>> <<set _count = 0>> <<if $loyalID.length > 0>> diff --git a/src/SecExp/weaponsManufacturing.tw b/src/SecExp/weaponsManufacturing.tw index d3ca71e1102e64befa2ff5703bdd82bce14087bb..c48d2e98a1771251addde53762037d43c9ade0ed 100644 --- a/src/SecExp/weaponsManufacturing.tw +++ b/src/SecExp/weaponsManufacturing.tw @@ -29,7 +29,7 @@ many small old world nations as the advanced technology that free cities have av <</if>> <br> <<if $weapMenials> 0>>Assigned here are $weapMenials slaves working to produce as much equipment as possible.<<else>>There are no assigned menial slaves here. The spaces is manned exclusively by low rank citizens.<</if>> -You own <<print commaNum($menials)>> free menial slaves. This manufacturing complex can house 500 at most, with <<print 500 - $weapMenials>> free slots. +You own <<print num($menials)>> free menial slaves. This manufacturing complex can house 500 at most, with <<print 500 - $weapMenials>> free slots. <br> <<silently>><<= MenialPopCap()>><</silently>> <<set _menialPrice = menialSlaveCost()>> diff --git a/src/SecExp/widgets/miscSecExpWidgets.tw b/src/SecExp/widgets/miscSecExpWidgets.tw index 45ab7fdaa20cb959e3a489d6ab57fa2941ed10be..e704c8f183aeca1e8f57d2b7b25fec165cf00fea 100644 --- a/src/SecExp/widgets/miscSecExpWidgets.tw +++ b/src/SecExp/widgets/miscSecExpWidgets.tw @@ -222,6 +222,7 @@ <<widget "recalcUnits">> <<set $maxUnits = 6 + $secBarracksUpgrades.size * 2>> <<set $activeUnits = $militiaUnits.length + $slaveUnits.length + $mercUnits.length>> + <<if $readiness === 10>> <<set $maxUnits += 4>> <</if>> <</widget>> <<widget "fixBrokenUnits">> diff --git a/src/SpecialForce/Firebase.tw b/src/SpecialForce/Firebase.tw index ad781b43415c157f3919de27a39de7b445a4816a..586932152b42c86830f35a9d384c600ae8994a71 100644 --- a/src/SpecialForce/Firebase.tw +++ b/src/SpecialForce/Firebase.tw @@ -1,6 +1,6 @@ :: Firebase [nobr] -<<if ndef $Tour>> <<set $Tour = 0>> <</if>> <<= Count()>> +<<if ndef $Tour>> <<set $Tour = 0>> <</if>> <<= Count()>> <<set _S=$SF.Squad>> <<if $Tour === 0>> <<switch _Env>> <<case 4>> <<set _EnvCash2 = 450,_EnvCash3 = 200,_EnvCash4 = 100,_EnvProsp = 3>> @@ -30,10 +30,10 @@ <<print Interactions()>> <<include "WC">> - <<if ndef $SF.MercCon.View && ($SF.Colonel.Fun + $SF.Colonel.Talk < 1)>> + <<if $SF.MercCon.CanAttend === -2 && ($SF.Colonel.Fun + $SF.Colonel.Talk < 1)>> <br><br>Her expression changes as something jogs her memory. "Before we begin <<if $SF.Colonel.Core == "brazen">><<= properTitle()>><<else>>boss<</if>>, back when I was a merc me and a couple of my old friends would have a meetup every several months. Drinking, fucking, drugs... a little poker. It eventually grew into a whole thing, and now we bring our latest and greatest toys to show off, maybe make some money off selling the schematics. I'd like to continue going, for old times' sake." - <br>[[Grant leave|Firebase][$SF.MercCon.CanAttend = 1,$SF.MercCon.View = 1]] - <br>[[Request she remain on base|Firebase][$SF.MercCon.CanAttend = -2,$SF.MercCon.View = 0]]<br> + <br>[[Grant leave|Firebase][$SF.MercCon.CanAttend = 1]] + <br>[[Request she remain on base|Firebase][$SF.MercCon.CanAttend = -3]]<br> <</if>> <<if $SF.MercCon.History >= 1>> @@ -70,14 +70,100 @@ @@.red;<<print cashFormat(Math.ceil((750000*(1.15+($SF.Size/1000))*(1.15+($SF.Squad.Firebase/10)))*_Env))>>@@ <</if>> <br>[[Tour the firebase|Firebase][$Tour = 1]] -<<else>> - <<= FlavourText('Intro')>> +<<else>> <br> <<set $nextButton = "Return to Operations", $nextLink = "Firebase", $Tour=0>> + You continue towards the common area, the soldiers you pass, nod respectfully, salute, or bow slightly, as they please. You pass the briefing areas, the officers and sergeants of the force are conferring over planning tables and display screens regarding their upcoming deployments. + <br><br><div style="margin-left:2em">The commanders are + <<if $SF.Target === "recruit">> + viewing lists of potential recruits for $SF.Lower. Mainly mercenaries and Old World soldiers who might be receptive to an offer of employment and residence within the arcology, in addition to some citizens of the arcology who wish to have some excitement in their lives. + <<elseif $SF.Target === "secure">> + reviewing maps of trade routes to the arcology as well as nearby merchant hubs, arranging their future deployments to best protect them and encourage business and trade. + <<else>> + reviewing maps of settlements and locations reported to have choice concentrations of material loot and potential slave stock, in preparation for their coming raids. + <</if>> </div> + <div style="margin-left:2em"> + <<if $SF.ROE === "hold">> + There are posted (and very strict) guidelines for the use of force against non-citizen residents, forbidding the use of heavy weapons or indiscriminate fire. + <<elseif $SF.ROE === "limited">> + There are some guidelines posted regarding the use of force against non-citizens, forbidding general indiscriminate fire. + <<else>> + Guidelines regarding the use of force are completely absent from the deployment information screens. A note affixed to the screen, probably from a soldier, says: "Pop 'em if you see 'em — better than target practice!" Another one on top of that, from The Colonel, says: "Don't shoot the pretty ones, you fucking morons, or I'll kill you myself. They're worth good money or good for fun — do you idiots really want to have to fuck month-old stock?" + <</if>> </div> + <div style="margin-left:2em"> + <<if $SF.Regs === "strict">> + On several screens, there are prominent warnings regarding the severe disciplinary procedures that will be taken against soldiers who commit crimes while on deployment. + <<elseif $SF.Regs === "some">> + On several screens, there are some minor warnings regarding the mild disciplinary procedures that may be taken against soldiers who commit especially severe crimes while on deployment. + <<else>> + There are no warnings or information regarding disciplinary procedures on any of the screens. Near one of them, a waste basket has been dragged over and a soldier has posted a note above it that says: "For Old World Complaints and Warrants." + <</if>> </div> + + <br>You arrive at the firebase's common area, a nest of bars, pleasure dens, public spaces, and other facilities catering to the soldiers' needs and giving them somewhere to spend their free time, since they do not mingle with your citizens on the higher levels or exit the arcology except on deployment. It is well-occupied by the soldiers not currently tasked with duties, and they respectfully move out of your way as you approach, clearing a path for you to move forward. + <br><br><div style="margin-left:2em"> + The amenities are staffed by menial slaves, captured by the soldiers on their excursions. They are + <<if $SF.Depravity <= 0.3 && $SF.Colonel.Core === "kind">> + wearing plain jumpsuits and slim identification collars to set them apart from the soldiers, and look resigned but not fearful. The soldiers themselves socialize at the bars, in small groups around tables, and in the gambling parlors. Many of them can be seen entering or leaving the dens occupied by the sexual slaves they have acquired. Laughter from the carousing soldiers can be heard at all times. Small groups of slaves move freely between the plaza and their basic accommodations attached to the firebase. + <<elseif $SF.Depravity <= 0.6 && $SF.Colonel.Core === "kind">> + topless, wearing only utilitarian pants and leather collars to set them apart from the soldiers, and occasionally shoot fearful looks at the soldiers. The soldiers themselves socialize at the bars, or in large groups around tables, leering at and groping slaves of interest as they pass by. Many of them can be seen entering or leaving the dens occupied by the sexual slaves they have acquired, and often emerge only partially dressed, sometimes pulling half-naked slaves out with them. + <<elseif $SF.Depravity <= 0.9>> + topless, wearing only utilitarian shorts and steel collars to set them apart from the soldiers, and often shoot fearful looks at the soldiers. The soldiers themselves socialize at the bars, or in large groups around tables, leering at and heavily groping slaves of interest as they pass by. Many of them can be seen entering or leaving the dens occupied by the sexual slaves they have acquired, and often emerge stark naked, sometimes pulling naked slaves out with them for one last servicing in public. A few soldiers stagger around in drunken hazes or drugged-out stupors. + <<elseif $SF.Depravity <= 1.2>> + topless, wearing only a single undergarment and heavy steel collars to set them apart from the soldiers, and often shoot fearful looks at the soldiers. The soldiers occupy themselves primarily with sex, pulling slaves onto benches and fucking them hard in public. Many soldiers stagger around or lie passed out from drug and alcohol abuse. + <<elseif $SF.Depravity >= 1.5 && ($SF.Colonel.Core === "Warmonger" || $SF.Colonel.Core !== "Shell Shocked")>> + naked, and are wearing heavy shock collars to force obedience. Most are wild-eyed with fear or dull-eyed from mental collapse, and many others bear marks of abuse. Few of the slaves are here long-term, the depraved pleasures of the soldiers resulting in enormous turnover and loss of 'damaged' stock. The extreme libations of the soldiers are ever-present. Drunken soldiers stagger around everywhere, beating slaves too slow to get out of their way. Others lie sprawled out on the ground, rendered senseless from heavy drug abuse. Some walk around naked, and hold slaves down on the benches scattered around, raping or sodomizing them with their cocks or their personal strap-ons as they desire. In alcoves, some soldier-lover pairs fuck loudly, moaning in pleasure. + <<if random(1,100) <= 50>> + Off to the side, a group of soldiers brutally gangbang a very young slave girl, with one soldier buried balls-deep in her ass, another brutally sawing a barbed strap-on in and out of her pussy, and a third with his cock forced deep down her throat. The slave girl struggles and gags, desperate for breath or relief. + <<elseif random(1,100) > 50>> + Off to the side, a group of soldiers cackle amongst themselves as they take turns beating a very young slave girl with heavy batons. Sickening crunches can be heard from the screaming slave. + <<elseif random(1,100) > 75>> + Off to the side, still more soldiers crowd around an above-ground pit built from empty crates, gambling on slave gladiator fights. There's a drunken cheer as one of the fighters, a very young slave girl, straddles another one and smashes her face in with a blood-slick ammo crate. As she stands, shaking from fear and adrenaline, one of the soldiers laughs and throws a small incendiary grenade at her, changing the cheers to curses as the other soldiers jump away from the flaming, screeching slave. + <<else>> + Screams and cries of pain can be heard echoing around the area as the soldiers have their fun with their property. + <</if>> + <</if>> </div> + + <br>In the middle of the common area is a pile of supply crates with a pavilion on top — The Colonel's personal throne and open quarters, the result of her preferring to live an extreme lifestyle amongst her soldiers rather than in her empty quarters on the upper levels. It's draped with the 'flag' of $SF.Lower, one of her inventions. Sprawled all around it is an immense quantity of; alcohol, hard drugs, clothes, electronic devices, huge amounts of cash, jewels and precious metals looted from the outside world. + <br><br><div style="margin-left:2em"> + As you approach, The Colonel + <<if random(0,100) <= 50>> + raises a hand in greeting and nods. She is sprawled on a couch, wearing only her combat suit tank top and fingerless gloves. She's holding a near-empty bottle of strong liquor in her hand and you can see a naked slave girl kneeling on the floor between her legs. The Colonel has her legs wrapped tightly around the girl's head, forcing the girl to service her if she wants to breathe. The Colonel is close to her climax then suddenly tenses her lower body thus gripping the girl even tighter and throws her head back in ecstasy as she orgasms. She lets out a long breath finally releasing the girl, giving her a hard smack and shouting at her to fuck off.<br><br> The Colonel finishes off her bottle, tossing it over her shoulder then leaning back on the couch and spreading her legs wide. You look down briefly, falling into your habits of inspection. Her pussy is completely devoid of hair with heavy labia in with a very large and hard clit peaking out. Beads of moisture, the result of her excitation, are visible, and you can tell from long experience that she would be tight as a vise. You return your gaze to her face to find her smirking at you. "Like what you see, <<= SFCR()>>?" She waves her hand at the plaza around her, "So do they. But you're not here for pussy. You're here to talk business. So, what's up?" + <<elseif random(0,100) > 50>> + is in no condition initially to greet you. She's naked except for one sock that gives you a very good view of her muscled, taut body while lunging with her feet on the table and the rest on her couch. She is face-down in a drugged-out stupor in the middle of a wide variety of powders and pills. Perhaps sensing your approach, her head suddenly shoots up and looks at you with unfocused, bloodshot eyes. "Sorry, <<= SFCR()>>," she slurs, wiping her face and weakly holding up a hand. "Hold on a second, I need something to help me out here. Long fucking night." She struggles to sit on the couch and bending over the table, loudly snorts up some of the white powder on it. "Ahhh, fuck," she says, breathing heavily.<br><br> She shakes her head powerfully now looking at you, her eyes once again alert and piercing. "That's better," she says, leaning back on the couch and giving you another good view of her assets. "So, <<= SFCR()>>," she begins, "what brings you down here to our little clubhouse? I trust you're happy with how we've been handling things out there?" You nod. "Excellent", she laughs. "I have to say; it's nice to have a place like this while having some top-end gear and to be able to have fun out there without worrying about anyone coming back on us. Good fucking times." She laughs again. "So — I'm assuming you want something?" + <<elseif random(0,100) > 70 && $SF.Depravity >= 1.5 && $SF.Colonel.Core == "cruel">> + is relaxing on her couch stark naked, greeting you with a raised hand. Between her tightly clenched legs is a slave girl being forced to eat her out. "Hey, <<= SFCR()>>, what's —" she breaks off as a flash of pain crosses her features. "Fucking bitch!" she exclaims, pulling her legs away and punching the slave girl in the face. She pushes the girl to the ground, straddling her then begins hitting. You hear one crunch after another as The Colonel's powerful blows shatter the girl's face. She hisses from between clenched teeth, each word accompanied by a brutal punch. "How. Many. Fucking. Times. Have. I. Told. You. To. Watch. Your. Fucking. Teeth. On. My. Fucking. Clit!" She leans back, exhaling heavily. Before leaning back down to grip apply pressure onto the girl's neck with her powerful hands. Wordlessly, she increases the pressure and soon the girl begins to turn blue as she struggles to draw breath. Eventually her struggles weaken and then finally, end.<br><br> The Colonel relaxes her grip then wipes her brow, clearing away the sweat from her exertion. Finally rising from the girl's body, relaxing back on the couch and putting her feet back up on the table. "Sorry about that <<= SFCR()>>," she says, shrugging. "So many of these bitches we pick up from the outside don't understand that they have to behave." Shaking her head in frustration, "Now I need to find another one. But that's not your problem — you're here to talk business. So, what's up?" + >>else>> + is topless while reviewing the particulars of her unit on a tablet as you approach. She raises a hand in greeting. "Hey <<= SFCR()>>," she says, noticing you looking at her chest. She laughs. "Nice, aren't they? But they're not for you or them." She throws a thumb at the plaza around her. "You're down here for a reason, though. What can I do for you?" + <</if>> </div> + <<if _S.Firebase === 10>> + <br>The echo of simulated gun fire and explosions can be heard from the state of the art killhouse. + The quite hum of fans keeping the faster and much more efficient custom network operational can be heard throughout the firebase.<br> + <</if>> + + <br>__Current facilities status:__ + <<= UnitText('firebase')>> <<= UnitText('troop')>> <<= UnitText('armoury')>> + <<= UnitText('drugs')>> <<= UnitText('UAV')>> + + <<if _G > 0 && _S.Firebase >= 1>> <br><br>''Garage:'' + <<if _S.AV+_S.TV > 0>> <br> ''Vehicles:'' + <<= UnitText('AV')>> <<= UnitText('TV')>> + <</if>> + <<= UnitText('PGT')>> + <</if>> + + <<if _S.Firebase >= 4>> + <<if _H > 0>> <br><br>''Hangar:'' + <<if _S.AA+_S.TA > 0>> <br> ''Airforce:'' + <<= UnitText('AA')>> <<= UnitText('TA')>> + <</if>> + <<= UnitText('SP')>> <<= UnitText('GunS')>> + <</if>> + <</if>> <<if _T1 && _LB> 0>> <br><br>''Launch Bay:'' - <<if $SF.Squad.Satellite.lv > 0>> <br> ''Satellite:'' <<= Sat()>> - <<if $SF.Squad.Satellite.InOrbit < 1>> <br> [[Launch it into geostationary orbit.|Firebase][$SF.Squad.Satellite.InOrbit=1]] //You <span class='red'>cannot</span> upgrade the satellite once it has been launched.// <</if>> + <<if $SF.Squad.Satellite.lv > 0>> <<= UnitText('sat')>> + <<if $SF.Squad.Satellite.InOrbit < 1>> [[<br> Launch it into geostationary orbit.|Firebase][$SF.Squad.Satellite.InOrbit=1]] //You <span class='red'>cannot</span> upgrade the satellite once it has been launched.// <</if>> <</if>> - <<if $SF.Squad.GiantRobot > 0>> <br> ''Giant Robot:'' <<= GR()>> <</if>> - <<if $SF.Squad.MissileSilo > 0>> <br> ''Cruise Missile:'' <<= ms()>> <</if>> + <<= UnitText('GR')>> <<= UnitText('ms')>> + <</if>> + <<if _NY > 0>> <br><br>''Naval Yard:'' + <<= UnitText('AC')>> <<= UnitText('Sub')>> <<= UnitText('HAT')>> <</if>> - <<= FlavourText('Outro')>> <</if>> \ No newline at end of file diff --git a/src/SpecialForce/SpecialForce.js b/src/SpecialForce/SpecialForce.js index 5bbe9269e02d4e066ba64a65823c8e8762e3bf95..843af18489ec6ff1c054d7a747d23cf6a9771f7a 100644 --- a/src/SpecialForce/SpecialForce.js +++ b/src/SpecialForce/SpecialForce.js @@ -1,24 +1,25 @@ -//V=SugarCube.State.variables, T=SugarCube.State.temporary; +/* eslint-disable no-undef */ +//V = SugarCube.State.variables, T = SugarCube.State.temporary; window.Main = function() { - const V=State.variables; - V.SF={Toggle:V.SF.Toggle,Active:-1,Depravity:0, Size:0, Upgrade:0, Gift:0, UC:{Assign:0, Lock:0}, ROE:"hold", Target:"recruit", Regs:"strict", Caps:"The Special Force", Lower:"the special force", Subsidy:1, BadOutcome:""}; - V.arcologies[0].SFRaid=1; V.arcologies[0].SFRaidTarget=-1; + const V = State.variables; + V.SF = {Toggle:V.SF.Toggle,Active:-1,Depravity:0, Size:0, Upgrade:0, Gift:0, UC:{Assign:0, Lock:0, num:0}, ROE:"hold", Target:"recruit", Regs:"strict", Caps:"The Special Force", Lower:"the special force", Subsidy:1, BadOutcome:""}; + V.arcologies[0].SFRaid = 1; V.arcologies[0].SFRaidTarget = -1; }; window.Squad = function() { - const V=State.variables; - V.SF.Squad={Troops:40, Armoury:0, Firebase:0, AV:0, TV:0, Drones:0, Drugs:0, PGT:0, AA:0, TA:0, SpacePlane:0, GunS:0, Satellite:{lv:0, InOrbit:0}, GiantRobot:0, MissileSilo:0, AircraftCarrier:0, Sub:0, HAT:0}; + const V = State.variables; + V.SF.Squad = {Troops:40, Armoury:0, Firebase:0, AV:0, TV:0, Drones:0, Drugs:0, PGT:0, AA:0, TA:0, SpacePlane:0, GunS:0, Satellite:{lv:0, InOrbit:0}, GiantRobot:0, MissileSilo:0, AircraftCarrier:0, Sub:0, HAT:0}; }; window.Colonel = function() { - const V=State.variables; - V.SF.Colonel={Core:"", Talk:0, Fun:0, Status:0}; + const V = State.variables; + V.SF.Colonel = {Core:"", Talk:0, Fun:0, Status:0}; }; window.MercCon = function() { - const V=State.variables; - V.SF.MercCon={History:0, CanAttend:0, Income:0, Revenue:0, Menials:0, TotalMenials:0, Mercs:0, TotalMercs:0}; + const V = State.variables; + V.SF.MercCon = {History:0, CanAttend:-2, Income:0, Revenue:0, Menials:0, TotalMenials:0, Mercs:0, TotalMercs:0}; }; window.Facility = function() { - const V=State.variables; - V.SF.Facility={Toggle:0, Active:0, LC:0, Workers:0, Max:5, Caps:"Special force support facility", Lower:"special force support facility", Decoration:"standard", Speed:0, Upgrade:0, IDs:[]}; + const V = State.variables; + V.SF.Facility = {Toggle:0, Active:0, LC:0, Workers:0, Max:5, Caps:"Special force support facility", Lower:"special force support facility", Decoration:"standard", Speed:0, Upgrade:0, IDs:[]}; }; window.SFInit = function() { @@ -32,7 +33,7 @@ window.SFBC = function() { } } - const V=State.variables; + const V = State.variables; function InitClean() { jsDel([V.SFMODToggle,V.securityForceActive,V.securityForceCreate,V.securityForceEventSeen]); } @@ -57,9 +58,9 @@ window.SFBC = function() { } if (V.SF === undefined) { - if (V.securityForceEventSeen < 1) { V.securityForceActive=-1; } else { V.securityForceActive=2; } - V.SF={Toggle:V.SFMODToggle, Active:V.securityForceActive}; InitClean(); - if (V.securityForceName === undefined) V.securityForceName="the special force"; + if (V.securityForceEventSeen < 1) { V.securityForceActive = -1; } else { V.securityForceActive = 2; } + V.SF = {Toggle:V.SFMODToggle, Active:V.securityForceActive}; InitClean(); + if (V.securityForceName === undefined) V.securityForceName = "the special force"; if (V.SF.Active >= 1) { Object.assign(V.SF, { Depravity:V.securityForceDepravity, @@ -73,22 +74,22 @@ window.SFBC = function() { Caps:"The Special Force", Lower:V.securityForceName, Subsidy:V.SubsidyActive}); MainClean(); - SFNameCapsCheck(); + SFNameCapsCheck(); - if (V.ColonelCore === undefined) V.ColonelCore=""; - if (V.ColonelDiscussion === undefined) V.ColonelDiscussion=0; - if (V.ColonelSexed === undefined) V.ColonelSexed=0; - V.SF.Colonel={ + if (V.ColonelCore === undefined) V.ColonelCore = ""; + if (V.ColonelDiscussion === undefined) V.ColonelDiscussion = 0; + if (V.ColonelSexed === undefined) V.ColonelSexed = 0; + V.SF.Colonel = { Core:V.ColonelCore, Talk:V.securityForceColonelToken, Fun:V.securityForceColonelSexed, Status:V.ColonelRelationship}; ColonelClean(); - if (V.TradeShowIncome === undefined) V.TradeShowIncome=0; - if (V.TotalTradeShowIncome === undefined) V.TotalTradeShowIncome=0; - if (V.TradeShowHelots === undefined) V.TradeShowHelots=0; - if (V.TotalTradeShowHelots === undefined) V.TotalTradeShowHelots=0; - V.SF.MercCon={ + if (V.TradeShowIncome === undefined) V.TradeShowIncome = 0; + if (V.TotalTradeShowIncome === undefined) V.TotalTradeShowIncome = 0; + if (V.TradeShowHelots === undefined) V.TradeShowHelots = 0; + if (V.TotalTradeShowHelots === undefined) V.TotalTradeShowHelots = 0; + V.SF.MercCon = { History:V.OverallTradeShowAttendance, CanAttend:V.CurrentTradeShowAttendance, Income:V.TradeShowIncome, @@ -97,18 +98,18 @@ window.SFBC = function() { TotalMenials:V.TotalTradeShowHelots, Mercs:0, TotalMercs:0}; TradeShow(); - if (V.SF.MercCon.History > 0) V.SF.MercCon.View=1; + if (V.SF.MercCon.History > 0) V.SF.MercCon.CanAttend = 1; - if (V.securityForceHeavyBattleTank === undefined) V.securityForceHeavyBattleTank=0; - if (V.securityForceSpacePlanePower === undefined) V.securityForceSpacePlanePower=0; - if (V.securityForceAC130 === undefined) V.securityForceAC130=0; - if (V.securityForceSatellitePower === undefined) V.securityForceSatellitePower=0; - if (V.securityForceGiantRobot === undefined) V.securityForceGiantRobot=0; - if (V.securityForceMissileSilo === undefined) V.securityForceMissileSilo=0; - if (V.securityForceAircraftCarrier === undefined) V.securityForceAircraftCarrier=0; - if (V.securityForceSubmarine === undefined) V.securityForceSubmarine=0; - if (V.securityForceHeavyAmphibiousTransport === undefined) V.securityForceHeavyAmphibiousTransport=0; - V.SF.Squad={ + if (V.securityForceHeavyBattleTank === undefined) V.securityForceHeavyBattleTank = 0; + if (V.securityForceSpacePlanePower === undefined) V.securityForceSpacePlanePower = 0; + if (V.securityForceAC130 === undefined) V.securityForceAC130 = 0; + if (V.securityForceSatellitePower === undefined) V.securityForceSatellitePower = 0; + if (V.securityForceGiantRobot === undefined) V.securityForceGiantRobot = 0; + if (V.securityForceMissileSilo === undefined) V.securityForceMissileSilo = 0; + if (V.securityForceAircraftCarrier === undefined) V.securityForceAircraftCarrier = 0; + if (V.securityForceSubmarine === undefined) V.securityForceSubmarine = 0; + if (V.securityForceHeavyAmphibiousTransport === undefined) V.securityForceHeavyAmphibiousTransport = 0; + V.SF.Squad = { Troops:V.securityForcePersonnel, Armoury:V.securityForceInfantryPower, Firebase:V.securityForceArcologyUpgrades, @@ -131,50 +132,52 @@ window.SFBC = function() { SFInit(); } } else { + if (V.SF.MercCon.View) delete V.SF.MercCon.View; + if (V.SFUC > 0) V.SF.UC.num = V.SFUC; delete V.SFUC; if (V.SF.Active === -1) SFInit(); if (V.SF.MWU) delete V.SF.MWU; - if (V.SpecOpsLock != undefined) V.SF.SpecOpsLock=V.SpecOpsLock; delete V.SpecOpsLock; + if (V.SpecOpsLock !== undefined) V.SF.SpecOpsLock = V.SpecOpsLock; delete V.SpecOpsLock; if (V.SF.UC === undefined) { - if (V.SF.SpecOps != undefined && V.SF.SpecOpsLock != undefined) { - V.SF.UC={Assign:V.SF.SpecOps, Lock:V.SF.SpecOpsLock}; + if (V.SF.SpecOps !== undefined && V.SF.SpecOpsLock !== undefined) { + V.SF.UC = {Assign:V.SF.SpecOps, Lock:V.SF.SpecOpsLock}; jsDel([V.SF.SpecOps,V.SF.SpecOpsLock]); } else if (V.SF.UC === {}) { - V.SF.UC={Assign:0, Lock:0}; + V.SF.UC = {Assign:0, Lock:0}; } } - if (V.SF.U !== undefined) V.SF.Upgrade=V.SF.U; delete V.SF.U; - if (V.SF.WG !== undefined) V.SF.Gift=V.SF.WG; delete V.SF.WG; + if (V.SF.U !== undefined) V.SF.Upgrade = V.SF.U; delete V.SF.U; + if (V.SF.WG !== undefined) V.SF.Gift = V.SF.WG; delete V.SF.WG; if (V.SF.MercCon === undefined) MercCon(); - if (V.SF.MercCon.Helots != undefined) { - V.SF.MercCon.Menials=V.SF.MercCon.Helots; + if (V.SF.MercCon.Helots !== undefined) { + V.SF.MercCon.Menials = V.SF.MercCon.Helots; delete V.SF.MercCon.Helots; - } else { V.SF.MercCon.Menials=0; } - if (V.SF.MercCon.TotalHelots != undefined) { - V.SF.MercCon.TotalMenials=V.SF.MercCon.TotalHelots; + } else { V.SF.MercCon.Menials = 0; } + if (V.SF.MercCon.TotalHelots !== undefined) { + V.SF.MercCon.TotalMenials = V.SF.MercCon.TotalHelots; delete V.SF.MercCon.TotalHelots; - } else { V.SF.MercCon.TotalMenials=0; } + } else { V.SF.MercCon.TotalMenials = 0; } if (V.SF.Bonus !== undefined) delete V.SF.Bonus; - if (V.SF.Depravity < 0) V.SF.Depravity=0; - if (V.SF.Size === undefined) V.SF.Size=V.SF.Units; delete V.SF.Units; + if (V.SF.Depravity < 0) V.SF.Depravity = 0; + if (V.SF.Size === undefined) V.SF.Size = V.SF.Units; delete V.SF.Units; if (V.SFUnit !== undefined) { - if (V.SFUnit.AT !== undefined) V.SFUnitTA=0; - V.SF.Squad.Satellite=V.SF.Squad.Sat; + if (V.SFUnit.AT !== undefined) V.SFUnitTA = 0; + V.SF.Squad.Satellite = V.SF.Squad.Sat; jsDel([V.SF.Squad.Sat,V.SatLaunched,V.SFUnit.AT]); - V.SF.Squad.Satellite=V.SF.Squad.Sat; delete V.SF.Squad.Sat; - if (V.SFTradeShow !== undefined) V.SF.MercCon=V.SFTradeShow; delete V.SFTradeShow; - if (V.SFColonel !== undefined) V.SF.Colonel=V.SFColonel; delete V.SFColonel; - if (V.SF.BadOutcome === undefined) V.SF.BadOutcome=""; + V.SF.Squad.Satellite = V.SF.Squad.Sat; delete V.SF.Squad.Sat; + if (V.SFTradeShow !== undefined) V.SF.MercCon = V.SFTradeShow; delete V.SFTradeShow; + if (V.SFColonel !== undefined) V.SF.Colonel = V.SFColonel; delete V.SFColonel; + if (V.SF.BadOutcome === undefined) V.SF.BadOutcome = ""; if (V.SF.Squad.Satellite !== undefined && V.SatLaunched === undefined) { - V.SF.Squad.Sat={lv:0, InOrbit:0}; - V.SF.Squad.Satellite=V.SF.Squad.Sat; + V.SF.Squad.Sat = {lv:0, InOrbit:0}; + V.SF.Squad.Satellite = V.SF.Squad.Sat; jsDel([V.SF.Squad.Sat,V.SatLaunched,V.SFUnit]); } } if (V.SF.Squad !== undefined && V.SF.Squad.Satellite.lv === undefined) { - V.SF.Squad.Sat={lv:V.SF.Squad.Satellite, InOrbit:0}; - V.SF.Squad.Satellite=V.SF.Squad.Sat; delete V.SF.Squad.Sat; + V.SF.Squad.Sat = {lv:V.SF.Squad.Satellite, InOrbit:0}; + V.SF.Squad.Satellite = V.SF.Squad.Sat; delete V.SF.Squad.Sat; } } if (V.securityForceName !== undefined) InitClean(); MainClean(); ColonelClean(); TradeShowClean(); UnitsClean(); @@ -182,30 +185,30 @@ window.SFBC = function() { }; window.SFReport = function() { - "use strict"; const V=State.variables,T=State.temporary,S=V.SF.Squad; - let target=50000,baseLine=5000,profit=0,upkeep=0,income=0; - let Multiplier={action:1,troop:1,unit:1,depravity:1},SFD=V.SF.Depravity; - let FNG=10,unitCap=2500,Trade=0.025,deaths=0,r=``; Count(); - let cost={a:0.01,b:2.5};let NO=1+(V.SF.Size/5);let N1=1+(V.SF.Size/5); - V.SFUC=0; if (profit < 1) cost.a=10; cost.b=0.1;NO=1;N1=0.1; + "use strict"; const V = State.variables,T = State.temporary,S = V.SF.Squad; + let target = 50000,baseLine = 5000,profit = 0,upkeep = 0,income = 0; + let Multiplier = {action:1,troop:1,unit:1,depravity:1},SFD = V.SF.Depravity; + let FNG = 10,unitCap = 2500,Trade = 0.025,deaths = 0,r = ``; Count(); + let cost = {a:0.01,b:2.5};let NO = 1+(V.SF.Size/5);let N1 = 1+(V.SF.Size/5); + V.SF.UC.num = 0; if (profit < 1) cost.a = 10; cost.b = 0.1;NO = 1;N1 = 0.1; - if (S.Troops > unitCap) S.Troops=unitCap; + if (S.Troops > unitCap) S.Troops = unitCap; if (S.Troops < 100) { S.Troops += Math.ceil(jsRandom(2,5)); } else { if (V.SF.Target === "recruit") { - S.Troops += Math.ceil(jsRandom(-1*S.Troops/1000,0)); + S.Troops -= Math.ceil(jsRandom(1*S.Troops/1000,0)); } else if (V.SF.Target === "raiding") { - S.Troops += Math.ceil(jsRandom(-1.15*S.Troops/1000,-1.20*S.Troops/1000)); - } else { S.Troops += Math.ceil(jsRandom(-1.10*S.Troops/1000,-1.15*S.Troops/1000)); } + S.Troops -= Math.ceil(jsRandom(1.15*S.Troops/1000,-1.20*S.Troops/1000)); + } else { S.Troops -= Math.ceil(jsRandom(1.10*S.Troops/1000,-1.15*S.Troops/1000)); } } if (V.SF.UC.Assign > 0) { - if (V.SF.UC.Assign < 2) { V.SFUC=Math.ceil(S.Troops*0.1); - } else { V.SFUC=Math.ceil(S.Troops*0.25); } - } S.Troops -= V.SFUC; + if (V.SF.UC.Assign < 2) { V.SF.UC.num = Math.ceil(S.Troops*0.01); + } else { V.SF.UC.num = Math.ceil(S.Troops*0.05); } + } S.Troops -= V.SF.UC.num; if (S.Troops > 200) { Trade += 0.05*(Math.ceil(S.Troops/100)); Multiplier.troop += S.Troops/200; upkeep += (S.Troops*25)/cost.a; if (V.secExp > 0) { - V.authority += 25*(Math.ceil(S.Troops/200)); V.authority=Math.clamp(V.authority, 0, 20000); + V.authority += 25*(Math.ceil(S.Troops/200)); V.authority = Math.clamp(V.authority, 0, 20000); } } @@ -259,7 +262,7 @@ window.SFReport = function() { } if (S.AircraftCarrier > 0) { - FNG += S.AircraftCarrier; Trade += 0.25*S.AircraftCarrier; Multiplier.unit += 9*S.AircraftCarrier+3*Math.pow(S.AircraftCarrier,2)*cost.a; upkeep += (80*S.AircraftCarrier)*cost.b; + FNG += S.AircraftCarrier; Trade += 0.25*S.AircraftCarrier; Multiplier.unit += 9*S.AircraftCarrier +3*Math.pow(S.AircraftCarrier,2)*cost.a; upkeep += (80*S.AircraftCarrier)*cost.b; } if (S.Sub > 0) { FNG += S.Sub; Trade += 0.25*S.Sub; Multiplier.unit += 7.5*S.Sub+2*Math.pow(S.Sub,2)*cost.a; upkeep += (90*S.Sub)*cost.b; @@ -279,38 +282,38 @@ window.SFReport = function() { } else if (V.SF.Target === "secure") { SFD -= 0.05; Multiplier.action += 0.2; } else { SFD -= 0.1; Multiplier.action -= 0.5; } if (V.SF.ROE === "free") { Multiplier.action *= 0.8; SFD += 0.05; Trade += Trade*0.95; - } else if (V.SF.ROE == "hold") { Multiplier.action *= 1.1; SFD -= 0.05; Trade += Trade*1.05; } + } else if (V.SF.ROE === "hold") { Multiplier.action *= 1.1; SFD -= 0.05; Trade += Trade*1.05; } if (V.SF.Regs === "none") { Multiplier.action *= 0.8; SFD += 0.05; Trade += Trade*0.95; } else if (V.SF.Regs === "strict") { Multiplier.action *= 1.1; SFD -= 0.05; Trade += Trade*1.05; - Multiplier.depravity=1+SFD; } + Multiplier.depravity = 1+SFD; } if (SFD > -2) Trade *= 1+SFD/2; if (V.SF.Target === "recruit") { FNG += Math.ceil(FNG*0.95); } else { FNG += Math.ceil(FNG*0.25); } if (V.SF.Target === "secure") { repX((Math.ceil(V.rep*((Trade/100)*0.95))), "specialForces"); - V.arcologies[0].prosperity=Math.ceil((V.arcologies[0].prosperity+(Trade/10)*0.95)); + V.arcologies[0].prosperity = Math.ceil((V.arcologies[0].prosperity+(Trade/10)*0.95)); } else { repX((Math.ceil(V.rep*(Trade/100)*0.25)), "specialForces"); - V.arcologies[0].prosperity=Math.ceil(V.arcologies[0].prosperity+(Trade/10)*0.25);} - if (V.secExp > 0) V.authority += V.SF.Size*10; V.authority=Math.clamp(V.authority, 0, 20000); + V.arcologies[0].prosperity = Math.ceil(V.arcologies[0].prosperity+(Trade/10)*0.25);} + if (V.secExp > 0) V.authority += V.SF.Size*10; V.authority = Math.clamp(V.authority, 0, 20000); income += Math.ceil( ( (baseLine* (0.09+Multiplier.troop/NO).toFixed(2) * (0.09+Multiplier.unit/NO).toFixed(2) * (0.09+Multiplier.action/NO).toFixed(2) * (0.09+Multiplier.depravity/NO).toFixed(2) ) - (upkeep*N1).toFixed(2) )/((V.SF.Size/2+S.Troops/2)*5) ); S.Troops += Math.round(FNG/2); - if (V.debugMode > 0) r += `<br>income:${commaNum(income)}, troop:${commaNum((0.09+Multiplier.troop/NO).toFixed(2))}, unit:${commaNum((0.09+Multiplier.unit/NO).toFixed(2))}, action:${commaNum((0.09+Multiplier.action/NO).toFixed(2))}, depravity:${commaNum((0.09+Multiplier.depravity/NO).toFixed(2))}, upkeep:${commaNum((upkeep*N1).toFixed(2))}`; + if (V.debugMode > 0) r += `<br>income:${num(income)}, troop:${num((0.09+Multiplier.troop/NO).toFixed(2))}, unit:${num((0.09+Multiplier.unit/NO).toFixed(2))}, action:${num((0.09+Multiplier.action/NO).toFixed(2))}, depravity:${num((0.09+Multiplier.depravity/NO).toFixed(2))}, upkeep:${num((upkeep*N1).toFixed(2))}`; if (V.economy < 100) income *= 83; //Remove line if hard mode ever gets fixed. - if (income >= target) profit=1; delete V.SF.Subsidy; cashX(income, "specialForces"); - if (S.Troops > unitCap) S.Troops=unitCap; - if (V.arcologies[0].prosperity > V.ProsperityCap) V.arcologies[0].prosperity=V.ProsperityCap; + if (income >= target) profit = 1; delete V.SF.Subsidy; cashX(income, "specialForces"); + if (S.Troops > unitCap) S.Troops = unitCap; + if (V.arcologies[0].prosperity > V.ProsperityCap) V.arcologies[0].prosperity = V.ProsperityCap; - if (S.Drugs >= 8 || S.Drugs >= 10) { let survivalChance=50; + if (S.Drugs >= 8 || S.Drugs >= 10) { let survivalChance = 50; if (S.Drugs >= 8) {survivalChance -= 5;} else if (S.Drugs >= 10) {survivalChance += 5;} - if (jsRandom(0,100) > survivalChance) deaths=jsRandom(0,((S.Drugs*2)+4)); + if (jsRandom(0,100) > survivalChance) deaths = jsRandom(0,((S.Drugs*2)+4)); if (deaths > 0) S.Troops -= deaths; } - if (V.SF.UC.Assign === 1 && V.SF.UC.Lock < 1) V.SF.UC.Assign=0; - if (V.SF.Upgrade !== undefined) V.SF.Upgrade=0; V.SF.Gift=0; - V.SF.Colonel.Talk=0; V.SF.Colonel.Fun=0; + if (V.SF.UC.Assign === 1 && V.SF.UC.Lock < 1) V.SF.UC.Assign = 0; + if (V.SF.Upgrade !== undefined) V.SF.Upgrade = 0; V.SF.Gift = 0; + V.SF.Colonel.Talk = 0; V.SF.Colonel.Fun = 0; r += `<br>__Week ${V.week} operational report for ${V.SF.Lower}__:`; - r += `<br>${V.SF.Caps} focused their ${commaNum(S.Troops)} troops on `; + r += `<br>${V.SF.Caps} focused their ${num(S.Troops)} troops on `; if (V.SF.Target === "recruit") { r += `recruiting and training more personnel. Smaller parties ventured out to protect the arcology's trade routes and strike targets of opportunity.`; } else if (V.SF.Target === "secure") { @@ -322,40 +325,40 @@ window.SFReport = function() { r += `<br>A ${V.SF.UC.Assign < 2 ? 'small':'large'} portion of the force was assigned as ${V.SF.UC.Assign < 2 ? 'part':'full'} time undercover officers.`; } if (deaths > 0) { - r += ` <span class='red'>${deaths} soldiers fatally overdosed on the drug cocktail</span>`; + r += `<span class = 'red'>${deaths} soldiers fatally overdosed on the drug cocktail</span>`; if (V.SF.MercCon.CanAttend === -1) r += `, The Colonel's much heavier than average drug use saves her from this side effect.`; } - r += `<br>These activities have, overall, <span class='green'>improved your arcology's prosperity</span>.`; - r+= ` The goods procured by ${V.SF.Lower} after accounting for the spoils retained by individual soldiers were `; + r += `<br>These activities have, overall, <span class = 'green'>improved your arcology's prosperity</span>.`; + r += `The goods procured by ${V.SF.Lower} after accounting for the spoils retained by individual soldiers were `; if (profit > 0) { - r += `<span class='green'>more than sufficient to cover expenses</span>. Excess material and human assets totaling <span class='yellowgreen'>${cashFormat(income)}</span> (after liquidation) were transferred to your accounts.`; - if (V.economy < 100) r += `The rapidly degrading global economy has one upside,<span class='green'> ${V.SF.Caps} was able to more easily use more 'persuasive' techniques thus leading to an increase in profit</span>.`; + r += `<span class = 'green'>more than sufficient to cover expenses</span>. Excess material and human assets totaling <span class = 'yellowgreen'>${cashFormat(income)}</span> (after liquidation) were transferred to your accounts.`; + if (V.economy < 100) r += `The rapidly degrading global economy has one upside,<span class = 'green'> ${V.SF.Caps} was able to more easily use more 'persuasive' techniques thus leading to an increase in profit</span>.`; } else { - r += `<span class='red'>barely enough to cover expenses.</span> More growth will be needed to ensure profitability, <span class='yellow'>hopefully purchasing more upgrades will help</span>.`; - r += ` Per the estimates that ${SFC()} provides, an additional <span class='yellowgreen'>${cashFormat(target-income)}</span> is required for sufficient cover.`; + r += `<span class = 'red'>barely enough to cover expenses.</span> More growth will be needed to ensure profitability, <span class = 'yellow'>hopefully purchasing more upgrades will help</span>.`; + r += `Per the estimates that ${SFC()} provides, an additional <span class = 'yellowgreen'>${cashFormat(target-income)}</span> is required for sufficient cover.`; } - r += ` ${V.SF.Caps} managed to recruit ${Math.round(FNG/2)} new soldiers this week, and your reputation has <span class='green'>increased through the improvement of trade security</span>.`; + r += `${V.SF.Caps} managed to recruit ${Math.round(FNG/2)} new soldiers this week, and your reputation has <span class = 'green'>increased through the improvement of trade security</span>.`; r += `<br>//Your instructions to ${SFC()}://`; r += `<br> Deployment focus: `; - r += `<span id="focus"> <<if $SF.Target == "recruit">>''Recruiting and Training''<<elseif $SF.Target == "secure">>''Securing Trade Routes''<<else>>''Raiding and Slaving''<</if>></span>. `; - r += `<<link "Recruit and Train">> <<set $SF.Target="recruit">> <<replace "#focus">>''Recruiting and Training''<</replace>> <</link>> | <<link "Secure Trade Routes">> <<set $SF.Target="secure">> <<replace "#focus">>''Securing Trade Routes''<</replace>> <</link>> | <<link "Raiding and Slaving">> <<set $SF.Target="raiding">> <<replace "#focus">>''Raiding and Slaving''<</replace>> <</link>>`; + r += `<span id = "focus"> <<if $SF.Target === "recruit">>''Recruiting and Training''<<elseif $SF.Target === "secure">>''Securing Trade Routes''<<else>>''Raiding and Slaving''<</if>></span>. `; + r += `<<link "Recruit and Train">> <<set $SF.Target = "recruit">> <<replace "#focus">>''Recruiting and Training''<</replace>> <</link>> | <<link "Secure Trade Routes">> <<set $SF.Target = "secure">> <<replace "#focus">>''Securing Trade Routes''<</replace>> <</link>> | <<link "Raiding and Slaving">> <<set $SF.Target = "raiding">> <<replace "#focus">>''Raiding and Slaving''<</replace>> <</link>>`; r += `<br> Rules of Engagement: `; - r += `<span id="roe"> <<if $SF.ROE === "hold">>''Hold Fire''<<elseif $SF.ROE === "limited">>''Limited Fire''<<else>>''Free Fire''<</if>></span>. `; - r += `<<link "Hold Fire">> <<set $SF.ROE="hold">> <<replace "#roe">>''Hold Fire''<</replace>> <</link>> | <<link "Limited Fire">> <<set $SF.ROE="limited">> <<replace "#roe">>''Limited Fire''<</replace>> <</link>> | <<link "Free Fire">> <<set $SF.ROE="free">> <<replace "#roe">>''Free Fire''<</replace>> <</link>>`; + r += `<span id = "roe"> <<if $SF.ROE === "hold">>''Hold Fire''<<elseif $SF.ROE === "limited">>''Limited Fire''<<else>>''Free Fire''<</if>></span>. `; + r += `<<link "Hold Fire">> <<set $SF.ROE = "hold">> <<replace "#roe">>''Hold Fire''<</replace>> <</link>> | <<link "Limited Fire">> <<set $SF.ROE = "limited">> <<replace "#roe">>''Limited Fire''<</replace>> <</link>> | <<link "Free Fire">> <<set $SF.ROE = "free">> <<replace "#roe">>''Free Fire''<</replace>> <</link>>`; r += `<br> Accountability: `; - r += `<span id="accountability"> <<if $SF.Regs === "strict">>''Strict Accountability''<<elseif $SF.Regs === "some">>''Some Accountability''<<else>>''No Accountability''<</if>></span>. `; - r += `<<link "Strict Accountability">> <<set $SF.Regs="strict">> <<replace "#accountability">>''Strict Accountability''<</replace>> <</link>> | <<link "Some Accountability">> <<set $SF.Regs="some">> <<replace "#accountability">>''Some Accountability''<</replace>> <</link>> | <<link "No Accountability">> <<set $SF.Regs="none">> <<replace "#accountability">>''No Accountability''<</replace>> <</link>>`; - if (V.SF.MercCon.View > 0 && V.SF.MercCon.CanAttend === 1) { - V.SF.MercCon.Income=0; V.SF.MercCon.Menials=0; - let tradeShowAttendes=200, menialGiftsPerAttendee=5, NewMercs=0; - let menialGifts=Math.ceil(jsRandom(1,((tradeShowAttendes*menialGiftsPerAttendee)/10))); - let TSProfit=Math.ceil(500000*(1+(V.SF.Size/1000))*(1+(V.arcologies[0].prosperity/1000))*T.Env); + r += `<span id = "accountability"> <<if $SF.Regs === "strict">>''Strict Accountability''<<elseif $SF.Regs === "some">>''Some Accountability''<<else>>''No Accountability''<</if>></span>. `; + r += `<<link "Strict Accountability">> <<set $SF.Regs = "strict">> <<replace "#accountability">>''Strict Accountability''<</replace>> <</link>> | <<link "Some Accountability">> <<set $SF.Regs = "some">> <<replace "#accountability">>''Some Accountability''<</replace>> <</link>> | <<link "No Accountability">> <<set $SF.Regs = "none">> <<replace "#accountability">>''No Accountability''<</replace>> <</link>>`; + if (V.SF.MercCon.CanAttend === 1) { + V.SF.MercCon.Income = 0; V.SF.MercCon.Menials = 0; + let tradeShowAttendes = 200, menialGiftsPerAttendee = 5, NewMercs = 0; + let menialGifts = Math.ceil(jsRandom(1,((tradeShowAttendes*menialGiftsPerAttendee)/10))); + let TSProfit = Math.ceil(500000*(1+(V.SF.Size/1000))*(1+(V.arcologies[0].prosperity/1000))*T.Env); V.menials += menialGifts; V.SF.MercCon.History += 1; V.SF.MercCon.Menials += menialGifts; V.SF.MercCon.TotalMenials += menialGifts; V.SF.MercCon.Income += TSProfit; V.SF.MercCon.Revenue += TSProfit; cashX(TSProfit, "specialForces"); - if (V.secExp > 0 && V.mercenaries > 0) { V.SF.MercCon.Mercs=0; - NewMercs=jsRandom(1,(tradeShowAttendes/10)); + if (V.secExp > 0 && V.mercenaries > 0) { V.SF.MercCon.Mercs = 0; + NewMercs = jsRandom(1,(tradeShowAttendes/10)); V.mercFreeManpower += NewMercs; V.SF.MercCon.TotalMercs += NewMercs; V.SF.MercCon.Mercs += NewMercs; } @@ -365,51 +368,52 @@ window.SFReport = function() { }; window.Count = function() { - const V=State.variables, T=State.temporary, C=Math.clamp, S=V.SF.Squad, E=V.economy; - T.FU=10; S.Firebase=C(S.Firebase, 0, T.FU); - T.AU=10; S.Armoury=C(S.Armoury, 0, T.AU); - T.DrugsU=10; S.Drugs=C(S.Drugs, 0, T.DrugsU); - T.DU=10; S.Drones=C(S.Drones, 0, T.DU); - T.AVU=10; S.AV=C(S.AV, 0, T.AVU); - T.TVU=10; S.TV=C(S.TV, 0, T.TVU); - T.AAU=10; S.AA=C(S.AA, 0, T.AAU); - T.TAU=10; S.TA=C(S.TA, 0, T.TAU); - if (V.PC.warfare >= 75) {T.PGTU=10; T.SPU=10; T.GunSU=10; T.SatU=10; T.GRU=10; T.MSU=10; T.ACU=10; T.SubU=10; T.HATU=10;} - else if (V.PC.warfare >= 50) {T.PGTU=9; T.SPU=9; T.GunSU=9; T.SatU=9; T.GRU=9; T.MSU=9; T.ACU=9; T.SubU=9; T.HATU=9;} - else {T.PGTU=8; T.SPU=8; T.GunSU=8; T.SatU=8; T.GRU=8; T.MSU=8; T.ACU=8; T.SubU=8; T.HATU=8;} - S.PGT=C(S.PGT, 0, T.PGTU); - S.SpacePlane=C(S.SpacePlane, 0, T.SPU); S.GunS=C(S.GunS, 0, T.GunSU); - S.Satellite.lv=C(S.Satellite.lv, 0, T.SatU); S.GiantRobot=C(S.GiantRobot, 0, T.GRU); S.MissileSilo=C(S.MissileSilo, 0, T.MSU); - S.AircraftCarrier=C(S.AircraftCarrier, 0, T.ACU); S.Sub=C(S.Sub, 0, T.SubU); S.HAT=C(S.HAT, 0, T.HATU); - T.GU=T.AVU+T.TVU+T.PGTU; T.G=S.AV+S.TV+S.PGT; - T.H=S.AA+S.TA+S.SpacePlane+S.GunS; T.HU=T.AAU+T.TAU+T.SPU+T.GunSU; - T.LBU=T.SatU+T.MSU; T.LB=S.Satellite.lv+S.MissileSilo; - T.Base=S.Firebase+S.Armoury+S.Drugs+S.Drones+T.H; - T.max=T.FU+T.AU+T.DrugsU+T.DU+T.HU; + const V = State.variables, T = State.temporary, C = Math.clamp, S = V.SF.Squad, E = V.economy; + T.FU = 10; S.Firebase = C(S.Firebase, 0, T.FU); + T.AU = 10; S.Armoury = C(S.Armoury, 0, T.AU); + T.DrugsU = 10; S.Drugs = C(S.Drugs, 0, T.DrugsU); + T.DU = 10; S.Drones = C(S.Drones, 0, T.DU); + T.AVU = 10; S.AV = C(S.AV, 0, T.AVU); + T.TVU = 10; S.TV = C(S.TV, 0, T.TVU); + T.AAU = 10; S.AA = C(S.AA, 0, T.AAU); + T.TAU = 10; S.TA = C(S.TA, 0, T.TAU); + if (V.PC.warfare >= 75) {T.PGTU = 10; T.SPU = 10; T.GunSU = 10; T.SatU = 10; T.GRU = 10; T.MSU = 10; T.ACU = 10; T.SubU = 10; T.HATU = 10;} + else if (V.PC.warfare >= 50) {T.PGTU = 9; T.SPU = 9; T.GunSU = 9; T.SatU = 9; T.GRU = 9; T.MSU = 9; T.ACU = 9; T.SubU = 9; T.HATU = 9;} + else {T.PGTU = 8; T.SPU = 8; T.GunSU = 8; T.SatU = 8; T.GRU = 8; T.MSU = 8; T.ACU = 8; T.SubU = 8; T.HATU = 8;} + S.PGT = C(S.PGT, 0, T.PGTU); + S.SpacePlane = C(S.SpacePlane, 0, T.SPU); S.GunS = C(S.GunS, 0, T.GunSU); + S.Satellite.lv = C(S.Satellite.lv, 0, T.SatU); S.GiantRobot = C(S.GiantRobot, 0, T.GRU); S.MissileSilo = C(S.MissileSilo, 0, T.MSU); + S.AircraftCarrier = C(S.AircraftCarrier, 0, T.ACU); S.Sub = C(S.Sub, 0, T.SubU); S.HAT = C(S.HAT, 0, T.HATU); + T.GU = T.AVU+T.TVU+T.PGTU; T.G = S.AV+S.TV+S.PGT; + T.H = S.AA+S.TA+S.SpacePlane+S.GunS; T.HU = T.AAU+T.TAU+T.SPU+T.GunSU; + T.LBU = T.SatU+T.MSU; T.LB = S.Satellite.lv+S.MissileSilo; + T.Base = S.Firebase+S.Armoury+S.Drugs+S.Drones+T.H; + T.max = T.FU+T.AU+T.DrugsU+T.DU+T.HU; //if (V.SF.Facility.Toggle > 0) T.Base += 1; T.max += 1; if (V.terrain !== "oceanic" || V.terrain === "marine") { T.LBU += T.GRU; T.LB += S.GiantRobot; T.Base += T.G; T.max += T.GU; T.max += T.LBU; T.Base += T.LB; } else { - T.NY=S.AircraftCarrier + S.Sub + S.HAT; T.Base += T.NY; - T.NYU=T.ACU + T.SubU + T.HATU; T.max += T.NYU; - } V.SF.Size=T.Base; V.SF.Size=C(V.SF.Size, 1, T.max); T.T1=0; - if (E > 100) {T.Env=4;} else if (E > 67) {T.Env=3;} else {T.Env=2;} - if (V.SF.Size >= 30) T.T1=1; T.SFSubsidy=5000*(1+((V.SF.Squad.Troops/100)+(V.SF.Size/100))); + T.NY = S.AircraftCarrier + S.Sub + S.HAT; T.Base += T.NY; + T.NYU = T.ACU + T.SubU + T.HATU; T.max += T.NYU; + } V.SF.Size = T.Base; V.SF.Size = C(V.SF.Size, 1, T.max); T.T1 = 0; + if (E > 100) {T.Env = 4;} else if (E > 67) {T.Env = 3;} else {T.Env = 2;} + if (V.SF.Size >= 30) T.T1 = 1; T.SFSubsidy = 5000*(1+((V.SF.Squad.Troops/100)+(V.SF.Size/100))); SFNameCapsCheck(); if (V.SF.IntroProgress > -1) delete V.SF.IntroProgress; if (V.SF.MercCon === undefined) MercCon(); if (V.SF.Size === T.max) delete V.SF.Upgrade; + if (V.SF.MercCon.CanAttend !== -2 || V.SF.MercCon.CanAttend !== -3) V.SF.MercCon.CanAttend = -1; }; window.SFNameCapsCheck = function() { - const V=State.variables; - if (V.SF.Lower != "the special force") V.SF.Caps=V.SF.Lower.replace("the ", "The "); + const V = State.variables; + if (V.SF.Lower !== "the special force") V.SF.Caps = V.SF.Lower.replace("the ", "The "); }; window.SFUpgradeCost = function(cost,unit) { - "use strict"; const V=State.variables,T=State.temporary,S=V.SF.Squad; let value=0; - value=cost*T.Env*(1.15+(V.SF.Size/10))*(1.15+(unit/100)); + "use strict"; const V = State.variables,T = State.temporary,S = V.SF.Squad; let value = 0; + value = cost*T.Env*(1.15+(V.SF.Size/10))*(1.15+(unit/100)); if ([S.Sub,S.AircraftCarrier,S.MissileSilo,S.GiantRobot,S.Satellite.lv,S.GunS,S.SpacePlane,S.Drones].includes(unit)) value *= V.HackingSkillMultiplier; return Math.ceil(value); }; @@ -420,24 +424,24 @@ window.progress = function(x,max) { Math.clamp(x,0,10); if (State.variables.SF.Size < 30) { z = 5 - x; - for (i=0;i<x;i++) out += `â–ˆâ`; - for (i=0;i<z;i++) out += `<span style=\"opacity: 0;\">â–ˆ</span>â`; - for (i=0;i<5;i++) out += `â–‘â`;} + for (i = 0;i<x;i++) out += `â–ˆâ`; + for (i = 0;i<z;i++) out += `<span style = "opacity: 0;">â–ˆ</span>â`; + for (i = 0;i<5;i++) out += `â–‘â`;} else { z = 10 - x; - for (i=0;i<x;i++) out += `â–ˆâ`; - for (i=0;i<z;i++) out += `<span style=\"opacity: 0;\">â–ˆ</span>â`;}} + for (i = 0;i<x;i++) out += `â–ˆâ`; + for (i = 0;i<z;i++) out += `<span style = "opacity: 0;">â–ˆ</span>â`;}} else { Math.clamp(x,0,max); - x=Math.floor(10*x/max); - z=10 - x; - for (i=0;i<x;i++) out += `â–ˆâ`; - for (i=0;i<z;i++) out += `<span style=\"opacity: 0;\">â–ˆ</span>â`;} + x = Math.floor(10*x/max); + z = 10 - x; + for (i = 0;i<x;i++) out += `â–ˆâ`; + for (i = 0;i<z;i++) out += `<span style = "opacity: 0;">â–ˆ</span>â`;} return `${out}`; }; window.SFC = function() { - const V=State.variables; + const V = State.variables; if (V.SF.MercCon.CanAttend === -1) {return `The Colonel`;} else { //if (V.SF.Facility.LCActive > 0) {return `Lieutenant Colonel ${SlaveFullName(V.SF.Facility.LC)}`;} @@ -445,58 +449,61 @@ window.SFC = function() { }; window.SFCR = function() { - const V=State.variables, C=V.SF.Colonel; + const V = State.variables, C = V.SF.Colonel; if (C.Status <= 19) {return `boss`;} else if (C.Status <= 39) {return `friend`;} else {return `fuckbuddy`;} }; window.Interactions = function() { - "use strict"; let choice=``, time=``; - const V=State.variables, C=V.SF.Colonel; + "use strict"; let choice = ``, time = ``; + const V = State.variables, C = V.SF.Colonel; if (V.SF.Gift > 0) { - if (V.choice == 1) { - choice +=`${V.SF.Caps} is turning over spare capital in tribute this week. `; + if (V.choice === 1) { + choice += `${V.SF.Caps} is turning over spare capital in tribute this week. `; if (V.SF.MercCon.CanAttend === -1 && (C.Talk + C.Fun !== 1)) { - choice += `"I think I can find <span class='yellowgreen'>${cashFormat(Math.ceil(V.CashGift))}</span> for you, boss."`; + choice += `"I think I can find <span class = 'yellowgreen'>${cashFormat(Math.ceil(V.CashGift))}</span> for you, boss."`; } else { - choice += `"We can spare <span class='yellowgreen'>${cashFormat(Math.ceil(V.CashGift))}</span> in tribute this week, boss".`; } - } else if (V.choice == 2) { + choice += `"We can spare <span class = 'yellowgreen'>${cashFormat(Math.ceil(V.CashGift))}</span> in tribute this week, boss".`; } + } else if (V.choice === 2) { choice += `${V.SF.Caps} will be throwing a military parade this week. `; if (V.SF.MercCon.CanAttend === -1 && (C.Talk + C.Fun !== 1)) { - choice += `"I expect the <span class='green'>public to enjoy</span> the parade, boss."`; + choice += `"I expect the <span class = 'green'>public to enjoy</span> the parade, boss."`; } else { - choice += `"I'll have plans for an <span class='green'>popular parade</span> on your desk, boss".`; } - } else if (V.choice == 3) { + choice += `"I'll have plans for an <span class = 'green'>popular parade</span> on your desk, boss".`; } + } else if (V.choice === 3) { choice += `${V.SF.Caps} will be conducting corporate sabotage on rival arcologies' businesses. `; if (V.SF.MercCon.CanAttend === -1 && (C.Talk + C.Fun !== 1)) { - choice += `"Our interests should see a <span class='yellowgreen'>big boost,</span> boss."`; + choice += `"Our interests should see a <span class = 'yellowgreen'>big boost,</span> boss."`; } else { - choice += `"Your <span class='yellowgreen'>arcology's business prospects should see an improvement</span> this week, boss".`; } + choice += `"Your <span class = 'yellowgreen'>arcology's business prospects should see an improvement</span> this week, boss".`; } } - } if (C.Talk + C.Fun > 0) time=`<br>The Colonel is busy for the rest of the week, so the Lieutenant Colonel will assist you.`; + } if (C.Talk + C.Fun > 0) time = `<br>The Colonel is busy for the rest of the week, so the Lieutenant Colonel will assist you.`; return `${time} <br>${choice}`; }; window.BadOutcome = function() { - "use strict"; const V=State.variables; let r =``;V.SF.Active=-2; + "use strict"; + const V = State.variables; + let r = ``; /** FIXME: r' is declared but its value is never read.ts(6133) */ + V.SF.Active = -2; switch(V.SF.Colonel.Core) { case "Shell-Shocked": - V.SF.BadOutcome="lockdown"; V.trinkets.push("${t} explosives detonator"); - r +=`Unnerved by your ever-increasing influence over your men and undercutting of her authority, The Colonel uses heavy explosives at Midnight to seal off The Firebase from your access. When you step off of your express elevator, you are met not with two guards, but several armed proximity mines next to an incredibly thick wall of smoking rubble. No doubt there are machine gun nests, anti-tank nests, and lots more proximity mines just waiting for you on the other side, should you somehow get through the wall of debris.`; - r+=`<br>The ${V.SF.Lower} still deploys into the old world to plunder as it pleases, but no longer for you. You receive no money from their exploits, and their total defiance and independence of you is a permanent stain on your reputation. Of course, you'll never have the needed military power to dislodge them, especially with all the redundant fortifications, crossfire envelopes, and myriad traps that paranoid bitch had built around each entrance ever since she went rouge. Trying to sabotage certain support beams from above to make the Firebase facility collapse in on itself could easily cause enough damage to topple other parts of the arcology too, and such a thing would be very difficult to cover up. In other words, you're stuck with them. The Firebase has become a permanent tumor on your Arcology and good name.`; + V.SF.BadOutcome = "lockdown"; V.trinkets.push("${t} explosives detonator"); + r += `Unnerved by your ever-increasing influence over your men and undercutting of her authority, The Colonel uses heavy explosives at Midnight to seal off The Firebase from your access. When you step off of your express elevator, you are met not with two guards, but several armed proximity mines next to an incredibly thick wall of smoking rubble. No doubt there are machine gun nests, anti-tank nests, and lots more proximity mines just waiting for you on the other side, should you somehow get through the wall of debris.`; + r += `<br>The ${V.SF.Lower} still deploys into the old world to plunder as it pleases, but no longer for you. You receive no money from their exploits, and their total defiance and independence of you is a permanent stain on your reputation. Of course, you'll never have the needed military power to dislodge them, especially with all the redundant fortifications, crossfire envelopes, and myriad traps that paranoid bitch had built around each entrance ever since she went rouge. Trying to sabotage certain support beams from above to make the Firebase facility collapse in on itself could easily cause enough damage to topple other parts of the arcology too, and such a thing would be very difficult to cover up. In other words, you're stuck with them. The Firebase has become a permanent tumor on your Arcology and good name.`; break; case "Cruel": - V.SF.BadOutcome="Revolt"; V.trinkets.push("${t} dog tags"); repX((0 - V.rep), "specialForces"); - V.arcologies[0].prosperity -= 50; V.ASlaves=49; cashX(-10000, "specialForces"); - V.ACitizens=751; V.menials=0; V.researchLab.menials=0; - V.researchLab.hired=0; V.fuckdolls=0; V.menialBioreactors=0; - V.activeUnits=0; V.secBots.troops=0; V.createdSlavesUnits=0; - V.createdMilitiaUnits=0; V.createdMercUnits=0; - r+=`<br>The ${V.SF.Lower} still deploys into the old world to plunder as it pleases, but no longer for you. You receive no money from their exploits, and their total defiance and independence of you is a permanent stain on your reputation. Of course, you'll never have the needed military power to dislodge them, especially with all the redundant fortifications, crossfire envelopes, and myriad traps that paranoid bitch had built around each entrance ever since she went rouge. Trying to sabotage certain support beams from above to make the Firebase facility collapse in on itself could easily cause enough damage to topple other parts of the arcology too, and such a thing would be very difficult to cover up. In other words, you're stuck with them. The Firebase has become a permanent tumor on your Arcology and good name.`; + V.SF.BadOutcome = "Revolt"; V.trinkets.push("${t} dog tags"); repX((0 - V.rep), "specialForces"); + V.arcologies[0].prosperity -= 50; V.ASlaves = 49; cashX(-10000, "specialForces"); + V.ACitizens = 751; V.menials = 0; V.researchLab.menials = 0; + V.researchLab.hired = 0; V.fuckdolls = 0; V.menialBioreactors = 0; + V.activeUnits = 0; V.secBots.troops = 0; V.createdSlavesUnits = 0; + V.createdMilitiaUnits = 0; V.createdMercUnits = 0; + r += `<br>The ${V.SF.Lower} still deploys into the old world to plunder as it pleases, but no longer for you. You receive no money from their exploits, and their total defiance and independence of you is a permanent stain on your reputation. Of course, you'll never have the needed military power to dislodge them, especially with all the redundant fortifications, crossfire envelopes, and myriad traps that paranoid bitch had built around each entrance ever since she went rouge. Trying to sabotage certain support beams from above to make the Firebase facility collapse in on itself could easily cause enough damage to topple other parts of the arcology too, and such a thing would be very difficult to cover up. In other words, you're stuck with them. The Firebase has become a permanent tumor on your Arcology and good name.`; break; case "Cruel and Psychopathic": - V.SF.BadOutcome="Revolt"; V.trinkets.push("${t} dog tags"); repX((0 - V.rep), "specialForces"); + V.SF.BadOutcome = "Revolt"; V.trinkets.push("${t} dog tags"); repX((0 - V.rep), "specialForces"); r += `<br>Finally fed up with your constant intrusions into her territory and crew, The Colonel riles up her people for an utterly ferocious rebellion. The promises of rape and plunder and dominion over some of the wealthiest tenants in the entire Free City (and their world-class slaves) are all that's needed to give the selfish lot of them a nearly unshakable resolve in the task of delivering their overlord Her most coveted prize: You.`; r += `<br>It is now midnight. The lights are the first thing they disable, as they still have the excellent night vision equipment you purchased for them. Some of your citizens start panicking almost immediately at the sudden blackout; this is very reminiscent of the Daughters of Liberty attack that still haunts many of their memories. Things like this were never supposed to happen again. You had promised them that you'd create an army that would protect them...`; r += `<br>Her army vanguard strikes fast and hard throughout the main Plaza, cutting through your security personnel, defensive platoons, and drones with an ease that stinks of months of careful planning and study. Your defensive platoons, veterans of many Battles, are outmaneuvered at every turn; their hidden ammunition caches are found empty, their communications networks are mysteriously scrambled, and key chokepoints are found to be booby-trapped before your men can even get to them; their well-rehearsed arcology defense routines have gone to ash. Assuming you ever get a chance to speak to The Colonel again, you would ask if her betrayal was actually inevitable rather than something you triggered.`; @@ -511,7 +518,7 @@ window.BadOutcome = function() { r += `<br>The Colonel's body was never found.`; break; case "Kind": - V.SF.BadOutcome="Exodus"; V.trinkets.push("${t} gift card"); V.menials += 73; + V.SF.BadOutcome = "Exodus"; V.trinkets.push("${t} gift card"); V.menials += 73; cashX(55000, "specialForces"); r += `Your Colonel has had enough of your meddling. In her eyes, you've broken faith with her. She asked one thing of you in return for her full support, and you could not even give her that.`; r += `<br>At midnight, a great mechanized convoy, the biggest you've seen in a long while, streams out of your Arcology. Troop Carriers, Aircraft, Heavy Trucks, and other war machines of varying sizes pour out of the Firebase in tight formation. The Colonel is refusing your calls, and you know it would be ill advised to go out there yourself or to try to stop them with force. The many bandits and mercenary groups that the convoy will inevitably pass by will probably feel this way as well. You have no idea where they are going or how they will end up, but with their wealth and weaponry, you are not worried.`; @@ -522,398 +529,456 @@ window.BadOutcome = function() { } }; -window.FlavourText = function(View) { - "use strict"; const V=State.variables,T=State.temporary,S=V.SF.Squad; - V.nextButton = "Return to Operations"; V.nextLink = "Firebase"; V.Tour=0; - function TroopDec() { - const common=`the ${commaNum(V.SF.Squad.Troops)} members of ${V.SF.Lower}`; - if (S.Troops < 100) {return `sparsely occupied, ${common} residing within them concentrating together in a corner. The hundreds of empty beds and lockers visibly herald the future`;} - else if (S.Troops < 400) {return `lightly occupied, with ${common} starting to spread out across them`;} - else if (S.Troops < 800) {return `moderately occupied, though ${common} residing within have a considerable amount of extra room`;} - else if (S.Troops < 1500) {return `well-occupied, and ${common} residing within have started to form small cliques based on section and row`;} - else {return `near capacity, and ${common} often barter their personal loot, whether it be monetary or human, for the choicest bunks`;} - } - - function Firebase() { - let appear=`is currently constructed in a haphazard fashion.`, barracks=`Soldiers' cots are mixed in with weapons crates and ammunition.`, slave=`Cages for processing slaves lie off to one side,`, common=`and in the center is a common area with tables for soldiers to gather around for meals or rowdy conversations.`, garage=``, drone=``, hangar=``, launch=``, artillery=``, comms=``, training=``; - if (S.Firebase >= 1) {appear=`has had some organization put into it.`; barracks=`The majority of weapons, armor, and ammunition have been separated from the soldiers' cots into their own armory.`; garage=`A section near the outer wall of the arcology has been converted to a garage with an adjoining vehicle maintenance bay`; drone=`.`; - if (V.terrain === "oceanic") garage += ` for inter-arcology travel`;} - if (S.Firebase >= 2) { barracks=`A barracks has been constructed near the armory, allowing soldiers a quieter place to sleep and store their personal spoils.`; drone=`; as well as a facility for the storage, maintenance, and deployment of armed combat drones.`; } - if (S.Firebase >= 3) { appear=`has become more permanent.`; barracks=`A command center has been constructed near the barracks and armory, allowing for additional support personnel.`; } - if (S.Firebase >= 4) hangar=`Hangar space for storing and repairing aircraft has been converted from unused space on the other side of the garage.`; - if (S.Firebase >= 5) { - appear=`is nearing the appearance of a military base.`; launch=`The rest of the firebase has been designated for special projects.`; artillery=`Artillery batteries are set around the base of the arcology.`; - if (V.terrain === "oceanic" || V.terrain === "marine") launch += ` A Naval Yard has been constructed in the waters near the arcology.`;} - if (S.Firebase >= 6) common=`and in the center is a common area for recreation, including a small movie theater and a mess hall.`; - if (S.Firebase >= 7) {slave=`A slave detention facility has been sectioned off to one side`; - if (V.SF.Depravity > 1.5) slave += ` emanating the sounds of rape and torture`; - slave += `;`;} - if (S.Firebase >= 8) { appear=`has become a fully fledged military base.`; comms=`A Free City-wide communication network for ${V.SF.Lower} has been constructed to facilitate faster responses and efficient monitoring of the surrounding area.`; } - if (S.Firebase >= 9) training=`A high-tech killhouse has been constructed to aid in soldier training.`; - if (S.Firebase >= 10) artillery=`Railgun artillery batteries are set around the base of the arcology, capable of accurately destroying enemies an absurd distance away.`; - return `The firebase ${appear} ${barracks} ${comms} ${training} ${slave} ${common} ${garage}${drone} ${hangar} ${launch} ${artillery}`; - } - - function Armoury() { - let weapons=`The weapons are mostly worn rifles that have already seen years of service before ${V.SF.Lower} acquired them.`, armor=`The body armor is enough to stop smaller calibers, but nothing serious.`, comms=``, helmets=``, ammo=``, uniforms=``, special=``, exo=``; - if (S.Armoury >= 1) { comms=`Radios have been wired into the soldiers helmets`; helmets=`.`; } - if (S.Armoury >= 2) helmets=` and a HUD has been integrated into the soldier's eyewear.`; - if (S.Armoury >= 3) ammo=`Tactical vests have been provided, allowing soldiers to carry additional ammo.`; - if (S.Armoury >= 4) armor=`The body armor is a newer variant, able to stop small arms fire and protect against shrapnel.`; - if (S.Armoury >= 5) weapons=`The weapons are modern rifles and sidearms, putting ${V.SF.Lower} on par with rival mercenary outfits.`; - if (S.Armoury >= 6) uniforms=`New uniforms have been distributed that are more comfortable and made of breathable fabric to keep soldiers from overheating.`; - if (S.Armoury >= 7) special=`Specialized weaponry is available for many roles, allowing more flexibility in planning.`; - if (S.Armoury >= 8) helmets=`and a HUD and camera display have been integrated into soldiers' eyewear, enabling accurate aim around corners or from behind cover`; - if (S.Armoury >= 9) exo=`An exosuit has been developed to reduce the amount of weight soldiers carry, increase lifting strength, and move faster in combat.`; - if (S.Armoury >= 10) weapons=`Cutting-edge weaponry is available to ${V.SF.Lower}, far outpacing the ability of rival mercenary outfits.`; - return `The armory holds soldiers' weapons and gear while not in training or combat. ${weapons} ${special} ${armor} ${comms}${helmets} ${ammo} ${uniforms} ${exo}`; - } - - function Drugs() { - let amphet=``, phen=``, steroid=``, downer=``, concen=``, stimpack=``, stabilizer=``; - if (S.Drugs >= 1) amphet=`Amphetamines have been added to the cocktail at a low dosage to act as a stimulant, physical performance enhancer, cognition control enhancer. Some side-effects exist.`; - if (S.Drugs >= 2) phen=`Phencyclidine has been added to the cocktail at a low dosage as a dissociative psychotropic for soldiers in battle to introduce feelings of detachment, strength and invincibility, and aggression. Some side-effects reduce the tolerable dosage before soldiers go on uncontrollable violent outbreaks.`; - if (S.Drugs >= 3) steroid=`Testosterone is being produced for soldiers in training as a natural muscle growth stimulant and to invoke aggression.`; - if (S.Drugs >= 4) downer=`Zaleplon is being produced as a downer to counteract the battle cocktail and encourage rest before combat.`; - if (S.Drugs >= 5) concen=`Methylphenidate has been added to the cocktail as a stimulant and to improve soldier concentration.`; - if (S.Drugs >= 6) phen=`A phencyclidine-based drug has been added to the cocktail as a dissociative psychotropic for soldiers in battle to introduce controllable feelings of detachment, strength and invincibility, and aggression.`; - if (S.Drugs >= 7) steroid=`Low levels of anabolic steroids are being produced for soldiers in training to stimulate muscle growth and invoke aggression.`; - if (S.Drugs >= 8) amphet=`Diphenylmethylsulfinylacetamide has been added to the cocktail to counteract the effects of sleep deprivation and promote alertness.`; - if (S.Drugs >= 9) stimpack=`A stimpack of the battle cocktail is being given to soldiers in battle to take if the original dose wears off before the battle is over.`; - if (S.Drugs >= 10) stabilizer=`A stabilizer has been added to the battle cocktail that helps tie effects together while reducing side-effects, leading to an effectively safe supersoldier drug.`; - return `A drug lab has been established to increase the effectiveness of ${V.SF.Lower}'s soldiers. Many of these chemicals are mixed into a single 'battle cocktail' to be taken before combat. ${amphet} ${phen} ${concen} ${steroid} ${downer} ${stimpack} ${stabilizer}`; - } - - function LUAV() { - let a=`have been recommissioned for use by ${V.SF.Lower}`, b=`.`, c=``, d=``, e=``, f=``, g=``, h=``, i=``, j=``, k=``; - if (S.Drones >= 2) { a=`equipped with missiles are resting on one side of the drone bay`; b=`; as well as destroying the occasional target.`; } - if (S.Drones >= 3) { c=`A fleet of`; d=`large delivery quadcopters have been converted for military service to support ground forces as combat drones.`; } - if (S.Drones >= 4) { d=`combat drones take up the rest of the space in the drone bay. They have a`; e=`small automatic rifle`; f=`mounted to the underside.`; } - if (S.Drones >= 5) g=`Armor has been added to protect vulnerable components from small arms fire.`; - if (S.Drones >= 6) h=`The fleet's batteries have been replaced with higher capacity models, increasing the functional time spent in combat.`; - if (S.Drones >= 7) i=`The propellers and motors have been upgraded, increasing maneuverability and speed.`; - if (S.Drones >= 8) j=`The drone control signal has been boosted and encrypted, giving the drones a greater range and protecting against electronic warfare.`; - if (S.Drones >= 9) e=`light machine gun`; - if (S.Drones >= 10) k=`A drone-to-drone network has been installed, allowing drones to swarm, maneuver, and attack targets autonomously.`; - return `Surveillance drones ${a}. During combat, they supply aerial intel to commanders and act as the communications network for ground forces${b} ${c} ${d} ${e} ${f} ${g} ${h} ${i} ${j} ${k}`; - } - - function AV() { - let b=`has been recommissioned for use by ${V.SF.Lower}. They`, c=`, mechanics are methodically checking the recent purchases for battle-readiness`, MG=`120 mm main gun is enough to handle the majority of opponents around the Free Cities.`, engine=``, armor=``, armor2=``, ammo=``, mg=``, fireC0=``, fireC1=``, fireC2=``, fireC3=``, turret=``; - if (S.AV >= 2) engine=`The engine has been overhauled, allowing much faster maneuvering around the battlefield.`; b=``; c=``; - if (S.AV >= 3) armor=`A composite ceramic armor has replaced the original, offering much greater protection from attacks.`; - if (S.AV >= 4) ammo=`The tanks have been outfitted with additional types of ammo for situational use.`; - if (S.AV >= 5) mg=`A remote-controlled .50 cal machine gun has been mounted on the turret to handle infantry and low-flying aircraft.`; - if (S.AV >= 6) { fireC0=`A fire-control system`; fireC3=`been installed, guaranteeing`; fireC2=`has`; fireC1=`accurate fire.`; } - if (S.AV >= 7) { fireC2=`and an autoloader have`; fireC1=`rapid, accurate fire while separating the crew from the stored ammunition in the event the ammo cooks off.`; } - if (S.AV >= 8) armor2=`A reactive armor system has been added, giving the tank an additional, if temporary, layer of protection.`; - if (S.AV >= 9) turret=`The turret has been massively redesigned, lowering the tank profile and increasing the efficiency of the mechanisms within.`; - if (S.AV >= 10) MG=`140 mm main gun can quash anything even the greatest Old World nations could muster.`; - return `A fleet of main battle tanks ${b} are parked in the garage${c}. ${turret} The ${MG} ${ammo} ${mg} ${fireC0} ${fireC2} ${fireC3} ${fireC1} ${engine} ${armor} ${armor2}`; - } - - function TV() { - let B=`has been recommissioned for use by ${V.SF.Lower}. They`, C=`, mechanics are giving the new purchases a final tuneup`, squad=`a squad`, G1=`20`, G2=`in a firefight`, e0=`The engine has been`, engine=``, armor=``, tires=``, m1=``, m2=``, pod1=``, pod2=``; - if (S.TV >= 2) { engine=`${e0} overhauled, allowing for higher mobility.`; C=``; B=``; } - if (S.TV >= 3) armor=`Composite armor has been bolted to the exterior, increasing the survivability of an explosive attack for the crew and passengers.`; - if (S.TV >= 4) tires=`The tires have been replaced with a much more durable version that can support a heavier vehicle.`; - if (S.TV >= 5) { m1=`An automatic missile defense system has been installed,`; m2=`targeting any guided missiles with laser dazzlers and deploying a smokescreen.`; } - if (S.TV >= 6) { pod1=`An anti-tank missile pod`; pod2=`has been installed on the side of the turret.`; } - if (S.TV >= 7) { G1=`25`; G2=`by attacking enemies through cover and destroying light armor`; } - if (S.TV >= 8) pod2=`and an anti-aircraft missile pod have been installed on either side of the turret.`; - if (S.TV >= 9) { squad=`two squads`; armor=``; m2=`destroying any incoming missiles with a high-powered laser. Some of the now redundant composite armor has been removed, and the reclaimed space allows for more passengers.`; } - if (S.TV >= 10) engine=`${e0} replaced with the newest model, allowing the vehicle to get in and out of the conflict extremely quickly.`; - return `A fleet of infantry fighting vehicles ${B} are parked in the garage${C}. The IFVs can carry ${squad} of 6 to a firezone. The ${G1} mm autocannon supports infantry ${G2}. ${pod1} ${pod2} ${engine} ${armor} ${tires} ${m1} ${m2}`; - } - - function PGT() { - let b=`has been sold to ${V.SF.Lower} through back channels to support a failing Old World nation. The tank is so large it cannot fit inside the garage, and has`, c=``, engines=`. Two engines power the left and right sides of the tank separately, leaving it underpowered and slow`, gun0=``, gun1=``, gun2=`an undersized main gun and makeshift firing system from a standard battle tank`, armor1=``, armor0=``, cannon=``, laser=``, PGTframe=``; - if (S.PGT >= 2) c=`rests in`; b=``; engines=` and powered by their own engine, allowing the tank to travel with an unsettling speed for its massive bulk`; - if (S.PGT >= 3) { gun0=`a railgun capable of`; gun1=`firing steel slugs`; gun2=`through one tank and into another`; } - if (S.PGT >= 4) { armor0=`reinforced, increasing survivability for the crew inside.`; armor1=`The armor has been`; } - if (S.PGT >= 5) cannon=`A coaxial 30mm autocannon has been installed in the turret, along with automated .50 cal machine guns mounted over the front treads.`; - if (S.PGT >= 6) laser=`Laser anti-missile countermeasures have been installed, destroying any subsonic ordinance fired at the Goliath.`; - if (S.PGT >= 7) PGTframe=`The frame has been reinforced, allowing the Goliath to carry more armor and guns.`; - if (S.PGT >= 8) armor0=`redesigned with sloping and state-of-the-art materials, allowing the Goliath to shrug off even the most advanced armor-piercing tank rounds.`; - if (S.PGT >= 9) gun1=`firing guided projectiles`; - if (S.PGT >= 10) gun0=`a twin-barreled railgun capable of rapidly`; - return `A prototype Goliath tank ${b}${c} its own garage housing built outside the arcology. The massive bulk is spread out over 8 tracks, two for each corner of the tank${engines}. The turret is equipped with ${gun0} ${gun1} ${gun2}. ${cannon} ${armor1} ${armor0} ${laser} ${PGTframe}`; - } - - function AA() { - let W1=`only armed`, W2=`;`, W3=`a poor weapon against flying targets, but enough to handle ground forces`, group=`A small group of attack VTOL have been recommissioned for use by ${V.SF.Lower}, enough to make up a squadron`, engines=``, TAI=``, lock=``, support=``, stealth=``, scramble=``, PAI=``; - if (S.AA >= 2) { W1=`armed`; W2=` and air-to-air missiles,`; W3=`a combination that can defend the arcology from enemy aircraft, as well as`; support=` support ground troops`; } - if (S.AA >= 3) engines=`The engines have been tuned, allowing faster flight with greater acceleration.`; - if (S.AA >= 4) TAI=`An advanced targeting AI has been installed to handle all control of weapons, allowing much more efficient use of ammunition and anti-countermeasure targeting.`; - if (S.AA >= 5) lock=`Installed multispectrum countermeasures protect against all types of missile locks.`; - if (S.AA >= 6) group=`A respectable number of attack VTOL protect your arcology, split into a few squadrons`; - if (S.AA >= 7) { support=` attack ground targets`; W2=`; rocket pods, and air-to-air missiles,`; } - if (S.AA >= 8) stealth=`The old skin has been replaced with a radar-absorbent material, making the aircraft difficult to pick up on radar.`; - if (S.AA >= 9) scramble=`The VTOLs can scramble to react to any threat in under three minutes.`; - if (S.AA >= 10) PAI=`A piloting AI has been installed, allowing the VTOLs to perform impossible maneuvers that cannot be done by a human pilot. This removes the need for a human in the aircraft altogether.`; - return `${group}. Several of the landing pads around ${V.arcologies[0].name} host groups of four fighters, ready to defend the arcology. ${scramble} The attack VTOL are currently ${W1} with a Gatling cannon${W2} ${W3}${support}. ${TAI} ${PAI} ${engines} ${lock} ${stealth}`; - } - - function TA() { - let Num=`number`, type=`tiltrotor`, capacity=`small platoon or 15`, engines=``, engines2=``, Radar=``, Armor=``, landing=``, miniguns=``, counter=``; - if (S.TA >= 2) engines=`The tiltrotor engines have been replaced with a more powerful engine, allowing faster travel times.`; - if (S.TA >= 3) counter=`Multispectrum countermeasures have been added to protect against guided missiles.`; - if (S.TA >= 4) miniguns=`Mounted miniguns have been installed to cover soldiers disembarking in dangerous areas.`; - if (S.TA >= 5) Num=`large number`; - if (S.TA >= 6) landing=`The landing equipment has been overhauled, protecting personnel and cargo in the event of a hard landing or crash.`; - if (S.TA >= 7) Armor=`Armor has been added to protect passengers from small arms fire from below.`; - if (S.TA >= 8) { capacity=`large platoon or 20`; engines2=`Further tweaks to the engine allow for greater lifting capacity.`; } - if (S.TA >= 9) Radar=`Radar-absorbent materials have replaced the old skin, making it difficult to pick up the VTOL on radar.`; - if (S.TA >= 10) { type=`tiltjet`; engines2=``; engines=`The tiltrotors have been replaced with tiltjets, allowing for much greater airspeed and acceleration.`; } - return `A ${Num} of transport ${type} VTOL have been recommissioned for use by ${V.SF.Lower}. The VTOLs are resting on large pads near the base to load either a ${capacity} tons of material. ${engines} ${engines2} ${Armor} ${landing} ${counter} ${Radar} ${miniguns}`; - } - - function SP() { - let engine=`ramjet engines in the atmosphere that can reach Mach 10`, b=`has been purchased from an insolvent Old World nation. It `, shield=``, camera=``, efficiency=``, camera2=``, drag=``, crew=``, engine2=``, skin=``; - if (S.SpacePlane >= 2) { b=``; shield=`The current heat shielding has been upgraded, reducing the likelihood of heat damage during reentry.`; } - if (S.SpacePlane >= 3) engine2=` and liquid rocket engines in orbit that can reach an equivalent Mach 18`; - if (S.SpacePlane >= 4) camera=`A state-of-the-art camera has been installed in the underbelly that takes incredibly high resolution photos, but requires the frictionless environment of space to focus.`; - if (S.SpacePlane >= 5) efficiency=`Tweaks to the engines have increased fuel efficiency to the point where midflight refueling is no longer necessary.`; - if (S.SpacePlane >= 6) camera2=`The camera sensor is capable of taking IR shots.`; - if (S.SpacePlane >= 7) drag=`Miraculous advances in aerodynamics and materials allow frictionless flight, even while in the atmosphere.`; - if (S.SpacePlane >= 8) crew=`Increased the crew comfort and life support systems to increase operational time.`; - if (S.SpacePlane >= 9) skin=`Replaced the underbelly skin with a chameleon kit, matching the color to the sky above it.`; - if (S.SpacePlane >= 10) { engine=`experimental scramjet engines in the atmosphere that can reach Mach 15`; engine2=` and liquid rocket engines in orbit that can reach an equivalent Mach 25`; } - return `A prototype spaceplane ${b} rests in the hangar, its black fuselage gleaming. The craft is powered by ${engine}${engine2}. ${efficiency} ${shield} ${camera} ${camera2} ${drag} ${crew} ${skin}`; - } - - function GunS() { - let a=`has been recommissioned for use by ${V.SF.Lower}. Currently, it `, b=``, c=``, d=``, e=`Miniguns and Gatling cannons line`, f=`, though the distance to ground targets renders the smaller calibers somewhat less useful`, g=``, h=``, i=``, j=``, k=``; - if (S.GunS >= 2) { b=`Infrared sensors have been added for the gunners to better pick targets.`; a=``; } - if (S.GunS >= 3) { c=`The underside of the aircraft has been better armored against small-arms fire`; h=`.`; } - if (S.GunS >= 4) d=`Larger fuel tanks have been installed in the wings and fuselage, allowing the gunship to provide aerial support for longer periods before refueling.`; - if (S.GunS >= 5) { e=`25 mm Gatling cannons`; f=`; allowing the gunship to eliminate infantry`; j=` and light vehicles from above`; k=` and a 40 mm autocannon are mounted on`; } - if (S.GunS >= 6) g=`The engines have been replaced, allowing both faster travel to a target, and slower travel around a target.`; - if (S.GunS >= 7) h=`; and multi-spectrum countermeasures have been installed to protect against guided missiles.`; - if (S.GunS >= 8) b=`Upgraded multi-spectrum sensors can clearly depict targets even with IR shielding.`; - if (S.GunS >= 9) i=`The ammunition storage has been increased, only slightly depriving loaders of a place to sit.`; - if (S.GunS >= 10) { j=`; both light and heavy vehicles, and most enemy cover from above`; k=`; a 40 mm autocannon, and a 105 mm howitzer are mounted on`; } - return `A large gunship ${a} is being refueled in the hangar. ${e}${k} the port side of the fuselage${f}${j}. ${b} ${i} ${g} ${c}${h} ${d}`; - } - - function AC() { - let recom=`has been recommissioned from the Old World for ${V.SF.Lower}. It`, jets=`Formerly mothballed strike jets`, loc=``, radar=``, AAG=``, prop=``, torp=``, armor=``, power=``, scramble=``; - if (V.week % 6 === 0) { loc=`moored to the pier in the Naval Yard`; } else { loc=`patrolling the waters near ${V.arcologies[0].name}`; } - if (S.AircraftCarrier >= 2) { radar=`The island's radar and comms have been improved.`; recom=``; } - if (S.AircraftCarrier >= 3) AAG=`The antiair guns have been updated to automatically track and predict enemy aircraft movement.`; - if (S.AircraftCarrier >= 4) jets=`Modern strike jets with state-of-the-art armaments`; - if (S.AircraftCarrier >= 5) prop=`The propellers have been redesigned, granting greater speed with less noise.`; - if (S.AircraftCarrier >= 6) torp=`An anti-torpedo system detects and destroys incoming torpedoes.`; - if (S.AircraftCarrier >= 7) armor=`Additional armor has been added to the hull and deck.`; - if (S.AircraftCarrier >= 8) power=`The power plant has been converted to provide nuclear power.`; - if (S.AircraftCarrier >= 9) scramble=`The catapult has been converted to an electromagnetic launch system, halving the time it takes to scramble jets.`; - if (S.AircraftCarrier >= 10) jets=`Attack VTOL from the converted for carrier capability`; - return `An aircraft carrier ${recom} is ${loc}. ${jets} serve as its airpower. ${scramble} ${power} ${radar} ${AAG} ${torp} ${prop} ${armor}`; - } - - function Sub() { - let recom=`has been recommissioned from the old world, and`, reactor=`Because diesel engines provide power and breathing oxygen is kept in pressurized canisters, the sub must frequently surface.`, reactor1=``, cal=``, hull=``, tubes=``, torpedoes=``, sonar=``, control=``, missiles=``; - if (S.Sub >= 2) { recom=``; reactor=`A nuclear reactor provides power`; reactor1=`; but because oxygen is still kept in pressurized canisters the sub must frequently surface to replenish its oxygen stocks.`; } - if (S.Sub >= 3) reactor1=` and an oxygen generator pulls Oâ‚‚ from the surrounding seawater, allowing the submarine to remain underwater for months if necessary.`; - if (S.Sub >= 4) cal=`Calibration of the propulsion systems has reduced the telltale hum of a moving sub to a whisper.`; - if (S.Sub >= 5) hull=`The outer hull has been redesigned for hydrodynamics and sonar absorption.`; - if (S.Sub >= 6) { tubes=`The torpedo tubes have been redesigned for faster loading speeds`; torpedoes=`.`; } - if (S.Sub >= 7) sonar=`The passive sonar has been finely tuned to detect mechanical noises miles away.`; - if (S.Sub >= 8) control=`The control room computers have been upgraded to automate many conn duties.`; - if (S.Sub >= 9) torpedoes=`and launch more agile torpedoes.`; - if (S.Sub >= 10) missiles=`The submarine has been outfitted with several cruise missiles to attack land or sea-based targets.`; - return `An attack submarine ${recom} is moored to the pier of the Naval Yard. ${reactor}${reactor1} ${cal} ${hull} ${tubes}${torpedoes} ${sonar} ${control} ${missiles}`; - } - - function HAT() { - let recom=`; has been recommissioned for use by ${V.SF.Lower}. It`, tons=`200`, skirt=``, guns=``, guns2=``, fans=``, speed=``, turbines=``, armor=``, ramps=``, HATframe=``, loadout=``; - if (S.HAT >= 2) { skirt=`The skirt has been upgraded to increase durability and improve cushion when traveling over uneven terrain and waves.`; recom=`;`; } - if (S.HAT >= 3) { guns=`A minigun`; guns2=`has been mounted on the front corners of the craft to defend against attackers.`; } - if (S.HAT >= 4) { fans=`The turbines powering the rear fans`; speed=`acceleration and speed.`; turbines=`have been replaced with a more powerful version, allowing greater`; } - if (S.HAT >= 5) armor=`The armor protecting its cargo has been increased.`; - if (S.HAT >= 6) { tons=`300`; fans=`The turbines powering the rear fans and impeller`; speed=`acceleration, speed, and carrying capacity.`; } - if (S.HAT >= 7) guns=`A minigun and grenade launcher`; - if (S.HAT >= 8) ramps=`The loading ramps have been improved, allowing for faster unloading.`; - if (S.HAT >= 9) HATframe=`The frame has been widened and reinforced, allowing for more space on the deck.`; - if (S.HAT >= 10) loadout=`An experimental loadout sacrifices all carrying capacity to instead act as a floating gun platform by mounting several rotary autocannons the deck, should the need arise.`; - return `An air cushion transport vehicle, or hovercraft ${recom} is parked on the pier of the Naval Yard, ready to ferry ${tons} tons of soldiers and vehicles. ${guns} ${guns2} ${fans} ${turbines} ${speed} ${skirt} ${armor} ${ramps} ${HATframe} ${loadout}`; - } - - let r = `<br>`; - if (View === 'Intro') { - r +=`You continue towards the common area, the soldiers you pass, nod respectfully, salute, or bow slightly, as they please. You pass the briefing areas, the officers and sergeants of the force are conferring over planning tables and display screens regarding their upcoming deployments.`; - r += `<br><br><div style="margin-left:2em">The commanders are `; if (V.SF.Target === "recruit") { - r += `viewing lists of potential recruits for ${V.SF.Lower}. Mainly mercenaries and Old World soldiers who might be receptive to an offer of employment and residence within the arcology, in addition to some citizens of the arcology who wish to have some excitement in their lives.`; - } else if (V.SF.Target === "secure") { - r += `reviewing maps of trade routes to the arcology as well as nearby merchant hubs, arranging their future deployments to best protect them and encourage business and trade.`; - } else { - r += `reviewing maps of settlements and locations reported to have choice concentrations of material loot and potential slave stock, in preparation for their coming raids.`; - } r += `</div>`; - r += `<div style="margin-left:2em">`; if (V.SF.ROE === "hold") { - r += `There are posted (and very strict) guidelines for the use of force against non-citizen residents, forbidding the use of heavy weapons or indiscriminate fire.`; - } else if (V.SF.ROE === "limited") { - r += `There are some guidelines posted regarding the use of force against non-citizens, forbidding general indiscriminate fire.`; - } else { - r += `Guidelines regarding the use of force are completely absent from the deployment information screens. A note affixed to the screen, probably from a soldier, says: "Pop 'em if you see 'em — better than target practice!" Another one on top of that, from The Colonel, says: "Don't shoot the pretty ones, you fucking morons, or I'll kill you myself. They're worth good money or good for fun — do you idiots really want to have to fuck month-old stock?"`; - } r += `</div>`; - r += `<div style="margin-left:2em">`; if (V.SF.Regs === "strict") { - r += `On several screens, there are prominent warnings regarding the severe disciplinary procedures that will be taken against soldiers who commit crimes while on deployment.`; - } else if (V.SF.Regs === "some") { - r += `On several screens, there are some minor warnings regarding the mild disciplinary procedures that may be taken against soldiers who commit especially severe crimes while on deployment.`; - } else { - r += `There are no warnings or information regarding disciplinary procedures on any of the screens. Near one of them, a waste basket has been dragged over and a soldier has posted a note above it that says: "For Old World Complaints and Warrants."`; - } r += `</div>`; - - r += `<br>You arrive at the firebase's common area, a nest of bars, pleasure dens, public spaces, and other facilities catering to the soldiers' needs and giving them somewhere to spend their free time, since they do not mingle with your citizens on the higher levels or exit the arcology except on deployment. It is well-occupied by the soldiers not currently tasked with duties, and they respectfully move out of your way as you approach, clearing a path for you to move forward.`; - r += `<br><br><div style="margin-left:2em">`; - r += `The amenities are staffed by menial slaves, captured by the soldiers on their excursions. They are `; - if (V.SF.Depravity <= 0.3 && V.SF.Colonel.Core === "kind") { - r += `wearing plain jumpsuits and slim identification collars to set them apart from the soldiers, and look resigned but not fearful. The soldiers themselves socialize at the bars, in small groups around tables, and in the gambling parlors. Many of them can be seen entering or leaving the dens occupied by the sexual slaves they have acquired. Laughter from the carousing soldiers can be heard at all times. Small groups of slaves move freely between the plaza and their basic accommodations attached to the firebase.`; - } else if (V.SF.Depravity <= 0.6 && V.SF.Colonel.Core === "kind") { - r += `topless, wearing only utilitarian pants and leather collars to set them apart from the soldiers, and occasionally shoot fearful looks at the soldiers. The soldiers themselves socialize at the bars, or in large groups around tables, leering at and groping slaves of interest as they pass by. Many of them can be seen entering or leaving the dens occupied by the sexual slaves they have acquired, and often emerge only partially dressed, sometimes pulling half-naked slaves out with them.`; - } else if (V.SF.Depravity <= 0.9) { - r += `topless, wearing only utilitarian shorts and steel collars to set them apart from the soldiers, and often shoot fearful looks at the soldiers. The soldiers themselves socialize at the bars, or in large groups around tables, leering at and heavily groping slaves of interest as they pass by. Many of them can be seen entering or leaving the dens occupied by the sexual slaves they have acquired, and often emerge stark naked, sometimes pulling naked slaves out with them for one last servicing in public. A few soldiers stagger around in drunken hazes or drugged-out stupors.`; - } else if (V.SF.Depravity <= 1.2) { - r += `topless, wearing only a single undergarment and heavy steel collars to set them apart from the soldiers, and often shoot fearful looks at the soldiers. The soldiers occupy themselves primarily with sex, pulling slaves onto benches and fucking them hard in public. Many soldiers stagger around or lie passed out from drug and alcohol abuse.`; - } else if (V.SF.Depravity >= 1.5 && (V.SF.Colonel.Core === "Warmonger" || V.SF.Colonel.Core !== "Shell Shocked") ) { - r += `naked, and are wearing heavy shock collars to force obedience. Most are wild-eyed with fear or dull-eyed from mental collapse, and many others bear marks of abuse. Few of the slaves are here long-term, the depraved pleasures of the soldiers resulting in enormous turnover and loss of 'damaged' stock. The extreme libations of the soldiers are ever-present. Drunken soldiers stagger around everywhere, beating slaves too slow to get out of their way. Others lie sprawled out on the ground, rendered senseless from heavy drug abuse. Some walk around naked, and hold slaves down on the benches scattered around, raping or sodomizing them with their cocks or their personal strap-ons as they desire. In alcoves, some soldier-lover pairs fuck loudly, moaning in pleasure.`; - if (jsRandom(1,100) <= 50) { - r += `Off to the side, a group of soldiers brutally gangbang a very young slave girl, with one soldier buried balls-deep in her ass, another brutally sawing a barbed strap-on in and out of her pussy, and a third with his cock forced deep down her throat. The slave girl struggles and gags, desperate for breath or relief.`; - } else if (jsRandom(1,100) > 50) { - r += `Off to the side, a group of soldiers cackle amongst themselves as they take turns beating a very young slave girl with heavy batons. Sickening crunches can be heard from the screaming slave.`; - } else if (jsRandom(1,100) > 75) { - r += `Off to the side, still more soldiers crowd around an above-ground pit built from empty crates, gambling on slave gladiator fights. There's a drunken cheer as one of the fighters, a very young slave girl, straddles another one and smashes her face in with a blood-slick ammo crate. As she stands, shaking from fear and adrenaline, one of the soldiers laughs and throws a small incendiary grenade at her, changing the cheers to curses as the other soldiers jump away from the flaming, screeching slave.`; - } else { - r += `Screams and cries of pain can be heard echoing around the area as the soldiers have their fun with their property.`; +window.UnitText = function(input) { + "use strict"; + const V = State.variables; + T = State.temporary; + S = V.SF.Squad; + let r = ``; + switch(input) { + case 'firebase': + appear = `is currently constructed in a haphazard fashion.`; + barracks = `Soldiers' cots are mixed in with weapons crates and ammunition.`; + slave = `Cages for processing slaves lie off to one side,`; + common = `and in the center is a common area with tables for soldiers to gather around for meals or rowdy conversations.`; + garage = ``; + drone = ``; + hangar = ``; + launch = ``; + artillery = ``; + comms = ``; + training = ``; + if (S.Firebase >= 0) { r += `<br>''Firebase:''`; + if (S.Firebase >= 1) appear = `has had some organization put into it.`; barracks = `The majority of weapons, armor, and ammunition have been separated from the soldiers' cots into their own armory.`; garage = `A section near the outer wall of the arcology has been converted to a garage with an adjoining vehicle maintenance bay`; drone = `.`; if (V.terrain === "oceanic") garage += `for inter-arcology travel`; + if (S.Firebase >= 2) barracks = `A barracks has been constructed near the armory, allowing soldiers a quieter place to sleep and store their personal spoils.`; drone = `; as well as a facility for the storage, maintenance, and deployment of armed combat drones.`; + if (S.Firebase >= 3) appear = `has become more permanent.`; barracks = `A command center has been constructed near the barracks and armory, allowing for additional support personnel.`; + if (S.Firebase >= 4) hangar = `Hangar space for storing and repairing aircraft has been converted from unused space on the other side of the garage.`; + if (S.Firebase >= 5) + appear = `is nearing the appearance of a military base.`; launch = `The rest of the firebase has been designated for special projects.`; artillery = `Artillery batteries are set around the base of the arcology.`; if (V.terrain === "oceanic" || V.terrain === "marine") launch += `A Naval Yard has been constructed in the waters near the arcology.`; + if (S.Firebase >= 6) common = `and in the center is a common area for recreation, including a small movie theater and a mess hall.`; + if (S.Firebase >= 7) {slave = `A slave detention facility has been sectioned off to one side`; + if (V.SF.Depravity > 1.5) slave += `emanating the sounds of rape and torture`; + slave += `;`;} + if (S.Firebase >= 8) { appear = `has become a fully fledged military base.`; comms = `A Free City-wide communication network for ${V.SF.Lower} has been constructed to facilitate faster responses and efficient monitoring of the surrounding area.`; } + if (S.Firebase >= 9) training = `A high-tech killhouse has been constructed to aid in soldier training.`; + if (S.Firebase >= 10) artillery = `Railgun artillery batteries are set around the base of the arcology, capable of accurately destroying enemies an absurd distance away.`; + return `${r} The firebase ${appear} ${barracks} ${comms} ${training} ${slave} ${common} ${garage}${drone} ${hangar} ${launch} ${artillery}`; } - } - r += `</div>`; - - r += `<br>In the middle of the common area is a pile of supply crates with a pavilion on top — The Colonel's personal throne and open quarters, the result of her preferring to live an extreme lifestyle amongst her soldiers rather than in her empty quarters on the upper levels. It's draped with the 'flag' of ${V.SF.Lower}, one of her inventions. Sprawled all around it is an immense quantity of; alcohol, hard drugs, clothes, electronic devices, huge amounts of cash, jewels and precious metals looted from the outside world.`; - r += `<br><br><div style="margin-left:2em">`; - r += `As you approach, The Colonel `; - if (jsRandom(0,100) <= 50) { - r += `raises a hand in greeting and nods. She is sprawled on a couch, wearing only her combat suit tank top and fingerless gloves. She's holding a near-empty bottle of strong liquor in her hand and you can see a naked slave girl kneeling on the floor between her legs. The Colonel has her legs wrapped tightly around the girl's head, forcing the girl to service her if she wants to breathe. The Colonel is close to her climax then suddenly tenses her lower body thus gripping the girl even tighter and throws her head back in ecstasy as she orgasms. She lets out a long breath finally releasing the girl, giving her a hard smack and shouting at her to fuck off.<br><br> The Colonel finishes off her bottle, tossing it over her shoulder then leaning back on the couch and spreading her legs wide. You look down briefly, falling into your habits of inspection. Her pussy is completely devoid of hair with heavy labia in with a very large and hard clit peaking out. Beads of moisture, the result of her excitation, are visible, and you can tell from long experience that she would be tight as a vise. You return your gaze to her face to find her smirking at you. "Like what you see, ${SFCR()}?" She waves her hand at the plaza around her, "So do they. But you're not here for pussy. You're here to talk business. So, what's up?"`; - } else if (jsRandom(0,100) > 50) { - r += `is in no condition initially to greet you. She's naked except for one sock that gives you a very good view of her muscled, taut body while lunging with her feet on the table and the rest on her couch. She is face-down in a drugged-out stupor in the middle of a wide variety of powders and pills. Perhaps sensing your approach, her head suddenly shoots up and looks at you with unfocused, bloodshot eyes. "Sorry, ${SFCR()}," she slurs, wiping her face and weakly holding up a hand. "Hold on a second, I need something to help me out here. Long fucking night." She struggles to sit on the couch and bending over the table, loudly snorts up some of the white powder on it. "Ahhh, fuck," she says, breathing heavily.<br><br> She shakes her head powerfully now looking at you, her eyes once again alert and piercing. "That's better," she says, leaning back on the couch and giving you another good view of her assets. "So, ${SFCR()}," she begins, "what brings you down here to our little clubhouse? I trust you're happy with how we've been handling things out there?" You nod. "Excellent", she laughs. "I have to say; it's nice to have a place like this while having some top-end gear and to be able to have fun out there without worrying about anyone coming back on us. Good fucking times." She laughs again. "So — I'm assuming you want something?"`; - } else if (jsRandom(0,100) > 70 && V.SF.Depravity >= 1.5 && V.SF.Colonel.Core == "cruel") { - r += `is relaxing on her couch stark naked, greeting you with a raised hand. Between her tightly clenched legs is a slave girl being forced to eat her out. "Hey, ${SFCR()}, what's —" she breaks off as a flash of pain crosses her features. "Fucking bitch!" she exclaims, pulling her legs away and punching the slave girl in the face. She pushes the girl to the ground, straddling her then begins hitting. You hear one crunch after another as The Colonel's powerful blows shatter the girl's face. She hisses from between clenched teeth, each word accompanied by a brutal punch. "How. Many. Fucking. Times. Have. I. Told. You. To. Watch. Your. Fucking. Teeth. On. My. Fucking. Clit!" She leans back, exhaling heavily. Before leaning back down to grip apply pressure onto the girl's neck with her powerful hands. Wordlessly, she increases the pressure and soon the girl begins to turn blue as she struggles to draw breath. Eventually her struggles weaken and then finally, end.<br><br> The Colonel relaxes her grip then wipes her brow, clearing away the sweat from her exertion. Finally rising from the girl's body, relaxing back on the couch and putting her feet back up on the table. "Sorry about that ${SFCR()}," she says, shrugging. "So many of these bitches we pick up from the outside don't understand that they have to behave." Shaking her head in frustration, "Now I need to find another one. But that's not your problem — you're here to talk business. So, what's up?"`; - } else { - r += `is topless while reviewing the particulars of her unit on a tablet as you approach. She raises a hand in greeting. "Hey ${SFCR()}," she says, noticing you looking at her chest. She laughs. "Nice, aren't they? But they're not for you or them." She throws a thumb at the plaza around her. "You're down here for a reason, though. What can I do for you?"`; - } r += `</div>`; - if (S.Firebase === 10) { - r += `<br>The echo of simulated gun fire and explosions can be heard from the state of the art killhouse. - The quite hum of fans keeping the faster and much more efficient custom network operational can be heard throughout the firebase.<br>`; - } - - r += `<br>__Current facilities status:__`; - r += `<br>''Firebase:'' ${Firebase()}`; - r += `<br> The large dormitories are ${TroopDec()}`; - r += `<br><br>''Armory:'' ${Armoury()}`; - r += `<br><br>''Drug Lab:'' ${Drugs()}`; - if (S.Firebase >= 2 && S.Drones > 0) r += `<br><br>''Drone Bay:'' ${LUAV()}`; - - if (T.G > 0 && S.Firebase >= 1) { r += `<br><br>''Garage:''`; - if (S.AV+S.TV > 0) { r += `<br> ''Vehicles:''`; - if (S.AV > 0) r += `<br> ''Assault:'' ${AV()}`; - if (S.TV > 0) r += `<br> ''Transport:'' ${TV()}`; + break; + case 'armoury': + weapons = `The weapons are mostly worn rifles that have already seen years of service before ${V.SF.Lower} acquired them.`; + armor1 = `The body armor is enough to stop smaller calibers, but nothing serious.`; + radio= ``; + helmets = ``; + ammo0 = ``; + uniforms = ``; + special= ``; + exo= ``; + if (S.Armoury >= 0) {r += `<br><br>''Armory:''<br>`; radio= `Radios have been wired into the soldiers helmets`; helmets = `.`; + if (S.Armoury >= 2) helmets = ` and a HUD has been integrated into the soldier's eyewear.`; + if (S.Armoury >= 3) ammo0 = `Tactical vests have been provided, allowing soldiers to carry additional ammo.`; + if (S.Armoury >= 4) armor1 = `The body armor is a newer variant, able to stop small arms fire and protect against shrapnel.`; + if (S.Armoury >= 5) weapons = `The weapons are modern rifles and sidearms, putting ${V.SF.Lower} on par with rival mercenary outfits.`; + if (S.Armoury >= 6) uniforms = `New uniforms have been distributed that are more comfortable and made of breathable fabric to keep soldiers from overheating.`; + if (S.Armoury >= 7) special= `Specialized weaponry is available for many roles, allowing more flexibility in planning.`; + if (S.Armoury >= 8) helmets = `and a HUD and camera display have been integrated into soldiers' eyewear, enabling accurate aim around corners or from behind cover`; + if (S.Armoury >= 9) exo= `An exosuit has been developed to reduce the amount of weight soldiers carry, increase lifting strength, and move faster in combat.`; + if (S.Armoury >= 10) weapons = `Cutting-edge weaponry is available to ${V.SF.Lower}, far outpacing the ability of rival mercenary outfits.`; + return `${r} The armor1y holds soldiers' weapons and gear while not in training or combat. ${weapons} ${special} ${armor1} ${radio}${helmets} ${ammo0} ${uniforms} ${exo}`; + } break; + case 'drugs': + amphet = ``; + phen= ``; + steroid= ``; + downer= ``; + concen= ``; + stimpack= ``; + stabilizer= ``; + if (S.Drugs >= 0) { r += `<br><br>''Drug Lab:''`; amphet = `Amphetamines have been added to the cocktail at a low dosage to act as a stimulant, physical performance enhancer, cognition control enhancer. Some side-effects exist.`; + if (S.Drugs >= 2) phen= `Phencyclidine has been added to the cocktail at a low dosage as a dissociative psychotropic for soldiers in battle to introduce feelings of detachment, strength and invincibility, and aggression. Some side-effects reduce the tolerable dosage before soldiers go on uncontrollable violent outbreaks.`; + if (S.Drugs >= 3) steroid= `Testosterone is being produced for soldiers in training as a natural muscle growth stimulant and to invoke aggression.`; + if (S.Drugs >= 4) downer= `Zaleplon is being produced as a downer to counteract the battle cocktail and encourage rest before combat.`; + if (S.Drugs >= 5) concen= `Methylphenidate has been added to the cocktail as a stimulant and to improve soldier concentration.`; + if (S.Drugs >= 6) phen= `A phencyclidine-based drug has been added to the cocktail as a dissociative psychotropic for soldiers in battle to introduce controllable feelings of detachment, strength and invincibility, and aggression.`; + if (S.Drugs >= 7) steroid= `Low levels of anabolic steroids are being produced for soldiers in training to stimulate muscle growth and invoke aggression.`; + if (S.Drugs >= 8) amphet = `Diphenylmethylsulfinylacetamide has been added to the cocktail to counteract the effects of sleep deprivation and promote alertness.`; + if (S.Drugs >= 9) stimpack= `A stimpack of the battle cocktail is being given to soldiers in battle to take if the original dose wears off before the battle is over.`; + if (S.Drugs >= 10) stabilizer= `A stabilizer has been added to the battle cocktail that helps tie effects together while reducing side-effects, leading to an effectively safe supersoldier drug.`; + return `${r} A drug lab has been established to increase the effectiveness of ${V.SF.Lower}'s soldiers. Many of these chemicals are mixed into a single 'battle cocktail' to be taken before combat. ${amphet} ${phen} ${concen} ${steroid} ${downer} ${stimpack} ${stabilizer}`; } - if (S.PGT > 0) r += `<br> ''Prototype Goliath Tank:'' ${PGT()}`; - } - - if (S.Firebase >= 4) { - if (T.H > 0) { r += r += `<br><br>''Hangar:''`; - if (S.AA+S.TA > 0) { r += `<br> ''Airforce:''`; - if (S.AA > 0) r += `<br> ''Assault:'' ${AA()}`; - if (S.TA > 0) r += `<br> ''Transport:'' ${TA()}`; - } - if (S.SpacePlane > 0) r += `<br> ''Spaceplane:'' ${SP()}`; - if (S.GunS > 0) r += `<br> ''Gunship:'' ${GunS()}`; + break; + case 'UAV': + if (S.Firebase >= 2 && S.Drones >= 1) { + r += `<br><br>''Drone Bay:''`; + a = `have been recommissioned for use by ${V.SF.Lower}`; + b = `.`; + c = ``; + d = ``; + e = ``; + f = ``; + g = ``; + h = ``; + i = ``; + j = ``; + k = ``; + if (S.Drones >= 2) a = `equipped with missiles are resting on one side of the drone bay`; + b = `; + as well as destroying the occasional target.`; + if (S.Drones >= 3) c = `A fleet of`; + d = `large delivery quadcopters have been converted for military service to support ground forces as combat drones.`; + if (S.Drones >= 4) d = `combat drones take up the rest of the space in the drone bay. They have a`; + e = `small automatic rifle`; + f = `mounted to the underside.`; + if (S.Drones >= 5) g = `Armor has been added to protect vulnerable components from small arms fire.`; + if (S.Drones >= 6) h = `The fleet's batteries have been replaced with higher capacity models, increasing the functional time spent in combat.`; + if (S.Drones >= 7) i = `The propellers and motors have been upgraded, increasing maneuverability and speed.`; + if (S.Drones >= 8) j = `The drone control signal has been boosted and encrypted, giving the drones a greater range and protecting against electronic warfare.`; + if (S.Drones >= 9) e = `light machine gun`; + if (S.Drones >= 10) k = `A drone-to-drone network has been installed, allowing drones to swarm, maneuver, and attack targets autonomously.`; + return `${r} Surveillance drones ${a}. During combat, they supply aerial intel to commanders and act as the communications network for ground forces${b} ${c} ${d} ${e} ${f} ${g} ${h} ${i} ${j} ${k}`; } - } - } else { - if (T.NY > 0) { r += `<br><br>''Naval Yard:''`; - if (S.AircraftCarrier > 0) r += `<br> ''Aircraft Carrier:'' ${AC()}`; - if (S.Sub > 0) r += `<br> ''Submarine:'' ${Sub()}`; - if (S.HAT > 0) r += `<br> ''Amphibious Transport:'' ${HAT()}`; - } - + break; + case 'AV': + b = `has been recommissioned for use by ${V.SF.Lower}. They`; + c = `, mechanics are methodically checking the recent purchases for battle-readiness`; + MG = `120 mm main gun is enough to handle the majority of opponents around the Free Cities.`; + engine1 = ``; + armor2 = ``; + armor22 = ``; + ammo1 = ``; + mg = ``; + fireC0 = ``; + fireC1 = ``; + fireC2 = ``; + fireC3= ``; + turret = ``; + if (S.AV >= 1) { r += `<br> ''Assault:''`; + if (S.AV >= 2) engine1 = `The engine1 has been overhauled, allowing much faster maneuvering around the battlefield.`; b = ``; c = ``; + if (S.AV >= 3) armor2 = `A composite ceramic armor has replaced the original, offering much greater protection from attacks.`; + if (S.AV >= 4) ammo1 = `The tanks have been outfitted with additional types of ammo for situational use.`; + if (S.AV >= 5) mg = `A remote-controlled .50 cal machine gun has been mounted on the turret to handle infantry and low-flying aircraft.`; + if (S.AV >= 6) fireC0 = `A fire-control system`; fireC3= `been installed, guaranteeing`; fireC2 = `has`; fireC1 = `accurate fire.`; + if (S.AV >= 7) fireC2 = `and an autoloader have`; fireC1 = `rapid, accurate fire while separating the crew from the stored ammunition in the event the ammo cooks off.`; + if (S.AV >= 8) armor22 = `A reactive armor system has been added, giving the tank an additional, if temporary, layer of protection.`; + if (S.AV >= 9) turret = `The turret has been massively redesigned, lowering the tank profile and increasing the efficiency of the mechanisms within.`; + if (S.AV >= 10) MG = `140 mm main gun can quash anything even the greatest Old World nations could muster.`; + return `${r} A fleet of main battle tanks ${b} are parked in the garage${c}. ${turret} The ${MG} ${ammo1} ${mg} ${fireC0} ${fireC2} ${fireC3} ${fireC1} ${engine1} ${armor2} ${armor22}`; + } break; + case 'TV': + B = `has been recommissioned for use by ${V.SF.Lower}. They`; + C = `, mechanics are giving the new purchases a final tuneup`; + squad= `a squad`; + G1 = `20`; + G2 = `in a firefight`; + e0 = `The engine has been`; + engine3= ``; + armor3= ``; + tires = ``; + m1 = ``; + m2 = ``; + pod1 = ``; + pod2 = ``; + if (S.TV >= 1) { r += `<br> ''Transport:''`; + if (S.TV >= 2) engine3= `${e0} overhauled, allowing for higher mobility.`; C = ``; B = ``; + if (S.TV >= 3) armor3= `Composite armor has been bolted to the exterior, increasing the survivability of an explosive attack for the crew and passengers.`; + if (S.TV >= 4) tires = `The tires have been replaced with a much more durable version that can support a heavier vehicle.`; + if (S.TV >= 5) m1 = `An automatic missile defense system has been installed,`; m2 = `targeting any guided missiles with laser dazzlers and deploying a smokescreen.`; + if (S.TV >= 6) pod1 = `An anti-tank missile pod`; pod2 = `has been installed on the side of the turret.`; + if (S.TV >= 7) G1 = `25`; G2 = `by attacking enemies through cover and destroying light armor`; + if (S.TV >= 8) pod2 = `and an anti-aircraft missile pod have been installed on either side of the turret.`; + if (S.TV >= 9) squad= `two squads`; armor3= ``; m2 = `destroying any incoming missiles with a high-powered laser. Some of the now redundant composite armor has been removed, and the reclaimed space allows for more passengers.`; + if (S.TV >= 10) engine3= `${e0} replaced with the newest model, allowing the vehicle to get in and out of the conflict extremely quickly.`; + return `A fleet of infantry fighting vehicles ${B} are parked in the garage${C}. The IFVs can carry ${squad} of 6 to a firezone. The ${G1} mm autocannon supports infantry ${G2}. ${pod1} ${pod2} ${engine3} ${armor3} ${tires} ${m1} ${m2}`; + } + break; + case 'PGT': + b1 = `has been sold to ${V.SF.Lower} through back channels to support a failing Old World nation. The tank is so large it cannot fit inside the garage, and has`; + c1 = ``; + engines4 = `. Two engines power the left and right sides of the tank separately; + leaving it underpowered and slow`; + gun0 = ``; + gun1 = ``; + gun2 = `an undersized main gun and makeshift firing system from a standard battle tank`; + armor5 = ``; + armor6 = ``; + cannon = ``; + laser = ``; + PGTframe = ``; + if (S.PGT >= 1) {r += `<br> ''Prototype Goliath Tank:''`; + if (S.PGT >= 2) c1 = `rests in`; b1 = ``; engines4 = `and powered by their own engine, allowing the tank to travel with an unsettling speed for its massive bulk`; + if (S.PGT >= 3) gun0 = `a railgun capable of`; gun1 = `firing steel slugs`; gun2 = `through one tank and into another`; + if (S.PGT >= 4) armor6 = `reinforced, increasing survivability for the crew inside.`; armor5 = `The armor has been`; + if (S.PGT >= 5) cannon = `A coaxial 30mm autocannon has been installed in the turret, along with automated .50 cal machine guns mounted over the front treads.`; + if (S.PGT >= 6) laser = `Laser anti-missile countermeasures have been installed, destroying any subsonic ordinance fired at the Goliath.`; + if (S.PGT >= 7) PGTframe = `The frame has been reinforced, allowing the Goliath to carry more armor and guns.`; + if (S.PGT >= 8) armor6 = `redesigned with sloping and state-of-the-art materials, allowing the Goliath to shrug off even the most advanced armor5-piercing tank rounds.`; + if (S.PGT >= 9) gun1 = `firing guided projectiles`; + if (S.PGT >= 10) gun0 = `a twin-barreled railgun capable of rapidly`; + return `A prototype Goliath tank ${b1}${c1} its own garage housing built outside the arcology. The massive bulk is spread out over 8 tracks, two for each corner of the tank${engines4}. The turret is equipped with ${gun0} ${gun1} ${gun2}. ${cannon} ${armor5} ${armor6} ${laser} ${PGTframe}`; + } break; + case 'AA': + W1 = `only armed`; + W2 = `;`; + W3 = `a poor weapon against flying targets, but enough to handle ground forces`; + group = `A small group of attack VTOL have been recommissioned for use by ${V.SF.Lower}; enough to make up a squadron`; + engines = ``; + TAI = ``; + lock = ``; + support = ``; + stealth = ``; + scramble = ``; + PAI = ``; + if (S.AA >= 1) {r += `<br> ''Assault:''`; + if (S.AA >= 2) W1 = `armed`; W2 = `and air-to-air missiles,`; W3 = `a combination that can defend the arcology from enemy aircraft, as well as`; support = `support ground troops`; + if (S.AA >= 3) engines = `The engines have been tuned, allowing faster flight with greater acceleration.`; + if (S.AA >= 4) TAI = `An advanced targeting AI has been installed to handle all control of weapons, allowing much more efficient use of ammunition and anti-countermeasure targeting.`; + if (S.AA >= 5) lock = `Installed multispectrum countermeasures protect against all types of missile locks.`; + if (S.AA >= 6) group = `A respectable number of attack VTOL protect your arcology, split into a few squadrons`; + if (S.AA >= 7) support = `attack ground targets`; W2 = `; rocket pods, and air-to-air missiles,`; + if (S.AA >= 8) stealth = `The old skin has been replaced with a radar-absorbent material, making the aircraft difficult to pick up on radar.`; + if (S.AA >= 9) scramble = `The VTOLs can scramble to react to any threat in under three minutes.`; + if (S.AA >= 10) PAI = `A piloting AI has been installed, allowing the VTOLs to perform impossible maneuvers that cannot be done by a human pilot. This removes the need for a human in the aircraft altogether.`; + return `${r} ${group}. Several of the landing pads around ${V.arcologies[0].name} host groups of four fighters, ready to defend the arcology. ${scramble} The attack VTOL are currently ${W1} with a Gatling cannon${W2} ${W3}${support}. ${TAI} ${PAI} ${engines} ${lock} ${stealth}`; + } break; + case 'TA': + Num = `number`; + type = `tiltrotor`; + capacity = `small platoon or 15`; + engines0 = ``; + engines01 = ``; + Radar = ``; + Armor = ``; + landing = ``; + miniguns = ``; + counter = ``; + if (S.TA >= 1) {r += `<br> ''Transport:''`; + if (S.TA >= 2) engines0 = `The tiltrotor engines have been replaced with a more powerful engine, allowing faster travel times.`; + if (S.TA >= 3) counter = `Multispectrum countermeasures have been added to protect against guided missiles.`; + if (S.TA >= 4) miniguns = `Mounted miniguns have been installed to cover soldiers disembarking in dangerous areas.`; + if (S.TA >= 5) Num = `large number`; + if (S.TA >= 6) landing = `The landing equipment has been overhauled, protecting personnel and cargo in the event of a hard landing or crash.`; + if (S.TA >= 7) Armor = `Armor has been added to protect passengers from small arms fire from below.`; + if (S.TA >= 8) capacity = `large platoon or 20`; engines01 = `Further tweaks to the engine allow for greater lifting capacity.`; + if (S.TA >= 9) Radar = `Radar-absorbent materials have replaced the old skin, making it difficult to pick up the VTOL on radar.`; + if (S.TA >= 10) type = `tiltjet`; engines01 = ``; engines0 = `The tiltrotors have been replaced with tiltjets, allowing for much greater airspeed and acceleration.`; + return `${r} A ${Num} of transport ${type} VTOL have been recommissioned for use by ${V.SF.Lower}. The VTOLs are resting on large pads near the base to load either a ${capacity} tons of material. ${engines0} ${engines01} ${Armor} ${landing} ${counter} ${Radar} ${miniguns}`; + } break; + case 'SP': + engine20 = `ramjet engines in the atmosphere that can reach Mach 10`; + b5 = `has been purchased from an insolvent Old World nation. It `; + shield = ``; + camera = ``; + efficiency = ``; + camera2 = ``; + drag = ``; + crew = ``; + engine2 = ``; + skin = ``; + if (S.SpacePlane >= 1) {r += `<br> ''Spaceplane:''`; + if (S.SpacePlane >= 2) b5 = ``; shield = `The current heat shielding has been upgraded, reducing the likelihood of heat damage during reentry.`; + if (S.SpacePlane >= 3) engine2 = `and liquid rocket engines in orbit that can reach an equivalent Mach 18`; + if (S.SpacePlane >= 4) camera = `A state-of-the-art camera has been installed in the underbelly that takes incredibly high resolution photos, but requires the frictionless environment of space to focus.`; + if (S.SpacePlane >= 5) efficiency = `Tweaks to the engines have increased fuel efficiency to the point where midflight refueling is no longer necessary.`; + if (S.SpacePlane >= 6) camera2 = `The camera sensor is capable of taking IR shots.`; + if (S.SpacePlane >= 7) drag = `Miraculous advances in aerodynamics and materials allow frictionless flight, even while in the atmosphere.`; + if (S.SpacePlane >= 8) crew = `Increased the crew comfort and life support systems to increase operational time.`; + if (S.SpacePlane >= 9) skin = `Replaced the underbelly skin with a chameleon kit, matching the color to the sky above it.`; + if (S.SpacePlane >= 10) engine20 = `experimental scramjet engines in the atmosphere that can reach Mach 15`; engine2 = `and liquid rocket engines in orbit that can reach an equivalent Mach 25`; + return `${r} A prototype spaceplane ${b5} rests in the hangar, its black fuselage gleaming. The craft is powered by ${engine20}${engine2}. ${efficiency} ${shield} ${camera} ${camera2} ${drag} ${crew} ${skin}`; + } break; + case 'GunS': + a = `has been recommissioned for use by ${V.SF.Lower}. Currently, it `; + b4 = ``; + c2 = ``; + d = ``; + e = `Miniguns and Gatling cannons line`; + f = `; though the distance to ground targets renders the smaller calibers somewhat less useful`; + g = ``; + h = ``; + i = ``; + j = ``; + k = ``; + if(S.GunS >= 1) {r += `<br> ''Gunship:''`; + if (S.GunS >= 2) b4 = `Infrared sensors have been added for the gunners to better pick targets.`; a = ``; + if (S.GunS >= 3) c2 = `The underside of the aircraft has been better armored against small-arms fire`; h = `.`; + if (S.GunS >= 4) d = `Larger fuel tanks have been installed in the wings and fuselage, allowing the gunship to provide aerial support for longer periods before refueling.`; + if (S.GunS >= 5) e = `25 mm Gatling cannons`; f = `; allowing the gunship to eliminate infantry`; j = `and light vehicles from above`; k = `and a 40 mm autocannon are mounted on`; + if (S.GunS >= 6) g = `The engines have been replaced, allowing both faster travel to a target, and slower travel around a target.`; + if (S.GunS >= 7) h = `; and multi-spectrum countermeasures have been installed to protect against guided missiles.`; + if (S.GunS >= 8) b4 = `Upgraded multi-spectrum sensors can clearly depict targets even with IR shielding.`; + if (S.GunS >= 9) i = `The ammunition storage has been increased, only slightly depriving loaders of a place to sit.`; + if (S.GunS >= 10) j = `; both light and heavy vehicles, and most enemy cover from above`; k = `; a 40 mm autocannon, and a 105 mm howitzer are mounted on`; + return `${r} A large gunship ${a} is being refueled in the hangar. ${e}${k} the port side of the fuselage${f}${j}. ${b4} ${i} ${g} ${c2}${h} ${d}`; + } break; + case 'sat': + loc1 = `An unused science satellite has been purchased from an Old World nation. While currently useless, it holds potential to be a powerful tool.`; + gyro = ``; + telemetry = ``; + thrusters = ``; + solar = ``; + surviv = ``; + laser1 = ``; + heat = ``; + reactor = ``; + lens = ``; + kin = ``; + if (S.Satellite.lv >= 1) {r += `<br> ''Satellite:''`; + if (S.Satellite.lv >= 2) + if (V.SF.Squad.Satellite.InOrbit < 1) loc1 = `The satellite is being worked on in the Launch Bay.`; else loc1 = `The satellite is in geosynchronous orbit, far above the arcology.`; gyro = `A suite of sensors have been installed to ensure the satellite can detect attitude and orbital altitude.`; + if (S.Satellite.lv >= 3) telemetry = `Telemetry systems have been installed to communicate with the satellite in orbit, with strong encryption measures.`; + if (S.Satellite.lv >= 4) thrusters = `Thrusters have been installed to control satellite attitude and orbit.`; + if (S.Satellite.lv >= 5) solar = `A massive folding solar panel array, combined with the latest in battery technology allow the satellite to store an enormous amount of energy relatively quickly.`; surviv = `Enough of the satellite has been finished that it can expect to survive for a significant period of time in space.`; + if (S.Satellite.lv >= 6) laser1 = `A laser cannon has been mounted facing the earth, capable of cutting through steel in seconds`; heat = `while generating a large amount of heat.`; + if (S.Satellite.lv >= 7) heat = `. The installed heatsink allows the laser cannon to fire more frequently without damaging the satellite.`; + if (S.Satellite.lv >= 8) reactor = `A small, efficient nuclear reactor has been installed to continue generating energy while in the Earth's shadow.`; + if (S.Satellite.lv >= 9) lens = `A higher quality and adjustable lens has been installed on the laser, allowing scalpel precision on armor or wide-area blasts on unarmored targets.`; + if (S.Satellite.lv >= 10) kin = `A magazine of directable tungsten rods have been mounted to the exterior of the satellite, allowing for kinetic bombardment roughly equal to a series of nuclear blasts.`; + return `${r} ${loc1} ${gyro} ${thrusters} ${telemetry} ${solar} ${reactor} ${surviv} ${laser1}${heat} ${lens} ${kin}`; + } break; + case 'GR': + loc = `has been purchased from a crumbling Old World nation. It`; + power = `Large batteries mounted in oversized shoulders power the robot for up to ten minutes of use; though they make for large targets.`; + knife = `simply a 8.5 meter long knife; though additional weapons are under development.`; + armor8 = ``; + actuator = ``; + cannon1 = ``; + heatsink = ``; + ammo2 = ``; + missile = ``; + if (S.GiantRobot >= 1) {r += `<br> ''Giant Robot:''`; + if (S.GiantRobot >= 2) loc = ``; armor8 = `Armor plating has been mounted over the majority of the robot.`; + if (S.GiantRobot >= 3) power = `The robot is now powered by an umbilical cable system instead of bulky and short-lived batteries.`; + if (S.GiantRobot >= 4) knife = `a 25 meter plasma sword. The cutting edge uses plasma to melt and cut through targets, reducing the strain on the sword.`; + if (S.GiantRobot >= 5) actuator = `The limb actuators have been replaced with a faster and more powerful variant, granting the robot the same.`; + if (S.GiantRobot >= 6) cannon1 = `A custom 45 mm Gatling cannon rifle has been developed for ranged use`; ammo2 = `; though it lacks enough ammo storage for a main weapon.`; + if (S.GiantRobot >= 7) heatsink = `Large heatsinks have been installed out of the back to solve a massive overheating problem. These heatsinks resemble wings, and tend to glow red with heat when in heavy use.`; + if (S.GiantRobot >= 8) armor8 = ``; actuator = `Final actuator tweaks have allowed for the addition of exceptionally thick armor without any loss in speed or power.`; + if (S.GiantRobot >= 9) ammo2 = `; with spare ammunition drums kept along the robot's waist.`; + if (S.GiantRobot >= 10) missile = `Missile pods have been mounted on the shoulders.`; + return `${r} A prototype giant robot ${loc} rests in a gantry along the side of the arcology. The robot is as tall as a medium-sized office building, focusing on speed over other factors. ${power} ${armor8} ${actuator} ${heatsink} The main armament is ${knife} ${cannon1}${ammo2} ${missile}`; + } break; + case 'ms': + a4 = `A cruise missile launch site has been constructed near the base of`; + b2 = `outdated; something quickly rigged together to give the launch site something to fire in the case of an attack`; + c8 = ``; + d1 = ``; + e1 = ``; + f1 = ``; + g1 = ``; + h1 = ``; + if (S.MissileSilo >= 1) {r += `<br> ''Cruise Missile:''`; + if (S.MissileSilo >= 2) b2 = `a modern missile`; c8 = `; tipped with a conventional warhead`; + if (S.MissileSilo >= 3) d1 = `The launch systems have been overhauled, allowing a launch within seconds of an attack order being given.`; + if (S.MissileSilo >= 4) e1 = `The missile engines have been tweaked, giving them a greater range.`; + if (S.MissileSilo >= 5) f1 = `A passive radar has been installed, allowing the missile to follow moving targets.`; + if (S.MissileSilo >= 6) a4 = `Several cruise missile launch sites have been constructed around`; + if (S.MissileSilo >= 7) e1 = `The engine has been replaced, giving the missiles greater range and supersonic speeds.`; + if (S.MissileSilo >= 8) g1 = `The ability to pick new targets should the original be lost has been added.`; + if (S.MissileSilo >= 9) h1 = `The missile now uses its remaining fuel to create a thermobaric explosion, massively increasing explosive power.`; + if (S.MissileSilo >= 10) c8 = `that can be tipped with either a conventional or nuclear warhead`; + return `${r} ${a4} the arcology. The current missile armament is ${b2}${c8}. ${d1} ${e1} ${f1} ${g1} ${h1}`; + } break; + case 'AC': + recom1 = `has been recommissioned from the Old World for ${V.SF.Lower}. It`; + jets = `Formerly mothballed strike jets`; + loc2 = ``; + radar = ``; + AAG = ``; + prop = ``; + torp = ``; + armor9 = ``; + power1 = ``; + scramble1 = ``; + if (S.AircraftCarrier >= 1) {r += `<br> ''Aircraft Carrier:''`; + if (V.week % 6 === 0) loc2 = `moored to the pier in the Naval Yard`; else loc2 = `patrolling the waters near ${V.arcologies[0].name}`; + if (S.AircraftCarrier >= 2) radar = `The island's radar and comms have been improved.`; recom1 = ``; + if (S.AircraftCarrier >= 3) AAG = `The antiair guns have been updated to automatically track and predict enemy aircraft movement.`; + if (S.AircraftCarrier >= 4) jets = `Modern strike jets with state-of-the-art armaments`; + if (S.AircraftCarrier >= 5) prop = `The propellers have been redesigned, granting greater speed with less noise.`; + if (S.AircraftCarrier >= 6) torp = `An anti-torpedo system detects and destroys incoming torpedoes.`; + if (S.AircraftCarrier >= 7) armor9 = `Additional armor has been added to the hull and deck.`; + if (S.AircraftCarrier >= 8) power1 = `The power plant has been converted to provide nuclear power.`; + if (S.AircraftCarrier >= 9) scramble1 = `The catapult has been converted to an electromagnetic launch system, halving the time it takes to scramble1 jets.`; + if (S.AircraftCarrier >= 10) jets = `Attack VTOL from the converted for carrier capability`; + return `${r} An aircraft carrier ${recom1} is ${loc2}. ${jets} serve as its airpower. ${scramble1} ${power1} ${radar} ${AAG} ${torp} ${prop} ${armor9}`; + } break; + case 'Sub': + recom = `has been recommissioned from the old world, and`; + reactor0 = `Because diesel engines provide power and breathing oxygen is kept in pressurized canisters; + the sub must frequently surface.`; + reactor1 = ``; + cal = ``; + hull = ``; + tubes = ``; + torpedoes = ``; + sonar = ``; + control = ``; + missiles = ``; + if (S.Sub >= 1) {r += `<br> ''Submarine:''`; + if (S.Sub >= 2) recom = ``; reactor0 = `A nuclear reactor provides power`; reactor1 = `; but because oxygen is still kept in pressurized canisters the sub must frequently surface to replenish its oxygen stocks.`; + if (S.Sub >= 3) reactor1 = `and an oxygen generator pulls Oâ‚‚ from the surrounding seawater, allowing the submarine to remain underwater for months if necessary.`; + if (S.Sub >= 4) cal = `Calibration of the propulsion systems has reduced the telltale hum of a moving sub to a whisper.`; + if (S.Sub >= 5) hull = `The outer hull has been redesigned for hydrodynamics and sonar absorption.`; + if (S.Sub >= 6) tubes = `The torpedo tubes have been redesigned for faster loading speeds`; torpedoes = `.`; + if (S.Sub >= 7) sonar = `The passive sonar has been finely tuned to detect mechanical noises miles away.`; + if (S.Sub >= 8) control = `The control room computers have been upgraded to automate many conn duties.`; + if (S.Sub >= 9) torpedoes = `and launch more agile torpedoes.`; + if (S.Sub >= 10) missiles = `The submarine has been outfitted with several cruise missiles to attack land or sea-based targets.`; + return `${r} An attack submarine ${recom} is moored to the pier of the Naval Yard. ${reactor0}${reactor1} ${cal} ${hull} ${tubes}${torpedoes} ${sonar} ${control} ${missiles}`; + } break; + case 'HAT': + recom2 = `; has been recommissioned for use by ${V.SF.Lower}. It`; + tons = `200`; + skirt = ``; + guns = ``; + guns2 = ``; + fans = ``; + speed = ``; + turbines = ``; + armor10 = ``; + ramps = ``; + HATframe = ``; + loadout = ``; + if (S.HAT >= 1) {r += `<br> ''Amphibious Transport:''`; + if (S.HAT >= 2) skirt = `The skirt has been upgraded to increase durability and improve cushion when traveling over uneven terrain and waves.`; recom2 = `;`; + if (S.HAT >= 3) guns = `A minigun`; guns2 = `has been mounted on the front corners of the craft to defend against attackers.`; + if (S.HAT >= 4) fans = `The turbines powering the rear fans`; speed = `acceleration and speed.`; turbines = `have been replaced with a more powerful version, allowing greater`; + if (S.HAT >= 5) armor10 = `The armor protecting its cargo has been increased.`; + if (S.HAT >= 6) tons = `300`; fans = `The turbines powering the rear fans and impeller`; speed = `acceleration, speed, and carrying capacity.`; + if (S.HAT >= 7) guns = `A minigun and grenade launcher`; + if (S.HAT >= 8) ramps = `The loading ramps have been improved, allowing for faster unloading.`; + if (S.HAT >= 9) HATframe = `The frame has been widened and reinforced, allowing for more space on the deck.`; + if (S.HAT >= 10) loadout = `An experimental loadout sacrifices all carrying capacity to instead act as a floating gun platform by mounting several rotary autocannons the deck, should the need arise.`; + return `${r} An air cushion transport vehicle, or hovercraft ${recom2} is parked on the pier of the Naval Yard, ready to ferry ${tons} tons of soldiers and vehicles. ${guns} ${guns2} ${fans} ${turbines} ${speed} ${skirt} ${armor10} ${ramps} ${HATframe} ${loadout}`; + } break; + } /*if (V.SF.Facility.Toggle > 0 && V.SF.Facility.Active > 0) { r += `<br><br>''${V.SF.Facility.Caps}:''`; if (passage() === "Firebase") { - r += `<br>[[Enter the building|<<= SFReport()>>][]]`; + r += `<br>[[Enter the building|<< = SFReport()>>][]]`; } } else if (passage() === "SF_Report") { <<include "SF_.SupportFacilityReport">> } }*/ - } - return r; -}; - -window.Sat = function() { - "use strict"; const V=State.variables, S=V.SF.Squad; - let loc=`An unused science satellite has been purchased from an Old World nation. While currently useless, it holds potential to be a powerful tool.`, gyro=``, telemetry=``, thrusters=``, solar=``, surviv=``, laser=``, heat=``, reactor=``, lens=``, kin=``; - if (S.Satellite.lv >= 2) { - if (V.SF.Squad.Satellite.InOrbit < 1) {loc=`The satellite is being worked on in the Launch Bay.`;} else {loc=`The satellite is in geosynchronous orbit, far above the arcology.`;} - gyro=`A suite of sensors have been installed to ensure the satellite can detect attitude and orbital altitude.`;} - if (S.Satellite.lv >= 3) telemetry=`Telemetry systems have been installed to communicate with the satellite in orbit, with strong encryption measures.`; - if (S.Satellite.lv >= 4) thrusters=`Thrusters have been installed to control satellite attitude and orbit.`; - if (S.Satellite.lv >= 5) { solar=`A massive folding solar panel array, combined with the latest in battery technology allow the satellite to store an enormous amount of energy relatively quickly.`; surviv=`Enough of the satellite has been finished that it can expect to survive for a significant period of time in space.`; } - if (S.Satellite.lv >= 6) laser=`A laser cannon has been mounted facing the earth, capable of cutting through steel in seconds`; heat=` while generating a large amount of heat.`; - if (S.Satellite.lv >= 7) heat=`. The installed heatsink allows the laser cannon to fire more frequently without damaging the satellite.`; - if (S.Satellite.lv >= 8) reactor=`A small, efficient nuclear reactor has been installed to continue generating energy while in the Earth's shadow.`; - if (S.Satellite.lv >= 9) lens=`A higher quality and adjustable lens has been installed on the laser, allowing scalpel precision on armor or wide-area blasts on unarmored targets.`; - if (S.Satellite.lv >= 10) kin=`A magazine of directable tungsten rods have been mounted to the exterior of the satellite, allowing for kinetic bombardment roughly equal to a series of nuclear blasts.`; - return `${loc} ${gyro} ${thrusters} ${telemetry} ${solar} ${reactor} ${surviv} ${laser}${heat} ${lens} ${kin}`; -}; - -window.GR = function() { - "use strict"; const V=State.variables, S=V.SF.Squad; - let loc=`has been purchased from a crumbling Old World nation. It`, power=`Large batteries mounted in oversized shoulders power the robot for up to ten minutes of use, though they make for large targets.`, knife=`simply a 8.5 meter long knife, though additional weapons are under development.`, armor=``, actuator=``, cannon=``, heatsink=``, ammo=``, missile=``; - if (S.GiantRobot >= 2) { loc=``; armor=`Armor plating has been mounted over the majority of the robot.`; } - if (S.GiantRobot >= 3) power=`The robot is now powered by an umbilical cable system instead of bulky and short-lived batteries.`; - if (S.GiantRobot >= 4) knife=`a 25 meter plasma sword. The cutting edge uses plasma to melt and cut through targets, reducing the strain on the sword.`; - if (S.GiantRobot >= 5) actuator=`The limb actuators have been replaced with a faster and more powerful variant, granting the robot the same.`; - if (S.GiantRobot >= 6) { cannon=`A custom 45 mm Gatling cannon rifle has been developed for ranged use`; ammo=`; though it lacks enough ammo storage for a main weapon.`; } - if (S.GiantRobot >= 7) heatsink=`Large heatsinks have been installed out of the back to solve a massive overheating problem. These heatsinks resemble wings, and tend to glow red with heat when in heavy use.`; - if (S.GiantRobot >= 8) { armor=``; actuator=`Final actuator tweaks have allowed for the addition of exceptionally thick armor without any loss in speed or power.`; } - if (S.GiantRobot >= 9) ammo=`; with spare ammunition drums kept along the robot's waist.`; - if (S.GiantRobot >= 10) missile=`Missile pods have been mounted on the shoulders.`; - return `A prototype giant robot ${loc} rests in a gantry along the side of the arcology. The robot is as tall as a medium-sized office building, focusing on speed over other factors. ${power} ${armor} ${actuator} ${heatsink} The main armament is ${knife} ${cannon}${ammo} ${missile}`; -}; - -window.ms = function() { - "use strict"; const V=State.variables, S=V.SF.Squad; - let a=`A cruise missile launch site has been constructed near the base of`, b=`outdated, something quickly rigged together to give the launch site something to fire in the case of an attack`, c=``, d=``, e=``, f=``, g=``, h=``; - if (S.MissileSilo >= 2) { b=`a modern missile`; c=`; tipped with a conventional warhead`; } - if (S.MissileSilo >= 3) d=`The launch systems have been overhauled, allowing a launch within seconds of an attack order being given.`; - if (S.MissileSilo >= 4) e=`The missile engines have been tweaked, giving them a greater range.`; - if (S.MissileSilo >= 5) f=`A passive radar has been installed, allowing the missile to follow moving targets.`; - if (S.MissileSilo >= 6) a=`Several cruise missile launch sites have been constructed around`; - if (S.MissileSilo >= 7) e=`The engine has been replaced, giving the missiles greater range and supersonic speeds.`; - if (S.MissileSilo >= 8) g=`The ability to pick new targets should the original be lost has been added.`; - if (S.MissileSilo >= 9) h=`The missile now uses its remaining fuel to create a thermobaric explosion, massively increasing explosive power.`; - if (S.MissileSilo >= 10) c=` that can be tipped with either a conventional or nuclear warhead`; - return `${a} the arcology. The current missile armament is ${b}${c}. ${d} ${e} ${f} ${g} ${h}`; }; /*window.FSIntegrationMenu = function() { - const V=State.variables; - const UpgradeOptions=['Slaves','FoodsAndMedia','CommonArea','Barracks', 'SlaveProcessingCages','CommandCenter','Armory','DrugLab','Garage','Hangar', 'DroneBay','PersonalItems','VehicleUpgrades','CommonAreaVendors', 'RoleplayingManadated','ColonelCompilance','ColonelGift']; - const FS_OPTIONS=['Repopulation','Eugenics','Gender radicalism','Gender traditionalism','Paternalism','Degradationism','Body Purism', 'Transformation Fetishism','Youth Preferentialism','Maturity Preferentialism','Slimness Enthusiasm','Asset Expansionism','Slave Pastoralism','Physical Idealism','Hedonistic Decadence','Chattel Religionism','Roman Revivalism','Aztec Revivalism','Egyptian Revivalism','Edo Revivalism','Arabian Revivalism','Chinese Revivalism','Multiculturalism']; - var text=``; + const V = State.variables; + const UpgradeOptions = ['Slaves','FoodsAndMedia','CommonArea','Barracks', 'SlaveProcessingCages','CommandCenter','Armory','DrugLab','Garage','Hangar', 'DroneBay','PersonalItems','VehicleUpgrades','CommonAreaVendors', 'RoleplayingManadated','ColonelCompilance','ColonelGift']; + const FS_OPTIONS = ['Repopulation','Eugenics','Gender radicalism','Gender traditionalism','Paternalism','Degradationism','Body Purism', 'Transformation Fetishism','Youth Preferentialism','Maturity Preferentialism','Slimness Enthusiasm','Asset Expansionism','Slave Pastoralism','Physical Idealism','Hedonistic Decadence','Chattel Religionism','Roman Revivalism','Aztec Revivalism','Egyptian Revivalism','Edo Revivalism','Arabian Revivalism','Chinese Revivalism','Multiculturalism']; + var text = ``; if (V.SF.FS === undefined) { text += `<br><br>`; //text += ``; - V.SF.FS={Acceptance:{'FS':[],'Percent':[]}, Upgrade:0, Annoyance:0, Options:{ 'Slaves':[], 'FoodsAndMedia':[], 'CommonArea':[], 'Barracks':[], 'SlaveProcessingCages':[], 'CommandCenter':[], 'Armory':[], 'DrugLab':[], 'Garage':[], 'Hangar':[], 'DroneBay':[], 'PersonalItems':[], 'VehicleUpgrades':[], 'CommonAreaVendors':[], 'RoleplayingManadated':[], 'ColonelCompilance':[], 'ColonelGift':[] }}; - V.SF.Colonel.Talk=1; + V.SF.FS = {Acceptance:{'FS':[],'Percent':[]}, Upgrade:0, Annoyance:0, Options:{ 'Slaves':[], 'FoodsAndMedia':[], 'CommonArea':[], 'Barracks':[], 'SlaveProcessingCages':[], 'CommandCenter':[], 'Armory':[], 'DrugLab':[], 'Garage':[], 'Hangar':[], 'DroneBay':[], 'PersonalItems':[], 'VehicleUpgrades':[], 'CommonAreaVendors':[], 'RoleplayingManadated':[], 'ColonelCompilance':[], 'ColonelGift':[] }}; + V.SF.Colonel.Talk = 1; } else { text += `You walk past The Colonel and move towards the common area to meet with an exclusive group of her very influential officers that are currently relaxing at their favorite table. These men and women are known for their competence, popularity, and authority within in their respective divisions of the ${V.SF.Lower}, they are hard to replace, and they are always looking to earn more coin; they are the perfect weak link for trickling your Future Society influences down into the Firebase. As the officers make room at their table for you to sit and join them for discussion, you spot The Colonel staring at you from afar, and she does not look happy with you. As you are her employer, she cannot stop you from speaking with her soldiers or moving around as you please, but she can tell that you are up to no good: <br><br>`; const MEMU_OPTION = function(VisableName,ArraryName,Cost) { - var FinalVisableName=VisableName; + var FinalVisableName = VisableName; if (ArraryName === 'ColonelGift') { switch(POS) { - case 'Repopulation': FinalVisableName += ` Repopulationist`; break; + case 'Repopulation': FinalVisableName += `Repopulationist`; break; case 'Eugenics': FinalVisableName += `Eugenicist`; break; case 'Gender radicalism': FinalVisableName += `Radicalist`; break; case 'Gender traditionalism': FinalVisableName += `Traditionalist`; break; @@ -940,7 +1005,7 @@ window.ms = function() { if (POS !== 'Multiculturalism') { FinalVisableName += `-themed` } - FinalVisableName += ` personal gift optimized for this FS`; + FinalVisableName += `personal gift optimized for this FS`; } text += `<<link "${FinalVisableName}""Firebase">> if ([${POS}].includes(V.SF.FS.FS)) { @@ -964,18 +1029,18 @@ window.ms = function() { V.SF.FS.Annoyance -= 15; } V.Cash -= cost; - V.SF.FS.Upgrade=1; - <</link>> //costs <span class='yellowgreen'>${cashFormat($Cost)}</span>, `; + V.SF.FS.Upgrade = 1; + <</link>> //costs <span class = 'yellowgreen'>${cashFormat($Cost)}</span>, `; if (ArraryName !== 'ColonelGift') { text += `increases`; - } else { text += `reduces`; } text += ` The Colonel's annoyance by 15%`; - if (ArraryName !== 'ColonelGift') { text += ` and will increase the acceptance of this FS by `; + } else { text += `reduces`; } text += `The Colonel's annoyance by 15%`; + if (ArraryName !== 'ColonelGift') { text += `and will increase the acceptance of this FS by `; if (ArraryName !== 'ColonelCompilance') { text += `6%`; } else { text += `10%`; } } text += `.`; } - const FSlist=FS_OPTIONS; - for(var i=0;i<FSlist.length;i++) { - var FSPOS=FSlist[i]; + const FSlist = FS_OPTIONS; + for(var i = 0;i<FSlist.length;i++) { + var FSPOS = FSlist[i]; if (i > 0) text += `<br>`; switch(FSPOS) { case 'Repopulation': text += `Repopulation Efforts: focus on mass breeding in order to repopulate the future world.`; break; @@ -1000,39 +1065,39 @@ window.ms = function() { case 'Edo Revivalism': text += `Edo Revivalism: a vision of Edo Japan.`; break; case 'Arabian Revivalism': text += `Arabian Revivalism: a vision of the Sultanate of old.`; break; case 'Chinese Revivalism': text += `Chinese Revivalism: a vision of ancient China.`; break; - case 'Multiculturalism': text +=`Multiculturalism: a commitment to allow your arcology's citizens cultural freedom.`; break; + case 'Multiculturalism': text += `Multiculturalism: a commitment to allow your arcology's citizens cultural freedom.`; break; } text += `\n Smuggle in FS-optimized : `; - const Optionslist=UpgradeOptions; - for (var i=0;i<Optionslist.length;i++) { - var OptPOS=Optionslist[i]; - var title=``; + const Optionslist = UpgradeOptions; + for (var i = 0;i<Optionslist.length;i++) { + var OptPOS = Optionslist[i]; + var title = ``; switch(OptPOS) { - var cost=200000; - case 'FoodsAndMedia': title='Common area decorations'; break; - case 'CommonArea': title='Barracks decorations'; break; - case 'Barracks': title='Barracks decorations`; break; - case 'SlaveProcessingCages': title='Slave Processing Cages decorations'; break; - case 'CommandCenter': title='Command Center decorations'; break; - case 'Armory': title='Armory decorations'; break; - case 'DrugLab': title='Drug Lab decorations'; break; - case 'Garage': title='Garage decorations'; break; - case 'Hangar': title='Hangar decorations'; break; - case 'DroneBay': title='Drone Bay decorations'; cost=50000; break; - case 'PersonalItems': title='Personal Items'; break; - case 'VehicleUpgrades': title='Vehicle Upgrade'; cost=300000; break; - case 'CommonAreaVendors': title='Firebase Vendors'; cost=300000; break; - case 'RoleplayingManadated': title='Mandate FS-Roleplaying'; cost=500000; break; - case 'ColonelCompilance': title='colonel compliance'; cost=1000000; break; + var cost = 200000; + case 'FoodsAndMedia': title = 'Common area decorations'; break; + case 'CommonArea': title = 'Barracks decorations'; break; + case 'Barracks': title = 'Barracks decorations`; break; + case 'SlaveProcessingCages': title = 'Slave Processing Cages decorations'; break; + case 'CommandCenter': title = 'Command Center decorations'; break; + case 'Armory': title = 'Armory decorations'; break; + case 'DrugLab': title = 'Drug Lab decorations'; break; + case 'Garage': title = 'Garage decorations'; break; + case 'Hangar': title = 'Hangar decorations'; break; + case 'DroneBay': title = 'Drone Bay decorations'; cost = 50000; break; + case 'PersonalItems': title = 'Personal Items'; break; + case 'VehicleUpgrades': title = 'Vehicle Upgrade'; cost = 300000; break; + case 'CommonAreaVendors': title = 'Firebase Vendors'; cost = 300000; break; + case 'RoleplayingManadated': title = 'Mandate FS-Roleplaying'; cost = 500000; break; + case 'ColonelCompilance': title = 'colonel compliance'; cost = 1000000; break; } if (![FSPOS].includes(V.SF.Acceptance.FS)) { - MEMU_OPTION('Slaves','Slaves',cost), text += ` `; + MEMU_OPTION('Slaves','Slaves',cost), text += ``; } else { if (![FSPOS].includes(V.SF.FS.OptPOS)) { - MEMU_OPTION('title','OptPOS',cost), text += ` `; + MEMU_OPTION('title','OptPOS',cost), text += ``; } else if (![FSPOS].includes(V.SF.FS.ColonelGift)) { text += `\n `, MEMU_OPTION('Buy the Colonel a ','ColonelGift',1000000), text += ` `; - } + } } } } diff --git a/src/SpecialForce/TrickShotNight.tw b/src/SpecialForce/TrickShotNight.tw index ecbfe1369c2bd24b0fc05b57dcbce7399cc42815..043c6d854cd80ca937d1b2c35b9b1e7204435f60 100644 --- a/src/SpecialForce/TrickShotNight.tw +++ b/src/SpecialForce/TrickShotNight.tw @@ -4,6 +4,26 @@ <<setAssistantPronouns>> +<<if $PC.warfare == -100>> + <<set _shootChance = 5>> +<<elseif $PC.warfare <= -75>> + <<set _shootChance = 10>> +<<elseif $PC.warfare <= -50>> + <<set _shootChance = 15>> +<<elseif $PC.warfare <= -25>> + <<set _shootChance = 20>> +<<elseif $PC.warfare == 0>> + <<set _shootChance = 25>> +<<elseif $PC.warfare <= 25>> + <<set _shootChance = 45>> +<<elseif $PC.warfare <= 50>> + <<set _shootChance = 60>> +<<elseif $PC.warfare <= 75>> + <<set _shootChance = 85>> +<<elseif $PC.warfare >= 100>> + <<set _shootChance = 90>> +<</if>> + Despite your direct elevator, interaction with the majority of your security force is relatively scarce. Aside from mutually exchanged nods in the firebase and the occasional briefing, your $SF.Lower enjoy a degree of autonomy. <br><br>On a particularly lackadaisical evening, you find yourself alerted to a message alert by $assistantName. @@ -19,29 +39,30 @@ Despite your direct elevator, interaction with the majority of your security for <</replace>> <</link>> -<<if $cash < 500000>> +<<if $cash < 50000>> <br>//You lack the necessary funds to attend.// -<<else>> /* cash >= 500000 */ +<<else>> /* cash >= 50000 */ <br><<link "Attend the trick shot night">> <<replace "#result">> <<set $PC.warfare += 1>> - You instruct $assistantName to inform $SF.Lower that you will be attending their trick shot night, and after settling your affairs in the penthouse you head down to the firebase. The atmosphere in the firebase is casual, especially in comparison to the usual situations you meet them, though your security force still maintain some measure of decorum towards you as their employer. Eventually, you settle in at the table with a handful of $SF.Lower officers and turn your @@.yellowgreen;<<print cashFormat(500000)>>@@ into bullets. All that remains is to decide your strategy for the night. + You instruct $assistantName to inform $SF.Lower that you will be attending their trick shot night, and after settling your affairs in the penthouse you head down to the firebase. The atmosphere in the firebase is casual, especially in comparison to the usual situations you meet them, though your security force still maintain some measure of decorum towards you as their employer. Eventually, you settle in at the table with a handful of $SF.Lower officers and turn your @@.yellowgreen;<<print cashFormat(50000)>>@@ into bullets. All that remains is to decide your strategy for the night. <br><br> <span id="bountyresult"> <<link "Play it safe">> <<replace "#bountyresult">> - <<if random(1,100) > 50>> + <<if random(1,100) > _shootChance>> Despite your attempts to mitigate risk and play the safest shots possible, it seems lady luck has conspired against you this evening. However, even when your last bullet is shot, your security force pitch you a few bullets to keep you in the game for the rest of the night. You may have lost most of your ¤, but it seems you've @@.green;made some friends.@@ <<run repX(5000, "event")>> - <<run cashX(-250000, "event")>> + <<run cashX(-25000, "event")>> <<else>> While a careful eye for accuracy has buoyed you through the evening, ultimately lady luck is the decider in handing you the win in a number of close shots. Unfortunately your meticulous play limited your chance at a larger payout, and you only come away from the evening with @@.yellowgreen;<<print cashFormat(100000)>>@@ more than you arrived with and @@.green;the respect of your security force.@@ <<run repX(5000, "event")>> - <<run cashX(100000, "event")>> + <<run cashX(10000, "event")>> <</if>> <</replace>> <</link>> + <<if random(1,100) < _shootChance>> <br> <<link "Up the ante">> <<replace "#bountyresult">> <<set $activeSlaveOneTimeMinAge = 25>> @@ -98,10 +119,10 @@ Despite your direct elevator, interaction with the majority of your security for <<link "A year of servitude">> <<set $activeSlave.clothes = "no clothing">> <<replace "#aliveresult">> - <<if random(1,100) > 50>> + <<if random(1,100) > _shootChance>> For all your skillful maneuvering to reach this position, ultimately the win comes down to chance. This time, however, luck was not on your side. As the victor sweeps up $his spoils, the other security force clap you on the back and offer their condolences for your defeat. Though you may have lost your ¤, it seems you've @@.green;made some friends.@@ <<run repX(5000, "event")>> - <<run cashX(-500000, "event")>> + <<run cashX(-50000, "event")>> <<else>> <<replace "#artFrame">> <span id="artFrame"> @@ -125,14 +146,14 @@ Despite your direct elevator, interaction with the majority of your security for <br> <<link "Dock $his wages">> <<replace "#aliveresult">> - <<if random(1,100) > 50>> + <<if random(1,100) > _shootChance>> For all your skillful maneuvering to reach this position, ultimately the win comes down to chance. This time, however, luck was not on your side. As the victor sweeps up $his spoils, the other security force members clap you on the back and offer their condolences for your defeat. Though you may have lost your ¤, it seems you've @@.green;made some friends.@@ <<run repX(5000, "event")>> - <<run cashX(-500000, "event")>> + <<run cashX(-50000, "event")>> <<else>> For all your skillful maneuvering to reach this position, ultimately the win comes down to chance. This time, however, luck has rendered you the victor. Your opponent accepts $his defeat with grace and jokes to $his comrades that $he'll be fighting in $his underwear for the next few months, and their uproar of laughter fills the room. Though you take the lion's share of the ¤, your security force also @@.green;had a good time fraternizing with you.@@ <<run repX(10000, "event")>> - <<run cashX(500000, "event")>> + <<run cashX(50000, "event")>> <</if>> <</replace>> <</link>> @@ -140,9 +161,10 @@ Despite your direct elevator, interaction with the majority of your security for </span> <</replace>> <</link>> + <</if>> </span> <</replace>> -<</link>> // It will cost @@.red;<<print cashFormat(500000)>>@@ to participate in the trick shot night.// +<</link>> // It will cost @@.red;<<print cashFormat(50000)>>@@ to participate in the trick shot night.// <</if>> </span> \ No newline at end of file diff --git a/src/SpecialForce/Upgrades.tw b/src/SpecialForce/Upgrades.tw index 21365acb4661b81b4a643679065a149e86af3a6e..f2485c413cb16de0e4fbd1927edb6f1dcca4e209 100644 --- a/src/SpecialForce/Upgrades.tw +++ b/src/SpecialForce/Upgrades.tw @@ -1,6 +1,6 @@ :: Upgrades [nobr] - <br><br> <<if $SF.Size !== _max>> Total upgrade progress: <<print progress($SF.Size,_max)>> $SF.Size/_max(<<print ($SF.Size/_max).toFixed(2)>>%) <<if $SF.Size < 30>><br>//<<print (30-$SF.Size )>> more upgrades is needed until the next tier unlocks.//<</if>> + <br><br> <<if $SF.Size !== _max>> Total upgrade progress: <<print progress($SF.Size,_max)>> $SF.Size/_max(<<print ($SF.Size/_max).toFixed(2)*100>>%) <<if $SF.Size < 30>><br>//<<print (30-$SF.Size )>> more upgrades is needed until the next tier unlocks.//<</if>> <<else>>There are no more upgrades available.<</if>> <<if $SF.Upgrade > 0 && ($SF.Size !== _max)>> <<set _cost = Math.ceil(Math.abs($cash*.05*(1.25+($SF.Size/1000))))>> diff --git a/src/SpecialForce/WeeklyChoices.tw b/src/SpecialForce/WeeklyChoices.tw index cd9bcf4ddc1bf8910dcb4b7e1fb26bdd83cd51b4..26472dc61a7ac6e83cb0b98968e414e522de7e86 100644 --- a/src/SpecialForce/WeeklyChoices.tw +++ b/src/SpecialForce/WeeklyChoices.tw @@ -52,8 +52,8 @@ <br>"If you need me for anything else, let me know." <<if $SF.MercCon.History >= 1>> <br> <<link "Merc meetup report.">> <<replace "#result0">> - <br><br>While at the recent merc meetup, The Colonel made @@.yellowgreen;<<print cashFormat(Math.ceil($SF.MercCon.Income))>>@@ selling generic schematics to her friends, <<print commaNum($SF.MercCon.Menials)>> menial slaves were won in a poker game, and <<print commaNum($SF.MercCon.TotalMercs)>> mercenaries were persuaded to join $SF.Lower. - <br>Total earnings thus far: @@.yellowgreen;<<print cashFormat(Math.ceil($SF.MercCon.Revenue))>>@@ in income, <<print commaNum($SF.MercCon.TotalMenials)>> menial slaves and <<print commaNum($SF.MercCon.Mercs)>> mercenaries joined across $SF.MercCon.History meetups. + <br><br>While at the recent merc meetup, The Colonel made @@.yellowgreen;<<print cashFormat(Math.ceil($SF.MercCon.Income))>>@@ selling generic schematics to her friends, <<print num($SF.MercCon.Menials)>> menial slaves were won in a poker game, and <<print num($SF.MercCon.TotalMercs)>> mercenaries were persuaded to join $SF.Lower. + <br>Total earnings thus far: @@.yellowgreen;<<print cashFormat(Math.ceil($SF.MercCon.Revenue))>>@@ in income, <<print num($SF.MercCon.TotalMenials)>> menial slaves and <<print num($SF.MercCon.Mercs)>> mercenaries joined across $SF.MercCon.History meetups. <</replace>> <</link>> <</if>> diff --git a/src/art/vector/VectorArtJS.js b/src/art/vector/VectorArtJS.js index 0bac95b4b80baf8f8de9ce72cfcfe8d3b2287bf0..388a856059c0ee15b73a2b1406dfb7733c0e9297 100644 --- a/src/art/vector/VectorArtJS.js +++ b/src/art/vector/VectorArtJS.js @@ -719,7 +719,7 @@ window.VectorArt = (function () { r += jsInclude("Art_Vector_Belly_Piercing_Heavy"); } /* Torso Accessories */ - if ((slave.bellyAccessory === "a corset" || slave.bellyAccessory === "an extreme corset") && slave.belly === 0) { + if ((slave.bellyAccessory === "a corset" || slave.bellyAccessory === "an extreme corset") && slave.belly <= 1500) { if (torsoSize === "Normal") r += jsInclude("Art_Vector_Corsetnormal"); else if (torsoSize === "Hourglass") diff --git a/src/cheats/PCCheatMenu.tw b/src/cheats/PCCheatMenu.tw index b8a6182d3c2778933c977b4d7b1b3f99a4294e92..06ca28ae58cd9f190cb0193a67e101fb83f74cef 100644 --- a/src/cheats/PCCheatMenu.tw +++ b/src/cheats/PCCheatMenu.tw @@ -89,7 +89,7 @@ Sex: ''$tempSlave.genes'' __pregnancy__ <br>''Pregnancy length'': <<textbox "$tempSlave.preg" $tempSlave.preg>> //how far along your pregnancy is (pregMood kicks in at 24+ weeks) - -2: infertile, -1: contraceptives, 0: not pregnant, 1 - 42: pregnant, 43+: giving birth// <br>''Fetus Count'': <<textbox "$tempSlave.pregType" $tempSlave.pregType>> //how many you're having (1-8)// - <br>''PregSource'': <<textbox "$tempSlave.pregSource" $tempSlave.pregSource>> //who knocked you up - 0: unknown, -1: self-impreg, -2: citizen, -3: former master, -4: male arc owner, -5: client, -6: Societal Elite, -7: designer baby// + <br>''PregSource'': <<textbox "$tempSlave.pregSource" $tempSlave.pregSource>> //who knocked you up - 0: unknown, -1: self-impreg, -2: citizen, -3: former master, -4: male arc owner, -5: client, -6: Societal Elite, -7: designer baby, -9: Futanari Sister// <br>''PregMood'': <<textbox "$tempSlave.pregMood" $tempSlave.pregMood>> //how you act when heavily pregnant - 0: no change, 1: submissive and motherly, 2: aggressive and dominant// <</if>> diff --git a/src/cheats/PCCheatMenuCheatDatatypeCleanup.tw b/src/cheats/PCCheatMenuCheatDatatypeCleanup.tw index 377239aaf99d4455ce6044a94e7c5a569479aeee..ad73fa10a6518e4589ca7a4e5d548a24db144544 100644 --- a/src/cheats/PCCheatMenuCheatDatatypeCleanup.tw +++ b/src/cheats/PCCheatMenuCheatDatatypeCleanup.tw @@ -32,6 +32,8 @@ <</if>> <<run PCDatatypeCleanup()>> <<set $upgradeMultiplierArcology = upgradeMultiplierArcology()>> +<<set $upgradeMultiplierMedicine = upgradeMultiplierMedicine()>> +<<set $upgradeMultiplierTrade = upgradeMultiplierTrade()>> <<set $HackingSkillMultiplier = HackingSkillMultiplier()>> <<if $tempSlave.boobs == 0>> diff --git a/src/cheats/mod_EditArcologyCheat.tw b/src/cheats/mod_EditArcologyCheat.tw index 6b60c017d4ebc1b48befbeb53ccb6e1b0cb13259..481603859e9a495ea1ffec7c9f0f81ab4c1ffff1 100644 --- a/src/cheats/mod_EditArcologyCheat.tw +++ b/src/cheats/mod_EditArcologyCheat.tw @@ -186,7 +186,7 @@ Custom: <<textbox "$language" $language "MOD_Edit Arcology Cheat">> <</if>> <</nobr>>*/ -<br>Arcology sex slaves: <<print commaNum($NPCSlaves)>> +<br>Arcology sex slaves: <<print num($NPCSlaves)>> <<textbox "$NPCSlaves" $NPCSlaves>> <br>Arcology prosperity: $arcologies[0].prosperity <<textbox "$arcologies[0].prosperity" $arcologies[0].prosperity>> diff --git a/src/cheats/mod_EditChildCheatDatatypeCleanupNew.tw b/src/cheats/mod_EditChildCheatDatatypeCleanupNew.tw index a31efdc29ca76624ae86509997b85c8137ca6add..a8a94dc1cb0fa4f3fd650f806f27e6435c2bfc76 100644 --- a/src/cheats/mod_EditChildCheatDatatypeCleanupNew.tw +++ b/src/cheats/mod_EditChildCheatDatatypeCleanupNew.tw @@ -186,7 +186,7 @@ <<set $tempSlave.mpreg = 0>> <</if>> <<if ($tempSlave.pubertyXX == 0) && ($tempSlave.preg > 0)>> - <<print "Slave is not fertile (Pre-Puberty) and has no Anal Womb, pregnancy aborted !">><br> + <<print "Slave is not fertile (Pre-Puberty) and has no Anal Womb, pregnancy aborted!">><br> <<set $tempSlave.preg = 0>> <<set $tempSlave.pregType = 0>> <<set $tempSlave.pregSource = 0>> diff --git a/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw b/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw index 59a49e80b1de30a60aac6e5481e5f900e9c5a3d2..329f321049c313fb1fbfcd8e2efbf3dee1db22e7 100644 --- a/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw +++ b/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw @@ -157,7 +157,7 @@ <<set $tempSlave.mpreg = 0>> <</if>> <<if ($tempSlave.pubertyXX == 0) && ($tempSlave.preg > 0)>> - <<print "Slave is not fertile (Pre-Puberty) and has no Anal Womb, pregnancy aborted !">><br> + <<print "Slave is not fertile (Pre-Puberty) and has no Anal Womb, pregnancy aborted!">><br> <<set $tempSlave.preg = 0>> <<set $tempSlave.pregType = 0>> <<set $tempSlave.pregSource = 0>> diff --git a/src/endWeek/saStayConfined.js b/src/endWeek/saStayConfined.js index 4d494b2e836a365b912c83a95151bf8a8ca0310f..62b61b9db79a2a1e441bc2656f8356f106971d12 100644 --- a/src/endWeek/saStayConfined.js +++ b/src/endWeek/saStayConfined.js @@ -57,7 +57,14 @@ window.saStayConfined = /** @param {App.Entity.SlaveState} slave */ function saS } } - if (slave.sentence == 0 && (slave.devotion > 20 || (slave.devotion >= -20 && slave.trust < -20) || (slave.devotion >= -50 && slave.trust < -50) || slave.fetish == "mindbroken")) { + if (slave.sentence != 0) { + t += ` ${He} has ${slave.sentence}`; + if (slave.sentence == 1) { + t += ` week remaining.`; + } else { + t += ` weeks remaining.`; + } + } else if (slave.devotion > 20 || (slave.devotion >= -20 && slave.trust < -20) || (slave.devotion >= -50 && slave.trust < -50) || slave.fetish == "mindbroken") { if (slave.fetish == "mindbroken") { t += ` ${His} broken mind hinges entirely on other's guidance,`; } else { diff --git a/src/events/intro/initNationalities.tw b/src/events/intro/initNationalities.tw index ed54a9c4fe997cd7e13325d014bff9c5682ba29e..bab13f41a239af306a8cac36d1d8ffc3845a80ea 100644 --- a/src/events/intro/initNationalities.tw +++ b/src/events/intro/initNationalities.tw @@ -9,10 +9,6 @@ <<run generatePlayerPronouns($PC)>> -<<set $HackingSkillMultiplier = HackingSkillMultiplier()>> -<<set $upgradeMultiplierArcology = 1>> -<<set $upgradeMultiplierMedicine = 1>> - <<if $PC.career == "wealth">> <<set $trinkets.push("a collection of diplomas from expensive schools")>> <<run cashX(10000, "personalBusiness")>> @@ -29,7 +25,6 @@ <<elseif $PC.career == "medicine">> <<set $trinkets.push("a framed postsurgical x-ray")>> <<set $surgeryCost = Math.trunc($surgeryCost/2)>> - <<set $upgradeMultiplierMedicine = 0.8>> <<elseif $PC.career == "celebrity">> <<set $trinkets.push("a framed copy of the first news story featuring yourself")>> <<run repX(4000, "event")>> @@ -249,6 +244,11 @@ <<set $arcologies[0].childhoodFertilityInducedNCSResearch = 0>> +<<set $HackingSkillMultiplier = HackingSkillMultiplier()>> +<<set $upgradeMultiplierArcology = upgradeMultiplierArcology()>> +<<set $upgradeMultiplierMedicine = upgradeMultiplierMedicine()>> +<<set $upgradeMultiplierTrade = upgradeMultiplierTrade()>> + /*Nationalities Setup*/ <<unset $nationalitiescheck>> /* Removes unique nationalities array to avoid var bloat */ diff --git a/src/facilities/farmyard/farmyard.tw b/src/facilities/farmyard/farmyard.tw index b44ac1f37449d5c9c73970c43d2728e1ae0fcbd5..e846a39c53768301a21f0c817532a5bb1d4388fc 100644 --- a/src/facilities/farmyard/farmyard.tw +++ b/src/facilities/farmyard/farmyard.tw @@ -111,7 +111,7 @@ $farmyardNameCaps is an oasis of growth in the midst of the jungle of steel and Assigned here are $farmMenials slaves working to produce as much food as possible. <</if>> <<if $farmMenialsSpace > 0>> - You <<if $menials > 0>> own <<print commaNum($menials)>><<else>>don't own any<</if>> free menial slaves. $farmyardNameCaps can house <<print $farmMenialsSpace>> menial slaves total, with <<print $farmMenialsSpace - $farmMenials>> free slots. + You <<if $menials > 0>> own <<print num($menials)>><<else>>don't own any<</if>> free menial slaves. $farmyardNameCaps can house <<print $farmMenialsSpace>> menial slaves total, with <<print $farmMenialsSpace - $farmMenials>> free slots. <</if>> <br> @@ -186,7 +186,7 @@ $farmyardNameCaps is an oasis of growth in the midst of the jungle of steel and <br> There is enough room in $farmyardName to build housing, enough to give <<print $farmMenialsSpace+100>> menials a place to sleep and relax. [[Build a unit|Farmyard][cashX(forceNeg(Math.trunc(1000*$upgradeMultiplierArcology), "farmyard")), $farmMenialsSpace += 100]] - //Costs @@.yellowgreen;<<print cashFormat(1000)>>@@ and will increase upkeep costs// + //Costs @@.yellowgreen;<<print cashFormat(Math.trunc(1000*$upgradeMultiplierArcology))>>@@ and will increase upkeep costs// <</if>> /* closes menial subsection */ </span> diff --git a/src/facilities/farmyard/farmyardReport.tw b/src/facilities/farmyard/farmyardReport.tw index 2338cb6e9e12450ad6bc9bc292f94ce9b05c57cd..9dc4adabd91da9a43583760fbc5740b5b003cbbf 100644 --- a/src/facilities/farmyard/farmyardReport.tw +++ b/src/facilities/farmyard/farmyardReport.tw @@ -203,7 +203,7 @@ <<set $i = $slaveIndices[$FarmyardiIDs[_dI]]>> <<setLocalPronouns $slaves[$i]>> /* Perform facility based rule changes */ - <<set $slaves[$i].health += _healthBonus, $slaves[$i].aphrodisiacs = _aphrod>> + <<set $slaves[$i].health += _healthBonus>> <<switch $farmyardDecoration>> <<case "Degradationist" "standard">> /* TODO: add the rest of the FS */ <<set $slaves[$i].livingRules = "spare">> diff --git a/src/facilities/nursery/childInteract.tw b/src/facilities/nursery/childInteract.tw index 70b50dfd206600d71e0e23da53fb0dcb778edfd9..ab559708ad14f32b4ce6da74edda85680ad7aff0 100644 --- a/src/facilities/nursery/childInteract.tw +++ b/src/facilities/nursery/childInteract.tw @@ -162,14 +162,14 @@ <</if>> <<if $seeBestiality == 1>> <<if $farmyardKennels > 0 && $activeCanine != 0>> - | <<link "Have a $activeCanine.species mount $him">><<set $animalType = "canine">><<replace "#miniscene">><<set $childSex = 1>><<include "BeastFucked">><br> <</replace>><</link>> - <</if>> - <<if $farmyardStable > 0 && $activeHooved.species != 0>> - | <<link "Let a $activeHooved.species mount $him">><<set $animalType = "hooved">><<replace "#miniscene">><<set $childSex = 1>><<include "BeastFucked">><br> <</replace>><</link>> - <</if>> - <<if $farmyardCages > 0 && $activeFeline != 0>> - | <<link "Have a $activeFeline.species mount $him">><<set $animalType = "feline">><<replace "#miniscene">><<set $childSex = 1>><<include "BeastFucked">><br> <</replace>><</link>> - <</if>> + | <<link "Have a $activeCanine.species mount $him">><<set $animalType = "canine">><<replace "#miniscene">><<set $childSex = 1>><<include "BeastFucked">><br> <</replace>><</link>> + <</if>> + <<if $farmyardStable > 0 && $activeHooved.species != 0>> + | <<link "Let a $activeHooved.species mount $him">><<set $animalType = "hooved">><<replace "#miniscene">><<set $childSex = 1>><<include "BeastFucked">><br> <</replace>><</link>> + <</if>> + <<if $farmyardCages > 0 && $activeFeline != 0>> + | <<link "Have a $activeFeline.species mount $him">><<set $animalType = "feline">><<replace "#miniscene">><<set $childSex = 1>><<include "BeastFucked">><br> <</replace>><</link>> + <</if>> <</if>> <<if $cheatMode == 1>> | <<link "Check $his deadliness @@.red;FOR TESTING@@">><<replace "#miniscene">><<set $childSex = 1>><<include "Deadliness">><br> <</replace>><</link>> @@ -957,7 +957,7 @@ Relationship rules: ''<span id="relationshipRules">$activeChild.relationshipRule /*| <<link "Upload $him" "Upload Slave">><</link>>*/ | <<link "Export this slave" "Export Slave">><</link>> -<<if $cheatMode>> +<<if $cheatMode == 1>> | <<link "Import a slave" "Import Slave">><</link>> <</if>> <<if $cheatMode == 1>> diff --git a/src/facilities/nursery/longChildDescription.tw b/src/facilities/nursery/longChildDescription.tw index c8b8be8dff20e615ba4de15eb25a5b4bbd66fd7b..4be56012808d494b2f56e8e039bab8c07c3ee1cf 100644 --- a/src/facilities/nursery/longChildDescription.tw +++ b/src/facilities/nursery/longChildDescription.tw @@ -247,23 +247,23 @@ $he's <</if>> <<if ($activeChild.oralCount + $activeChild.vaginalCount + $activeChild.analCount + $activeChild.mammaryCount + $activeChild.penetrativeCount) > 0>> - and has been fucked about <<print commaNum($activeChild.oralCount + $activeChild.vaginalCount + $activeChild.analCount + $activeChild.mammaryCount + $activeChild.penetrativeCount)>> times, including + and has been fucked about <<print num($activeChild.oralCount + $activeChild.vaginalCount + $activeChild.analCount + $activeChild.mammaryCount + $activeChild.penetrativeCount)>> times, including <<if $activeChild.mammaryCount > 0>> - <<print commaNum($activeChild.mammaryCount)>> mammary, + <<print num($activeChild.mammaryCount)>> mammary, <</if>> <<if $activeChild.vaginalCount > 0>> - <<print commaNum($activeChild.vaginalCount)>> vanilla, + <<print num($activeChild.vaginalCount)>> vanilla, <</if>> <<if $activeChild.analCount > 0>> - <<print commaNum($activeChild.analCount)>> anal, + <<print num($activeChild.analCount)>> anal, <</if>> <<if $activeChild.penetrativeCount > 0>> - <<print commaNum($activeChild.penetrativeCount)>> penetrating, + <<print num($activeChild.penetrativeCount)>> penetrating, <</if>> <<if ($activeChild.penetrativeCount+$activeChild.mammaryCount+$activeChild.vaginalCount+$activeChild.analCount) > 0>> and <</if>> - <<print commaNum($activeChild.oralCount)>> oral sexual encounters. + <<print num($activeChild.oralCount)>> oral sexual encounters. <<else>> <<if $week-$activeChild.weekAcquired >= 1>> and diff --git a/src/facilities/nursery/nursery.tw b/src/facilities/nursery/nursery.tw index 9eb2d2756b473966d5836c896fb10c2462730068..90bd721983fc08a165fe8455d197fc5767b4f9f5 100644 --- a/src/facilities/nursery/nursery.tw +++ b/src/facilities/nursery/nursery.tw @@ -231,6 +231,9 @@ Reserve an eligible mother-to-be's child to be placed in a room upon birth. Of $ <<if $slaves[_u].pregSource == 0 || $slaves[_u].preg <= 5>>someone's<<if $slaves[_u].preg <= 5>>, though it is too early to tell whose,<</if>> <<elseif $slaves[_u].pregSource == -1>>your <<elseif $slaves[_u].pregSource == -2>>a citizen's + <<elseif $slaves[_u].pregSource == -3>>your Master's + <<elseif $slaves[_u].pregSource == -7>>the lab's + <<elseif $slaves[_u].pregSource == -9>>the Futanari Sisters' <<else>> <<set _t = $slaveIndices[$slaves[_u].pregSource]>> <<if def _t>> diff --git a/src/gui/Encyclopedia/encyclopedia.tw b/src/gui/Encyclopedia/encyclopedia.tw index 530b9e947243a6c59b153232626b7ba7785730cf..266dbff0e8a68a233f8564f0f7df09b842560379 100644 --- a/src/gui/Encyclopedia/encyclopedia.tw +++ b/src/gui/Encyclopedia/encyclopedia.tw @@ -1740,7 +1740,7 @@ FUTURE SOCIETIES <br><br>— Lawrence, W. G., //Guide to Modern Slavery, Online Edition. Accessed April 2, 2032.//// - <br><br>''Future Society Models'' are societal goals the player can select and pursue for the arcology. It is possible to maintain four future society goals at once. The first is unlocked after week 5 for players with greater than rumored(<<print commaNum(3000)>>) @@.green;[[reputation|Encyclopedia][$encyclopedia = "Arcologies and Reputation"]],@@ or at game start with the Social Engineering character option; the rest unlock as the player achieves higher @@.green;[[reputation|Encyclopedia][$encyclopedia = "Arcologies and Reputation"]]@@ levels. + <br><br>''Future Society Models'' are societal goals the player can select and pursue for the arcology. It is possible to maintain four future society goals at once. The first is unlocked after week 5 for players with greater than rumored(<<print num(3000)>>) @@.green;[[reputation|Encyclopedia][$encyclopedia = "Arcologies and Reputation"]],@@ or at game start with the Social Engineering character option; the rest unlock as the player achieves higher @@.green;[[reputation|Encyclopedia][$encyclopedia = "Arcologies and Reputation"]]@@ levels. <br><br>All societies approve of specific things, usually slaves with specific characteristics; some societies also have dislikes. All societies are advanced by the things they approve of and slowed by the things they disapprove of, and all societies give and take @@.green;[[reputation|Encyclopedia][$encyclopedia = "Arcologies and Reputation"]]@@ when approving and disapproving. All societies unlock unique events, arcology upgrades, and slave behaviors; some even unlock special clothing. diff --git a/src/init/setupVars.tw b/src/init/setupVars.tw index 7645c3af06e676e6658cb1e3009ca2b9083c9775..4f7b2f2feb50b736466716455cdbad70ba51c8f7 100644 --- a/src/init/setupVars.tw +++ b/src/init/setupVars.tw @@ -2038,7 +2038,7 @@ Then pick _namePool.random(), or display those names as possible choices, or do <<set setup.harshCollars = [ {name: "Tight steel", value: "tight steel"}, - {name: "Cruel retirement counter", value: "cruel retirement counter", fs: "seeage"}, + {name: "Cruel retirement counter", value: "cruel retirement counter", fs: "seeAge"}, {name: "Uncomfortable leather", value: "uncomfortable leather"}, {name: "Pregnancy biometrics", value: "preg biometrics", fs: "seePreg"}, {name: "Shock punishment", value: "shock punishment"}, diff --git a/src/interaction/researchLab.tw b/src/interaction/researchLab.tw index 04f89dc762297bbcdd0d32b430f4f9ee81aa5400..025372716e16d4b1719c6e58f42d0cb8f9455eab 100644 --- a/src/interaction/researchLab.tw +++ b/src/interaction/researchLab.tw @@ -255,7 +255,7 @@ <</if>>*/ <br><br> - //You contact a representative of one of the most popular japanese cybernetics companies and inquire about their products.<br> This is what they have to offer://<br><br> + //You contact a representative of one of the most popular Japanese cybernetics companies and inquire about their products.<br> This is what they have to offer://<br><br> __Hardware__<br> [[Neural Tail Interface|Research Lab][$temp = 1, cashX(-10000, "lab"), $stockpile.interfacePTail += 1]] //Costs <<print cashFormat(10000)>>. Currently have: $stockpile.interfacePTail//<br> diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js index 1f32ab0bbc453f11e23ab943b227f589a416d72d..2c76f5a36878a0e44b9f27606360a9e6b39858d8 100644 --- a/src/js/DefaultRules.js +++ b/src/js/DefaultRules.js @@ -1958,7 +1958,7 @@ window.DefaultRules = (function() { /** @param {App.Entity.SlaveState} slave */ function ProcessSpeech(slave, rule) { - if ((rule.speechRules !== undefined) && (rule.speechRules !== "no default setting")) { + if ((rule.speechRules !== undefined) && (rule.speechRules !== "no default setting") && (slave.speechRules !== rule.speechRules)) { if (slave.fetish === "mindbroken") { if ((slave.speechRules !== "restrictive")) { slave.speechRules = "restrictive"; diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js index 78828d789378216eb62bf4bfb40872a100623970..6f2ac8dac9f3c7cbf524ddcec0eaac32f4fb01a2 100644 --- a/src/js/SlaveState.js +++ b/src/js/SlaveState.js @@ -1,3 +1,4 @@ +/* eslint-disable no-undef */ /** * Encapsulates the full description of a slave state. Serializable by the SugarCube state * management. @@ -792,6 +793,7 @@ App.Entity.SlaveState = class SlaveState { * accepts ID See Pregnancy Control section for more. * * Who sired her pregnancy + * * -9: a futanari sister * * -8: an animal * * -7: designer baby * * -2: Citizen of your arcology @@ -1527,6 +1529,7 @@ App.Entity.SlaveState = class SlaveState { * * "silk ribbon" * * "ball gag" * * "bit gag" + * * "ring gag" * * "porcelain mask" */ this.collar = "none"; @@ -1543,6 +1546,7 @@ App.Entity.SlaveState = class SlaveState { /** * may accept strings, use at own risk * * "none" + * * "bullet vibrator" * * "dildo" * * "large dildo" * * "huge dildo" @@ -1554,18 +1558,13 @@ App.Entity.SlaveState = class SlaveState { /** * may accept strings, use at own risk * * "none" - * * "bullet vibrator" - * * "dildo" - * * "long dildo" - * * "large dildo" - * * "long, large dildo" - * * "huge dildo" - * * "long, huge dildo" + * * "vibrator" */ this.vaginalAttachment = "none"; /** * may accept strings, use at own risk * * "none" + * * "sock" * * "vibrator" */ this.dickAccessory = "none"; diff --git a/src/js/datatypeCleanupJS.js b/src/js/datatypeCleanupJS.js index 338f3c5a6a5303be509d558af32bddcd2cab11c5..78275bcd539bdd8b12cefd3711a596afecd5f214 100644 --- a/src/js/datatypeCleanupJS.js +++ b/src/js/datatypeCleanupJS.js @@ -1239,6 +1239,7 @@ window.PCDatatypeCleanup = function PCDatatypeCleanup() { PC.birthCitizen = Math.max(+PC.birthCitizen, 0) || 0; PC.birthSelf = Math.max(+PC.birthSelf, 0) || 0; PC.birthLab = Math.max(+PC.birthLab, 0) || 0; + PC.birthFutaSis = Math.max(+PC.birthFutaSis, 0) || 0; PC.slavesFathered = Math.max(+PC.slavesFathered, 0) || 0; PC.slavesKnockedUp = Math.max(+PC.slavesKnockedUp, 0) || 0; PC.intelligence = 100; diff --git a/src/js/economyJS.js b/src/js/economyJS.js index b8efa6520e9d7fb20d546cff37509d6b79f72bca..08b4014739b3dcce6672b37c6615d48cf6c67e9d 100644 --- a/src/js/economyJS.js +++ b/src/js/economyJS.js @@ -1,3 +1,4 @@ +/* eslint-disable no-undef */ window.LivingRule = Object.freeze({LUXURIOUS: 'luxurious', NORMAL: 'normal', SPARE: 'spare'}); window.Job = Object.freeze({ DAIRY: 'work in the dairy', MILKMAID: 'be the Milkmaid', MASTER_SUITE: 'serve in the master suite', CONCUBINE: 'be your Concubine', @@ -10,9 +11,9 @@ window.Job = Object.freeze({ window.PersonalAttention = Object.freeze({TRADE: 'trading', WAR: 'warfare', SLAVING: 'slaving', ENGINEERING: 'engineering', MEDICINE: 'medicine', MAID: 'upkeep', HACKING: 'hacking'}); window.predictCost = function(array) { - var array2 = array; - var totalCosts = ( - getBrothelCosts() + + const array2 = array; + let totalCosts = ( + getBrothelCosts() + getBrothelAdsCosts() + getArcadeCosts() + getClubCosts() + @@ -51,7 +52,7 @@ window.predictCost = function(array) { ); /* // clean up - if(totalCosts > 0) { + if (totalCosts > 0) { totalCosts = 0; } else { totalCosts = Math.ceil(totalCosts); @@ -61,9 +62,9 @@ window.predictCost = function(array) { }; window.getCost = function(array) { - var array2 = array; - var oldCash = State.variables.cash; - var costSoFar = 0; + const array2 = array; + const oldCash = State.variables.cash; + let costSoFar = 0; cashX(forceNeg(getBrothelCosts()), "brothel"); cashX(forceNeg(getBrothelAdsCosts()), "brothelAds"); cashX(forceNeg(getArcadeCosts()), "arcade"); @@ -108,9 +109,9 @@ window.getCost = function(array) { //slave expenses window.predictTotalSlaveCosts = function(array3) { - var loopCosts = 0; + let loopCosts = 0; //slave expenses - for (var slave of array3) { + for (const slave of array3) { loopCosts += getSlaveCost(slave); loopCosts += getSlaveMinorCosts(slave); } @@ -118,9 +119,9 @@ window.predictTotalSlaveCosts = function(array3) { }; window.getTotalSlaveCosts = function(array3) { - var slaveCost = 0; - var slaveCostMinor = 0; - for (var slave of array3) { + let slaveCost = 0; + let slaveCostMinor = 0; + for (const slave of array3) { slaveCost = getSlaveCost(slave); cashX(forceNeg(slaveCost), "slaveUpkeep", slave); slaveCostMinor = getSlaveMinorCosts(slave); @@ -131,159 +132,159 @@ window.getTotalSlaveCosts = function(array3) { //facility expenses window.getBrothelCosts = function() { - var facilityCost = State.variables.facilityCost; - var brothel = State.variables.brothel; - var costs = (brothel * facilityCost); + const facilityCost = State.variables.facilityCost; + const brothel = State.variables.brothel; + let costs = (brothel * facilityCost); costs += (0.1 * State.variables.brothelUpgradeDrugs * brothel * facilityCost); return costs; }; window.getBrothelAdsCosts = function() { - var brothel = State.variables.brothel; - var costs = 0; - if(brothel > 0) { + const brothel = State.variables.brothel; + let costs = 0; + if (brothel > 0) { costs += State.variables.brothelAdsSpending; } return costs; }; window.getArcadeCosts = function() { - var facilityCost = State.variables.facilityCost; - var arcade = State.variables.arcade; - var costs = (arcade * facilityCost * 0.5); + const facilityCost = State.variables.facilityCost; + const arcade = State.variables.arcade; + let costs = (arcade * facilityCost * 0.5); costs += (0.2 * State.variables.arcadeUpgradeInjectors * arcade * facilityCost) + (0.2 * State.variables.arcadeUpgradeCollectors * arcade * facilityCost); return costs; }; window.getClubCosts = function() { - var facilityCost = State.variables.facilityCost; - var club = State.variables.club; - var costs = (club * facilityCost); + const facilityCost = State.variables.facilityCost; + const club = State.variables.club; + let costs = (club * facilityCost); costs += (0.2 * State.variables.clubUpgradePDAs * club * facilityCost); - if(club > 0) { + if (club > 0) { costs += State.variables.clubAdsSpending; } return costs; }; window.getClubAdsCosts = function() { - var club = State.variables.club; - var costs = 0; - if(club > 0) { + const club = State.variables.club; + let costs = 0; + if (club > 0) { costs += State.variables.clubAdsSpending; } return costs; }; window.getDairyCosts = function() { - var facilityCost = State.variables.facilityCost; - var dairy = State.variables.dairy; - var costs = (dairy * facilityCost) + (0.2 * State.variables.dairyFeedersUpgrade * dairy * facilityCost) + const facilityCost = State.variables.facilityCost; + const dairy = State.variables.dairy; + let costs = (dairy * facilityCost) + (0.2 * State.variables.dairyFeedersUpgrade * dairy * facilityCost) + (0.1 * State.variables.dairyPregUpgrade * dairy * facilityCost) + (0.2 * State.variables.dairyStimulatorsUpgrade * facilityCost); - if(dairy > 0) { + if (dairy > 0) { costs += ((State.variables.bioreactorsXY + State.variables.bioreactorsXX + State.variables.bioreactorsHerm + State.variables.bioreactorsBarren) * 100); } return costs; }; window.getIncubatorCosts = function() { - var facilityCost = State.variables.facilityCost; - var incubator = State.variables.incubator; - var costs = (State.variables.incubator * facilityCost * 10); + const facilityCost = State.variables.facilityCost; + const incubator = State.variables.incubator; + let costs = (State.variables.incubator * facilityCost * 10); costs += (0.2 * State.variables.incubatorUpgradeWeight * incubator * facilityCost) + (0.2 * State.variables.incubatorUpgradeMuscles * incubator * facilityCost) + (0.2 * State.variables.incubatorUpgradeReproduction * incubator * facilityCost) + (0.2 * State.variables.incubatorUpgradeGrowthStims * incubator * facilityCost) + (0.5 * State.variables.incubatorUpgradeSpeed * incubator * facilityCost); - if(incubator > 0) { + if (incubator > 0) { costs += ((State.variables.incubatorWeightSetting + State.variables.incubatorMusclesSetting + State.variables.incubatorReproductionSetting + State.variables.incubatorGrowthStimsSetting) * 500); } return costs; }; window.getServantsQuartersCosts = function() { - var facilityCost = State.variables.facilityCost; - var servantsQuarters = State.variables.servantsQuarters; - var costs = (0.2 * State.variables.servantsQuartersUpgradeMonitoring * servantsQuarters * facilityCost); + const facilityCost = State.variables.facilityCost; + const servantsQuarters = State.variables.servantsQuarters; + const costs = (0.2 * State.variables.servantsQuartersUpgradeMonitoring * servantsQuarters * facilityCost); return costs; }; window.getMasterSuiteCosts = function() { - var costs = 0; - if(State.variables.masterSuitePregnancySlaveLuxuries === 1) { + let costs = 0; + if (State.variables.masterSuitePregnancySlaveLuxuries === 1) { costs += 500; } - if(State.variables.masterSuitePregnancyFertilitySupplements === 1) { + if (State.variables.masterSuitePregnancyFertilitySupplements === 1) { costs += 1000; } return costs; }; window.getNurseryCosts = function() { - var facilityCost = State.variables.facilityCost; - var nursery = State.variables.nursery; - var costs = (nursery * facilityCost); + const facilityCost = State.variables.facilityCost; + const nursery = State.variables.nursery; + const costs = (nursery * facilityCost); return costs; }; window.getFarmyardCosts = function() { - var facilityCost = State.variables.facilityCost; - var farmyard = State.variables.farmyard; - var costs = (farmyard * facilityCost); + const facilityCost = State.variables.facilityCost; + const farmyard = State.variables.farmyard; + const costs = (farmyard * facilityCost); return costs; }; window.getSecurityExpansionCost = function() { //security expansion - var secExpCost = 0; - var soldierMod = 0; - if(State.variables.secExp === 1) { - if(State.variables.edictsUpkeep > 0) { + let secExpCost = 0; + let soldierMod = 0; + if (State.variables.secExp === 1) { + if (State.variables.edictsUpkeep > 0) { secExpCost += State.variables.edictsUpkeep; } - if(State.variables.SFSupportUpkeep > 0) { + if (State.variables.SFSupportUpkeep > 0) { secExpCost += State.variables.SFSupportUpkeep; } - if(State.variables.propHub > 0) { + if (State.variables.propHub > 0) { secExpCost += State.variables.propHubUpkeep; } - if(State.variables.secHQ > 0) { + if (State.variables.secHQ > 0) { secExpCost += State.variables.secHQUpkeep + 20 * State.variables.secMenials; } - if(State.variables.secBarracks > 0) { + if (State.variables.secBarracks > 0) { secExpCost += State.variables.secBarracksUpkeep; } - if(State.variables.riotCenter > 0) { + if (State.variables.riotCenter > 0) { secExpCost += State.variables.riotUpkeep; } - if(State.variables.soldierWages === 0) { + if (State.variables.soldierWages === 0) { soldierMod = 1; } - else if(State.variables.soldierWages === 1) { + else if (State.variables.soldierWages === 1) { soldierMod = 1.5; } else { soldierMod = 2; } - if (State.variables.militiaUnits != null) { - for (var i = 0; i < State.variables.militiaUnits.length; i++) { - if( !(State.variables.militiaUnits[i] === null) ) { + if (State.variables.militiaUnits !== null) { + for (let i = 0; i < State.variables.militiaUnits.length; i++) { + if (State.variables.militiaUnits[i] !== null) { secExpCost += State.variables.militiaUnits[i].troops * State.variables.soldierUpkeep * soldierMod; } } } - if (State.variables.slaveUnits != null) { - for (var i = 0; i < State.variables.slaveUnits.length; i++) { - if( !( State.variables.slaveUnits[i] === null) ) { + if (State.variables.slaveUnits !== null) { + for (let i = 0; i < State.variables.slaveUnits.length; i++) { + if (State.variables.slaveUnits[i] !== null) { secExpCost += State.variables.slaveUnits[i].troops * State.variables.soldierUpkeep * 0.5 * soldierMod; } } } - if (State.variables.mercUnits != null) { - for (var i = 0; i < State.variables.mercUnits.length; i++) { - if( !(State.variables.mercUnits[i] === null) ) { + if (State.variables.mercUnits !== null) { + for (let i = 0; i < State.variables.mercUnits.length; i++) { + if (State.variables.mercUnits[i] !== null) { secExpCost += State.variables.mercUnits[i].troops * State.variables.soldierUpkeep * 1.5 * soldierMod; } } @@ -295,52 +296,52 @@ window.getSecurityExpansionCost = function() { //general arcology costs window.getLifestyleCosts = function() { - var costs = 0; - var localEcon = State.variables.localEcon; + let costs = 0; + const localEcon = State.variables.localEcon; costs += (State.variables.girls * (250 + (50000 / localEcon))); return costs; }; window.getFSCosts = function() { - var costs = 0; + let costs = 0; costs += State.variables.FSSpending; - if(State.variables.arcologies[0].FSRepopulationFocusLaw === 1 && State.variables.PC.pregKnown === 1) { + if (State.variables.arcologies[0].FSRepopulationFocusLaw === 1 && State.variables.PC.pregKnown === 1) { costs -= 500; } return costs; }; window.getCitizenOrphanageCosts = function() { - var costs = 0; + let costs = 0; costs += State.variables.citizenOrphanageTotal * 100; return costs; }; window.getPrivateOrphanageCosts = function() { - var costs = 0; + let costs = 0; costs += State.variables.privateOrphanageTotal * 500; - if(State.variables.breederOrphanageTotal > 0) { + if (State.variables.breederOrphanageTotal > 0) { costs += 50; } return costs; }; window.getPeacekeeperCosts = function() { - var costs = 0; - if(State.variables.peacekeepers !== 0 && State.variables.peacekeepers.undermining !== 0) { + let costs = 0; + if (State.variables.peacekeepers !== 0 && State.variables.peacekeepers.undermining !== 0) { costs += State.variables.peacekeepers.undermining; } return costs; }; window.getMercenariesCosts = function() { - var costs = 0; - var mercCosts = State.variables.mercenaries * 2000; - if(State.variables.mercenaries > 0) { - if(State.variables.barracks) { + let costs = 0; + let mercCosts = State.variables.mercenaries * 2000; + if (State.variables.mercenaries > 0) { + if (State.variables.barracks) { mercCosts *= 0.5; } - if((State.variables.PC.warfare >= 100) || (State.variables.PC.career === 'arcology owner')) { + if ((State.variables.PC.warfare >= 100) || (State.variables.PC.career === 'arcology owner')) { mercCosts *= 0.5; } costs += mercCosts; @@ -349,8 +350,8 @@ window.getMercenariesCosts = function() { }; window.getMenialRetirementCosts = function() { - var costs = 0; - if(State.variables.citizenRetirementMenials === 1) { + let costs = 0; + if (State.variables.citizenRetirementMenials === 1) { costs += State.variables.menials * 2; } return costs; @@ -358,95 +359,95 @@ window.getMenialRetirementCosts = function() { // policy and other expenses window.getRecruiterCosts = function() { - var costs = 0; - if(State.variables.Recruiter !== 0) { + let costs = 0; + if (State.variables.Recruiter !== 0) { costs += 250; } return costs; }; window.getSchoolCosts = function() { - var costs = 0; - if(State.variables.TSS.schoolPresent === 1) { + let costs = 0; + if (State.variables.TSS.schoolPresent === 1) { costs += 1000; } - if(State.variables.GRI.schoolPresent === 1) { + if (State.variables.GRI.schoolPresent === 1) { costs += 1000; } - if(State.variables.SCP.schoolPresent === 1) { + if (State.variables.SCP.schoolPresent === 1) { costs += 1000; } - if(State.variables.LDE.schoolPresent === 1) { + if (State.variables.LDE.schoolPresent === 1) { costs += 1000; } - if(State.variables.TGA.schoolPresent === 1) { + if (State.variables.TGA.schoolPresent === 1) { costs += 1000; } - if(State.variables.HA.schoolPresent === 1) { + if (State.variables.HA.schoolPresent === 1) { costs += 1000; } - if(State.variables.TCR.schoolPresent === 1) { + if (State.variables.TCR.schoolPresent === 1) { costs += 1000; } - if((State.variables.TFS.schoolPresent === 1) && ((State.variables.PC.dick === 0) || (State.variables.PC.vagina === 0) || (State.variables.PC.boobs === 0))) { + if ((State.variables.TFS.schoolPresent === 1) && ((State.variables.PC.dick === 0) || (State.variables.PC.vagina === 0) || (State.variables.PC.boobs === 0))) { costs += 1000; } - if(State.variables.TSS.subsidize !== 0) { + if (State.variables.TSS.subsidize !== 0) { costs += 1000; } - if(State.variables.GRI.subsidize !== 0) { + if (State.variables.GRI.subsidize !== 0) { costs += 1000; } - if(State.variables.SCP.subsidize !== 0) { + if (State.variables.SCP.subsidize !== 0) { costs += 1000; } - if(State.variables.LDE.subsidize !== 0) { + if (State.variables.LDE.subsidize !== 0) { costs += 1000; } - if(State.variables.TGA.subsidize !== 0) { + if (State.variables.TGA.subsidize !== 0) { costs += 1000; } - if(State.variables.HA.subsidize !== 0) { + if (State.variables.HA.subsidize !== 0) { costs += 1000; } - if(State.variables.TCR.subsidize !== 0) { + if (State.variables.TCR.subsidize !== 0) { costs += 1000; } - if(State.variables.TFS.subsidize !== 0) { + if (State.variables.TFS.subsidize !== 0) { costs += 1000; } return costs; }; window.getPolicyCosts = function() { - var costs = 0; - var policyCost = State.variables.policyCost; - if(State.variables.alwaysSubsidizeGrowth === 1) { + let costs = 0; + let policyCost = State.variables.policyCost; + if (State.variables.alwaysSubsidizeGrowth === 1) { costs += policyCost; } - if(State.variables.alwaysSubsidizeRep === 1) { + if (State.variables.alwaysSubsidizeRep === 1) { costs += policyCost; } - if(State.variables.RegularParties === 1) { + if (State.variables.RegularParties === 1) { costs += policyCost; } - if(State.variables.ProImmigrationCash === 1) { + if (State.variables.ProImmigrationCash === 1) { costs += policyCost; } - if(State.variables.AntiEnslavementCash === 1) { + if (State.variables.AntiEnslavementCash === 1) { costs += policyCost; } - if(State.variables.CoursingAssociation === 1) { + if (State.variables.CoursingAssociation === 1) { costs += 1000; } return costs; }; window.getCyberModCosts = function() { - var costs = 0; - if(State.variables.cyberMod !== 0 && State.variables.researchLab.built === 'true') { + let costs = 0; + if (State.variables.cyberMod !== 0 && State.variables.researchLab.built === 'true') { costs += ((100 * State.variables.researchLab.maxSpace) + (300 * State.variables.researchLab.hired) + (100 * State.variables.researchLab.hired)); } return costs; @@ -455,34 +456,34 @@ window.getCyberModCosts = function() { //player expenses window.getPCTrainingCosts = function() { - var costs = 0; - if(State.variables.PC.actualAge >= State.variables.IsInPrimePC && State.variables.PC.actualAge < State.variables.IsPastPrimePC) { - if(State.variables.personalAttention === PersonalAttention.TRADE) { + let costs = 0; + if (State.variables.PC.actualAge >= State.variables.IsInPrimePC && State.variables.PC.actualAge < State.variables.IsPastPrimePC) { + if (State.variables.personalAttention === PersonalAttention.TRADE) { costs += 10000*State.variables.AgeEffectOnTrainerPricingPC; - } else if(State.variables.personalAttention === PersonalAttention.WAR) { + } else if (State.variables.personalAttention === PersonalAttention.WAR) { costs += 10000*State.variables.AgeEffectOnTrainerPricingPC; - } else if(State.variables.personalAttention === PersonalAttention.SLAVING) { + } else if (State.variables.personalAttention === PersonalAttention.SLAVING) { costs += 10000*State.variables.AgeEffectOnTrainerPricingPC; - } else if(State.variables.personalAttention === PersonalAttention.ENGINEERING) { + } else if (State.variables.personalAttention === PersonalAttention.ENGINEERING) { costs += 10000*State.variables.AgeEffectOnTrainerPricingPC; - } else if(State.variables.personalAttention === PersonalAttention.MEDICINE) { + } else if (State.variables.personalAttention === PersonalAttention.MEDICINE) { costs += 10000*State.variables.AgeEffectOnTrainerPricingPC; - } else if(State.variables.personalAttention === PersonalAttention.HACKING) { + } else if (State.variables.personalAttention === PersonalAttention.HACKING) { costs += 10000*State.variables.AgeEffectOnTrainerPricingPC; } } return costs; }; window.getPCCosts = function() { - var costs = 0; - if(State.variables.PC.preg === -1) { + let costs = 0; + if (State.variables.PC.preg === -1) { costs += 25; - } else if(State.variables.PC.fertDrugs === 1) { + } else if (State.variables.PC.fertDrugs === 1) { costs += 50; - } else if(State.variables.PC.preg >= 16) { + } else if (State.variables.PC.preg >= 16) { costs += 100; } - if(State.variables.PC.staminaPills === 1) { + if (State.variables.PC.staminaPills === 1) { costs += 50; } return costs; @@ -490,9 +491,9 @@ window.getPCCosts = function() { window.getPCMultiplierCosts = function(cost) { - if(State.variables.PC.career === 'servant') { - if(State.variables.personalAttention === PersonalAttention.MAID) { - if(State.variables.PC.belly >= 5000) { + if (State.variables.PC.career === 'servant') { + if (State.variables.personalAttention === PersonalAttention.MAID) { + if (State.variables.PC.belly >= 5000) { cost *= 0.80; } else { cost *= 0.75; @@ -506,12 +507,12 @@ window.getPCMultiplierCosts = function(cost) { }; window.getEnvironmentCosts = function(cost) { - if(State.variables.secExp === 1) { - if(State.variables.terrain === 'oceanic' || State.variables.terrain === 'marine') { - if(State.variables.docks > 0) { + if (State.variables.secExp === 1) { + if (State.variables.terrain === 'oceanic' || State.variables.terrain === 'marine') { + if (State.variables.docks > 0) { cost *= (1 - State.variables.docks * 0.05); } - } else if(State.variables.railway > 0) { + } else if (State.variables.railway > 0) { cost *= (1 - State.variables.railway * 0.05); } } @@ -519,63 +520,63 @@ window.getEnvironmentCosts = function(cost) { }; window.getSFCosts = function() { - var costs = 0; - if(State.variables.SF.Toggle && State.variables.SF.Active >= 1 && State.variables.SF.Subsidy !== undefined) { + let costs = 0; + if (State.variables.SF.Toggle && State.variables.SF.Active >= 1 && State.variables.SF.Subsidy !== undefined) { Count(); costs += Math.ceil(State.temporary.SFSubsidy); } return costs; }; window.getWeatherCosts = function() { - var costs = 0; - if(State.variables.econWeatherDamage && State.variables.disasterResponse > 0) { + let costs = 0; + if (State.variables.econWeatherDamage && State.variables.disasterResponse > 0) { costs += Math.trunc(State.variables.disasterResponse * 200000 / State.variables.localEcon); } - if(State.variables.antiWeatherFreeze > 0) { + if (State.variables.antiWeatherFreeze > 0) { costs += Math.trunc(State.variables.antiWeatherFreeze * 200000 / State.variables.localEcon); } return costs; }; window.getSlaveMinorCosts = function(slave) { - var costs = 0; - var rulesCost = State.variables.rulesCost; - if(slave.assignment === Job.SERVANT || slave.assignment === Job.SERVER) { - if(slave.trust < -20) { + let costs = 0; + let rulesCost = State.variables.rulesCost; + if (slave.assignment === Job.SERVANT || slave.assignment === Job.SERVER) { + if (slave.trust < -20) { costs -= rulesCost * 4; - } else if(slave.devotion < -20) { + } else if (slave.devotion < -20) { if (slave.trust >= 20) { costs -= rulesCost / 2; } else { costs -= rulesCost * 2; } - } else if(slave.devotion <= 20) { + } else if (slave.devotion <= 20) { costs -= rulesCost * 3; - } else if(slave.devotion <= 50) { + } else if (slave.devotion <= 50) { costs -= rulesCost * 4; } else { costs -= rulesCost * 5; } - if(slave.fetish === 'submissive') { + if (slave.fetish === 'submissive') { costs -= rulesCost; - } else if(slave.fetish === 'dom') { + } else if (slave.fetish === 'dom') { costs += rulesCost; } - if(slave.relationship < -1) { + if (slave.relationship < -1) { costs -= rulesCost; } - if(slave.energy < 20) { + if (slave.energy < 20) { costs -= rulesCost; - } else if(slave.energy < 40) { + } else if (slave.energy < 40) { costs -= rulesCost / 2; } - if(slave.lactation > 0) { + if (slave.lactation > 0) { costs -= 25; } - if(slave.assignment === Job.SERVANT) { + if (slave.assignment === Job.SERVANT) { costs -= rulesCost; } - if(setup.servantCareers.includes(slave.career) || slave.skillS >= State.variables.masteredXP) { + if (setup.servantCareers.includes(slave.career) || slave.skillS >= State.variables.masteredXP) { costs -= rulesCost; } } @@ -583,12 +584,12 @@ window.getSlaveMinorCosts = function(slave) { }; window.getSlaveCost = function(s) { - if(!s) { return 0; } + if (!s) { return 0; } // Data duplicated from Cost Report - var cost = 0; - var rulesCost = State.variables.rulesCost; - var foodCost = State.variables.foodCost; - var drugsCost = State.variables.drugsCost; + let cost = 0; + const rulesCost = State.variables.rulesCost; + const foodCost = State.variables.foodCost; + const drugsCost = State.variables.drugsCost; // Living expenses switch(s.assignment) { @@ -596,49 +597,56 @@ window.getSlaveCost = function(s) { cost += rulesCost * 0.75; break; case Job.DAIRY: - if(State.variables.dairyRestraintsSetting >= 2) { + if (State.variables.dairyRestraintsSetting >= 2) { cost += rulesCost * 0.75; - } else if(s.livingRules === LivingRule.NORMAL) { + } else if (s.livingRules === LivingRule.NORMAL) { cost += rulesCost * 1.5; - } else if(State.variables.dairyDecoration === 'Degradationist') { + } else if (State.variables.dairyDecoration === 'Degradationist') { cost += rulesCost * 0.90; } else { cost += rulesCost; } break; - case Job.BROTHEL: + case Job.FARMYARD: if(s.livingRules === LivingRule.NORMAL) { cost += rulesCost * 1.5; } else { cost += rulesCost; } break; + case Job.BROTHEL: + if (s.livingRules === LivingRule.NORMAL) { + cost += rulesCost * 1.5; + } else { + cost += rulesCost; + } + break; case Job.SCHOOL: case Job.CLUB: cost += rulesCost * 1.5; break; case Job.CLINIC: - if(s.livingRules === LivingRule.LUXURIOUS) { + if (s.livingRules === LivingRule.LUXURIOUS) { cost += rulesCost * 2; - } else if(s.livingRules === LivingRule.NORMAL) { + } else if (s.livingRules === LivingRule.NORMAL) { cost += rulesCost * 1.5; } else { cost += rulesCost; } break; case Job.SPA: case Job.NANNY: - if(s.livingRules === LivingRule.LUXURIOUS) { + if (s.livingRules === LivingRule.LUXURIOUS) { cost += rulesCost * 1.75; - } else if(s.livingRules === LivingRule.NORMAL) { + } else if (s.livingRules === LivingRule.NORMAL) { cost += rulesCost * 1.5; } else { cost += rulesCost; } break; case Job.SERVANT: - if(s.livingRules === LivingRule.NORMAL) { + if (s.livingRules === LivingRule.NORMAL) { cost += rulesCost * 1.5; } else { - if(State.variables.servantsQuartersDecoration === 'Degradationist') { + if (State.variables.servantsQuartersDecoration === 'Degradationist') { cost += rulesCost * 0.90; } else { cost += rulesCost; @@ -646,7 +654,7 @@ window.getSlaveCost = function(s) { } break; case Job.JAIL: - if(s.livingRules === LivingRule.NORMAL) { + if (s.livingRules === LivingRule.NORMAL) { cost += rulesCost * 1.25; } else { cost += rulesCost * 0.90; @@ -658,9 +666,9 @@ window.getSlaveCost = function(s) { cost += rulesCost * 2; break; default: - if(s.livingRules === LivingRule.LUXURIOUS) { + if (s.livingRules === LivingRule.LUXURIOUS) { cost += rulesCost * (s.relationship >= 4 ? 3 : 4); - } else if(s.livingRules === LivingRule.NORMAL) { + } else if (s.livingRules === LivingRule.NORMAL) { cost += rulesCost * 2; } else { cost += rulesCost; @@ -678,27 +686,27 @@ window.getSlaveCost = function(s) { cost -= foodCost; break; } - if(s.geneticQuirks.fertility === 2 && s.geneticQuirks.hyperFertility === 2 && s.preg === 0 && (s.ovaries === 1 || s.mpreg === 1)) { + if (s.geneticQuirks.fertility === 2 && s.geneticQuirks.hyperFertility === 2 && s.preg === 0 && (s.ovaries === 1 || s.mpreg === 1)) { cost += foodCost * 0.5; } - if(s.weight > 130) { + if (s.weight > 130) { cost += foodCost * 2; - } else if(s.weight > 50) { + } else if (s.weight > 50) { cost += foodCost; - } else if(s.weight < -50) { + } else if (s.weight < -50) { cost -= foodCost; } - if(s.drugs === 'appetite suppressors') { + if (s.drugs === 'appetite suppressors') { cost -= foodCost; } - if(s.lactation > 0) { + if (s.lactation > 0) { cost += foodCost * s.lactation * (1 + Math.trunc(s.boobs/10000)); } - if(s.preg > s.pregData.normalBirth/8) { - if(s.assignment === Job.DAIRY && State.variables.dairyFeedersSetting > 0) { + if (s.preg > s.pregData.normalBirth/8) { + if (s.assignment === Job.DAIRY && State.variables.dairyFeedersSetting > 0) { // Extra feeding costs to support pregnancy are covered by dairy feeders. // TODO: Include them here anyway? - } else if((s.assignment === Job.MASTER_SUITE || s.assignment === Job.CONCUBINE) + } else if ((s.assignment === Job.MASTER_SUITE || s.assignment === Job.CONCUBINE) && State.variables.masterSuiteUpgradePregnancy === 1) { // Extra feeding costs to support pregnancy are covered by master suite luxuries. // TODO: Include them here anyway? @@ -715,82 +723,82 @@ window.getSlaveCost = function(s) { } } } - if(s.diet === 'XX' || s.diet === 'XY' || s.diet === 'fertility') { + if (s.diet === 'XX' || s.diet === 'XY' || s.diet === 'fertility') { cost += 25; - } else if(s.diet === 'cleansing') { + } else if (s.diet === 'cleansing') { cost += 50; - } else if(s.diet === 'XXY') { + } else if (s.diet === 'XXY') { cost += 75; } // Accessibility costs - if(State.variables.boobAccessibility !== 1 && s.boobs > 20000 + if (State.variables.boobAccessibility !== 1 && s.boobs > 20000 && (s.assignment !== Job.DAIRY || State.variables.dairyRestraintsSetting < 2) && (s.assignment !== Job.ARCADE)) { cost += 50; } - if(State.variables.pregAccessibility !== 1 + if (State.variables.pregAccessibility !== 1 && (s.belly >= 60000) && s.assignment !== Job.BABY_FACTORY && (s.assignment !== Job.DAIRY || State.variables.dairyRestraintsSetting < 2) && (s.assignment !== Job.ARCADE)) { cost += 100; } - if(State.variables.dickAccessibility !== 1 && s.dick > 45 && (s.assignment !== Job.DAIRY || State.variables.dairyRestraintsSetting < 2) && (s.assignment !== Job.ARCADE)) { + if (State.variables.dickAccessibility !== 1 && s.dick > 45 && (s.assignment !== Job.DAIRY || State.variables.dairyRestraintsSetting < 2) && (s.assignment !== Job.ARCADE)) { cost += 50; } - if(State.variables.ballsAccessibility !== 1 && s.balls > 90 && (s.assignment !== Job.DAIRY || State.variables.dairyRestraintsSetting < 2) && (s.assignment !== Job.ARCADE)) { + if (State.variables.ballsAccessibility !== 1 && s.balls > 90 && (s.assignment !== Job.DAIRY || State.variables.dairyRestraintsSetting < 2) && (s.assignment !== Job.ARCADE)) { cost += 50; } - if(State.variables.buttAccessibility !== 1 && s.butt > 15 && (s.assignment !== Job.DAIRY || State.variables.dairyRestraintsSetting < 2) && (s.assignment !== Job.ARCADE)) { + if (State.variables.buttAccessibility !== 1 && s.butt > 15 && (s.assignment !== Job.DAIRY || State.variables.dairyRestraintsSetting < 2) && (s.assignment !== Job.ARCADE)) { cost += 50; } - if(!canSee(s) && (s.assignment !== Job.DAIRY || State.variables.dairyRestraintsSetting < 2) && (s.assignment !== Job.ARCADE)) { + if (!canSee(s) && (s.assignment !== Job.DAIRY || State.variables.dairyRestraintsSetting < 2) && (s.assignment !== Job.ARCADE)) { cost += 50; - } else if(s.eyes <= -1 && s.eyewear !== 'corrective glasses' && s.eyewear !== 'corrective contacts') { + } else if (s.eyes <= -1 && s.eyewear !== 'corrective glasses' && s.eyewear !== 'corrective contacts') { cost += 25; - } else if(s.eyewear === 'blurring glasses' || s.eyewear === 'blurring contacts') { + } else if (s.eyewear === 'blurring glasses' || s.eyewear === 'blurring contacts') { cost += 25; } - if(!canHear(s) && (s.assignment !== Job.DAIRY || State.variables.dairyRestraintsSetting < 2) && (s.assignment !== Job.ARCADE)) { + if (!canHear(s) && (s.assignment !== Job.DAIRY || State.variables.dairyRestraintsSetting < 2) && (s.assignment !== Job.ARCADE)) { cost += 40; - } else if(s.hears <= -1 && s.earwear !== 'hearing aids') { + } else if (s.hears <= -1 && s.earwear !== 'hearing aids') { cost += 15; - } else if(s.earwear === 'muffling ear plugs') { + } else if (s.earwear === 'muffling ear plugs') { cost += 15; } - if((s.assignment !== Job.DAIRY || State.variables.dairyRestraintsSetting < 2) && (s.assignment !== Job.ARCADE)) { - if(s.amp !== 0) { - if(s.amp === 1) { + if ((s.assignment !== Job.DAIRY || State.variables.dairyRestraintsSetting < 2) && (s.assignment !== Job.ARCADE)) { + if (s.amp !== 0) { + if (s.amp === 1) { cost += rulesCost; } else { cost += rulesCost / 2; } - } else if(!canWalk(s)) { + } else if (!canWalk(s)) { cost += rulesCost; } } // Maintenance - if(s.boobs > 10000 && s.boobsImplantType === 1) { + if (s.boobs > 10000 && s.boobsImplantType === 1) { cost += 50; } - if(s.butt > 10 && s.buttImplantType === 1) { + if (s.butt > 10 && s.buttImplantType === 1) { cost += 50; } - if((s.assignment !== Job.DAIRY || State.variables.dairyRestraintsSetting < 2) && (s.assignment !== Job.ARCADE)) { - if(s.preg > s.pregData.minLiveBirth && State.variables.universalRulesBirthing === 1) { + if ((s.assignment !== Job.DAIRY || State.variables.dairyRestraintsSetting < 2) && (s.assignment !== Job.ARCADE)) { + if (s.preg > s.pregData.minLiveBirth && State.variables.universalRulesBirthing === 1) { cost += 50; } } // Retirement account - if(State.variables.citizenRetirementMenials === 1 && State.variables.CitizenRetirement === 0) { + if (State.variables.citizenRetirementMenials === 1 && State.variables.CitizenRetirement === 0) { cost += 2; } - if(State.variables.CitizenRetirement === 1) { + if (State.variables.CitizenRetirement === 1) { cost += 250; } // Enemas - if(s.inflation === 3) { + if (s.inflation === 3) { switch(s.inflationType) { case 'water': cost += 100; @@ -802,7 +810,7 @@ window.getSlaveCost = function(s) { cost += (100 + (drugsCost * 2)); break; } - } else if(s.inflation === 2) { + } else if (s.inflation === 2) { switch(s.inflationType) { case 'water': cost += 50; @@ -814,7 +822,7 @@ window.getSlaveCost = function(s) { cost += (50 + (drugsCost * 2)); break; } - } else if(s.inflation === 1) { + } else if (s.inflation === 1) { switch(s.inflationType) { case 'water': cost += 25; @@ -849,30 +857,30 @@ window.getSlaveCost = function(s) { cost += drugsCost * 2; break; } - if(s.curatives > 0 && s.assignmentVisible === 1) { + if (s.curatives > 0 && s.assignmentVisible === 1) { cost += drugsCost * s.curatives; } - if(s.aphrodisiacs !== 0) { + if (s.aphrodisiacs !== 0) { cost += Math.trunc(drugsCost * Math.abs(s.aphrodisiacs)); } - if(s.hormones !== 0) { + if (s.hormones !== 0) { cost += Math.trunc((drugsCost * Math.abs(s.hormones) * 0.5)); } - if(s.bodySwap > 0) { + if (s.bodySwap > 0) { cost += Math.trunc((drugsCost * s.bodySwap * 10)); } - if(s.preg === -1 && isFertile(s)) { + if (s.preg === -1 && isFertile(s)) { cost += Math.trunc((drugsCost * 0.5)); } // Promotion costs - if(State.variables.studio === 1) { - if(s.pornFameSpending > 0) { + if (State.variables.studio === 1) { + if (s.pornFameSpending > 0) { cost += (s.pornFameSpending/State.variables.PCSlutContacts); } } - if(isNaN(cost)) { + if (isNaN(cost)) { throw new Error('Cost calculation for slave ' + s.slaveName + ' (' + s.ID + ') failed.'); } return cost; @@ -882,13 +890,13 @@ window.getSlaveCost = function(s) { // PC buying slaves reduces supply, selling slaves reduces demand. window.menialSlaveCost = function(q) { - if(!q) { + if (!q) { q = 0; } - var demand = State.variables.menialDemandFactor; - var supply = State.variables.menialSupplyFactor; - var baseCost = 1000; - var random = State.variables.slaveCostRandom; + const demand = State.variables.menialDemandFactor; + const supply = State.variables.menialSupplyFactor; + const baseCost = 1000; + const random = State.variables.slaveCostRandom; return (Math.trunc(baseCost + demand / 400 - supply / 400 + q / 400) + random); }; @@ -896,44 +904,44 @@ window.menialSlaveCost = function(q) { window.corpValue = function() { const V = State.variables; - if(V.corpIncorporated === 0) { + if (V.corpIncorporated === 0) { return 0; } else { - var corpAssets = 0; - if(V.corpDivExtra > 0) { + let corpAssets = 0; + if (V.corpDivExtra > 0) { corpAssets += V.corpDivExtraDev * 16000 + V.corpDivExtraSlaves * 10000; } - if(V.corpDivLegal > 0) { + if (V.corpDivLegal > 0) { corpAssets += V.corpDivLegalDev * 20000 + V.corpDivLegalSlaves * 15000; } - if(V.corpDivBreak > 0) { + if (V.corpDivBreak > 0) { corpAssets += V.corpDivBreakDev * 7200 + V.corpDivBreakSlaves * 10000 + V.corpDivBreakSlaves2 * 15000; } - if(V.corpDivSurgery > 0) { + if (V.corpDivSurgery > 0) { corpAssets += V.corpDivSurgeryDev * 16000 + V.corpDivSurgerySlaves * 15000 + V.corpDivSurgerySlaves2 * 23000; } - if(V.corpDivTrain > 0) { - if(V.corpDivSurgery + V.corpDivTrain < 2 && V.corpDivTrainSurgerySwitch === 0) { + if (V.corpDivTrain > 0) { + if (V.corpDivSurgery + V.corpDivTrain < 2 && V.corpDivTrainSurgerySwitch === 0) { corpAssets += V.corpDivTrainDev * 20000 + V.corpDivTrainSlaves * 15000 + V.corpDivTrainSlaves2 * 26000; - } else if(V.corpDivTrainSurgerySwitch === 1 && V.corpDivTrainSurgeryTimer < 5) { + } else if (V.corpDivTrainSurgerySwitch === 1 && V.corpDivTrainSurgeryTimer < 5) { corpAssets += V.corpDivTrainDev * 20000 + V.corpDivTrainSlaves * (15000 + 1600 * V.corpDivTrainSurgeryTimer) + V.corpDivTrainSlaves2 * (26000 + 1600 * V.corpDivTrainSurgeryTimer); } else { corpAssets += V.corpDivTrainDev * 20000 + V.corpDivTrainSlaves * 23000 + V.corpDivTrainSlaves2 * 34000; } } - if(V.corpDivArcade > 0) { + if (V.corpDivArcade > 0) { corpAssets += V.corpDivArcadeDev * 4000 + V.corpDivArcadeSlaves * 10000; } - if(V.corpDivMenial > 0) { + if (V.corpDivMenial > 0) { corpAssets += V.corpDivMenialDev * 5200 + V.corpDivMenialSlaves * 15000; } - if(V.corpDivDairy > 0) { + if (V.corpDivDairy > 0) { corpAssets += V.corpDivDairyDev * 12000 + V.corpDivDairySlaves * 23000; } - if(V.corpDivWhore > 0) { - if(V.corpDivSurgery + V.corpDivTrain < 2 && V.corpDivTrainSurgerySwitch === 0) { + if (V.corpDivWhore > 0) { + if (V.corpDivSurgery + V.corpDivTrain < 2 && V.corpDivTrainSurgerySwitch === 0) { corpAssets += V.corpDivWhoreDev * 16000 + V.corpDivWhoreSlaves * 26000; - } else if(V.corpDivTrainSurgerySwitch === 1 && V.corpDivTrainSurgeryTimer < 20) { + } else if (V.corpDivTrainSurgerySwitch === 1 && V.corpDivTrainSurgeryTimer < 20) { corpAssets += V.corpDivWhoreDev * 16000 + V.corpDivWhoreSlaves * (26000 + 400 * V.corpDivTrainSurgeryTimer); } else { corpAssets += V.corpDivWhoreDev * 16000 + V.corpDivWhoreSlaves * 34000; @@ -948,7 +956,7 @@ window.corpValue = function() { window.corpSharePrice = function(q) { const V = State.variables; - if(V.corpIncorporated === 0) { + if (V.corpIncorporated === 0) { return 0; } else { return Math.trunc(1000 * (corpValue() / (V.personalShares + V.publicShares + (q || 0)))); @@ -961,7 +969,7 @@ window.corpSharePrice = function(q) { window.corpDivBreakSlavesRoom = function() { const V = State.variables; - if(V.corpDivBreak === 1 && V.corpDivBreakDev > V.corpDivBreakSlaves) { + if (V.corpDivBreak === 1 && V.corpDivBreakDev > V.corpDivBreakSlaves) { return V.corpDivBreakDev - V.corpDivBreakSlaves; } else { return 0; @@ -970,7 +978,7 @@ window.corpDivBreakSlavesRoom = function() { window.corpDivSurgerySlavesRoom = function() { const V = State.variables; - if(V.corpDivSurgery === 1 && V.corpDivSurgeryDev > V.corpDivSurgerySlaves) { + if (V.corpDivSurgery === 1 && V.corpDivSurgeryDev > V.corpDivSurgerySlaves) { return V.corpDivSurgeryDev - V.corpDivSurgerySlaves; } else { return 0; @@ -979,7 +987,7 @@ window.corpDivSurgerySlavesRoom = function() { window.corpDivTrainSlavesRoom = function() { const V = State.variables; - if(V.corpDivTrain === 1 && V.corpDivTrainDev > V.corpDivTrainSlaves) { + if (V.corpDivTrain === 1 && V.corpDivTrainDev > V.corpDivTrainSlaves) { return V.corpDivTrainDev - V.corpDivTrainSlaves; } else { return 0; @@ -988,7 +996,7 @@ window.corpDivTrainSlavesRoom = function() { window.corpDivArcadeSlavesRoom = function() { const V = State.variables; - if(V.corpDivArcade === 1 && V.corpDivArcadeDev > V.corpDivArcadeSlaves) { + if (V.corpDivArcade === 1 && V.corpDivArcadeDev > V.corpDivArcadeSlaves) { return V.corpDivArcadeDev - V.corpDivArcadeSlaves; } else { return 0; @@ -997,7 +1005,7 @@ window.corpDivArcadeSlavesRoom = function() { window.corpDivMenialSlavesRoom = function() { const V = State.variables; - if(V.corpDivMenial === 1 && V.corpDivMenialDev > V.corpDivMenialSlaves) { + if (V.corpDivMenial === 1 && V.corpDivMenialDev > V.corpDivMenialSlaves) { return V.corpDivMenialDev - V.corpDivMenialSlaves; } else { return 0; @@ -1006,7 +1014,7 @@ window.corpDivMenialSlavesRoom = function() { window.corpDivDairySlavesRoom = function() { const V = State.variables; - if(V.corpDivDairy === 1 && V.corpDivDairyDev > V.corpDivDairySlaves) { + if (V.corpDivDairy === 1 && V.corpDivDairyDev > V.corpDivDairySlaves) { return V.corpDivDairyDev - V.corpDivDairySlaves; } else { return 0; @@ -1015,7 +1023,7 @@ window.corpDivDairySlavesRoom = function() { window.corpDivWhoreSlavesRoom = function() { const V = State.variables; - if(V.corpDivWhore === 1 && V.corpDivWhoreDev > V.corpDivWhoreSlaves) { + if (V.corpDivWhore === 1 && V.corpDivWhoreDev > V.corpDivWhoreSlaves) { return V.corpDivWhoreDev - V.corpDivWhoreSlaves; } else { return 0; @@ -1025,10 +1033,10 @@ window.corpDivWhoreSlavesRoom = function() { //Corporation race blacklisting/whitelisting //race is the lowercase string representing the race, 'blacklist' is either 1 or 0. 1 means we are blacklisting and 0 means we are whitelisting said race window.corpBlacklistRace = function(race, blacklist) { - var raceArray = State.variables.corpSpecRaces; - if(raceArray.length > 0 && blacklist === 1) { + let raceArray = State.variables.corpSpecRaces; + if (raceArray.length > 0 && blacklist === 1) { raceArray.delete(race); - } else if(blacklist === 1) { + } else if (blacklist === 1) { raceArray = setup.filterRacesLowercase.filter(x => x !== race); } else { raceArray.push(race); @@ -1037,7 +1045,7 @@ window.corpBlacklistRace = function(race, blacklist) { }; window.getSlaveStatisticData = function(s, facility) { - if(!s || !facility) { + if (!s || !facility) { // Base data, even without facility return { ID: s.ID, slaveName: s.slaveName, customLabel: s.customLabel, @@ -1046,14 +1054,14 @@ window.getSlaveStatisticData = function(s, facility) { }; } - if(!facility.income) { + if (!facility.income) { facility.income = new Map(); } - if(facility.income.has(s.ID)) { + if (facility.income.has(s.ID)) { return facility.income.get(s.ID); } else { - var data = { + const data = { ID: s.ID, slaveName: s.slaveName, customLabel: s.customLabel, income: 0, adsIncome: 0, rep: 0, cost: getSlaveCost(s), customers: 0 /* brothel, club, ... */ @@ -1115,7 +1123,7 @@ window.cashX = function(cost, what, who) { V.cash += cost; //INCOME - if(cost > 0) { + if (cost > 0) { //record the action if (typeof V.lastWeeksCashIncome[what] !== 'undefined') { @@ -1132,7 +1140,7 @@ window.cashX = function(cost, what, who) { } //EXPENSES - else if(cost < 0) { + else if (cost < 0) { //record the action if (typeof V.lastWeeksCashExpenses[what] !== 'undefined') { @@ -1166,7 +1174,7 @@ window.repX = function(rep, what, who) { //INCOME //These are all scaled relative to current rep except when recording the who, to keep comparisons between slaves possible across times. This quite drastically reduces rep income at high levels of rep and only slightly at low levels. - if(rep > 0) { + if (rep > 0) { //record the slave, if available if (typeof who !== 'undefined') { @@ -1175,7 +1183,7 @@ window.repX = function(rep, what, who) { } //record the action - if (what === "cheating" || passage() == "init" || passage() == "init Nationalities") { + if (what === "cheating" || passage() === "init" || passage() === "init Nationalities") { /*we don't want to curve startup or cheating.*/ V.lastWeeksRepIncome[what] += rep; } else if (typeof V.lastWeeksRepIncome[what] !== 'undefined') { @@ -1187,7 +1195,7 @@ window.repX = function(rep, what, who) { } //EXPENSES - else if(rep < 0) { + else if (rep < 0) { //record the action if (typeof V.lastWeeksRepExpenses[what] !== 'undefined') { @@ -1217,7 +1225,6 @@ window.forceNeg = function(x) { return -Math.abs(x); }; - Number.prototype.toFixedHTML = function() { - return commaNum(Number.prototype.toFixed.apply(this, arguments)).replace(/\.0+$/, '<span style="opacity: 0.3">$&</span>'); + return num(Number.prototype.toFixed.apply(this, arguments)).replace(/\.0+$/, '<span style="opacity: 0.3">$&</span>'); }; diff --git a/src/js/generateGenetics.js b/src/js/generateGenetics.js index 622a0978dcb317dc26ac574dfe68fbd739d2ea5c..d7fe933654422b7d85239713e70ed7ce7d61f7de 100644 --- a/src/js/generateGenetics.js +++ b/src/js/generateGenetics.js @@ -25,7 +25,7 @@ window.generateGenetics = (function() { mother = V.PC; } if (actor2 > 0) { - father = V.genePool.find(function(s) { return s.ID === actor2.ID; }); + father = V.genePool.find(function(s) { return s.ID === actor2; }); activeFather = V.slaves[V.slaveIndices[actor2]]; if (father === undefined) { father = V.slaves[V.slaveIndices[actor2]]; @@ -33,13 +33,13 @@ window.generateGenetics = (function() { } if (father === undefined) { if (V.incubator > 0) { - father = V.tanks.find(function(s) { return s.ID === actor2.ID; }); + father = V.tanks.find(function(s) { return s.ID === actor2; }); activeFather = 0; // activeFather = father? } } if (father === undefined) { if (V.nursery > 0) { - father = V.cribs.find(function(s) { return s.ID === actor2.ID; }); + father = V.cribs.find(function(s) { return s.ID === actor2; }); activeFather = 0; // activeFather = father? } } @@ -163,6 +163,9 @@ window.generateGenetics = (function() { case -7: fatherName = "Lab designed"; break; + case -9: + fatherName = "A Futanari Sister"; + break; default: fatherName = "Unknown"; } diff --git a/src/js/itemAvailability.js b/src/js/itemAvailability.js index eeac0fb007d7a35cf66753a39943814cfb1eb814..329776772f1d76e9355b906442e329fe0f98fcd9 100644 --- a/src/js/itemAvailability.js +++ b/src/js/itemAvailability.js @@ -1,3 +1,4 @@ +/* eslint-disable no-undef */ /* intended to condense the clothing/toy/etc availability checks into something less asinine */ window.isItemAccessible = function(string) { const V = State.variables; @@ -134,7 +135,7 @@ window.isItemAccessible = function(string) { case 'a large empathy belly': case 'a huge empathy belly': return (V.arcologies[0].FSRepopulationFocus > 0 || V.clothesBoughtBelly === 1); - case 'bullet vibrator': // Not technically a dildo, but $toyBoughtVaginalAccessories doesn't exist + case 'bullet vibrator': case 'long dildo': case 'long, large dildo': case 'long, huge dildo': diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js index a3caa9529ccbe59fb7768c55025e2ba5768d6cb4..2b61cf819ea041c8828c3563df4443d660adb56c 100644 --- a/src/js/rulesAssistantOptions.js +++ b/src/js/rulesAssistantOptions.js @@ -1,3 +1,4 @@ +/* eslint-disable no-undef */ // rewrite of the rules assistant options page in javascript // uses an object-oriented widget pattern // wrapped in a closure so as not to pollute the global namespace @@ -21,7 +22,7 @@ window.rulesAssistantOptions = (function() { else current_rule = V.defaultRules[idx]; } - const root = new Root(element); + const root = new Root(element); /** FIXME: 'root' is declared but its value is never read.ts(6133) */ } function returnP(e) { return e.keyCode === 13; } @@ -211,7 +212,7 @@ window.rulesAssistantOptions = (function() { this.value.innerHTML = ""+what; } - getData(what) { + getData(what) { /** FIXME: 'what' is declared but its value is never read.ts(6133) */ return (this.value.tagName === "INPUT" ? this.parse(this.value.value): this.selectedItem.data); } @@ -299,7 +300,7 @@ window.rulesAssistantOptions = (function() { this.label = label; this.onclick = onclick; } - render(label, onclick) { + render(label, onclick) { /** FIXME: 'onclick' is declared but its value is never read.ts(6133) */ const elem = document.createElement("span"); elem.classList.add("rajs-listitem"); elem.innerHTML = label; @@ -669,7 +670,7 @@ window.rulesAssistantOptions = (function() { min.setAttribute("type", "text"); min.value = "" + data.value[0]; min.onkeypress = e => { if (returnP(e)) this.setmin(min.value); }; - min.onblur = e => this.setmin(min.value); + min.onblur = e => this.setmin(min.value); /** FIXME: 'e' is declared but its value is never read.ts(6133) */ this.min = min; elem.appendChild(min); @@ -683,7 +684,7 @@ window.rulesAssistantOptions = (function() { max.setAttribute("type", "text"); max.value = "" + data.value[1]; max.onkeypress = e => { if (returnP(e)) this.setmax(max.value); }; - max.onblur = e => this.setmax(max.value); + max.onblur = e => this.setmax(max.value); /** FIXME: 'e' is declared but its value is never read.ts(6133) */ this.max = max; elem.appendChild(max); @@ -742,7 +743,7 @@ window.rulesAssistantOptions = (function() { input.setAttribute("type", "text"); input.value = JSON.stringify(data.value); input.onkeypress = e => { if (returnP(e)) this.setValue(input); }; - input.onblur = e => this.setValue(input); + input.onblur = e => this.setValue(input); /** FIXME: 'e' is declared but its value is never read.ts(6133) */ this.input = input; elem.appendChild(input); @@ -1246,7 +1247,7 @@ window.rulesAssistantOptions = (function() { const hcollars = []; setup.harshCollars.forEach(item => { - if (item.fs === "seeage" && V.seeAge === 0) return; + if (item.fs === "seeAge" && V.seeAge === 0) return; else if (item.fs === "seePreg" && V.seePreg === 0) return; else if (item.rs === "buyGag" && V.toysBoughtGags !== 1) return; else hcollars.push([item.name, item.value]); @@ -1356,7 +1357,7 @@ window.rulesAssistantOptions = (function() { } } - class VaginalAttachmentsList extends List { /**TODO: this will need expanding */ + class VaginalAttachmentsList extends List { constructor() { const accs = []; setup.vaginalAttachments.forEach(acc => { diff --git a/src/js/sexActsJS.js b/src/js/sexActsJS.js index 93a56e0423f4189ddbc378fff730a198009007b4..0b0291db3d5b18d9c4ce9bac0b06b593160b4fa9 100644 --- a/src/js/sexActsJS.js +++ b/src/js/sexActsJS.js @@ -5,14 +5,14 @@ window.AnalVCheck = function AnalVCheck(times) { const V = State.variables; const slave = V.activeSlave; - let pronouns = getPronouns(slave); - let he = pronouns.pronoun, + const pronouns = getPronouns(slave); + const he = pronouns.pronoun, //him = pronouns.object, his = pronouns.possessive; // hers = pronouns.possessivePronoun, // himself = pronouns.objectReflexive, // boy = pronouns.noun; - let He = capFirstChar(he), + const He = capFirstChar(he), His = capFirstChar(his); let r = ``; if (canDoAnal(slave) && slave.anus === 0) { @@ -64,15 +64,15 @@ window.AnalVCheck = function AnalVCheck(times) { window.VaginalVCheck = function VaginalVCheck(times) { const V = State.variables; const slave = V.activeSlave; - let pronouns = getPronouns(slave); - let he = pronouns.pronoun, + const pronouns = getPronouns(slave); + const he = pronouns.pronoun, him = pronouns.object, his = pronouns.possessive, hers = pronouns.possessivePronoun, himself = pronouns.objectReflexive, boy = pronouns.noun; - let He = capFirstChar(he); - let His = capFirstChar(his); + const He = capFirstChar(he); + const His = capFirstChar(his); let r = ``; if (canDoVaginal(slave) && slave.vagina === 0) { r += `@@.lime;This breaks in ${slave.slaveName}'s virgin pussy.@@ `; @@ -126,15 +126,15 @@ window.VaginalVCheck = function VaginalVCheck(times) { window.BothVCheck = function BothVCheck(analTimes, bothTimes) { const V = State.variables; const slave = V.activeSlave; - let pronouns = getPronouns(slave); - let he = pronouns.pronoun, + const pronouns = getPronouns(slave); + const he = pronouns.pronoun, him = pronouns.object, his = pronouns.possessive, hers = pronouns.possessivePronoun, himself = pronouns.objectReflexive, boy = pronouns.noun; - let He = capFirstChar(he); - let His = capFirstChar(his); + const He = capFirstChar(he); + const His = capFirstChar(his); let r = ``; if (canDoVaginal(slave)) { if (slave.vagina === 0) { @@ -286,15 +286,15 @@ window.SimpleVCheck = function SimpleVCheck(times) { window.PartnerVCheck = function PartnerVCheck(analTimes, bothTimes) { const V = State.variables; const partner = V.slaves[V.partner]; - let pronouns = getPronouns(partner); - let he = pronouns.pronoun, + const pronouns = getPronouns(partner); + const he = pronouns.pronoun, him = pronouns.object, his = pronouns.possessive, hers = pronouns.possessivePronoun, himself = pronouns.objectReflexive, boy = pronouns.noun; - let He = capFirstChar(he); - let His = capFirstChar(his); + const He = capFirstChar(he); + const His = capFirstChar(his); let r = ``; if (V.partner < 0 || V.partner >= V.slaves.length) { diff --git a/src/js/slaveGenerationJS.js b/src/js/slaveGenerationJS.js index b2d66d403b277cad1b9a58095d014d058be5a1d8..df933301d9d3e5f381660f4e43cc1b3e96aff008 100644 --- a/src/js/slaveGenerationJS.js +++ b/src/js/slaveGenerationJS.js @@ -7,7 +7,7 @@ window.raceToNationality = /** @param {App.Entity.SlaveState} slave */ function const V = State.variables; slave.nationality = hashChoice(V.nationalities); /* Maximum of 100 attempts */ - for (var i = 0; setup.raceSelector[slave.nationality] && !(slave.race in setup.raceSelector[slave.nationality]) && i < 100; i++) { + for (let i = 0; setup.raceSelector[slave.nationality] && !(slave.race in setup.raceSelector[slave.nationality]) && i < 100; i++) { slave.nationality = hashChoice(V.nationalities); } /* No success after 100 attempts, so just randomize according to race */ diff --git a/src/js/slaveSummaryWidgets.js b/src/js/slaveSummaryWidgets.js index a9cc60634875e403f1d3bcb8dc83cc09527c6ec2..fa8ff6642dddbc7aa7bbef0b79ba44a89ccae6d3 100644 --- a/src/js/slaveSummaryWidgets.js +++ b/src/js/slaveSummaryWidgets.js @@ -1,3 +1,4 @@ +/* eslint-disable no-undef */ window.clearSummaryCache = /** @param {App.Entity.SlaveState | number} slave */ function clearSummaryCache(slave) { if (!slave) setup.summaryCache = {}; @@ -2294,7 +2295,7 @@ window.SlaveSummaryUncached = (function(){ function long_age(slave) { r += `<span class="pink">`; if (V.showAgeDetail === 1) { - r += `Age ${slave.actualAge}.`; + r += `Age ` + `${slave.actualAge}` + `.`; } else if (slave.actualAge >= 40) { r += `Forties.`; } else if (slave.actualAge >= 35) { @@ -2319,10 +2320,10 @@ window.SlaveSummaryUncached = (function(){ */ if (((slave.geneMods.NCS === 0) || (slave.visualAge >= slave.physicalAge))) { if (slave.actualAge !== slave.physicalAge) { - r += `${slave.physicalAge} year old body. `; + r += `${slave.physicalAge}` + ` year old body. `; } if (slave.visualAge !== slave.physicalAge) { - r += `Looks ${slave.visualAge}. `; + r += `Looks ` + `${slave.visualAge}` + `. `; } } else { /* @@ -2334,7 +2335,7 @@ window.SlaveSummaryUncached = (function(){ ** say: 'Age 1. 11 year old body.' -- this conflicts with the way NCS works though, because she hasn't ** visually aged, so our change here makes it say 'Age 1. Appears to have a 10 year old body.' */ - r += `Appears to have a ${slave.visualAge} year old body. `; + r += `Appears to have a ` + `${slave.visualAge}` + ` year old body. `; } if (slave.geneMods.NCS === 1) { r += `(<span class="orange">NCS</span>) `; @@ -3786,7 +3787,7 @@ window.SlaveSummaryUncached = (function(){ if (_ssj !== -1) { r += `${SlaveFullName(V.slaves[_ssj])}'s daughter`; if (slave.relationshipTarget === V.slaves[_ssj].ID) { - var friendShipShort = relationshipTermShort(slave); + let friendShipShort = relationshipTermShort(slave); r += ` & ${friendShipShort}`; handled = 1; } @@ -3812,7 +3813,7 @@ window.SlaveSummaryUncached = (function(){ if (_ssj !== -1) { r += `${SlaveFullName(V.slaves[_ssj])}'s daughter`; if (slave.relationshipTarget === V.slaves[_ssj].ID && handled !== 1) { - var friendShipShort = relationshipTermShort(slave); + let friendShipShort = relationshipTermShort(slave); r += ` & ${friendShipShort}`; handled = 1; } @@ -3838,7 +3839,7 @@ window.SlaveSummaryUncached = (function(){ if (_ssj !== -1) { r += `${SlaveFullName(V.slaves[_ssj])}'s mother`; if (slave.relationshipTarget === V.slaves[_ssj].ID) { - var friendShipShort = relationshipTermShort(slave); + let friendShipShort = relationshipTermShort(slave); r += ` & ${friendShipShort}`; handled = 1; } @@ -3850,7 +3851,7 @@ window.SlaveSummaryUncached = (function(){ if (_ssj !== -1) { r += `${SlaveFullName(V.slaves[_ssj])}'s father`; if (slave.relationshipTarget === V.slaves[_ssj].ID && handled !== 1) { - var friendShipShort = relationshipTermShort(slave); + let friendShipShort = relationshipTermShort(slave); r += ` & ${friendShipShort}`; handled = 1; } @@ -3866,7 +3867,7 @@ window.SlaveSummaryUncached = (function(){ if (_ssj !== -1) { r += `${SlaveFullName(V.slaves[_ssj])}'s sister`; if (slave.relationshipTarget === V.slaves[_ssj].ID) { - var friendShipShort = relationshipTermShort(slave); + let friendShipShort = relationshipTermShort(slave); r += `& ${friendShipShort}`; handled = 1; } @@ -3881,7 +3882,7 @@ window.SlaveSummaryUncached = (function(){ }); if (_ssj !== -1) { r += `${SlaveFullName(V.slaves[_ssj])}'s`; - var friendShipShort = relationshipTermShort(slave); + let friendShipShort = relationshipTermShort(slave); r += ` ${friendShipShort}`; } } else if (slave.relationship === -3 && slave.mother !== -1 && slave.father !== -1) { @@ -3964,7 +3965,7 @@ window.SlaveSummaryUncached = (function(){ if (_ssj !== -1) { r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">daughter`; if (slave.relationshipTarget === V.slaves[_ssj].ID) { - var friendShipShort = relationshipTerm(slave); + let friendShipShort = relationshipTerm(slave); r += ` and ${friendShipShort}`; handled = 1; } @@ -3991,7 +3992,7 @@ window.SlaveSummaryUncached = (function(){ if (_ssj !== -1) { r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">daughter`; if (slave.relationshipTarget === V.slaves[_ssj].ID) { - var friendShipShort = relationshipTerm(slave); + let friendShipShort = relationshipTerm(slave); r += ` and ${friendShipShort}`; handled = 1; } @@ -4018,7 +4019,7 @@ window.SlaveSummaryUncached = (function(){ if (_ssj !== -1) { r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">mother`; if (slave.relationshipTarget === V.slaves[_ssj].ID) { - var friendShipShort = relationshipTerm(slave); + let friendShipShort = relationshipTerm(slave); r += ` and ${friendShipShort}`; handled = 1; } @@ -4030,7 +4031,7 @@ window.SlaveSummaryUncached = (function(){ if (_ssj !== -1) { r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">father`; if (slave.relationshipTarget === V.slaves[_ssj].ID) { - var friendShipShort = relationshipTerm(slave); + let friendShipShort = relationshipTerm(slave); r += ` and ${friendShipShort}`; handled = 1; } @@ -4052,7 +4053,7 @@ window.SlaveSummaryUncached = (function(){ if (_ssj !== -1) { r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">sister`; if (slave.relationshipTarget === V.slaves[_ssj].ID) { - var friendShipShort = relationshipTerm(slave); + let friendShipShort = relationshipTerm(slave); r += ` and ${friendShipShort}`; handled = 1; } @@ -4664,6 +4665,9 @@ window.SlaveSummaryUncached = (function(){ case "sock": r += `Cock sock.`; break; + case "vibrator": + r += `Frenulum bullet vibrator.`; + break; } r += " "; } @@ -4729,82 +4733,82 @@ App.UI.PassageSlaveFilers = { "Main": s => (s.assignmentVisible === 1), "Personal Attention Select": s => (s.assignmentVisible === 1 && s.fuckdoll <= 0), "Agent Select": s => (s.fuckdoll === 0 && s.devotion > 20 && s.intelligence + s.intelligenceImplant > 15 && s.intelligenceImplant >= 15 && canWalk(s) && canSee(s) && canHear(s) && canTalk(s) && s.broodmother < 2 && (s.breedingMark !== 1 || State.variables.propOutcome === 0)), - "BG Select": s => (s.assignmentVisible === 1 && s.fuckdoll === 0 && s.devotion > 50 && s.assignment != "guard you" && canWalk(s) && canSee(s) && canHear(s) && (s.breedingMark != 1 || State.variables.propOutcome == 0)), - "Recruiter Select": s => (s.assignmentVisible == 1 && s.fuckdoll == 0 && s.devotion > 50 && s.assignment != "recruit girls" && canWalk(s) && canSee(s) && canTalk(s)), - "HG Select": s => (s.assignmentVisible == 1 && s.fuckdoll == 0 && s.devotion > 50 && s.assignment != "be your Head Girl" && canWalk(s) && canHear(s) && canSee(s) && canTalk(s)), - "Head Girl Suite": s => (s.assignmentVisible == 1 && s.fuckdoll <= 0 && ( - (State.variables.Flag == 0 && s.assignment != "be your Head Girl" && s.indentureRestrictions <= 0 && (s.breedingMark != 1 || State.variables.propOutcome == 0)) || - (State.variables.Flag != 0 && s.assignment == "live with your Head Girl"))), - "Subordinate Targeting": s => (s.devotion >= -20 && s.fuckdoll == 0 && State.variables.activeSlave.ID != s.ID && (State.variables.activeSlave.amp != 1 || s.amp != 1)), - "Spa": s => (s.assignmentVisible == 1 && s.fuckdoll <= 0 && ( - (State.variables.Flag == 0 && s.assignment != "rest in the spa") || - (State.variables.Flag == 1 && s.assignment == "rest in the spa") || - (State.variables.Flag != 0 && State.variables.Flag != 1 && s.ID == State.variables.Attendant.ID))), - "Attendant Select": s => (s.assignmentVisible == 1 && s.fuckdoll == 0 && s.devotion > 50 && canWalk(s) && canHear(s)), - "Nursery": s => (s.assignmentVisible == 1 && s.fuckdoll <= 0 && (s.devotion > 20 || s.trust > 20) && ( - (State.variables.Flag == 0 && s.assignment != "work as a nanny") || - (State.variables.Flag == 1 && s.assignment == "work as a nanny") || - (State.variables.Flag != 0 && State.variables.Flag != 1 && s.ID == State.variables.Matron.ID))), - "Matron Select": s => (s.assignmentVisible == 1 && s.fuckdoll == 0 && s.devotion > 50 && canWalk(s) && canHear(s)), - "Brothel": s => (s.assignmentVisible == 1 && s.fuckdoll <= 0 && ( - (State.variables.Flag == 0 && s.assignment != "work in the brothel") || - (State.variables.Flag == 1 && s.assignment == "work in the brothel") || - (State.variables.Flag != 0 && State.variables.Flag != 1 && s.ID == State.variables.Madam.ID))), - "Madam Select": s => (s.assignmentVisible == 1 && s.fuckdoll == 0 && s.devotion > 50 && s.intelligence + s.intelligenceImplant >= -50 && canWalk(s) && canSee(s) && canHear(s) && (s.breedingMark != 1 || State.variables.propOutcome == 0)), - "Club": s => (s.assignmentVisible == 1 && s.fuckdoll <= 0 && ( - (State.variables.Flag == 0 && s.assignment != "serve in the club") || - (State.variables.Flag == 1 && s.assignment == "serve in the club") || - (State.variables.Flag != 0 && State.variables.Flag != 1 && s.ID == State.variables.DJ.ID))), - "DJ Select": s => (s.assignmentVisible == 1 && s.fuckdoll == 0 && s.devotion > 50 && s.intelligence + s.intelligenceImplant >= -50 && canTalk(s) && canHear(s) && canWalk(s) && (s.breedingMark != 1 || State.variables.propOutcome == 0)), - "Clinic": s => (s.assignmentVisible == 1 && s.fuckdoll <= 0 && ( - (State.variables.Flag == 0 && s.assignment != "get treatment in the clinic") || - (State.variables.Flag == 1 && s.assignment == "get treatment in the clinic") || - (State.variables.Flag != 0 && State.variables.Flag != 1 && s.ID == State.variables.Nurse.ID))), - "Nurse Select": s => (s.assignmentVisible == 1 && s.fuckdoll == 0 && s.devotion > 50 && canWalk(s) && canSee(s)), - "Schoolroom": s => (s.assignmentVisible == 1 && s.fuckdoll <= 0 && ( - (State.variables.Flag == 0 && s.fetish != "mindbroken" && s.assignment != "learn in the schoolroom") || - (State.variables.Flag == 1 && s.assignment == "learn in the schoolroom") || - (State.variables.Flag != 0 && State.variables.Flag != 1 && s.ID == State.variables.Schoolteacher.ID))), - "Schoolteacher Select": s => (s.assignmentVisible == 1 && s.fuckdoll == 0 && s.devotion > 50 && canTalk(s) && canHear(s) && canSee(s)), - "Dairy": s => (s.assignmentVisible == 1 && s.fuckdoll <= 0 && ( - (State.variables.Flag == 0 && s.assignment != "work in the dairy") || - (State.variables.Flag == 1 && s.assignment == "work in the dairy") || - (State.variables.Flag != 0 && State.variables.Flag != 1 && s.ID == State.variables.Milkmaid.ID))), - "Milkmaid Select": s => (s.assignmentVisible == 1 && s.fuckdoll == 0 && s.devotion > 20 && canWalk(s) && canSee(s) && canHear(s)), - "Farmyard": s => (s.assignmentVisible == 1 && s.fuckdoll <= 0 && canWalk(s) && ( - (State.variables.Flag == 0 && s.assignment != "work as a farmhand") || - (State.variables.Flag == 1 && s.assignment == "work as a farmhand") || - (State.variables.Flag != 0 && State.variables.Flag != 1 && s.ID == State.variables.Farmer.ID))), - "Farmer Select": s => (s.assignmentVisible == 1 && s.fuckdoll == 0 && s.devotion > 50 && canWalk(s) && canSee(s) && canHear(s)), - "Servants' Quarters": s => (s.assignmentVisible == 1 && s.fuckdoll <= 0 && ( - (State.variables.Flag == 0 && s.assignment != "work as a servant") || - (State.variables.Flag == 1 && s.assignment == "work as a servant") || - (State.variables.Flag != 0 && State.variables.Flag != 1 && s.ID == State.variables.Stewardess.ID))), - "Stewardess Select": s => (s.assignmentVisible == 1 && s.fuckdoll == 0 && s.devotion > 50 && s.intelligence + s.intelligenceImplant >= -50 && canWalk(s) && canSee(s) && canHear(s)), - "Master Suite": s => (s.assignmentVisible == 1 && s.fuckdoll <= 0 && ( - (State.variables.Flag == 0 && s.assignment != "serve in the master suite") || - (State.variables.Flag == 1 && s.assignment == "serve in the master suite") || - (State.variables.Flag != 0 && State.variables.Flag != 1 && s.ID == State.variables.Concubine.ID))), - "Concubine Select": s => (s.assignmentVisible == 1 && s.fuckdoll == 0 && s.devotion > 50 && s.amp != 1), - "Cellblock": s => (s.assignmentVisible == 1 && s.fuckdoll <= 0 && s.fetish != "mindbroken" && ( - (State.variables.Flag == 0 && s.assignment != "be confined in the cellblock") || - (State.variables.Flag == 1 && s.assignment == "be confined in the cellblock") || - (State.variables.Flag != 0 && State.variables.Flag != 1 && s.ID == State.variables.Wardeness.ID))), - "Wardeness Select": s => (s.assignmentVisible == 1 && s.fuckdoll == 0 && s.devotion > 50 && canWalk(s) && canSee(s) && canHear(s)), - "Arcade": s => (s.assignmentVisible == 1 && (State.variables.arcade >= State.variables.arcadeSlaves || State.variables.arcadeUpgradeFuckdolls == 1) && ( - (State.variables.Flag == 0 && s.assignment != "be confined in the arcade") || - (State.variables.Flag != 0 && s.assignment == "be confined in the arcade"))), - "Pit": s => (s.assignmentVisible == 1 && s.fuckdoll == 0 && ( - (State.variables.Flag == 0 && !State.variables.fighterIDs.includes(s.ID) && canWalk(s) && (s.assignment != "guard you") && (s.assignment != "work in the dairy" || State.variables.dairyRestraintsSetting < 2)) || - (State.variables.Flag != 0 && State.variables.fighterIDs.includes(s.ID)))), - "Coursing Association": s => (s.assignmentVisible == 1 && s.fuckdoll == 0 && ( - (State.variables.Flag == 0 && canWalk(s) && State.variables.Lurcher.ID != s.ID) || - (State.variables.Flag != 0 && State.variables.Lurcher.ID == s.ID))), - "New Game Plus": s => ((State.variables.Flag == 0 && s.assignment != "be imported") || (State.variables.Flag != 0 && s.assignment == "be imported")), - "Rules Slave Select": s => ((State.variables.Flag == 0 && !ruleSlaveSelected(s, State.variables.currentRule)) || (State.variables.Flag != 0 && ruleSlaveSelected(s, State.variables.currentRule))), - "Rules Slave Exclude": s => ((State.variables.Flag == 0 && !ruleSlaveExcluded(s, State.variables.currentRule)) || (State.variables.Flag != 0 && ruleSlaveExcluded(s, State.variables.currentRule))), - "Matchmaking": s => (s.devotion >= 100 && s.relationship == State.variables.activeSlave.relationship && s.ID != State.variables.activeSlave.ID), - "Dinner Party Preparations": s => (s.assignmentVisible == 1 && s.fuckdoll == 0), + "BG Select": s => (s.assignmentVisible === 1 && s.fuckdoll === 0 && s.devotion > 50 && s.assignment !== "guard you" && canWalk(s) && canSee(s) && canHear(s) && (s.breedingMark !== 1 || State.variables.propOutcome === 0)), + "Recruiter Select": s => (s.assignmentVisible === 1 && s.fuckdoll === 0 && s.devotion > 50 && s.assignment !== "recruit girls" && canWalk(s) && canSee(s) && canTalk(s)), + "HG Select": s => (s.assignmentVisible === 1 && s.fuckdoll === 0 && s.devotion > 50 && s.assignment !== "be your Head Girl" && canWalk(s) && canHear(s) && canSee(s) && canTalk(s)), + "Head Girl Suite": s => (s.assignmentVisible === 1 && s.fuckdoll <= 0 && ( + (State.variables.Flag === 0 && s.assignment !== "be your Head Girl" && s.indentureRestrictions <= 0 && (s.breedingMark !== 1 || State.variables.propOutcome === 0)) || + (State.variables.Flag !== 0 && s.assignment === "live with your Head Girl"))), + "Subordinate Targeting": s => (s.devotion >= -20 && s.fuckdoll === 0 && State.variables.activeSlave.ID !== s.ID && (State.variables.activeSlave.amp !== 1 || s.amp !== 1)), + "Spa": s => (s.assignmentVisible === 1 && s.fuckdoll <= 0 && ( + (State.variables.Flag === 0 && s.assignment !== "rest in the spa") || + (State.variables.Flag === 1 && s.assignment === "rest in the spa") || + (State.variables.Flag !== 0 && State.variables.Flag !== 1 && s.ID === State.variables.Attendant.ID))), + "Attendant Select": s => (s.assignmentVisible === 1 && s.fuckdoll === 0 && s.devotion > 50 && canWalk(s) && canHear(s)), + "Nursery": s => (s.assignmentVisible === 1 && s.fuckdoll <= 0 && (s.devotion > 20 || s.trust > 20) && ( + (State.variables.Flag === 0 && s.assignment !== "work as a nanny") || + (State.variables.Flag === 1 && s.assignment === "work as a nanny") || + (State.variables.Flag !== 0 && State.variables.Flag !== 1 && s.ID === State.variables.Matron.ID))), + "Matron Select": s => (s.assignmentVisible === 1 && s.fuckdoll === 0 && s.devotion > 50 && canWalk(s) && canHear(s)), + "Brothel": s => (s.assignmentVisible === 1 && s.fuckdoll <= 0 && ( + (State.variables.Flag === 0 && s.assignment !== "work in the brothel") || + (State.variables.Flag === 1 && s.assignment === "work in the brothel") || + (State.variables.Flag !== 0 && State.variables.Flag !== 1 && s.ID === State.variables.Madam.ID))), + "Madam Select": s => (s.assignmentVisible === 1 && s.fuckdoll === 0 && s.devotion > 50 && s.intelligence + s.intelligenceImplant >= -50 && canWalk(s) && canSee(s) && canHear(s) && (s.breedingMark !== 1 || State.variables.propOutcome === 0)), + "Club": s => (s.assignmentVisible === 1 && s.fuckdoll <= 0 && ( + (State.variables.Flag === 0 && s.assignment !== "serve in the club") || + (State.variables.Flag === 1 && s.assignment === "serve in the club") || + (State.variables.Flag !== 0 && State.variables.Flag !== 1 && s.ID === State.variables.DJ.ID))), + "DJ Select": s => (s.assignmentVisible === 1 && s.fuckdoll === 0 && s.devotion > 50 && s.intelligence + s.intelligenceImplant >= -50 && canTalk(s) && canHear(s) && canWalk(s) && (s.breedingMark !== 1 || State.variables.propOutcome === 0)), + "Clinic": s => (s.assignmentVisible === 1 && s.fuckdoll <= 0 && ( + (State.variables.Flag === 0 && s.assignment !== "get treatment in the clinic") || + (State.variables.Flag === 1 && s.assignment === "get treatment in the clinic") || + (State.variables.Flag !== 0 && State.variables.Flag !== 1 && s.ID === State.variables.Nurse.ID))), + "Nurse Select": s => (s.assignmentVisible === 1 && s.fuckdoll === 0 && s.devotion > 50 && canWalk(s) && canSee(s)), + "Schoolroom": s => (s.assignmentVisible === 1 && s.fuckdoll <= 0 && ( + (State.variables.Flag === 0 && s.fetish !== "mindbroken" && s.assignment !== "learn in the schoolroom") || + (State.variables.Flag === 1 && s.assignment === "learn in the schoolroom") || + (State.variables.Flag !== 0 && State.variables.Flag !== 1 && s.ID === State.variables.Schoolteacher.ID))), + "Schoolteacher Select": s => (s.assignmentVisible === 1 && s.fuckdoll === 0 && s.devotion > 50 && canTalk(s) && canHear(s) && canSee(s)), + "Dairy": s => (s.assignmentVisible === 1 && s.fuckdoll <= 0 && ( + (State.variables.Flag === 0 && s.assignment !== "work in the dairy") || + (State.variables.Flag === 1 && s.assignment === "work in the dairy") || + (State.variables.Flag !== 0 && State.variables.Flag !== 1 && s.ID === State.variables.Milkmaid.ID))), + "Milkmaid Select": s => (s.assignmentVisible === 1 && s.fuckdoll === 0 && s.devotion > 20 && canWalk(s) && canSee(s) && canHear(s)), + "Farmyard": s => (s.assignmentVisible === 1 && s.fuckdoll <= 0 && canWalk(s) && ( + (State.variables.Flag === 0 && s.assignment !== "work as a farmhand") || + (State.variables.Flag === 1 && s.assignment === "work as a farmhand") || + (State.variables.Flag !== 0 && State.variables.Flag !== 1 && s.ID === State.variables.Farmer.ID))), + "Farmer Select": s => (s.assignmentVisible === 1 && s.fuckdoll === 0 && s.devotion > 50 && canWalk(s) && canSee(s) && canHear(s)), + "Servants' Quarters": s => (s.assignmentVisible === 1 && s.fuckdoll <= 0 && ( + (State.variables.Flag === 0 && s.assignment !== "work as a servant") || + (State.variables.Flag === 1 && s.assignment === "work as a servant") || + (State.variables.Flag !== 0 && State.variables.Flag !== 1 && s.ID === State.variables.Stewardess.ID))), + "Stewardess Select": s => (s.assignmentVisible === 1 && s.fuckdoll === 0 && s.devotion > 50 && s.intelligence + s.intelligenceImplant >= -50 && canWalk(s) && canSee(s) && canHear(s)), + "Master Suite": s => (s.assignmentVisible === 1 && s.fuckdoll <= 0 && ( + (State.variables.Flag === 0 && s.assignment !== "serve in the master suite") || + (State.variables.Flag === 1 && s.assignment === "serve in the master suite") || + (State.variables.Flag !== 0 && State.variables.Flag !== 1 && s.ID === State.variables.Concubine.ID))), + "Concubine Select": s => (s.assignmentVisible === 1 && s.fuckdoll === 0 && s.devotion > 50 && s.amp !== 1), + "Cellblock": s => (s.assignmentVisible === 1 && s.fuckdoll <= 0 && s.fetish !== "mindbroken" && ( + (State.variables.Flag === 0 && s.assignment !== "be confined in the cellblock") || + (State.variables.Flag === 1 && s.assignment === "be confined in the cellblock") || + (State.variables.Flag !== 0 && State.variables.Flag !== 1 && s.ID === State.variables.Wardeness.ID))), + "Wardeness Select": s => (s.assignmentVisible === 1 && s.fuckdoll === 0 && s.devotion > 50 && canWalk(s) && canSee(s) && canHear(s)), + "Arcade": s => (s.assignmentVisible === 1 && (State.variables.arcade >= State.variables.arcadeSlaves || State.variables.arcadeUpgradeFuckdolls === 1) && ( + (State.variables.Flag === 0 && s.assignment !== "be confined in the arcade") || + (State.variables.Flag !== 0 && s.assignment === "be confined in the arcade"))), + "Pit": s => (s.assignmentVisible === 1 && s.fuckdoll === 0 && ( + (State.variables.Flag === 0 && !State.variables.fighterIDs.includes(s.ID) && canWalk(s) && (s.assignment !== "guard you") && (s.assignment !== "work in the dairy" || State.variables.dairyRestraintsSetting < 2)) || + (State.variables.Flag !== 0 && State.variables.fighterIDs.includes(s.ID)))), + "Coursing Association": s => (s.assignmentVisible === 1 && s.fuckdoll === 0 && ( + (State.variables.Flag === 0 && canWalk(s) && State.variables.Lurcher.ID !== s.ID) || + (State.variables.Flag !== 0 && State.variables.Lurcher.ID === s.ID))), + "New Game Plus": s => ((State.variables.Flag === 0 && s.assignment !== "be imported") || (State.variables.Flag !== 0 && s.assignment === "be imported")), + "Rules Slave Select": s => ((State.variables.Flag === 0 && !ruleSlaveSelected(s, State.variables.currentRule)) || (State.variables.Flag !== 0 && ruleSlaveSelected(s, State.variables.currentRule))), + "Rules Slave Exclude": s => ((State.variables.Flag === 0 && !ruleSlaveExcluded(s, State.variables.currentRule)) || (State.variables.Flag !== 0 && ruleSlaveExcluded(s, State.variables.currentRule))), + "Matchmaking": s => (s.devotion >= 100 && s.relationship === State.variables.activeSlave.relationship && s.ID !== State.variables.activeSlave.ID), + "Dinner Party Preparations": s => (s.assignmentVisible === 1 && s.fuckdoll === 0), }; /** @@ -4857,7 +4861,7 @@ App.UI.slaveSummaryList = function (passageName) { if ("object" === typeof attributes) attributes = $.map(attributes, (val, key) => key + '="' + val + '"').join(" "); else - attributes = 'id="' + String(this.args[0]).trim() + '"'; + attributes = 'id="' + String(this.args[0]).trim() + '"'; /** FIXME: If a strict mode function is executed using function invocation, its 'this' value will be undefined. jshint(W040) */ return '<' + htag + ' ' + attributes + '>' + payload + '</' + htag + '>'; } @@ -4872,8 +4876,8 @@ App.UI.slaveSummaryList = function (passageName) { function dividerAndImage(s, showImage) { showImage = showImage || true; - let r = [V.lineSeparations == 0 ? '<br>' : '<hr style="margin:0">']; - if (showImage && (V.seeImages == 1) && (V.seeSummaryImages == 1)) { + let r = [V.lineSeparations === 0 ? '<br>' : '<hr style="margin:0">']; + if (showImage && (V.seeImages === 1) && (V.seeSummaryImages === 1)) { r.push(slaveImage(s)); } return r.join(""); @@ -4895,21 +4899,21 @@ App.UI.slaveSummaryList = function (passageName) { const tabName = V.slaveAssignmentTab; let _tableCount = 0; - if (V.useSlaveListInPageJSNavigation == 1) { + if (V.useSlaveListInPageJSNavigation === 1) { const _Count = _indexSlavesIdxs.length; /* Useful for finding weird combinations — usages of this passage that don't yet generate the quick index. * <<print 'pass/count/indexed/flag::[' + passageName + '/' + _Count + '/' + _indexed + '/' + $Flag + ']'>> */ - if (((_Count > 1) && (_indexed == 0) && (((passageName == 'Main') && (V.Flag === undefined) && ((V.useSlaveSummaryTabs == 0) || (V.slaveAssignmentTab == "all"))) || (V.Flag == 1)))) { - let _indexed = 1, - _counter = 0, + if (((_Count > 1) && (_indexed === 0) && (((passageName === 'Main') && (V.Flag === undefined) && ((V.useSlaveSummaryTabs === 0) || (V.slaveAssignmentTab === "all"))) || (V.Flag === 1)))) { + let _indexed = 1, /** FIXME: '_indexed' is declared but its value is never read.ts(6133) */ + _counter = 0, /** FIXME: '_counter' is declared but its value is never read.ts(6133) */ _buttons = [], _offset = -50; if (/Select/i.test(passageName)) { - _offset = -25 + _offset = -25; } - res.push("<br />") + res.push("<br />"); _tableCount++; /* * we want <button data-quick-index="<<= _tableCount>>">... @@ -4984,8 +4988,8 @@ App.UI.slaveSummaryList = function (passageName) { const _slaveName = SlaveFullName(_Slave); - let _tableCount = 0; - let slaveImagePrinted = (V.seeImages == 1) && (V.seeSummaryImages == 1); + let _tableCount = 0; /** FIXME: '_tableCount' is declared but its value is never read.ts(6133) */ + let slaveImagePrinted = (V.seeImages === 1) && (V.seeSummaryImages === 1); res.push('<div id="slave_' + _Slave.ID + '" style="clear:both">'); @@ -4993,7 +4997,7 @@ App.UI.slaveSummaryList = function (passageName) { case "Main": if ((_Slave.choosesOwnClothes === 1) && (_Slave.clothes === "choosing her own clothes")) { const _oldDevotion = _Slave.devotion; - const _chosenClothes = saChoosesOwnClothes(_Slave); + const _chosenClothes = saChoosesOwnClothes(_Slave); /** FIXME: '_chosenClothes' is declared but its value is never read.ts(6133) */ slaves[_ssi].devotion = _oldDevotion; _Slave = slaves[_ssi]; /* restore devotion value so repeatedly changing clothes isn't an exploit */ } @@ -5002,7 +5006,8 @@ App.UI.slaveSummaryList = function (passageName) { else if ("recruit girls" === _Slave.assignment) res.push('<strong>@@.lightcoral;RC@@</strong> '); else if ("guard you" === _Slave.assignment) res.push('<strong>@@.lightcoral;BG@@</strong> '); - if (Array.isArray(V.personalAttention) && V.personalAttention.findIndex(s => s.ID == _Slave.ID) != -1) { + if (Array.isArray(V.personalAttention) && V.personalAttention.findIndex(s => s.ID === _Slave.ID) !== -1) /** FIXME: Functions declared within loops referencing an outer scoped variable may lead to confusing semantics. (_Slave) jshint(W083) */ + { res.push('<strong>@@.lightcoral; PA@@</strong> '); } res.push(this.passageLink(_slaveName, 'Slave Interact', `$activeSlave = $slaves[${_ssi}]`)); /* lists their names */ @@ -5029,7 +5034,7 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`[[${_slaveName}|HG Workaround][$i = ${_ssi}]]`); break; case "Head Girl Suite": - if (V.Flag == 0) { + if (V.Flag === 0) { res.push(dividerAndImage(_Slave)); res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); } else { @@ -5042,10 +5047,10 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`[[${_slaveName}|Subordinate Targeting][$activeSlave.subTarget = $slaves[${_ssi}].ID]]`); break; case "Spa": - if (V.Flag == 0) { + if (V.Flag === 0) { if (V.spa <= V.spaSlaves) { res.pop(); continue; } - if ((_Slave.health < 20) || (_Slave.trust < 60) || (_Slave.devotion <= 60) || (_Slave.fetish == "mindbroken") || _Slave.sexualFlaw !== "none" || _Slave.behavioralFlaw !== "none") { - if (_Slave.devotion >= -20 || _Slave.fetish == "mindbroken") { + if ((_Slave.health < 20) || (_Slave.trust < 60) || (_Slave.devotion <= 60) || (_Slave.fetish === "mindbroken") || _Slave.sexualFlaw !== "none" || _Slave.behavioralFlaw !== "none") { + if (_Slave.devotion >= -20 || _Slave.fetish === "mindbroken") { res.push(dividerAndImage(_Slave)); res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); } else { @@ -5056,11 +5061,11 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`<i>${_Slave.slaveName} cannot benefit from the spa</i></div>`); continue; } - } else if (V.Flag == 1) { + } else if (V.Flag === 1) { res.push(dividerAndImage(_Slave)); res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); } else { - if ((V.seeImages == 1) && (V.seeSummaryImages == 1)) res.push(slaveImage(_Slave)); + if ((V.seeImages === 1) && (V.seeSummaryImages === 1)) res.push(slaveImage(_Slave)); res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); } break; @@ -5069,7 +5074,7 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`[[${_slaveName}|Attendant Workaround][$i = ${_ssi}]]`); break; case "Nursery": - if (V.Flag == 0) { + if (V.Flag === 0) { if (V.nurseryNannies <= V.nurserySlaves) { res.pop(); continue; } if ((_Slave.devotion >= -20) || ((_Slave.devotion >= -50) && (_Slave.trust <= 20)) || (_Slave.trust < -20)) { res.push(dividerAndImage(_Slave)); @@ -5078,11 +5083,11 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`<i>${_Slave.slaveName} must be either more fearful of you or devoted to you</i></div>`); continue; } - } else if (V.Flag == 1) { + } else if (V.Flag === 1) { res.push(dividerAndImage(_Slave)); res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); } else { - if ((V.seeImages == 1) && (V.seeSummaryImages == 1)) { + if ((V.seeImages === 1) && (V.seeSummaryImages === 1)) { res.push(slaveImage(_Slave)); } res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); @@ -5093,9 +5098,9 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`[[${_slaveName}|Matron Workaround][$i = ${_ssi}]]`); break; case "Brothel": - if (V.Flag == 0) { + if (V.Flag === 0) { if (V.brothel <= V.brothelSlaves) { res.pop(); continue; } - if (_Slave.breedingMark != 1 || V.propOutcome == 0) { + if (_Slave.breedingMark !== 1 || V.propOutcome === 0) { if ((_Slave.devotion > 50) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50) || (_Slave.trust > 50)) { res.push(dividerAndImage(_Slave)); res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); @@ -5107,11 +5112,11 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`<i>${_Slave.slaveName} is for private use only</i></div>`); continue; } - } else if (V.Flag == 1) { + } else if (V.Flag === 1) { res.push(dividerAndImage(_Slave)); res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); } else { - if ((V.seeImages == 1) && (V.seeSummaryImages == 1)) { + if ((V.seeImages === 1) && (V.seeSummaryImages === 1)) { res.push(slaveImage(_Slave)); } res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); @@ -5122,9 +5127,9 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`[[${_slaveName}|Madam Workaround][$i = ${_ssi}]]`); break; case "Club": - if (V.Flag == 0) { + if (V.Flag === 0) { if (V.club <= V.clubSlaves) { res.pop(); continue; } - if (_Slave.breedingMark != 1 || V.propOutcome == 0) { + if (_Slave.breedingMark !== 1 || V.propOutcome === 0) { if ((_Slave.devotion > 50) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50) || (_Slave.trust > 50)) { res.push(dividerAndImage(_Slave)); res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); @@ -5136,7 +5141,7 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`//${_Slave.slaveName} is for private use only//</div>`); continue; } - } else if (V.Flag == 1) { + } else if (V.Flag === 1) { res.push(dividerAndImage(_Slave)); res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); } else { @@ -5149,16 +5154,16 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`[[${_slaveName}|DJ Workaround][$i = ${_ssi}]]`); break; case "Clinic": - if (V.Flag == 0) { + if (V.Flag === 0) { if (V.clinic <= V.clinicSlaves) { res.pop(); continue; } - if ((_Slave.health < 20) || (V.Nurse != 0 && ((_Slave.chem > 15 && V.clinicUpgradeFilters == 1) || (V.bellyImplants == 1 && _Slave.bellyImplant > -1) || (_Slave.pregKnown == 1 && (V.clinicSpeedGestation >= 0 || _Slave.pregControl == "speed up")) || (_Slave.pregAdaptation * 1000 < _Slave.bellyPreg || _Slave.preg > _Slave.pregData.normalBirth / 1.33)))) { + if ((_Slave.health < 20) || (V.Nurse !== 0 && ((_Slave.chem > 15 && V.clinicUpgradeFilters === 1) || (V.bellyImplants === 1 && _Slave.bellyImplant > -1) || (_Slave.pregKnown === 1 && (V.clinicSpeedGestation >= 0 || _Slave.pregControl === "speed up")) || (_Slave.pregAdaptation * 1000 < _Slave.bellyPreg || _Slave.preg > _Slave.pregData.normalBirth / 1.33)))) { res.push(dividerAndImage(_Slave)); res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); } else { res.push(`//${_Slave.slaveName} cannot benefit from the clinic//</div>`); continue; } - } else if (V.Flag == 1) { + } else if (V.Flag === 1) { res.push(dividerAndImage(_Slave)); res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); } else { @@ -5171,10 +5176,10 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`[[${_slaveName}|Nurse Workaround][$i = ${_ssi}]]`); break; case "Schoolroom": - if (V.Flag == 0) { + if (V.Flag === 0) { if (V.schoolroom <= V.schoolroomSlaves) { res.pop(); continue; } if ((_Slave.devotion >= -20) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50)) { - if ((_Slave.intelligenceImplant < 30) || (_Slave.voice != 0 && _Slave.accent + V.schoolroomUpgradeLanguage > 2) || (_Slave.oralSkill <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.whoreSkill <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.entertainSkill <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.analSkill < 10 + V.schoolroomUpgradeSkills * 20) || ((_Slave.vagina >= 0) && (_Slave.vaginalSkill < 10 + V.schoolroomUpgradeSkills * 20))) { + if ((_Slave.intelligenceImplant < 30) || (_Slave.voice !== 0 && _Slave.accent + V.schoolroomUpgradeLanguage > 2) || (_Slave.oralSkill <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.whoreSkill <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.entertainSkill <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.analSkill < 10 + V.schoolroomUpgradeSkills * 20) || ((_Slave.vagina >= 0) && (_Slave.vaginalSkill < 10 + V.schoolroomUpgradeSkills * 20))) { res.push(dividerAndImage(_Slave)); res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); } else { @@ -5185,7 +5190,7 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`//${_Slave.slaveName} is too resistant to learn//</div>`); continue; } - } else if (V.Flag == 1) { + } else if (V.Flag === 1) { res.push(dividerAndImage(_Slave)); res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); } else { @@ -5198,9 +5203,9 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`[[${_slaveName}|Schoolteacher Workaround][$i = ${_ssi}]]`); break; case "Dairy": - if (V.Flag == 0) { + if (V.Flag === 0) { const _dairySeed = V.bioreactorsXY + V.bioreactorsXX + V.bioreactorsHerm + V.bioreactorsBarren; - if (_Slave.assignment == "work in the dairy") { res.pop(); continue; } + if (_Slave.assignment === "work in the dairy") { res.pop(); continue; } if (V.dairy <= V.dairySlaves + _dairySeed) { res.pop(); continue; } if ((_Slave.indentureRestrictions > 0) && (V.dairyRestraintsSetting > 1)) { res.push(`//${_Slave.slaveName}'s indenture forbids extractive Dairy service.//</div>`); @@ -5208,17 +5213,17 @@ App.UI.slaveSummaryList = function (passageName) { } else if ((_Slave.indentureRestrictions > 1) && (V.dairyRestraintsSetting > 0)) { res.push(`//${_Slave.slaveName}'s indenture allows only free range milking.//</div>`); continue; - } else if (_Slave.breedingMark == 1 && V.propOutcome == 1 && V.dairyRestraintsSetting > 0) { + } else if (_Slave.breedingMark === 1 && V.propOutcome === 1 && V.dairyRestraintsSetting > 0) { res.push(`//${_Slave.slaveName} may only be a free range cow//</div>`); continue; - } else if ((V.dairyPregSetting > 0) && ((_Slave.bellyImplant != -1) || (_Slave.broodmother != 0))) { + } else if ((V.dairyPregSetting > 0) && ((_Slave.bellyImplant !== -1) || (_Slave.broodmother !== 0))) { res.push(`//${_Slave.slaveName}'s womb cannot accommodate current machine settings//</div>`); continue; } else { - if ((_Slave.lactation > 0) || (_Slave.balls > 0) || ((V.dairySlimMaintainUpgrade == 0 || V.dairySlimMaintain == 0) && (_Slave.boobs > 300 || _Slave.balls == 0 || V.dairyImplantsSetting == 1) && V.dairyImplantsSetting != 2)) { - if ((_Slave.devotion > 20) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50) || (_Slave.amp == 1) || (V.dairyRestraintsUpgrade == 1)) { - if ((V.dairyStimulatorsSetting < 2) || (_Slave.anus > 2) || (V.dairyPrepUpgrade == 1)) { - if ((V.dairyPregSetting < 2) || (_Slave.vagina > 2) || (_Slave.ovaries == 0) || (V.dairyPrepUpgrade == 1)) { + if ((_Slave.lactation > 0) || (_Slave.balls > 0) || ((V.dairySlimMaintainUpgrade === 0 || V.dairySlimMaintain === 0) && (_Slave.boobs > 300 || _Slave.balls === 0 || V.dairyImplantsSetting === 1) && V.dairyImplantsSetting !== 2)) { + if ((_Slave.devotion > 20) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50) || (_Slave.amp === 1) || (V.dairyRestraintsUpgrade === 1)) { + if ((V.dairyStimulatorsSetting < 2) || (_Slave.anus > 2) || (V.dairyPrepUpgrade === 1)) { + if ((V.dairyPregSetting < 2) || (_Slave.vagina > 2) || (_Slave.ovaries === 0) || (V.dairyPrepUpgrade === 1)) { res.push(dividerAndImage(_Slave)); res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); } else { @@ -5233,7 +5238,7 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`//${_Slave.slaveName} must be obedient in order to be milked here//</div>`); continue; } - } else if ((V.dairySlimMaintainUpgrade == 1 && V.dairySlimMaintain == 1) || (V.dairyImplantsSetting == 2) || (_Slave.boobs <= 300 && _Slave.balls > 0 && (V.dairyImplantsSetting == 0 || V.dairyImplantsSetting == 3))) { + } else if ((V.dairySlimMaintainUpgrade === 1 && V.dairySlimMaintain === 1) || (V.dairyImplantsSetting === 2) || (_Slave.boobs <= 300 && _Slave.balls > 0 && (V.dairyImplantsSetting === 0 || V.dairyImplantsSetting === 3))) { res.push(`//${_Slave.slaveName} is not lactating ${(V.seeDicks > 0) ? 'or producing semen' : ''} and ${V.dairyName}'s current settings forbid the automatic implantation of lactation inducing drugs or manual stimulation to induce it, so she cannot be a cow//</div>`); continue; } else { @@ -5241,7 +5246,7 @@ App.UI.slaveSummaryList = function (passageName) { continue; } } - } else if (V.Flag == 1) { + } else if (V.Flag === 1) { res.push(dividerAndImage(_Slave)); res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); } else { @@ -5254,12 +5259,12 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`[[${_slaveName}|Milkmaid Workaround][$i = ${_ssi}]]`); break; case "Farmyard": - if (V.Flag == 0) { - if (_Slave.assignment == "work as a farmhand") { res.pop(); continue; } + if (V.Flag === 0) { + if (_Slave.assignment === "work as a farmhand") { res.pop(); continue; } if (V.farmyard <= V.farmyardSlaves){ res.pop(); continue; } res.push(dividerAndImage(_Slave)); res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else if (V.Flag == 1) { + } else if (V.Flag === 1) { res.push(dividerAndImage(_Slave)); res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); } else { @@ -5272,7 +5277,7 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`[[${_slaveName}|Farmer Workaround][$i = ${_ssi}]]`); break; case "Servants' Quarters": - if (V.Flag == 0) { + if (V.Flag === 0) { if (V.servantsQuarters <= V.servantsQuartersSlaves) { res.pop(); continue; } if ((_Slave.devotion >= -20) || ((_Slave.devotion >= -50) && (_Slave.trust <= 20)) || (_Slave.trust < -20)) { res.push(dividerAndImage(_Slave)); @@ -5281,7 +5286,7 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`//${_Slave.slaveName} must be either more fearful of you or devoted to you//</div>`); continue; } - } else if (V.Flag == 1) { + } else if (V.Flag === 1) { res.push(dividerAndImage(_Slave)); res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); } else { @@ -5294,7 +5299,7 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`[[${_slaveName}|Stewardess Workaround][$i = ${_ssi}]]`); break; case "Master Suite": - if (V.Flag == 0) { + if (V.Flag === 0) { if (V.masterSuite <= V.masterSuiteSlaves) { res.pop(); continue; } if ((_Slave.devotion > 20) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50)) { res.push(dividerAndImage(_Slave)); @@ -5303,7 +5308,7 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`//${_Slave.slaveName} is not sufficiently broken for the master suite//</div>`); continue; } - } else if (V.Flag == 1) { + } else if (V.Flag === 1) { res.push(dividerAndImage(_Slave)); res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); } else { @@ -5316,8 +5321,8 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`[[${_slaveName}|Concubine Workaround][$i = ${_ssi}]]`); break; case "Cellblock": - if (_Slave.assignmentVisible != 1) { res.pop(); continue; } - if (V.Flag == 0) { + if (_Slave.assignmentVisible !== 1) { res.pop(); continue; } + if (V.Flag === 0) { if (V.cellblock <= V.cellblockSlaves) { res.pop(); continue; } if ((_Slave.devotion < -20 && _Slave.trust >= -20) || (_Slave.devotion < -50 && _Slave.trust >= -50)) { res.push(dividerAndImage(_Slave)); @@ -5326,7 +5331,7 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`//${_Slave.slaveName} is sufficiently broken in so that the cellblock would have no effect//</div>`); continue; } - } else if (V.Flag == 1) { + } else if (V.Flag === 1) { res.push(dividerAndImage(_Slave)); res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); } else { @@ -5339,10 +5344,10 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`[[${_slaveName}|Wardeness Workaround][$i = ${_ssi}]]`); break; case "Arcade": - if (V.Flag == 0) { - if (_Slave.assignment == "be confined in the arcade") { res.pop(); continue; } - if (V.arcade <= V.arcadeSlaves && V.arcadeUpgradeFuckdolls != 1) { res.pop(); continue; } - if ((_Slave.breedingMark != 1 || V.propOutcome == 0)) { + if (V.Flag === 0) { + if (_Slave.assignment === "be confined in the arcade") { res.pop(); continue; } + if (V.arcade <= V.arcadeSlaves && V.arcadeUpgradeFuckdolls !== 1) { res.pop(); continue; } + if ((_Slave.breedingMark !== 1 || V.propOutcome === 0)) { if (_Slave.indentureRestrictions <= 0) { res.push(dividerAndImage(_Slave)); res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); @@ -5360,14 +5365,14 @@ App.UI.slaveSummaryList = function (passageName) { } break; case "Pit": - if (V.Flag == 0) { - if ((_Slave.indentureRestrictions > 0) && (V.pitLethal == 1)) { + if (V.Flag === 0) { + if ((_Slave.indentureRestrictions > 0) && (V.pitLethal === 1)) { res.push(`//${_Slave.slaveName}'s indenture forbids lethal fights.//</div>`); continue; } else if (_Slave.indentureRestrictions > 1) { res.push(`//${_Slave.slaveName}'s indenture forbids fighting.//</div>`); continue; - } else if (_Slave.breedingMark == 1 && V.propOutcome == 1) { + } else if (_Slave.breedingMark === 1 && V.propOutcome === 1) { res.push(`//${_Slave.slaveName} may not participate in combat//</div>`); continue; } else { @@ -5380,7 +5385,7 @@ App.UI.slaveSummaryList = function (passageName) { } break; case "Coursing Association": - if (V.Flag == 0) { + if (V.Flag === 0) { res.push(dividerAndImage(_Slave)); res.push(`[[${_slaveName}|Assign][$i = ${_ssi}]]`); } else { @@ -5390,7 +5395,7 @@ App.UI.slaveSummaryList = function (passageName) { break; case "New Game Plus": res.push(dividerAndImage(_Slave)); - if (V.Flag == 0) { + if (V.Flag === 0) { res.push(`__''@@.pink;${_Slave.slaveName}@@''__`); } else { res.push(`__''@@.pink;${_Slave.slaveName}@@''__`); @@ -5398,7 +5403,7 @@ App.UI.slaveSummaryList = function (passageName) { break; case "Rules Slave Select": slaveImagePrinted = false; - if (V.Flag == 0) { + if (V.Flag === 0) { res.push(`__''[[${_slaveName}|Rules Slave Select Workaround][$activeSlave = $slaves[${_ssi}]]]''__`); } else { res.push(`__''[[${_slaveName}|Rules Slave Deselect Workaround][$activeSlave = $slaves[${_ssi}]]]''__`); @@ -5406,7 +5411,7 @@ App.UI.slaveSummaryList = function (passageName) { break; case "Rules Slave Exclude": slaveImagePrinted = false; - if (V.Flag == 0) { + if (V.Flag === 0) { res.push(`__''[[${_slaveName}|Rules Slave Exclude Workaround][$activeSlave = $slaves[${_ssi}]]]''__`); } else { res.push(`__''[[${_slaveName}|Rules Slave NoExclude Workaround][$activeSlave = $slaves[${_ssi}]]]''__`); @@ -5423,18 +5428,20 @@ App.UI.slaveSummaryList = function (passageName) { } SlaveStatClamp(_Slave); - _Slave.trust = Math.trunc(_Slave.trust), _Slave.devotion = Math.trunc(_Slave.devotion), _Slave.health = Math.trunc(_Slave.health); + _Slave.trust = Math.trunc(_Slave.trust); + _Slave.devotion = Math.trunc(_Slave.devotion); + _Slave.health = Math.trunc(_Slave.health); V.slaves[_ssi] = _Slave; res.push(' will '); - if ((_Slave.assignment == "rest") && (_Slave.health >= -20)) { + if ((_Slave.assignment === "rest") && (_Slave.health >= -20)) { res.push("''__@@.lawngreen;rest@@__''"); - } else if ((_Slave.assignment == "stay confined") && ((_Slave.devotion > 20) || ((_Slave.trust < -20) && (_Slave.devotion >= -20)) || ((_Slave.trust < -50) && (_Slave.devotion >= -50)))) { + } else if ((_Slave.assignment === "stay confined") && ((_Slave.devotion > 20) || ((_Slave.trust < -20) && (_Slave.devotion >= -20)) || ((_Slave.trust < -50) && (_Slave.devotion >= -50)))) { res.push("''__@@.lawngreen;stay confined.@@__''"); if (_Slave.sentence > 0) { res.push(`(${_Slave.sentence} weeks)`); } - } else if (_Slave.choosesOwnAssignment == 1) { + } else if (_Slave.choosesOwnAssignment === 1) { res.push('choose her own job'); } else { res.push(_Slave.assignment); @@ -5444,62 +5451,66 @@ App.UI.slaveSummaryList = function (passageName) { /** @type {string[]} */ let assignments = []; - if ((V.displayAssignments == 1) && (passageName == "Main") && (_Slave.ID != V.HeadGirl.ID) && (_Slave.ID != V.Recruiter.ID) && (_Slave.ID != V.Bodyguard.ID)) { - if (_Slave.assignment != "rest") { + if ((V.displayAssignments === 1) && (passageName === "Main") && (_Slave.ID !== V.HeadGirl.ID) && (_Slave.ID !== V.Recruiter.ID) && (_Slave.ID !== V.Bodyguard.ID)) { + if (_Slave.assignment !== "rest") { assignments.push(`<<link "Rest" "Main">><<= removeJob($slaves[${_ssi}], $slaves[${_ssi}].assignment)>><</link>>`); } else { assignments.push('Rest'); } - if (_Slave.assignment != "please you") { + if (_Slave.assignment !== "please you") { assignments.push(`<<link "Fucktoy" "Main">><<= assignJob($slaves[${_ssi}], "please you")>><</link>>`); } else { assignments.push('Fucktoy'); } - if (_Slave.indentureRestrictions <= 0 && (_Slave.breedingMark != 1 || V.propOutcome == 0)) { - if (_Slave.assignment != "work a glory hole") { + if (_Slave.indentureRestrictions <= 0 && (_Slave.breedingMark !== 1 || V.propOutcome === 0)) { + if (_Slave.assignment !== "work a glory hole") { assignments.push(`<<link "Gloryhole" "Main">><<= assignJob($slaves[${_ssi}], "work a glory hole")>><</link>>`); } else { assignments.push('Hole'); } } - if (_Slave.fuckdoll == 0) { /* NON-FUCKDOLL ASSIGNMENTS */ - if (_Slave.assignment != "take classes") { - if ((_Slave.intelligenceImplant < 15) && ((_Slave.devotion >= -20) || ((_Slave.trust < -20) && (_Slave.devotion >= -50)) || (_Slave.trust < -50)) && (_Slave.fetish != "mindbroken")) { + if (_Slave.fuckdoll === 0) { /* NON-FUCKDOLL ASSIGNMENTS */ + if (_Slave.assignment !== "take classes") { + if ((_Slave.intelligenceImplant < 15) && ((_Slave.devotion >= -20) || ((_Slave.trust < -20) && (_Slave.devotion >= -50)) || (_Slave.trust < -50)) && (_Slave.fetish !== "mindbroken")) { assignments.push(`<<link "Classes" "Main">><<= assignJob($slaves[${_ssi}], "take classes")>><</link>>`); + } else { + assignments.push('Classes'); } } else { - assignments.push(`Classes`); + assignments.push('Classes'); } - if (_Slave.assignment != "be a servant") { + if (_Slave.assignment !== "be a servant") { if (((_Slave.devotion >= -20) || ((_Slave.trust < -20) && (_Slave.devotion >= -50)) || (_Slave.trust < -50)) && canWalk(_Slave) && canSee(_Slave)) { assignments.push(`<<link "House Servant" "Main">><<= assignJob($slaves[${_ssi}], "be a servant")>><</link>>`); + } else { + assignments.push('House Servant'); } } else { assignments.push('House Servant'); } - if ((_Slave.assignment != "whore") && (_Slave.breedingMark != 1 || V.propOutcome == 0)) { + if ((_Slave.assignment !== "whore") && (_Slave.breedingMark !== 1 || V.propOutcome === 0)) { assignments.push(`<<link "Whore" "Main">><<= assignJob($slaves[${_ssi}], "whore")>><</link>>`); } else { assignments.push('Whore'); } - if ((_Slave.assignment != "serve the public") && (_Slave.breedingMark != 1 || V.propOutcome == 0)) { + if ((_Slave.assignment !== "serve the public") && (_Slave.breedingMark !== 1 || V.propOutcome === 0)) { assignments.push(`<<link "Public Servant" "Main">><<= assignJob($slaves[${_ssi}], "serve the public")>><</link>>`); } else { assignments.push('Public Servant'); } if ((_Slave.lactation > 0) || (_Slave.balls > 0)) { - if (_Slave.assignment != "get milked") { + if (_Slave.assignment !== "get milked") { assignments.push(`<<link "Milked" "Main">><<= assignJob($slaves[${_ssi}], "get milked")>><</link>>`); } else { assignments.push('Milked'); } } - if (_Slave.assignment != "stay confined") { + if (_Slave.assignment !== "stay confined") { assignments.push(`<<link "Confinement" "Main">><<= assignJob($slaves[${_ssi}], "stay confined")>><</link>>`); } else { assignments.push('Confinement'); } - if (_Slave.assignment != "choose her own job") { + if (_Slave.assignment !== "choose her own job") { assignments.push(`<<link "Let ${_Slave.object} choose" "Main">><<= assignJob($slaves[${_ssi}], "choose her own job")>><</link>>`); } else { assignments.push(`Let ${_Slave.object} choose`); @@ -5512,44 +5523,44 @@ App.UI.slaveSummaryList = function (passageName) { let _numFacilities = V.brothel + V.club + V.dairy + V.farmyard + V.servantsQuarters + V.masterSuite + V.spa + V.clinic + V.schoolroom + V.cellblock + V.arcade + V.HGSuite; if (_numFacilities > 0) { - if (passageName == "Main" || passageName == "Head Girl Suite" || passageName == "Spa" || passageName == "Brothel" || passageName == "Club" || passageName == "Arcade" || passageName == "Clinic" || passageName == "Schoolroom" || passageName == "Dairy" || passageName == "Farmyard" || passageName == "Servants' Quarters" || passageName == "Master Suite" || passageName == "Cellblock") { + if (passageName === "Main" || passageName === "Head Girl Suite" || passageName === "Spa" || passageName === "Brothel" || passageName === "Club" || passageName === "Arcade" || passageName === "Clinic" || passageName === "Schoolroom" || passageName === "Dairy" || passageName === "Farmyard" || passageName === "Servants' Quarters" || passageName === "Master Suite" || passageName === "Cellblock") { V.returnTo = passageName; res.push('<br>Transfer to: '); /** @type {string[]} */ - let transfers = [] - if (_Slave.assignment != "rest" && _Slave.assignment != "please you" && _Slave.assignment != "take classes" && _Slave.assignment != "be a servant" && _Slave.assignment != "whore" && _Slave.assignment != "serve the public" && _Slave.assignment != "get milked" && _Slave.assignment != "stay confined") { + let transfers = []; + if (_Slave.assignment !== "rest" && _Slave.assignment !== "please you" && _Slave.assignment !== "take classes" && _Slave.assignment !== "be a servant" && _Slave.assignment !== "whore" && _Slave.assignment !== "serve the public" && _Slave.assignment !== "get milked" && _Slave.assignment !== "stay confined") { transfers.push(`<<link "Penthouse" "Main">><<= removeJob($slaves[${_ssi}], $slaves[${_ssi}].assignment)>><</link>>`); } else { transfers.push('Penthouse'); } - if (V.arcade != 0) { - if (V.arcade > V.arcadeSlaves && (_Slave.indentureRestrictions <= 0) && (_Slave.breedingMark != 1 || V.propOutcome == 0)) { + if (V.arcade !== 0) { + if (V.arcade > V.arcadeSlaves && (_Slave.indentureRestrictions <= 0) && (_Slave.breedingMark !== 1 || V.propOutcome === 0)) { transfers.push(`[[Arcade|Assign][$assignTo = "Arcade", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ } else { transfers.push('Arcade'); } } - if (_Slave.fuckdoll == 0) { /* NON-FUCKDOLL FACILITIES */ - if (V.clinic != 0) { - if (V.clinic > V.clinicSlaves && (_Slave.health < 20 || (V.Nurse != 0 && ((_Slave.chem > 15 && V.clinicUpgradeFilters == 1) || (V.bellyImplants == 1 && _Slave.bellyImplant > -1) || (_Slave.pregKnown == 1 && (V.clinicSpeedGestation >= 0 || _Slave.pregControl == "speed up")) || (_Slave.pregAdaptation * 1000 < _Slave.bellyPreg || _Slave.preg > _Slave.pregData.normalBirth / 1.33))))) { + if (_Slave.fuckdoll === 0) { /* NON-FUCKDOLL FACILITIES */ + if (V.clinic !== 0) { + if (V.clinic > V.clinicSlaves && (_Slave.health < 20 || (V.Nurse !== 0 && ((_Slave.chem > 15 && V.clinicUpgradeFilters === 1) || (V.bellyImplants === 1 && _Slave.bellyImplant > -1) || (_Slave.pregKnown === 1 && (V.clinicSpeedGestation >= 0 || _Slave.pregControl === "speed up")) || (_Slave.pregAdaptation * 1000 < _Slave.bellyPreg || _Slave.preg > _Slave.pregData.normalBirth / 1.33))))) { transfers.push(`[[Clinic|Assign][$assignTo = "Clinic", $i =${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ } else { transfers.push('Clinic'); } } - if (V.masterSuite != 0) { + if (V.masterSuite !== 0) { if (V.masterSuite > V.masterSuiteSlaves && ((_Slave.devotion > 20) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50))) { transfers.push(`[[Master Suite|Assign][$assignTo = "Master Suite", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ } else { - transfers.push('Master Suite') + transfers.push('Master Suite'); } } - if (V.cellblock != 0) { + if (V.cellblock !== 0) { if (V.cellblock > V.cellblockSlaves && ((_Slave.devotion < -20 && _Slave.trust >= -20) || (_Slave.devotion < -50 && _Slave.trust >= -50))) { transfers.push(`[[Cellblock|Assign][$assignTo = "Cellblock", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ } else { @@ -5557,15 +5568,15 @@ App.UI.slaveSummaryList = function (passageName) { } } - if (V.schoolroom != 0) { - if (V.schoolroom > V.schoolroomSlaves && (_Slave.fetish != "mindbroken" && (_Slave.devotion >= -20 || (_Slave.devotion >= -50 && _Slave.trust < -20) || _Slave.trust < -50) && ((_Slave.intelligenceImplant < 30) || (_Slave.voice != 0 && _Slave.accent + V.schoolroomUpgradeLanguage > 2) || (_Slave.oralSkill <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.whoreSkill <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.entertainSkill <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.analSkill < 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.vagina >= 0 && _Slave.vaginalSkill < 10 + V.schoolroomUpgradeSkills * 20)))) { + if (V.schoolroom !== 0) { + if (V.schoolroom > V.schoolroomSlaves && (_Slave.fetish !== "mindbroken" && (_Slave.devotion >= -20 || (_Slave.devotion >= -50 && _Slave.trust < -20) || _Slave.trust < -50) && ((_Slave.intelligenceImplant < 30) || (_Slave.voice !== 0 && _Slave.accent + V.schoolroomUpgradeLanguage > 2) || (_Slave.oralSkill <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.whoreSkill <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.entertainSkill <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.analSkill < 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.vagina >= 0 && _Slave.vaginalSkill < 10 + V.schoolroomUpgradeSkills * 20)))) { transfers.push(`[[Schoolroom|Assign][$assignTo = "Schoolroom", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ } else { - transfers.push('Schoolroom') + transfers.push('Schoolroom'); } } - if (V.servantsQuarters != 0) { + if (V.servantsQuarters !== 0) { if (V.servantsQuarters > V.servantsQuartersSlaves && (canWalk(_Slave) && canSee(_Slave) && (_Slave.devotion >= -20 || (_Slave.devotion >= -50 && _Slave.trust <= 20) || _Slave.trust < -20))) { transfers.push(`[[Servants' Quarters|Assign][$assignTo = "Servants' Quarters", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ } else { @@ -5573,36 +5584,36 @@ App.UI.slaveSummaryList = function (passageName) { } } - if (V.brothel != 0) { - if (V.brothel > V.brothelSlaves && (((_Slave.devotion > 50) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50) || (_Slave.trust > 50)) && (_Slave.breedingMark != 1 || V.propOutcome == 0))) { + if (V.brothel !== 0) { + if (V.brothel > V.brothelSlaves && (((_Slave.devotion > 50) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50) || (_Slave.trust > 50)) && (_Slave.breedingMark !== 1 || V.propOutcome === 0))) { transfers.push(`[[Brothel|Assign][$assignTo = "Brothel", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ } else { - transfers.push('Brothel') + transfers.push('Brothel'); } } - if (V.club != 0) { - if (V.club > V.clubSlaves && (((_Slave.devotion > 50) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50) || (_Slave.trust > 50)) && (_Slave.breedingMark != 1 || V.propOutcome == 0))) { + if (V.club !== 0) { + if (V.club > V.clubSlaves && (((_Slave.devotion > 50) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50) || (_Slave.trust > 50)) && (_Slave.breedingMark !== 1 || V.propOutcome === 0))) { transfers.push(`[[Club|Assign][$assignTo = "Club", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ } else { - transfers.push('Club') + transfers.push('Club'); } } - if (V.dairy != 0) { + if (V.dairy !== 0) { let _dairySeed = V.bioreactorsXY + V.bioreactorsXX + V.bioreactorsHerm + V.bioreactorsBarren; if (V.dairy <= V.dairySlaves + _dairySeed) { transfers.push('Dairy'); - } else if (((_Slave.indentureRestrictions > 0) && (V.dairyRestraintsSetting > 1)) || ((_Slave.indentureRestrictions > 1) && (V.dairyRestraintsSetting > 0)) || (_Slave.breedingMark == 1 && V.propOutcome == 1 && V.dairyRestraintsSetting > 0) || ((V.dairyPregSetting > 0) && ((_Slave.bellyImplant != -1) || (_Slave.broodmother > 0)))) { + } else if (((_Slave.indentureRestrictions > 0) && (V.dairyRestraintsSetting > 1)) || ((_Slave.indentureRestrictions > 1) && (V.dairyRestraintsSetting > 0)) || (_Slave.breedingMark === 1 && V.propOutcome === 1 && V.dairyRestraintsSetting > 0) || ((V.dairyPregSetting > 0) && ((_Slave.bellyImplant !== -1) || (_Slave.broodmother > 0)))) { transfers.push('Dairy'); - } else if (((_Slave.lactation > 0) || (_Slave.balls > 0)) || ((V.dairyFeedersUpgrade == 1) && (V.dairyFeedersSetting > 0) && (V.dairySlimMaintainUpgrade == 0))) { + } else if (((_Slave.lactation > 0) || (_Slave.balls > 0)) || ((V.dairyFeedersUpgrade === 1) && (V.dairyFeedersSetting > 0) && (V.dairySlimMaintainUpgrade === 0))) { transfers.push(`[[Dairy|Assign][$assignTo = "Dairy", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ } else { - transfers.push('Dairy') + transfers.push('Dairy'); } } - if (V.farmyard != 0) { + if (V.farmyard !== 0) { if (V.farmyard > V.farmyardSlaves) { transfers.push(`[[Farmyard|Assign][$assignTo = "Farmyard", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ } else { @@ -5610,16 +5621,16 @@ App.UI.slaveSummaryList = function (passageName) { } } - if (V.spa != 0) { - if (V.spa > V.spaSlaves && ((_Slave.devotion >= -20 || _Slave.fetish == "mindbroken") && (_Slave.health < 20 || _Slave.trust <= 60 || _Slave.devotion <= 60 || _Slave.fetish == "mindbroken" || _Slave.sexualFlaw !== "none" || _Slave.behavioralFlaw !== "none"))) { + if (V.spa !== 0) { + if (V.spa > V.spaSlaves && ((_Slave.devotion >= -20 || _Slave.fetish === "mindbroken") && (_Slave.health < 20 || _Slave.trust <= 60 || _Slave.devotion <= 60 || _Slave.fetish === "mindbroken" || _Slave.sexualFlaw !== "none" || _Slave.behavioralFlaw !== "none"))) { transfers.push(`[[Spa|Assign][$assignTo = "Spa", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ } else { transfers.push('Spa'); } } - if (V.nursery != 0) { - if (V.nurseryNannies > V.nurserySlaves && (_Slave.devotion > 20 || _Slave.trust > 20 || _Slave.fetish == "mindbroken")) { + if (V.nursery !== 0) { + if (V.nurseryNannies > V.nurserySlaves && (_Slave.devotion > 20 || _Slave.trust > 20 || _Slave.fetish === "mindbroken")) { transfers.push(`[[Nursery|Assign][$assignTo = "Nursery", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ } else { transfers.push('Nursery'); @@ -5631,7 +5642,7 @@ App.UI.slaveSummaryList = function (passageName) { } }/* closes _numFacilities */ - if ((passageName != 'Main') || (V.Flag !== undefined) || (V.useSlaveSummaryTabs == 0) || (tabName == "all")) { + if ((passageName !== 'Main') || (V.Flag !== undefined) || (V.useSlaveSummaryTabs === 0) || (tabName === "all")) { res.push(`<span id="slave-${slaves[_ssi].ID}"> </span>`); } res.push('<br/>'); @@ -5651,13 +5662,13 @@ App.UI.slaveSummaryList = function (passageName) { continue; case "HG Select": if (setup.HGCareers.includes(_Slave.career) || (_Slave.skillHG >= V.masteredXP)) { - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); res.push('@@.lime;Has applicable career experience.@@'); } break; case "Head Girl Suite": - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); - if (V.Flag == 0) { + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); + if (V.Flag === 0) { res.push(`[[Send her to live with your Head Girl|Assign][$i = ${_ssi}]]`); } else { res.push(`[[Bring her out of the Head Girl's suite|Retrieve][$i = ${_ssi}]]`); @@ -5665,21 +5676,21 @@ App.UI.slaveSummaryList = function (passageName) { break; case "Recruiter Select": if (setup.recruiterCareers.includes(_Slave.career) || (_Slave.skillRC >= V.masteredXP)) { - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); res.push('@@.lime;Has applicable career experience.@@'); } break; case "BG Select": if (setup.bodyguardCareers.includes(_Slave.career) || (_Slave.skillBG >= V.masteredXP)) { - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); res.push('@@.lime;Has applicable career experience.@@'); } break; case "Spa": - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); - if (V.Flag == 0) { + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); + if (V.Flag === 0) { res.push(`<<link "Send ${_Slave.object} to $spaName" "Assign">><<set $i = ${_ssi}>><</link>>`); - } else if (V.Flag == 1) { + } else if (V.Flag === 1) { res.push(`<<link "Remove ${_Slave.object} from ${V.spaName}" "Retrieve">><<set $i = ${_ssi}>><</link>>`); } else { res.push('[[Change or remove Attendant|Attendant Select]]'); @@ -5687,15 +5698,15 @@ App.UI.slaveSummaryList = function (passageName) { break; case "Attendant Select": if (setup.attendantCareers.includes(_Slave.career) || (_Slave.skillAT >= V.masteredXP)) { - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); res.push('@@.lime;Has applicable career experience.@@'); } break; case "Nursery": - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); - if (V.Flag == 0) { + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); + if (V.Flag === 0) { res.push(`<<link "Send ${_Slave.object} to $nurseryName" "Assign">><<set $i = ${_ssi}>><</link>>`); - } else if (V.Flag == 1) { + } else if (V.Flag === 1) { res.push(`<<link "Remove ${_Slave.object} from $nurseryName" "Retrieve">><<set $i = ${_ssi}>><</link>>`); } else { res.push('[[Change or remove Matron|Matron Select]]'); @@ -5703,15 +5714,15 @@ App.UI.slaveSummaryList = function (passageName) { break; case "Matron Select": if (setup.matronCareers.includes(_Slave.career) || (_Slave.skillMT >= V.masteredXP)) { - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); res.push('@@.lime;Has applicable career experience.@@'); } break; case "Brothel": - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); - if (V.Flag == 0) { + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); + if (V.Flag === 0) { res.push(`<<link "Send ${_Slave.object} to $brothelName" "Assign">><<set $i = ${_ssi}>><</link>>`); - } else if (V.Flag == 1) { + } else if (V.Flag === 1) { res.push(`<<link "Release ${_Slave.object} from $brothelName" "Retrieve">><<set $i = ${_ssi}>><</link>>`); } else { res.push('[[Change or remove Madam|Madam Select]]'); @@ -5719,23 +5730,23 @@ App.UI.slaveSummaryList = function (passageName) { break; case "Madam Select": if (setup.madamCareers.includes(_Slave.career) || (_Slave.skillMD >= V.masteredXP)) { - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); res.push('@@.lime;Has applicable career experience.@@'); } break; case "Club": - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); - if (V.Flag == 0) { + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); + if (V.Flag === 0) { res.push(`<<link "Send ${_Slave.object} to $clubName" "Assign">><<set $i = ${_ssi}>><</link>>`); - } else if (V.Flag == 1) { + } else if (V.Flag === 1) { res.push(`<<link "Remove ${_Slave.object} from $clubName" "Retrieve">><<set $i = ${_ssi}>><</link>>`); } else { res.push('[[Change or remove DJ|DJ Select]]'); } break; case "Arcade": - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); - if (V.Flag == 0) { + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); + if (V.Flag === 0) { res.push(`<<link "Confine ${_Slave.object} in $arcadeName" "Assign">><<set $i = ${_ssi}>><</link>>`); } else { res.push(`<<link "Release ${_Slave.object} from $arcadeName" "Retrieve">><<set $i = ${_ssi}>><</link>>`); @@ -5743,18 +5754,18 @@ App.UI.slaveSummaryList = function (passageName) { break; case "DJ Select": if (setup.DJCareers.includes(_Slave.career) || (_Slave.skillDJ >= V.masteredXP)) { - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); res.push('@@.lime;Has applicable career experience.@@'); } break; case "Clinic": - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); - if (V.clinicUpgradeScanner == 1) { + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); + if (V.clinicUpgradeScanner === 1) { res.push(`@@.cyan;Estimated DNA error value: ${Math.ceil(_Slave.chem / 10)}@@`); } - if (V.Flag == 0) { + if (V.Flag === 0) { res.push(`<<link "Send ${_Slave.object} to $clinicName" "Assign">><<set $i = ${_ssi}>><</link>>`); - } else if (V.Flag == 1) { + } else if (V.Flag === 1) { res.push(`<<link "Take ${_Slave.object} out of $clinicName" "Retrieve">><<set $i = ${_ssi}>><</link>>`); } else { res.push('[[Change or remove Nurse|Nurse Select]]'); @@ -5762,15 +5773,15 @@ App.UI.slaveSummaryList = function (passageName) { break; case "Nurse Select": if (setup.nurseCareers.includes(_Slave.career) || (_Slave.skillNU >= V.masteredXP)) { - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); res.push('@@.lime;Has applicable career experience.@@'); } break; case "Schoolroom": - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); - if (V.Flag == 0) { + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); + if (V.Flag === 0) { res.push(`<<link "Assign ${_Slave.object} to $schoolroomName" "Assign">><<set $i = ${_ssi}>><</link>>`); - } else if (V.Flag == 1) { + } else if (V.Flag === 1) { res.push(`<<link "Release ${_Slave.object} from $schoolroomName" "Retrieve">><<set $i = ${_ssi}>><</link>>`); } else { res.push('[[Change or remove Schoolteacher|Schoolteacher Select]]'); @@ -5778,15 +5789,15 @@ App.UI.slaveSummaryList = function (passageName) { break; case "Schoolteacher Select": if (setup.schoolteacherCareers.includes(_Slave.career) || (_Slave.skillTE >= V.masteredXP)) { - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); res.push('@@.lime;Has applicable career experience.@@'); } break; case "Dairy": - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); - if (V.Flag == 0) { + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); + if (V.Flag === 0) { res.push(`<<link "Send ${_Slave.object} to $dairyName" "Assign">><<set $i = ${_ssi}>><</link>>`); - } else if (V.Flag == 1) { + } else if (V.Flag === 1) { res.push(`<<link "Release ${_Slave.object} from $dairyName" "Retrieve">><<set $i = ${_ssi}>><</link>>`); } else { res.push('[[Change or remove Milkmaid|Milkmaid Select]]'); @@ -5794,15 +5805,15 @@ App.UI.slaveSummaryList = function (passageName) { break; case "Milkmaid Select": if (setup.milkmaidCareers.includes(_Slave.career) || (_Slave.skillMM >= V.masteredXP)) { - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); res.push('@@.lime;Has applicable career experience.@@'); } break; case "Farmyard": - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); - if (V.Flag == 0) { + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); + if (V.Flag === 0) { res.push(`<<link "Send ${_Slave.object} to $farmyardName" "Assign">><<set $i = ${_ssi}>><</link>>`); - } else if (V.Flag == 1) { + } else if (V.Flag === 1) { res.push(`<<link "Release ${_Slave.object} from $farmyardName" "Retrieve">><<set $i = ${_ssi}>><</link>>`); } else { res.push('[[Change or remove Farmer|Farmer Select]]'); @@ -5810,15 +5821,15 @@ App.UI.slaveSummaryList = function (passageName) { break; case "Farmer Select": if (setup.farmerCareers.includes(_Slave.career) || (_Slave.skillFA >= V.masteredXP)) { - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); res.push('@@.lime;Has applicable career experience.@@'); } break; case "Servants' Quarters": - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); - if (V.Flag == 0) { + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); + if (V.Flag === 0) { res.push(`<<link "Assign ${_Slave.object} to $servantsQuartersName" "Assign">><<set $i = ${_ssi}>><</link>>`); - } else if (V.Flag == 1) { + } else if (V.Flag === 1) { res.push(`<<link "Release ${_Slave.object} from $servantsQuartersName" "Retrieve">><<set $i = ${_ssi}>><</link>>`); } else { res.push('[[Change or remove Stewardess|Stewardess Select]]'); @@ -5826,25 +5837,25 @@ App.UI.slaveSummaryList = function (passageName) { break; case "Stewardess Select": if (setup.stewardessCareers.includes(_Slave.career) || (_Slave.skillST >= V.masteredXP)) { - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); res.push('@@.lime;Has applicable career experience.@@'); } break; case "Master Suite": - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); - if (V.Flag == 0) { + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); + if (V.Flag === 0) { res.push(`<<link "Add ${_Slave.object} to $masterSuiteName" "Assign">><<set $i = ${_ssi}>><</link>>`); - } else if (V.Flag == 1) { + } else if (V.Flag === 1) { res.push(`<<link "Send ${_Slave.object} out of $masterSuiteName" "Retrieve">><<set $i = ${_ssi}>><</link>>`); } else { res.push('[[Change or remove Concubine|Concubine Select]]'); } break; case "Cellblock": - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); - if (V.Flag == 0) { + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); + if (V.Flag === 0) { res.push(`<<link "Confine ${_Slave.object} in $cellblockName" "Assign">><<set $i = ${_ssi}>><</link>>`); - } else if (V.Flag == 1) { + } else if (V.Flag === 1) { res.push(`<<link "Release ${_Slave.object} from $cellblockName" "Retrieve">><<set $i = ${_ssi}>><</link>>`); } else { res.push('[[Change or remove Wardeness|Wardeness Select]]'); @@ -5852,12 +5863,12 @@ App.UI.slaveSummaryList = function (passageName) { break; case "Wardeness Select": if (setup.wardenessCareers.includes(_Slave.career) || (_Slave.skillWA >= V.masteredXP)) { - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); res.push('@@.lime;Has applicable career experience.@@'); } break; case "New Game Plus": - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); if (V.Flag === 0) { res.push(`<<link "Add to import list" "New Game Plus">> <<set $slavesToImport += 1,$Flag = 1>> @@ -5871,17 +5882,17 @@ App.UI.slaveSummaryList = function (passageName) { } break; case "Matchmaking": - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); res.push(`[[Match them|Matchmaking][$subSlave = $slaves[${_ssi}]]]`); break; case "Dinner Party Preparations": - res.push('<br>' + (V.seeImages != 1 || V.seeSummaryImages != 1 || V.imageChoice == 1) ? ' ' : ''); + res.push('<br>' + (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) ? ' ' : ''); res.push(`[[Make her the main course|Dinner Party Execution][$activeSlave = $slaves[${_ssi}]]]`); break; } } return res.join(""); -} +}; /** * Adds/removes a slave with the given id to/from the personal attention array diff --git a/src/js/storyJS.js b/src/js/storyJS.js index 14f437dfa6f544079e98735c26dbf5f903e401dc..ee10995deebd21051cfeaeb666886a75c955ac3b 100644 --- a/src/js/storyJS.js +++ b/src/js/storyJS.js @@ -25,10 +25,10 @@ window.isSexuallyPure = /** @param {App.Entity.SlaveState} slave */ function (sl } }; if (typeof interpolate === "undefined") { - var interpolate = function(x0,y0,x1,y1,x) { - if(x <= x0) { + const interpolate = function(x0,y0,x1,y1,x) { + if (x <= x0) { return y0; - } else if(x >= x1) { + } else if (x >= x1) { return y1; } else { return (x - x0) * ((y1 - y0) / (x1 - x0)) + y0; @@ -38,7 +38,7 @@ if (typeof interpolate === "undefined") { } window.removeFromArray = function(arr, val) { - for (var i = 0; i < arr.length; i++) { + for (let i = 0; i < arr.length; i++) { if (val === arr[i]) return arr.splice(i,1); } @@ -46,7 +46,7 @@ window.removeFromArray = function(arr, val) { }; window.filterInPlace = function(arr, callback, thisArg) { - var j = 0; + let j = 0; arr.forEach(function(e, i) { if (callback.call(thisArg, e, i, arr)) @@ -141,8 +141,8 @@ window.relationTargetWord = /** @param {App.Entity.SlaveState} slave */ function }; window.milkAmount = /** @param {App.Entity.SlaveState} slave */ function (slave) { - var milk; - var calcs; + let milk; + let calcs; if (!slave) { return null; } else { @@ -188,8 +188,8 @@ window.milkAmount = /** @param {App.Entity.SlaveState} slave */ function (slave) }; window.cumAmount = /** @param {App.Entity.SlaveState} slave */ function (slave) { - var cum = 0; - var calcs = 0; + let cum = 0; + let calcs = 0; if (!slave) { return null; } else { @@ -320,7 +320,7 @@ window.lispReplace = function (text) { window.repGainSacrifice = /** @param {App.Entity.SlaveState} slave */ function (slave, arcology) { slave = slave || State.variables.activeSlave; arcology = arcology || State.variables.arcologies[0]; - if(!slave || !arcology || arcology.FSAztecRevivalist === "unset" || arcology.FSAztecRevivalist <= 0) { + if (!slave || !arcology || arcology.FSAztecRevivalist === "unset" || arcology.FSAztecRevivalist <= 0) { return 0; } return Math.ceil( @@ -329,25 +329,25 @@ window.repGainSacrifice = /** @param {App.Entity.SlaveState} slave */ function ( }; window.bodyguardSuccessorEligible = /** @param {App.Entity.SlaveState} slave */ function (slave) { - if(!slave) { return false; } + if (!slave) { return false; } 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)); }; window.ngUpdateGenePool = function(genePool) { - var transferredSlaveIds = (State.variables.slaves || []) + const transferredSlaveIds = (State.variables.slaves || []) .filter(function(s) { return s.ID >= 1200000; }) .map(function(s) { return s.ID - 1200000; }); return (genePool || []) .filter(function(s) { return transferredSlaveIds.indexOf(s.ID) >= 0; }) .map(function(s) { - var result = jQuery.extend(true, {}, s); + const result = jQuery.extend(true, {}, s); result.ID += 1200000; return result; }); }; window.ngUpdateMissingTable = function(missingTable) { - var newTable = {}; + const newTable = {}; (State.variables.slaves || []) .forEach(s => ([s.pregSource+1200000,s.mother+1200000,s.father+1200000] @@ -361,7 +361,7 @@ window.ngUpdateMissingTable = function(missingTable) { }; window.toJson = function(obj) { - var jsontext = JSON.stringify(obj); + let jsontext = JSON.stringify(obj); jsontext = jsontext.replace(/^{/,""); jsontext = jsontext.replace(/}$/,""); return jsontext; @@ -369,26 +369,26 @@ window.toJson = function(obj) { window.nippleColor = /** @param {App.Entity.SlaveState} slave */ function (slave) { slave = slave || State.variables.activeSlave; - if(slave.skin === 'tanned' || slave.skin === 'fair') { - if(slave.preg > slave.pregData.normalBirth/4 || (slave.birthsTotal > 0 && slave.lactation > 0)) { + if (slave.skin === 'tanned' || slave.skin === 'fair') { + if (slave.preg > slave.pregData.normalBirth/4 || (slave.birthsTotal > 0 && slave.lactation > 0)) { return 'dark brown'; } else { return 'pink'; } - } else if((slave.skin === 'pale' || slave.race === 'white')) { - if(slave.preg > slave.pregData.normalBirth/4 || (slave.birthsTotal > 0 && slave.lactation > 0)) { + } else if ((slave.skin === 'pale' || slave.race === 'white')) { + if (slave.preg > slave.pregData.normalBirth/4 || (slave.birthsTotal > 0 && slave.lactation > 0)) { return 'brown'; } else { return 'pink'; } - } else if((slave.skin === 'brown' || slave.race === 'black')) { - if(slave.preg > slave.pregData.normalBirth/4 || (slave.birthsTotal > 0 && slave.lactation > 0)) { + } else if ((slave.skin === 'brown' || slave.race === 'black')) { + if (slave.preg > slave.pregData.normalBirth/4 || (slave.birthsTotal > 0 && slave.lactation > 0)) { return 'black'; } else { return 'dark brown'; } } else { - if(slave.preg > slave.pregData.normalBirth/4 || (slave.birthsTotal > 0 && slave.lactation > 0)) { + if (slave.preg > slave.pregData.normalBirth/4 || (slave.birthsTotal > 0 && slave.lactation > 0)) { return 'dark brown'; } else { return 'brown'; @@ -397,15 +397,15 @@ window.nippleColor = /** @param {App.Entity.SlaveState} slave */ function (slave }; window.overpowerCheck = /** @param {App.Entity.SlaveState} slave */ function (slave, PC) { - var strength; + let strength; - if(State.variables.arcologies[0].FSPhysicalIdealist !== "unset") { - if(PC.title === 1) { + if (State.variables.arcologies[0].FSPhysicalIdealist !== "unset") { + if (PC.title === 1) { strength = 130; } else { strength = 100; } - } else if(PC.title === 1) { + } else if (PC.title === 1) { strength = 50; } else { strength = 30; @@ -422,11 +422,11 @@ window.overpowerCheck = /** @param {App.Entity.SlaveState} slave */ function (sl * @returns {number[]} */ window.impregnatedBy = function(slave) { - var IDArray = []; + const IDArray = []; if (!Array.isArray(slave.womb)) { WombInit(slave); } - for (var i = 0; i < slave.womb.length; i++) { + for (let i = 0; i < slave.womb.length; i++) { IDArray.push(slave.womb[i].fatherID); } return IDArray; @@ -640,7 +640,7 @@ window.printTrinkets = function printTrinkets() { let trinketString = []; let plurals = false; - for (let trinketDesc in trinkets) { + for (const trinketDesc in trinkets) { if (trinkets[trinketDesc] === 1) { trinketString.push(trinketDesc); } else if (trinkets[trinketDesc] > 1) { diff --git a/src/js/utilJS.js b/src/js/utilJS.js index 98279ec9e7cb5fe73c1084f01f1d589d1fd47241..641d23b34e4556269332e5e05bfab11960577eee 100644 --- a/src/js/utilJS.js +++ b/src/js/utilJS.js @@ -465,6 +465,7 @@ As a categorizer <</if>> <<print $cats.muscleCat.cat(_Slave.muscles)>> */ + window.Categorizer = function() { this.cats = Array.prototype.slice.call(arguments) .filter(function(e, i, a) { @@ -477,6 +478,7 @@ window.Categorizer = function() { return b[0] - a[0]; /* reverse sort */ }); }; + window.Categorizer.prototype.cat = function(val, def) { let result = def; if (typeof val === 'number' && !isNaN(val)) { @@ -495,21 +497,130 @@ window.Categorizer.prototype.cat = function(val, def) { return result; }; -window.commaNum = function(s) { - if (!s) { - return 0; +window.num = function(x) { + const V = State.variables; + let max = V.showNumbersMax; + + function commaNum(s) { + if (!s) { + return 0; + } + if (State.variables.formatNumbers !== 1) { + return s; + } else { + return s.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); + } } - if (State.variables.formatNumbers !== 1) { - return s; + + if (V.showNumbers !== 2) { + if (x === 0) { + return 'zero'; + } + + let ONE_TO_NINETEEN = [ + 'one', 'two', 'three', 'four', 'five', + 'six', 'seven', 'eight', 'nine', 'ten', + 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', + 'sixteen', 'seventeen', 'eighteen', 'nineteen', + ]; + + let TENS = [ + 'ten', 'twenty', 'thirty', 'forty', 'fifty', + 'sixty', 'seventy', 'eighty', 'ninety', + ]; + + let SCALES = ['thousand', 'million', 'billion', 'trillion']; + + // helper function for use with Array.filter + function isTruthy(item) { + return !!item; + } + + // convert a number into "chunks" of 0-999 + function chunk(number) { + let thousands = []; + + while (number > 0) { + thousands.push(number % 1000); + number = Math.floor(number / 1000); + } + + return thousands; + } + + // translate a number from 1-999 into English + function inEnglish(number) { + let hundreds; + let tens; + let ones; + let words = []; + + if (number < 20) { + return ONE_TO_NINETEEN[number - 1]; // may be undefined + } + + if (number < 100) { + ones = number % 10; + tens = number / 10 | 0; // equivalent to Math.floor(number / 10) + + words.push(TENS[tens - 1]); + words.push(inEnglish(ones)); + + return words.filter(isTruthy).join('-'); + } + + hundreds = number / 100 | 0; + words.push(inEnglish(hundreds)); + words.push('hundred'); + words.push(inEnglish(number % 100)); + + return words.filter(isTruthy).join(' '); + } + + // append the word for a scale. Made for use with Array.map + function appendScale(chunk, exp) { + let scale; + if (!chunk) { + return null; + } + scale = SCALES[exp - 1]; + return [chunk, scale].filter(isTruthy).join(' '); + } + + let string = chunk(x) + .map(inEnglish) + .map(appendScale) + .filter(isTruthy) + .reverse() + .join(' '); + + if (V.showNumbers === 1) { + if (x <= max) { + if (x > 0) { + return string; + } else { + return `negative ${ string}`; + } + } else { + return commaNum(x); + } + } else { + if (x > 0) { + return string; + } else { + return `negative ${ string}`; + } + } + } else { + return commaNum(x); } - return s.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); }; window.cashFormat = function(s) { if (!s) { s = 0; } - return `¤${ commaNum(s)}`; + return `¤${ num(s)}`; }; window.repFormat = function(s) { @@ -517,11 +628,11 @@ window.repFormat = function(s) { /* if (!s) { s = 0; }*/ if (V.cheatMode === 1 || V.debugMode === 1) { if (s > 0) { - return `@@.green;${ commaNum(Math.round(s * 100) / 100) } rep@@`; + return `@@.green;${ num(Math.round(s * 100) / 100) } rep@@`; } else if (s < 0) { - return `@@.red;${ commaNum(Math.round(s * 100) / 100) } rep@@`; + return `@@.red;${ num(Math.round(s * 100) / 100) } rep@@`; } else { - return `${commaNum(Math.round(s * 100) / 100) } rep`; + return `${num(Math.round(s * 100) / 100) } rep`; } } else { /* In order to calculate just how much any one category matters so we can show a "fuzzy" symbolic value to the player, we need to know how "busy" reputation was this week. To calculate this, I ADD income to expenses. Why? 100 - 100 and 10000 - 10000 BOTH are 0, but a +50 event matters a lot more in the first case than the second. I exclude overflow from the calculation because it's not a "real" expense for our purposes, and divide by half just to make percentages a bit easier. */ @@ -553,6 +664,22 @@ window.repFormat = function(s) { } }; +window.massFormat = function (s) { + if (!s) { + s = 0; + } + if (s >= 1000) { + s = num(Math.trunc(s / 1000)); + if (s !== 1) { + return `${s} tons`; + } else { + return `${s} ton`; + } + } else { + return `${num(s)} kg`; + } +}; + window.budgetLine = function(category, title) { let income; let expenses; @@ -604,22 +731,6 @@ window.budgetLine = function(category, title) { } }; -window.massFormat = function(s) { - if (!s) { - s = 0; - } - if (s >= 1000) { - s = commaNum(Math.trunc(s / 1000)); - if (s !== 1) { - return `${s} tons`; - } else { - return `${s} ton`; - } - } else { - return `${commaNum(s)} kg`; - } -}; - window.isFloat = function(n) { return n === +n && n !== (n|0); }; @@ -628,115 +739,6 @@ window.isInt = function(n) { return n === +n && n === (n|0); }; -window.numberWithCommas = function(x) { - return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); -}; - -window.numberToWords = function(x) { - const V = State.variables; - let max = V.showNumbersMax; - - if (V.showNumbers !== 2) { - if (x === 0) { - return 'zero'; - } - - let ONE_TO_NINETEEN = [ - 'one', 'two', 'three', 'four', 'five', - 'six', 'seven', 'eight', 'nine', 'ten', - 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', - 'sixteen', 'seventeen', 'eighteen', 'nineteen', - ]; - - let TENS = [ - 'ten', 'twenty', 'thirty', 'forty', 'fifty', - 'sixty', 'seventy', 'eighty', 'ninety', - ]; - - let SCALES = ['thousand', 'million', 'billion', 'trillion']; - - // helper function for use with Array.filter - function isTruthy(item) { - return !!item; - } - - // convert a number into "chunks" of 0-999 - function chunk(number) { - let thousands = []; - - while (number > 0) { - thousands.push(number % 1000); - number = Math.floor(number / 1000); - } - - return thousands; - } - - // translate a number from 1-999 into English - function inEnglish(number) { - let hundreds; let tens; let ones; let words = []; - - if (number < 20) { - return ONE_TO_NINETEEN[number - 1]; // may be undefined - } - - if (number < 100) { - ones = number % 10; - tens = number / 10 | 0; // equivalent to Math.floor(number / 10) - - words.push(TENS[tens - 1]); - words.push(inEnglish(ones)); - - return words.filter(isTruthy).join('-'); - } - - hundreds = number / 100 | 0; - words.push(inEnglish(hundreds)); - words.push('hundred'); - words.push(inEnglish(number % 100)); - - return words.filter(isTruthy).join(' '); - } - - // append the word for a scale. Made for use with Array.map - function appendScale(chunk, exp) { - let scale; - if (!chunk) { - return null; - } - scale = SCALES[exp - 1]; - return [chunk, scale].filter(isTruthy).join(' '); - } - - let string = chunk(x) - .map(inEnglish) - .map(appendScale) - .filter(isTruthy) - .reverse() - .join(' '); - - if (V.showNumbers === 1) { - if (x <= max) { - if (x > 0) { - return string; - } else { - return `negative ${ string}`; - } - } else { - return commaNum(x); - } - } else { - if (x > 0) { - return string; - } else { - return `negative ${ string}`; - } - } - } else { - return commaNum(x); - } -}; - window.jsRandom = function(min, max) { return Math.floor(Math.random()*(max-min+1)+min); }; @@ -1048,16 +1050,16 @@ window.induceLactation = /** @param {App.Entity.SlaveState} slave */ function in window.ResearchLabStockPile = function() { const V = State.variables; return `__Stockpile__ - Prosthetics interfaces: ${commaNum(V.stockpile.basicPLimbInterface + V.stockpile.advPLimbInterface)} + Prosthetics interfaces: ${num(V.stockpile.basicPLimbInterface + V.stockpile.advPLimbInterface)} Basic : $stockpile.basicPLimbInterface Advanced: $stockpile.advPLimbInterface - Limbs: ${commaNum(V.stockpile.basicPLimb + V.stockpile.advSexPLimb + V.stockpile.advGracePLimb + V.stockpile.advCombatPLimb + V.stockpile.cyberneticPLimb)} + Limbs: ${num(V.stockpile.basicPLimb + V.stockpile.advSexPLimb + V.stockpile.advGracePLimb + V.stockpile.advCombatPLimb + V.stockpile.cyberneticPLimb)} Basic: $stockpile.basicPLimb Sex: $stockpile.advSexPLimb Beauty: $stockpile.advGracePLimb Combat: $stockpile.advCombatPLimb Cybernetic: $stockpile.cyberneticPLimb - Implants: ${commaNum(V.stockpile.ocularImplant + V.stockpile.cochlearImplant + V.stockpile.erectileImplant)} + Implants: ${num(V.stockpile.ocularImplant + V.stockpile.cochlearImplant + V.stockpile.erectileImplant)} Ocular: $stockpile.ocularImplant Cochlear: $stockpile.cochlearImplant // Erectile: $stockpile.erectileImplant// @@ -1364,7 +1366,7 @@ window.SkillIncrease = (function() { window.upgradeMultiplierArcology = function() { const V = State.variables; - if (V.PC.career === "engineer" || (V.arcologies[0].FSRestartDecoration >= 100 && V.eugenicsFullControl === 0) ) { + if (V.PC.career === "engineer" || (V.arcologies[0].FSRestartDecoration >= 100 && V.eugenicsFullControl === 0)) { return 0.6; } else if (V.PC.engineering <= -100) { return 1.5; @@ -1386,10 +1388,70 @@ window.upgradeMultiplierArcology = function() { return 0.90; } else if (V.PC.engineering <= 75) { return 0.85; - } else if (V.PC.engineering < 100) { - return 0.83; - } else if (V.PC.engineering >= 100 || V.PC.career === "arcology owner") { + } else if (V.PC.engineering <= 100) { return 0.80; + } else { + return 0.75; + } +}; + +window.upgradeMultiplierMedicine = function() { + const V = State.variables; + if (V.PC.career === "medicine" || (V.arcologies[0].FSRestartDecoration >= 100 && V.eugenicsFullControl === 0)) { + return 0.6; + } else if (V.PC.medicine <= -100) { + return 1.5; + } else if (V.PC.medicine <= -75) { + return 1.35; + } else if (V.PC.medicine <= -50) { + return 1.25; + } else if (V.PC.medicine <= -25) { + return 1.15; + } else if (V.PC.medicine < 0) { + return 1.10; + } else if (V.PC.medicine === 0) { + return 1; + } else if (V.PC.medicine <= 10) { + return 0.97; + } else if (V.PC.medicine <= 25) { + return 0.95; + } else if (V.PC.medicine <= 50) { + return 0.90; + } else if (V.PC.medicine <= 75) { + return 0.85; + } else if (V.PC.medicine <= 100) { + return 0.80; + } else { + return 0.75; + } +}; + +window.upgradeMultiplierTrade = function() { + const V = State.variables; + if (V.PC.trading <= -100) { + return 1.5; + } else if (V.PC.trading <= -75) { + return 1.35; + } else if (V.PC.trading <= -50) { + return 1.25; + } else if (V.PC.trading <= -25) { + return 1.15; + } else if (V.PC.trading < 0) { + return 1.10; + } else if (V.PC.trading === 0) { + return 1; + } else if (V.PC.trading <= 10) { + return 0.97; + } else if (V.PC.trading <= 25) { + return 0.95; + } else if (V.PC.trading <= 50) { + return 0.90; + } else if (V.PC.trading <= 75) { + return 0.85; + } else if (V.PC.trading <= 100) { + return 0.80; + } else { + return 0.75; } }; diff --git a/src/js/walkPastJS.js b/src/js/walkPastJS.js index 3dd022e939fa54243c9cf37638619b625bf9655a..d2ed0f66621b58703a855d96cba72353ae4885c9 100644 --- a/src/js/walkPastJS.js +++ b/src/js/walkPastJS.js @@ -1482,12 +1482,12 @@ window.walkPasts = function(slave, _seed) { if (canDoAnal(slave) || canDoVaginal(slave)) { t += `riding one customer's dick while ${he} gives another a blowjob.`; } else { - t += "deep throating a pair of customer's dicks."; + t += `deep throating a pair of customer's dicks.`; } } else if (_seed > 60 && slave.amp !== 1) { - t += "sucking one customer's cock while giving another a handjob."; + t += `sucking one customer's cock while giving another a handjob.`; } else if (_seed > 40) { - t += "eating out one customer's cunt while another "; + t += `eating out one customer's cunt while another `; if (canDoAnal(slave) || canDoVaginal(slave)) { t += `uses a strap-on on ${him}.`; } else { @@ -1495,40 +1495,40 @@ window.walkPasts = function(slave, _seed) { } } else if (_seed > 20) { if (canDoAnal(slave) || canDoVaginal(slave)) { - t += "getting pounded by "; + t += `getting pounded by `; } else { - t += "amusing "; + t += `amusing `; } - t += "two women wearing strap-ons."; + t += `two women wearing strap-ons.`; } else { if (canDoAnal(slave) || canDoVaginal(slave)) { - t += "being double penetrated by "; + t += `being double penetrated by `; } else { t += `using ${his} body to please `; } - t += "a pair of customers."; + t += `a pair of customers.`; } } else if (_seed > 80) { if (canDoAnal(slave) || canDoVaginal(slave)) { - t += "pleasing "; + t += `pleasing `; } else { - t += "riding "; + t += `riding `; } - t += "a customer's dick."; + t += `a customer's dick.`; } else if (_seed > 60) { - t += "sucking a customer's cock."; + t += `sucking a customer's cock.`; } else if (_seed > 40) { - t += "pleasuring a customer's cunt."; + t += `pleasuring a customer's cunt.`; } else if (_seed > 20) { - t += "getting pounded by a woman wearing a strap-on."; + t += `getting pounded by a woman wearing a strap-on.`; } else { - t += "being held down and "; + t += `being held down and `; if (canDoAnal(slave)) { - t += "buttfucked "; + t += `buttfucked `; } else { - t += "raped "; + t += `raped `; } - t += "by a customer."; + t += `by a customer.`; } t += ` You have a voyeuristic view of ${his} ${race} body on the feeds.`; break; @@ -1542,9 +1542,9 @@ window.walkPasts = function(slave, _seed) { break; case "work as a servant": if (_seed > 50) { - t += "was scrubbing the penthouse floor, until another slave requested oral service."; + t += `was scrubbing the penthouse floor, until another slave requested oral service.`; } else { - t += "is scrubbing the penthouse floor."; + t += `is scrubbing the penthouse floor.`; } break; case "serve in the master suite": @@ -1562,9 +1562,9 @@ window.walkPasts = function(slave, _seed) { t += `with a pair of ${his} fellow fucktoys industriously sucking on ${his} nipples.`; } else if (_seed > 60) { if ((slave.anus > 0 && canDoAnal(slave)) || (slave.vagina > 0 && canDoVaginal(slave))) { - t += "taking double penetration from "; + t += `taking double penetration from `; } else { - t += "being spitroasted by "; + t += `being spitroasted by `; } t += `a pair of ${his} fellow fucktoys.`; } else if (_seed > 40) { @@ -1573,30 +1573,30 @@ window.walkPasts = function(slave, _seed) { } else if (slave.dick > 0 && slave.chastityPenis !== 1) { t += `getting ${his} soft dick sucked by `; } else if (canDoVaginal(slave) || canDoAnal(slave)) { - t += "getting eaten out by "; + t += `getting eaten out by `; } else { - t += "making out with "; + t += `making out with `; } - t += "a fellow fucktoy."; + t += `a fellow fucktoy.`; } else if (_seed > 20) { if (slave.vagina > 0 && canDoVaginal(slave)) { - t += "getting pounded "; + t += `getting pounded `; } else if (slave.anus > 0 && canDoAnal(slave)) { t += `getting ${his} ass pounded `; } else if (canDoVaginal(slave) || canDoAnal(slave)) { - t += "getting eaten out "; + t += `getting eaten out `; } else { - t += "getting deepthroated "; + t += `getting deepthroated `; } - t += "by a fellow fucktoy."; + t += `by a fellow fucktoy.`; } else { - t += "performing oral sex on a fellow fucktoy."; + t += `performing oral sex on a fellow fucktoy.`; } } else { if (slave.energy > 95) { t += `is having enthusiastic sex with your other pets while waiting for you to ravish ${him}.`; } else { - t += "is having idle sex with several of your other toys while they await your pleasure."; + t += `is having idle sex with several of your other toys while they await your pleasure.`; if (slave.fetishKnown === 1) { switch (slave.fetish) { case "buttslut": @@ -1630,7 +1630,7 @@ window.walkPasts = function(slave, _seed) { if (slave.amp !== 1) { t += ` while ${he} gives each a handjob.`; } else { - t += "."; + t += `.`; } break; case "pregnancy": @@ -1650,7 +1650,7 @@ window.walkPasts = function(slave, _seed) { break; /* case "guard you": - t += "is standing discreetly behind your left shoulder, watching for threats." + t += `is standing discreetly behind your left shoulder, watching for threats.`; break */ case "stay confined": @@ -1661,11 +1661,11 @@ window.walkPasts = function(slave, _seed) { break; case "be confined in the arcade": case "work a glory hole": - t += "is confined in "; + t += `is confined in `; if (slave.assignment === "be confined in the arcade") { t += `${V.arcadeName}; `; } else { - t += "a glory hole; "; + t += `a glory hole; `; } if (_seed > 80 && (canDoAnal(slave) || canDoVaginal(slave))) { t += `${his} ass is held out at cock height, and a customer is using ${his} fuckhole.`; @@ -1686,7 +1686,7 @@ window.walkPasts = function(slave, _seed) { if (jsRandom(1,2) === 1) { t += `is looking after ${himself}; ${he} spends many hours every day on ${his} beauty regimen.`; } else { - t += "is checking over the appearance of your harem, making sure everyone looks perfect."; + t += `is checking over the appearance of your harem, making sure everyone looks perfect.`; } break; case "be the Wardeness": @@ -1694,14 +1694,14 @@ window.walkPasts = function(slave, _seed) { if (_seed > 50) { t += `forcing a resistant slave to orally service ${him}.`; } else { - t += "beating a rebellious slave across the buttocks."; + t += `beating a rebellious slave across the buttocks.`; } break; case "live with your Head Girl": if (V.HeadGirl !== 0) { t += `is getting the Head Girl's suite cleaned up while ${V.HeadGirl.slaveName} is out working.`; } else { - t += "is making sure the Head Girl's suite is in order for your next Head Girl."; + t += `is making sure the Head Girl's suite is in order for your next Head Girl.`; } break; case "be the Stewardess": @@ -1717,9 +1717,9 @@ window.walkPasts = function(slave, _seed) { if (_seed > 50) { t += `is right where ${he} belongs, in the DJ booth in ${V.clubName} ${he} leads. ${He}'s bouncing in time with the beat to show off ${his} `; if (slave.boobs > 300) { - t += "tits."; + t += `tits.`; } else { - t += "goods."; + t += `goods.`; } } else { t += `is taking the lead on ${V.clubName}'s floor: ${he} greets new arrivals, flirts with them prettily, and subtly guides them towards choice sluts.`; @@ -1773,9 +1773,9 @@ window.walkPasts = function(slave, _seed) { switch (slave.assignment) { case "rest": if (_seed > 50) { - t += "bed; "; + t += `bed; `; } else { - t += "eat; "; + t += `eat; `; } break; case "get milked": @@ -1802,9 +1802,9 @@ window.walkPasts = function(slave, _seed) { break; case "serve the public": if (_seed > 50) { - t += "serve the public; "; + t += `serve the public; `; } else { - t += "be a public slut; "; + t += `be a public slut; `; } break; case "rest in the spa": @@ -1814,13 +1814,13 @@ window.walkPasts = function(slave, _seed) { t += `wait next to you and wait for you to fuck ${him}; `; break; case "be a subordinate slave": - t += "service your other slaves; "; + t += `service your other slaves; `; break; case "be a servant": - t += "clean up after your other slaves; "; + t += `clean up after your other slaves; `; break; case "learn in the schoolroom": - t += "attend classes "; + t += `attend classes `; if (V.Schoolteacher === 0) { t += `in ${V.schoolroomName}; `; } else { @@ -1828,16 +1828,16 @@ window.walkPasts = function(slave, _seed) { } break; case "be a subordinate slave": - t += "service your other slaves; "; + t += `service your other slaves; `; break; case "be the Attendant": - t += `look after the girls in ${V.spaName}; `; + t += `look after the slaves in ${V.spaName}; `; break; case "take classes": t += `attend classes with ${V.assistantName}; `; break; case "be your Head Girl": - t += "oversee your other slaves; "; + t += `oversee your other slaves; `; break; case "recruit girls": t += `use ${his} connections to recruit slaves; `; diff --git a/src/npc/fFeelings.tw b/src/npc/fFeelings.tw index 7e79a4668ad092d66b39f6d719209a06cdc81e83..dd0461a40fec31fd1f46e0294eee7a74b4e1af39 100644 --- a/src/npc/fFeelings.tw +++ b/src/npc/fFeelings.tw @@ -380,6 +380,10 @@ My favorite part of my body i<<s>> my fa<<c>>e, <<if ($activeSlave.face > 10)>>it'<<s>> ni<<c>>e to be pretty<<else>>I gue<<ss>><</if>>. <</if>> +<<if $activeSlave.pregSource == -9 && $activeSlave.bellyPreg >= 5000 && $activeSlave.devotion > 0>> + My little <<s>>i<<s>>ter i<<s>> getting big; do you think <<sh>>e'll be a good little futa like me <<s>>omeday? +<</if>> + <<if $activeSlave.need>> <<if $activeSlave.amp != 1>> <<if _lisping == 0>> diff --git a/src/npc/fPCImpreg.tw b/src/npc/fPCImpreg.tw index afe0ccbc175ca52a1cb6bc2ed548d430f85c9848..a6e6b23a125979a496151b5954d4b6d13e7d1275 100644 --- a/src/npc/fPCImpreg.tw +++ b/src/npc/fPCImpreg.tw @@ -1,5 +1,7 @@ :: FPCImpreg [nobr] +/* TODO: add reactions for incest */ + <<run clearSummaryCache($activeSlave)>> <<set _bonus = random(6,20)>> diff --git a/src/npc/startingGirls/startingGirls.tw b/src/npc/startingGirls/startingGirls.tw index 538c0ed086f06a600c653f97dfcc4852bc15cde0..b1042a9cb24bb209a727a29ce8ae4c0b19b061b2 100644 --- a/src/npc/startingGirls/startingGirls.tw +++ b/src/npc/startingGirls/startingGirls.tw @@ -253,8 +253,8 @@ __You are customizing this slave:__ <<set $activeSlave.customTat = "She has your custom emblem tattooed on her left breast. She got the tattoo after starring in a porno with you.">> <</if>> <<if $activeSlave.preg > 0>> - <<if $activeSlave.pregType != -1>> - <<set $activeSlave.pregType = -5>> + <<if $activeSlave.pregSource != -1>> + <<set $activeSlave.pregSource = -5>> <</if>> <</if>> <<elseif $PC.career == "gang">> @@ -289,8 +289,8 @@ __You are customizing this slave:__ <<set $activeSlave.customTat = "She has your master's brand on her left breast.">> <</if>> <<if $activeSlave.preg > 0>> - <<if $activeSlave.pregType != -1>> - <<set $activeSlave.pregType = -3>> + <<if $activeSlave.pregSource != -1>> + <<set $activeSlave.pregSource = -3>> <</if>> <</if>> <<elseif $PC.career == "medicine">> diff --git a/src/pregmod/MpregSelf.tw b/src/pregmod/MpregSelf.tw index 5455350fdcea798e2e6e99efcc1096756bd0d613..da73b882939c8b442ccf13f36846926f97c1846c 100644 --- a/src/pregmod/MpregSelf.tw +++ b/src/pregmod/MpregSelf.tw @@ -9,7 +9,7 @@ Calling over your closest slave, you order _himU to bring you one of the high-volume enema syringes from the slave quarters. _HeU rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, sending rivulets of precum running down to pool on your massive balls. Your pussy is similarly soaked, imagining your latest deviancy has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before _heU enters carrying the extra-long enema syringe. Impatient, you give _himU your instructions: "pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started." Following your instructions, _heU eagerly drops to _hisU knees and inhales your soaked member. The large volume of precum coming from your engorged prostate necessitates frequent swallowing that only adds to your pleasure. You lay back and enjoy yourself as _heU massages your massive balls before slipping _hisU hand underneath to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of what comes next, and soon your sack is clenching your massive balls as your body prepares to cum. Recognizing the signs, your slave removes _hisU mouth and replaces it with the open end of the syringe. _HeU takes _hisU sodden hand from your cunt and starts stroking vigorously, and soon you're spraying inhumanly large jets of alabaster cum into the enema syringe. It's good that you asked for high-capacity version, as the prodigious quantity of fertile semen would have overflowed from a smaller container. <br><br>You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. _HeU has thoughtfully blocked the tip with the palm of _hisU hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the full syringe over so that the business end is pointing upward, and the slave removes _hisU hand while you make sure the plunger is secure and won't leak any of the precious cargo. Your slave eagerly licks the drop of cum off the palm of _hisU hand, but you don't begrudge _himU a small treat. Instead, you get a firm grasp on the glass of the thick enema syringe and lay back once more. - You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe between your massive balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the nubby plug-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions. "Fuck me good and hard with the syringe until I cum. When I do, I want you to take both hands and ram that plunger in. Push hard, I want that syringe completely empty when you're done." + You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe between your massive balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the nubby plug-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to take both hands and ram that plunger in. Push hard, I want that syringe completely empty when you're done." <br><br>The _girlU does as _heU's told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, _heU shoves it back inside you. Seeing the undeniable pleasure on your face, _heU takes it as permission to continue and quickly picks up the pace. Soon _heU's fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the pointy enema bulb into the opening of your cervix, forcibly stretching it further open with each piercing impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm. Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends thick streams of cum spraying all over the place to soak you and your slave. Seeing _hisU cue, the _girlU grabs the large plunger with both hands and starts shoving it in the direction of your womb. _HeU leans in, using _hisU body weight to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the whole enema syringe further inside you, causing a blissful stretching sensation as the squirting enema bulb penetrates your cervix to lodge in your womb. Your orgasm continues unabated, spurred on by the syringe now spraying your cum directly into your womb. You spend a couple minutes that feel like hours cumming as your slave slowly inflates your womb with a seemingly-endless volume of your virile cum. @@ -20,7 +20,7 @@ Calling over your closest slave, you order _himU to bring you one of the enema syringes from the slave quarters. _HeU rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, sending a steady stream of precum running down to pool on your huge balls. Your pussy is similarly soaked, imagining your latest deviancy has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before _heU enters carrying the glass enema syringe. Impatient, you give _himU your instructions: "pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started." <br><br>Following your instructions, _heU eagerly drops to _hisU knees and inhales your soaked member. The large volume of precum coming from your swollen prostate necessitates regular swallowing that only adds to your pleasure. You lay back and enjoy yourself as _heU massages your huge balls before slipping _hisU hand underneath to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of what comes next, and soon your sack is clenching your huge balls as your body prepares to cum. Recognizing the signs, your slave removes _hisU mouth and replaces it with the open end of the syringe. _HeU takes _hisU sodden hand from your cunt and starts stroking vigorously, and soon you're spraying massive jets of alabaster cum into the enema syringe. It's good that you decided on an enema syringe instead of a normal dildo suppository, as the huge quantity of fertile semen would have overflowed from a smaller container. <br><br>You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. _HeU has thoughtfully blocked the tip with the palm of _hisU hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the full syringe over so that the business end is pointing upward, and the slave removes _his hand while you make sure the plunger is secure and won't leak any of the precious cargo. Your slave eagerly licks the drop of cum off the palm of _hisU hand, but you don't begrudge _himU a small treat. Instead, you get a firm grasp on the glass of the thick enema syringe and lay back once more. - You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe between your huge balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the nubby plug-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions. "Fuck me good and hard with the syringe until I cum. When I do, I want you to take both hands and ram that plunger in. Push hard, I want that syringe completely empty when you're done." + You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe between your huge balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the nubby plug-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to take both hands and ram that plunger in. Push hard, I want that syringe completely empty when you're done." <br><br>The _girlU does as _heU's told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, _heU shoves it back inside you. Seeing the undeniable pleasure on your face, _heU takes it as permission to continue and quickly picks up the pace. Soon _heU's fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the pointy enema bulb into the opening of your cervix, forcibly stretching it further open with each piercing impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm. Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends thick streams of cum spraying all over the place to coat you and your slave. Seeing _hisU cue, the _girlU grabs the large plunger with both hands and starts shoving it in the direction of your womb. _HeU leans in, using _hisU body weight to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the whole enema syringe further inside you, causing a blissful stretching sensation as the squirting enema bulb penetrates your cervix to lodge in your womb. Your orgasm continues unabated, spurred on by the syringe now spraying your cum directly into your womb. You spend a couple minutes that feel like hours cumming as your slave slowly inflates your womb with a liter of your virile cum. @@ -31,7 +31,7 @@ Calling over your closest slave, you order _himU to bring you one of the dildo-shaped suppository syringes from the slave quarters. _HeU rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, sending regular drips of precum running down onto your large balls. Your pussy is similarly soaked, imagining your latest deviancy has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before _heU enters carrying the remarkably-lifelike dildo syringe. Impatient, you give _himU your instructions: "pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started." <br><br>Following your instructions, _heU eagerly drops to _hisU knees and inhales your straining cock. The extra precum coming from your enhanced prostate necessitates occasional swallowing that only adds to your pleasure. You lay back and enjoy yourself as _heU massages your large balls before slipping _hisU hand underneath to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of what comes next, and soon your sack is clenching your large balls as your body prepares to cum. Recognizing the signs, your slave removes _hisU mouth and replaces it with the open end of the syringe. _HeU takes _hisU sodden hand from your cunt and starts stroking vigorously, and soon you're spraying large jets of alabaster cum into the syringe. It's close, the large quantity of fertile semen almost overflowing from the dildo suppository. <br><br>You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. _HeU has thoughtfully blocked the tip with the palm of _hisU hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the full syringe over so that the business end is pointing upward, and the slave removes _hisU hand while you make sure the plunger is secure and won't leak any of the precious cargo. Your slave eagerly licks the drop of cum off the palm of _hisU hand, but you don't begrudge _himU a small treat. Instead, you get a firm grasp on the silicone of the thick dildo syringe and lay back once more. - You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe underneath your large balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the cock-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions. "Fuck me good and hard with the syringe until I cum. When I do, I want you to ram that plunger in. Push hard, I want that syringe completely empty when you're done." + You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe underneath your large balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the cock-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to ram that plunger in. Push hard, I want that syringe completely empty when you're done." <br><br>The _girlU does as _heU's told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, _heU shoves it back inside you. Seeing the undeniable pleasure on your face, _heU takes it as permission to continue and quickly picks up the pace. Soon _heU's fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the head of the dildo into your cervix, battering it open with each impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm. Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends jets of cum all over the place to land on you and your slave. Seeing _hisU cue, the _girlU grabs the large plunger and starts shoving it in the direction of your womb. _HeU pushes hard to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the silicone cockhead against your cervix, creating a seal and leaving the syringe free to spray your semen through your battered cervix and into your hungry womb. Your orgasm continues unabated, spurred on by warm fluid flowing into your womb. You spend a minute that feel like an hour cumming as your slave slowly fills your womb with a few deciliters of virile cum. @@ -42,7 +42,7 @@ Calling over your closest slave, you order _himU to bring you one of the dildo-shaped suppository syringes from the slave quarters. _HeU rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, a large droplet of precum hanging from the head. Your pussy is similarly soaked, imagining your latest deviancy has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before _heU enters carrying the remarkably-lifelike dildo syringe. Impatient, you give _himU your instructions: "pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started." <br><br>Following your instructions, _heU eagerly drops to _hisU knees and inhales your straining cock. You lay back and enjoy yourself as _heU massages your balls before slipping _hisU hand downward to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of what comes next, and soon your sack is clenching tightly as your body prepares to cum. Recognizing the signs, your slave removes _hisU mouth and replaces it with the open end of the syringe. _HeU takes _hisU sodden hand from your cunt and starts stroking vigorously, and soon you're spraying jets of alabaster cum into the syringe. It's a powerful orgasm, but you only manage to fill a quarter of it. <br><br>You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. _HeU has thoughtfully blocked the tip with the palm of _hisU hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the syringe over so that the business end is pointing upward, and the slave removes _hisU hand while you make sure the plunger is inserted far enough that you've gotten all the air out of the syringe. Your slave eagerly licks the drop of cum off the palm of _hisU hand, but you don't begrudge _himU a small treat. Instead, you get a firm grasp on the silicone of the thick dildo syringe and lay back once more. - You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe underneath your balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the cock-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions. "Fuck me good and hard with the syringe until I cum. When I do, I want you to ram that plunger in. I want that syringe completely empty when you're done." + You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe underneath your balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the cock-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to ram that plunger in. I want that syringe completely empty when you're done." <br><br>The _girlU does as _heU's told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, _heU shoves it back inside you. Seeing the undeniable pleasure on your face, _heU takes it as permission to continue and quickly picks up the pace. Soon _heU's fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the head of the dildo into your cervix, battering it open with each impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm. Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends several jets of cum to land on your reclined body. Seeing _hisU cue, the _girlU grabs the large plunger and starts shoving it in the direction of your womb. _HeU pushes hard to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the silicone cockhead against your cervix, creating a seal and leaving the syringe free to spray your semen through your battered cervix and into your hungry womb. Your orgasm continues unabated, spurred on by the jet of fluid flowing into your womb. Your orgasm soon fades, and you wish that you could produce more than a deciliter of cum to fill yourself with. @@ -57,7 +57,7 @@ Calling over your closest slave, you order _himU to bring you one of the high-volume enema syringes from the slave quarters. _HeU rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, sending rivulets of precum running down to pool on your massive balls. Your pussy is similarly soaked, imagining your belly swelling after you knock yourself up has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before _heU enters carrying the extra-long enema syringe. Impatient, you give _himU your instructions: "pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started." Following your instructions, _heU eagerly drops to _hisU knees and inhales your soaked member. The large volume of precum coming from your engorged prostate necessitates frequent swallowing that only adds to your pleasure. You lay back and enjoy yourself as _heU massages your massive balls before slipping _hisU hand underneath to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of the semi-incestuous stuffing that comes next, and soon your sack is clenching your massive balls as your body prepares to cum. Recognizing the signs, your slave removes _hisU mouth and replaces it with the open end of the syringe. _HeU takes _hisU sodden hand from your cunt and starts stroking vigorously, and soon you're spraying inhumanly large jets of alabaster cum into the enema syringe. It's good that you asked for high-capacity version, as the prodigious quantity of fertile semen would have overflowed from a smaller container. <br><br>You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. _HeU has thoughtfully blocked the tip with the palm of _hisU hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the full syringe over so that the business end is pointing upward, and the slave removes _hisU hand while you make sure the plunger is secure and won't leak any of the precious cargo. Your slave eagerly licks the drop of cum off the palm of _hisU hand, but you don't begrudge _himU a small treat. Instead, you get a firm grasp on the glass of the thick enema syringe and lay back once more. - You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe between your massive balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the nubby plug-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions. "Fuck me good and hard with the syringe until I cum. When I do, I want you to take both hands and ram that plunger in. Push hard, I want that syringe completely empty when you're done." + You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe between your massive balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the nubby plug-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to take both hands and ram that plunger in. Push hard, I want that syringe completely empty when you're done." <br><br>The _girlU does as _heU's told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, _heU shoves it back inside you. Seeing the undeniable pleasure on your face, _heU takes it as permission to continue and quickly picks up the pace. Soon _heU's fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the pointy enema bulb into the opening of your cervix, forcibly stretching it further open with each piercing impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm. Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends thick streams of cum spraying all over the place to soak you and your slave. Seeing _hisU cue, the _girlU grabs the large plunger with both hands and starts shoving it in the direction of your womb. _HeU leans in, using _hisU body weight to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the whole enema syringe further inside you, causing a blissful stretching sensation as the squirting enema bulb penetrates your cervix to lodge in your womb. Your orgasm continues unabated, spurred on by the syringe now spraying your cum directly into your womb. You spend a couple minutes that feel like hours cumming as your slave slowly inflates your womb with a seemingly-endless volume of your virile cum. @@ -68,7 +68,7 @@ Calling over your closest slave, you order _himU to bring you one of the enema syringes from the slave quarters. _HeU rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, sending a steady stream of precum running down to pool on your huge balls. Your pussy is similarly soaked, imagining your belly swelling after you knock yourself up has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before _heU enters carrying the glass enema syringe. Impatient, you give _himU your instructions: "pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started." <br><br>Following your instructions, _heU eagerly drops to _hisU knees and inhales your soaked member. The large volume of precum coming from your swollen prostate necessitates regular swallowing that only adds to your pleasure. You lay back and enjoy yourself as _heU massages your huge balls before slipping _hisU hand underneath to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of the semi-incestuous stuffing that comes next, and soon your sack is clenching your huge balls as your body prepares to cum. Recognizing the signs, your slave removes _hisU mouth and replaces it with the open end of the syringe. _HeU takes _hisU sodden hand from your cunt and starts stroking vigorously, and soon you're spraying massive jets of alabaster cum into the enema syringe. It's good that you decided on an enema syringe instead of a normal dildo suppository, as the huge quantity of fertile semen would have overflowed from a smaller container. <br><br>You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. _HeU has thoughtfully blocked the tip with the palm of _hisU hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the full syringe over so that the business end is pointing upward, and the slave removes _hisU hand while you make sure the plunger is secure and won't leak any of the precious cargo. Your slave eagerly licks the drop of cum off the palm of _hisU hand, but you don't begrudge _himU a small treat. Instead, you get a firm grasp on the glass of the thick enema syringe and lay back once more. - You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe between your huge balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the nubby plug-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions. "Fuck me good and hard with the syringe until I cum. When I do, I want you to take both hands and ram that plunger in. Push hard, I want that syringe completely empty when you're done." + You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe between your huge balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the nubby plug-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to take both hands and ram that plunger in. Push hard, I want that syringe completely empty when you're done." <br><br>The _girlU does as _heU's told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, _heU shoves it back inside you. Seeing the undeniable pleasure on your face, _heU takes it as permission to continue and quickly picks up the pace. Soon _heU's fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the pointy enema bulb into the opening of your cervix, forcibly stretching it further open with each piercing impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm. Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends thick streams of cum spraying all over the place to coat you and your slave. Seeing _hisU cue, the _girlU grabs the large plunger with both hands and starts shoving it in the direction of your womb. _HeU leans in, using _hisU body weight to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the whole enema syringe further inside you, causing a blissful stretching sensation as the squirting enema bulb penetrates your cervix to lodge in your womb. Your orgasm continues unabated, spurred on by the syringe now spraying your cum directly into your womb. You spend a couple minutes that feel like hours cumming as your slave slowly inflates your womb with a full liter of your virile cum. @@ -79,7 +79,7 @@ Calling over your closest slave, you order _himU to bring you one of the dildo-shaped suppository syringes from the slave quarters. _HeU rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, sending regular drips of precum running down onto your large balls. Your pussy is similarly soaked, imagining your belly swelling after you knock yourself up has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before _heU enters carrying the remarkably-lifelike dildo syringe. Impatient, you give _himU your instructions: "pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started." <br><br>Following your instructions, _heU eagerly drops to _hisU knees and inhales your straining cock. The extra precum coming from your enhanced prostate necessitates occasional swallowing that only adds to your pleasure. You lay back and enjoy yourself as _heU massages your large balls before slipping _hisU hand underneath to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of the semi-incestuous stuffing that comes next, and soon your sack is clenching your large balls as your body prepares to cum. Recognizing the signs, your slave removes _hisU mouth and replaces it with the open end of the syringe. _HeU takes _hisU sodden hand from your cunt and starts stroking vigorously, and soon you're spraying large jets of alabaster cum into the syringe. It's close, the large quantity of fertile semen almost overflows from the dildo suppository. <br><br>You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. _HeU has thoughtfully blocked the tip with the palm of _hisU hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the full syringe over so that the business end is pointing upward, and the slave removes _hisU hand while you make sure the plunger is secure and won't leak any of the precious cargo. Your slave eagerly licks the drop of cum off the palm of _hisU hand, but you don't begrudge _himU a small treat. Instead, you get a firm grasp on the silicone of the thick dildo syringe and lay back once more. - You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe underneath your large balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the cock-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions. "Fuck me good and hard with the syringe until I cum. When I do, I want you to ram that plunger in. Push hard, I want that syringe completely empty when you're done." + You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe underneath your large balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the cock-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to ram that plunger in. Push hard, I want that syringe completely empty when you're done." <br><br>The _girlU does as _heU's told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, _heU shoves it back inside you. Seeing the undeniable pleasure on your face, _heU takes it as permission to continue and quickly picks up the pace. Soon _heU's fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the head of the dildo into your cervix, battering it open with each impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm. Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends jets of cum all over the place to land on you and your slave. Seeing _hisU cue, the _girlU grabs the large plunger and starts shoving it in the direction of your womb. _HeU pushes hard to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the silicone cockhead against your cervix, creating a seal and leaving the syringe free to spray your semen through your battered cervix and into your hungry womb. Your orgasm continues unabated, spurred on by warm fluid flowing into your womb. You spend a minute that feel like an hour cumming as your slave slowly fills your womb with a few deciliters of virile cum. @@ -90,7 +90,7 @@ Calling over your closest slave, you order _himU to bring you one of the dildo-shaped suppository syringes from the slave quarters. _HeU rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, a large droplet of precum hanging from the head. Your pussy is similarly soaked, imagining your belly swelling after you knock yourself up has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before _heU enters carrying the remarkably-lifelike dildo syringe. Impatient, you give _himU your instructions: "pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started." <br><br>Following your instructions, _heU eagerly drops to _hisU knees and inhales your straining cock. You lay back and enjoy yourself as _heU massages your balls before slipping _hisU hand downward to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of the semi-incestuous stuffing that comes next, and soon your sack is clenching tightly as your body prepares to cum. Recognizing the signs, your slave removes _hisU mouth and replaces it with the open end of the syringe. _HeU takes _hisU sodden hand from your cunt and starts stroking vigorously, and soon you're spraying jets of alabaster cum into the syringe. It's a powerful orgasm, but you only manage to fill a quarter of it. <br><br>You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. _HeU has thoughtfully blocked the tip with the palm of _hisU hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the syringe over so that the business end is pointing upward, and the slave removes _hisU hand while you make sure the plunger is inserted far enough that you've gotten all the air out of the syringe. Your slave eagerly licks the drop of cum off the palm of _hisU hand, but you don't begrudge _himU a small treat. Instead, you get a firm grasp on the silicone of the thick dildo syringe and lay back once more. - You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe underneath your balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the cock-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions. "Fuck me good and hard with the syringe until I cum. When I do, I want you to ram that plunger in. I want that syringe completely empty when you're done." + You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe underneath your balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the cock-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to ram that plunger in. I want that syringe completely empty when you're done." <br><br>The _girlU does as _heU's told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, _heU shoves it back inside you. Seeing the undeniable pleasure on your face, _heU takes it as permission to continue and quickly picks up the pace. Soon _heU's fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the head of the dildo into your cervix, battering it open with each impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm. Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends several jets of cum to land on your reclined body. Seeing _hisU cue, the _girlU grabs the large plunger and starts shoving it in the direction of your womb. _HeU pushes hard to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the silicone cockhead against your cervix, creating a seal and leaving the syringe free to spray your semen through your battered cervix and into your hungry womb. Your orgasm continues unabated, spurred on by the jet of fluid flowing into your womb. Your orgasm soon fades, and you wish that you could produce more than a deciliter of cum to fill yourself with. diff --git a/src/pregmod/analyzePlayerPregnancy.tw b/src/pregmod/analyzePlayerPregnancy.tw index f3e128410563fc4c7708bc4118d7c9686fe4f7bb..fe588df8d51b5c9a72810a6af67a35cb3f055c88 100644 --- a/src/pregmod/analyzePlayerPregnancy.tw +++ b/src/pregmod/analyzePlayerPregnancy.tw @@ -13,7 +13,7 @@ <br><br> Overall statistics: <br> Fetal count: $PC.womb.length - <br> Estimated womb volume: <<print commaNum(Math.round($PC.belly))>> cc + <br> Estimated womb volume: <<print num(Math.round($PC.belly))>> cc <br><br> Furthest developed pregnancy: diff --git a/src/pregmod/analyzePregnancy.tw b/src/pregmod/analyzePregnancy.tw index 05a81bc1a43bef40768c330bb222f59aadaf8d4f..c4ce02e241f84cac57a4a6442dd32b3497042c75 100644 --- a/src/pregmod/analyzePregnancy.tw +++ b/src/pregmod/analyzePregnancy.tw @@ -17,7 +17,7 @@ <br><br> Overall statistics: <br> Fetal count: $activeSlave.womb.length - <br> Estimated womb volume: <<print commaNum(Math.round($activeSlave.bellyPreg))>> cc + <br> Estimated womb volume: <<print num(Math.round($activeSlave.bellyPreg))>> cc <br><br> Furthest developed pregnancy: diff --git a/src/pregmod/breederProposal.tw b/src/pregmod/breederProposal.tw index aff2c9e505b6baaa241c2041e2076f3e26ec064d..22479d1700397cc9399121192dd42589698bbcfb 100644 --- a/src/pregmod/breederProposal.tw +++ b/src/pregmod/breederProposal.tw @@ -6,6 +6,7 @@ You draft a proposal to the Societal Elite proposing the use of specially tested <br><br> Within the hour, you are called before <<if $eugenicsFullControl == 1>>what's left of <</if>>the Societal Elite. <br> +<<setPlayerPronouns>> <<if $eugenicsFullControl == 1>> "That sounds like an acceptable proposal. We'll draft the standards for breeding stock and notify you shortly." <<set $propOutcome = 1>> @@ -27,7 +28,7 @@ Within the hour, you are called before <<if $eugenicsFullControl == 1>>what's le <span id="result"> <br><<link "Agree to being used as a breeder and save face">> <<replace "#result">> - "Good choice girl. A selection of men will be provided to you, take your pick and bear our children. Or use a test tube, if that's more to your tastes." + "Good choice, _girlP. A selection of eligible donors will be provided to you; take your pick and bear our children. Or use a test tube, if that's more to your tastes." <<set $playerBred = 1, $propOutcome = 1>> <<InitStandards>> <<set $nextButton = "Continue">><<UpdateNextButton>> /* unlock Continue button */ @@ -46,7 +47,7 @@ Within the hour, you are called before <<if $eugenicsFullControl == 1>>what's le <span id="result"> <br><<link "Agree to being used as a breeder for the sake of your proposal">> <<replace "#result">> - "Good choice girl, your proposal is more important than your dignity after all, isn't it? A selection of men will be provided to you, take your pick and bear our children. Or use a test tube, if that's more to your tastes." + "Good choice, _girlP; your proposal is more important than your dignity after all, isn't it? A selection of eligible donors will be provided to you; take your pick and bear our children. Or use a test tube, if that's more to your tastes." <<set $failedElite -= 50, $playerBred = 1, $propOutcome = 1>> <<InitStandards>> <<set $nextButton = "Continue">><<UpdateNextButton>> /* unlock Continue button */ @@ -55,7 +56,7 @@ Within the hour, you are called before <<if $eugenicsFullControl == 1>>what's le <<if $failedElite <= 0>> <br><<link "Decline being used as a breeder and leverage your standing">> <<replace "#result">> - "Yes, you have done much to further our cause. We respect the "balls" on you, despite your lack of them. Very well, we shall set the standards for what shall qualify as breeding stock and our standards will be delivered to you shortly." + "Yes, you have done much to further our cause. We respect the 'balls' on you, despite your lack of them. Very well, we shall set the standards for what shall qualify as breeding stock and our standards will be delivered to you shortly." <<set $propOutcome = 1>> <<InitStandards>> <<set $nextButton = "Continue">><<UpdateNextButton>> /* unlock Continue button */ @@ -78,7 +79,7 @@ Within the hour, you are called before <<if $eugenicsFullControl == 1>>what's le <span id="result"> <br><<link "Agree to being used as a breeder to complete the deal">> <<replace "#result">> - "Your contributions will be appreciated. We shall convene to decide the qualifications for a slave to become a breeder. We will inform you of them when we send the list of eligible males to breed you. Or send you a test tube, if that's more to your tastes." + "Your contributions will be appreciated. We shall convene to decide the qualifications for a slave to become a breeder. We will inform you of them when we send the list of eligible donors to breed you. Or send you a test tube, if that's more to your tastes." <<set $failedElite -= 50, $playerBred = 1, $propOutcome = 1>> <<InitStandards>> <<set $nextButton = "Continue">><<UpdateNextButton>> /* unlock Continue button */ @@ -99,7 +100,7 @@ Within the hour, you are called before <<if $eugenicsFullControl == 1>>what's le <span id="result"> <br><<link "Agree to being used as a breeder">> <<replace "#result">> - "Your contributions will be appreciated. We shall convene to decide the qualifications for a slave to become a breeder. We will inform you of them when we send the list of eligible males to breed you. Or send you a test tube, if that's more to your tastes." + "Your contributions will be appreciated. We shall convene to decide the qualifications for a slave to become a breeder. We will inform you of them when we send the list of eligible donors to breed you. Or send you a test tube, if that's more to your tastes." <<set $playerBred = 1, $propOutcome = 1>> <<InitStandards>> <<set $nextButton = "Continue">><<UpdateNextButton>> /* unlock Continue button */ diff --git a/src/pregmod/csec.tw b/src/pregmod/csec.tw index a3b0e247fbf3a1df53d7b5d7de8cb8b87bc5ccec..355515a4f84292dd5f0b5b82a6971dd20c3a1bef 100644 --- a/src/pregmod/csec.tw +++ b/src/pregmod/csec.tw @@ -19,7 +19,7 @@ <<set $activeSlave.birthsTotal += _curBabies>> <<set $birthsTotal += _curBabies>> -<<set _others = 0, _PC = 0, _citizens = 0, _oldMaster = 0, _arcOwner = 0, _lab = 0, _fathers = [], _babyFatherLink = []>> +<<set _others = 0, _PC = 0, _citizens = 0, _oldMaster = 0, _arcOwner = 0, _lab = 0, _futaS = 0, _fathers = [], _babyFatherLink = []>> <<for _cb = 0; _cb < $activeSlave.curBabies.length; _cb++>> <<if $activeSlave.curBabies[_cb].fatherID == 0 || $activeSlave.curBabies[_cb].fatherID == -5>> <<set _others++>> @@ -40,6 +40,9 @@ <<elseif $activeSlave.curBabies[_cb].fatherID == -7>> <<set _lab++>> <<set _fathers.push("the gene lab's")>> + <<elseif $activeSlave.curBabies[_cb].fatherID == -9>> + <<set _futaS++>> + <<set _fathers.push("a Futanari Sister's")>> <<else>> <<set _babyDaddy = findFather($activeSlave.curBabies[_cb].fatherID)>> <<if def _babyDaddy>> @@ -85,6 +88,8 @@ <<set _num = _arcOwner>> <<elseif _fathersReduced[_cb] == "the gene lab's">> <<set _num = _lab>> + <<elseif _fathersReduced[_cb] == "a Futanari Sister's">> + <<set _num = _futaS>> <<else>> <<set _cb2 = _babyFatherLink.findIndex(function(s) {_fathersReduced[_cb] == _babyFatherLink[s].string; })>> <<if _cb2 != -1>> @@ -209,10 +214,14 @@ Performing a cesarean section is trivial for the remote surgery to carry out. $a <<if $arcologies[0].FSRestart != "unset" && $activeSlave.breedingMark == 1 && $activeSlave.pregSource == -1 && $propOutcome == 1>> <<set _lostBabies = 1>> handed off to the Societal Elite to be raised into upstanding members of the new society. + <<elseif $Cash4Babies == 1 && $activeSlave.pregSource == -9 && ($activeSlave.relationship != -3) && ($activeSlave.assignment != "serve in the master suite") && ($activeSlave.assignment != "be your Concubine")>> + <<set _lostBabies = 1, _babyCost = random(1000,2500)>> + purchased by the Futanari Sisters for @@.yellowgreen;<<print cashFormat(_curBabies*(_babyCost))>>.@@ + <<run cashX((_curBabies*(_babyCost)), "babyTransfer")>> <<elseif $Cash4Babies == 1 && ($activeSlave.relationship != -3) && ($activeSlave.assignment != "serve in the master suite") && ($activeSlave.assignment != "be your Concubine")>> <<set _lostBabies = 1, _babyCost = random(-12,12)>> sold for a total of @@.yellowgreen;<<print cashFormat(_curBabies*(50+_babyCost))>>.@@ - <<set $cash += _curBabies*(50+_babyCost)>> + <<run cashX((_curBabies*(50+_babyCost)), "babyTransfer")>> <<elseif $universalRulesChildrenBecomeBreeders > 0 && $arcologies[0].FSRepopulationFocus > 40 && $DefaultBirthDestination === "individually decided fates">> <<set _lostBabies = 1>> sent to one of $arcologies[0].name's future minded schools, to be administered fertility and virility treatments as well as be brought up to take pride in reproduction. $activeSlave.slaveName @@ -255,6 +264,20 @@ Performing a cesarean section is trivial for the remote surgery to carry out. $a <</replace>> <<set $nextButton = "Back">><<UpdateNextButton>> /* unlock Continue button */ <</link>> + <<if $activeSlave.pregSource == -9>> + <br><<link '...handed off to the Futanari Sisters.'>> + <<replace #_disposition>> + handed off to be raised into <<if $activeSlave.pregType > 1>>future Futanari Sisters<<else>>a future Futanari Sister<</if>>. $activeSlave.slaveName + <<if $activeSlave.fetish == "mindbroken" || $activeSlave.fuckdoll > 0>> + has few thoughts about the matter. + <<else>> + is overjoyed that $his child<<if $activeSlave.pregType > 1>>ren<</if>> will follow in <<if $activeSlave.pregType > 1>>their<<else>>its<</if>> parent's footsteps. + <<set $activeSlave.devotion += 4>> + <</if>> + <</replace>> + <<set $nextButton = "Back">><<UpdateNextButton>> /* unlock Continue button */ + <</link>> + <</if>> <<if $arcologies[0].FSRepopulationFocus > 40>> <br><<link '...sent to a breeder school.'>> <<replace #_disposition>> @@ -358,6 +381,22 @@ Performing a cesarean section is trivial for the remote surgery to carry out. $a <</if>> The child<<if _curBabies > 1>>ren<</if>> will be raised privately, with expert care and tutoring, an expensive proposition. <<set $activeSlave.devotion += 6, $privateOrphanageTotal += _curBabies>> + <<case "breeder schools">> + <<if $activeSlave.fetish == "mindbroken" || $activeSlave.fuckdoll > 0>> + has few thoughts about the matter. + <<elseif $activeSlave.devotion > 95>> + loves you already, but $he'll @@.hotpink;love you even more@@ for this. $He can't wait to see $his child<<if _curBabies > 1>>ren<</if>> proudly furthering your cause. + <<set $activeSlave.devotion += 4>> + <<elseif $activeSlave.devotion > 50>> + heard about these and will be @@.hotpink;happy that $his child<<if $activeSlave.pregType > 1>>ren<</if>> will have a purpose in your society other than slavery.@@ $He will miss $his child<<if $activeSlave.pregType > 1>>ren<</if>>, but $he expected that. + <<set $activeSlave.devotion += 4>> + <<elseif $activeSlave.devotion > 20>> + will naturally miss $his child<<if _curBabies > 1>>ren<</if>>, but will is broken enough to hope that $his offspring will have a better life, or at least an enjoyable one. + <<else>> + will of course @@.mediumorchid;hate you for this.@@ The mere thought of $his $fertilityAge year old daughter<<if _curBabies > 1>>s<</if>> swollen with life, and proud of it, fills $him with @@.gold;disdain.@@ + <<set $activeSlave.devotion -= 4, $activeSlave.trust -= 4>> + <</if>> + <<set $breederOrphanageTotal += _curBabies>> <<case "the market">> <<if $activeSlave.prestige > 1 || $activeSlave.pornPrestige > 2>> <<set _babyCost = random(-12,100)>> diff --git a/src/pregmod/fDick.tw b/src/pregmod/fDick.tw index 2113e45d374ecca49c27829a2a040fdc0852c177..6fb3eb7b8d36f104403ef45d6804d715355681a2 100644 --- a/src/pregmod/fDick.tw +++ b/src/pregmod/fDick.tw @@ -1,4 +1,5 @@ :: FDick [nobr] +/* TODO: .pregMood and more amp variants */ <<run clearSummaryCache($activeSlave)>> <<setLocalPronouns $activeSlave>> @@ -10,11 +11,11 @@ <<if ($activeSlave.amp < 1)>> You direct $activeSlave.slaveName to lie down and ready $himself as you step over to $him and align your <<if $PC.vagina == 1>> vagina <<else>> ass <</if>> with <<if ($activeSlave.vaginaPiercing > 1) && ($activeSlave.dick != 0)>> - $his pierced cock-head + $his pierced cock-head. <<elseif ($activeSlave.vaginaPiercing == 1) && ($activeSlave.dick != 0)>> - $his pierced cock + $his pierced cock. <<else>> - $his cock + $his cock. <</if>> <<if $activeSlave.fetish != "mindbroken" && $activeSlave.fuckdoll == 0>> diff --git a/src/pregmod/fPat.tw b/src/pregmod/fPat.tw index 8d8e31d4aca685dba940a0f6175ff91f6e5ded6d..3ab0a9683182e394ac5861bd133e55640036bb26 100644 --- a/src/pregmod/fPat.tw +++ b/src/pregmod/fPat.tw @@ -90,6 +90,13 @@ You tell $activeSlave.slaveName to <<else>> upon $his face. $He finds the intense attention from $his <<= WrittenMaster()>> worrying, and $he looks down after a moment, blushing nervously. <</if>> +<<elseif ($activeSlave.devotion < -20) && ($activeSlave.trust >= 20)>> + $He seems to visibly consider disobedience, but apparently decides your order is harmless enough. $He does as $he is told, + <<if canSee($activeSlave)>> + giving you a defiant stare as $he does so. + <<else>> + defiantly staring in your direction. + <</if>> <<elseif ($activeSlave.devotion >= -20) && ($activeSlave.trust >= -20)>> $He visibly considers disobedience, but decides that complying with such an apparently harmless order is safe, for now. Once $he's close, you hold $his face in your palms and take a moment to gaze deeply <<if canSee($activeSlave)>> @@ -129,7 +136,9 @@ You walk around $him, drawing closer and slowly resting your hand on $his head. <<elseif $activeSlave.devotion > 50>> $He accepts it with devotion, leaning back into your gentle caresses. You tenderly and lovingly brush your fingers along $his head, enjoying the feeling of your slave's willingness to set aside $his dignity for headpats. $He leans $his body backward, pressing $himself against you. You can feel the intense heat from $his body against your <<if $PC.boobs == 1>>soft breasts<<else>>manly chest<</if>>. You take your time enjoying the sensation of <<if $activeSlave.hStyle == "shaved bald" || $activeSlave.bald == 1>>rubbing your slave's smooth scalp<<else>>gently running your fingers through your slave's hair<</if>>, and your slave smiles happily as you do. As you continue with your ministrations, you can see all of the stress present in your slave's shoulders dissipate, and you feel a good deal of your own tension start to melt away as well. <<elseif $activeSlave.devotion > 20>> - $He willingly accepts it. As you tenderly and lovingly brush your fingers along $his head, enjoying the feeling of your slave's roiling emotions, and finally submission. You can still sense considerable turmoil in the <<if ($activeSlave.physicalAge > 30)>>$woman<<else>>$girl<</if>>; $he's doing $his duty as a slave by complying with your wishes, and is probably struggling with the mixture of resistance, obedience and perhaps even devotion forced to the forefront of $his mind by your touch. As you continue your ministrations, your slave slowly, and with more then a bit of uncertainty, finally starts to relax. $He looks at you with confusion and trepidation. Your eyes betray nothing however, you simply smile and press $his head into your <<if $PC.boobs == 1>>soft breasts<<else>>masculine chest<</if>>, all the while enjoying the feeling of your <<if $activeSlave.hStyle == "shaven bald" || $activeSlave.bald == 1>>hands gliding over $his smooth head<<else>>fingers gliding through $his hair<</if>>. + $He willingly accepts it. As you tenderly and lovingly brush your fingers along $his head, enjoying the feeling of your slave's roiling emotions, and finally submission. You can still sense considerable turmoil in the <<if ($activeSlave.physicalAge > 30)>>$woman<<else>>$girl<</if>>; $he's doing $his duty as a slave by complying with your wishes, and is probably struggling with the mixture of resistance, obedience and perhaps even devotion forced to the forefront of $his mind by your touch. As you continue your ministrations, your slave slowly, and with more then a bit of uncertainty, finally starts to relax. $He looks at you with confusion and trepidation. Your eyes betray nothing however -- you simply smile and press $his head into your <<if $PC.boobs == 1>>soft breasts<<else>>masculine chest<</if>>, all the while enjoying the feeling of your <<if $activeSlave.hStyle == "shaven bald" || $activeSlave.bald == 1>>hands gliding over $his smooth head<<else>>fingers gliding through $his hair<</if>>. +<<elseif ($activeSlave.devotion < -20) && ($activeSlave.trust >= 20)>> + $He doesn't react to your touch, remaining as still as statue, the same defiant expression on $his face. $He still doesn't react when you brush your fingers down the side of $his head or when you <<if $activeSlave.hStyle == "shaven bald" || $activeSlave.bald == 1>>stroke $his smooth head<<else>>run your fingers through $his hair<</if>>. $He does react when you gently rest your thumb on $his lips, however, by suddenly giving you a fierce bite. Cursing, you pull your hand back and examine it -- $he didn't bite deep enough to draw blood, but the area is now red and puffy. Furious, you backhand $him across the face<<if random(1,100) > 80>><<set $activeSlave.minorInjury = either("black eye", "split lip", "bruise")>>, giving $him a @@.red;$activeSlave.minorInjury@@<</if>>. <<elseif $activeSlave.devotion >= -20 && $activeSlave.trust < -20>> $He shakes at your touch fearfully. As you tenderly brush your fingers down $his unresisting head, you appreciate this expression of your slave's subservience, $his eagerness to avoid punishment making $him stiffen, $his nervousness easily apparent. You continue stroking $him, enjoying $his fear, as the physical intimacy slowly does its work. $He starts to relax, $his resistance easing as $his eyes start to close. Your hands continue to gently scratch at $his scalp, and you enjoy the sensation as well as the feeling of power over your hapless slave. Gently, slowly, so not as to spook $him, you ease your property's head back into your <<if $PC.boobs == 1>>breasts<<else>>chest<</if>>. Nevertheless your slave starts at the action, but at your insistence finally gives in to the motion, and finally relaxes against you. <<elseif $activeSlave.trust < -50>> @@ -143,7 +152,7 @@ You pat $him softly move your palm down the side of $his head with a soothing to <<if $activeSlave.hStyle == "shaved bald">> Then, you gently touch $his <<else>> - You hold a strand of $his hair and softly place it behind $his ear taking the chance to gently caress $his + You hold a strand of $his hair and softly place it behind $his ear, taking the chance to gently caress $his <</if>> <<if $activeSlave.face > 95>> overwhelmingly stunning @@ -253,6 +262,9 @@ You move your hand down to caress $his forehead, and then slide your hand along <<else>> $He asks hesitantly, "I-i<<s>> that all, <<Master>>?" <</if>> +<<elseif ($activeSlave.devotion < -20) && ($activeSlave.trust >= 20)>> + $He does little more than give another defiant glare as you pull away. + /* TODO: write this */ <<elseif ($activeSlave.devotion >= -20) && ($activeSlave.trust < -20)>> When you finally move your hand away, $he <<if canSee($activeSlave)>>looks<<else>>gazes<</if>> at you for a long moment, as if looking for answers, before visibly catching $himself with a reminder that $he's a slave and you're $his owner. <<if (($activeSlave.amp == 1) && (!canTalk($activeSlave)))>> diff --git a/src/pregmod/incubator.tw b/src/pregmod/incubator.tw index c6aadbc121e66ef3ef91097461c485cd084bb5ed..4ff23b3d2a8ef60c5252d038dbd8942d77aaf03f 100644 --- a/src/pregmod/incubator.tw +++ b/src/pregmod/incubator.tw @@ -85,6 +85,9 @@ Reserve an eligible mother-to-be's child to be placed in a tank upon birth. Of $ <<if $slaves[_u].pregSource == 0 || $slaves[_u].preg <= 5>>someone's<<if $slaves[_u].preg <= 5>>, though it is too early to tell whose,<</if>> <<elseif $slaves[_u].pregSource == -1>>your <<elseif $slaves[_u].pregSource == -2>>a citizen's + <<elseif $slaves[_u].pregSource == -3>>your Master's + <<elseif $slaves[_u].pregSource == -7>>the lab's + <<elseif $slaves[_u].pregSource == -9>>the Futanari Sisters' <<else>> <<set _t = $slaveIndices[$slaves[_u].pregSource]>> <<if def _t>> diff --git a/src/pregmod/manageCorporation.tw b/src/pregmod/manageCorporation.tw index 61f3bddaf5816fa96ec1411a78b11faf8b41d983..af5341b9d273cffb4db8b13ac1b3c5313b05fe90 100644 --- a/src/pregmod/manageCorporation.tw +++ b/src/pregmod/manageCorporation.tw @@ -1376,7 +1376,7 @@ __Dividend__ <br><br> __Shares__ -<br>You own <<print commaNum($personalShares)>> shares while another <<print commaNum($publicShares)>> shares are traded publicly. The going rate on the market for 1000 shares is currently @@.yellowgreen;<<print cashFormat(corpSharePrice())>>.@@ +<br>You own <<print num($personalShares)>> shares while another <<print num($publicShares)>> shares are traded publicly. The going rate on the market for 1000 shares is currently @@.yellowgreen;<<print cashFormat(corpSharePrice())>>.@@ <br>The corporation can buyback 1000 shares for @@.red;<<print cashFormat(corpSharePrice(-1000))>>@@ or issue 1000 shares and net @@.yellowgreen;<<print cashFormat(corpSharePrice(1000))>>.@@ <<if $corpCash > corpSharePrice(-1000)>> <<if $publicShares <= $personalShares - 2000 && $publicShares > 0>> /*It won't buy back player shares if the corporation is entirely owned by the player*/ diff --git a/src/pregmod/managePersonalAffairs.tw b/src/pregmod/managePersonalAffairs.tw index 59293799e98762c02a25595ceadcfea251567a82..a4cc60915798166036bf70587f53634c3e98e939 100644 --- a/src/pregmod/managePersonalAffairs.tw +++ b/src/pregmod/managePersonalAffairs.tw @@ -434,17 +434,17 @@ In total, you have given birth to: <<if $PC.slavesKnockedUp > 0>> <br> <<if $PC.dick == 1>> - You've knocked up <<print commaNum($PC.slavesKnockedUp)>> fertile slave girl<<if $PC.slavesKnockedUp > 1>>s<</if>><<if $PC.slavesFathered > 0>> and fathered <<print commaNum($PC.slavesFathered)>> new slave<<if $PC.slavesFathered > 1>>s<</if>><</if>> as an arcology owner so far. + You've knocked up <<print num($PC.slavesKnockedUp)>> fertile slave girl<<if $PC.slavesKnockedUp > 1>>s<</if>><<if $PC.slavesFathered > 0>> and fathered <<print num($PC.slavesFathered)>> new slave<<if $PC.slavesFathered > 1>>s<</if>><</if>> as an arcology owner so far. <<else>> - Before your sex change, you knocked up <<print commaNum($PC.slavesKnockedUp)>> fertile slave girl<<if $PC.slavesKnockedUp > 1>>s<</if>><<if $PC.slavesFathered > 0>> and fathered <<print commaNum($PC.slavesFathered)>> new slave<<if $PC.slavesFathered > 1>>s<</if>><</if>>. + Before your sex change, you knocked up <<print num($PC.slavesKnockedUp)>> fertile slave girl<<if $PC.slavesKnockedUp > 1>>s<</if>><<if $PC.slavesFathered > 0>> and fathered <<print num($PC.slavesFathered)>> new slave<<if $PC.slavesFathered > 1>>s<</if>><</if>>. <</if>> <<else>> <<if $PC.slavesFathered > 0>> <br> <<if $PC.dick == 1>> - You've fathered <<print commaNum($PC.slavesFathered)>> new slave<<if $PC.slavesFathered > 1>>s<</if>> as an arcology owner so far. + You've fathered <<print num($PC.slavesFathered)>> new slave<<if $PC.slavesFathered > 1>>s<</if>> as an arcology owner so far. <<else>> - Before your sex change, you fathered <<print commaNum($PC.slavesFathered)>> new slave<<if $PC.slavesFathered > 1>>s<</if>>. + Before your sex change, you fathered <<print num($PC.slavesFathered)>> new slave<<if $PC.slavesFathered > 1>>s<</if>>. <</if>> <</if>> <</if>> @@ -536,28 +536,31 @@ In total, you have given birth to: <br><br> Before your sex change, you had given birth to: <<if $PC.birthElite > 0>> - <br><<print commaNum($PC.birthElite)>> bab<<if $PC.birthElite > 1>>ies<<else>>y<</if>> for the Societal Elite. + <br><<print num($PC.birthElite)>> bab<<if $PC.birthElite > 1>>ies<<else>>y<</if>> for the Societal Elite. <</if>> <<if $PC.birthMaster > 0>> - <br><<print commaNum($PC.birthMaster)>> bab<<if $PC.birthMaster > 1>>ies<<else>>y<</if>> for your former master. + <br><<print num($PC.birthMaster)>> bab<<if $PC.birthMaster > 1>>ies<<else>>y<</if>> for your former master. <</if>> <<if $PC.birthClient > 0>> - <br><<print commaNum($PC.birthOther)>> bab<<if $PC.birthOther > 1>>ies<<else>>y<</if>> from clients you've slept with. + <br><<print num($PC.birthOther)>> bab<<if $PC.birthOther > 1>>ies<<else>>y<</if>> from clients you've slept with. <</if>> <<if $PC.birthDegenerate > 0>> - <br><<print commaNum($PC.birthDegenerate)>> bastard<<if $PC.birthDegenerate > 1>>s<</if>> from getting fucked by slaves. + <br><<print num($PC.birthDegenerate)>> bastard<<if $PC.birthDegenerate > 1>>s<</if>> from getting fucked by slaves. <</if>> <<if $PC.birthArcOwner > 0>> - <br><<print commaNum($PC.birthArcOwner)>> bab<<if $PC.birthArcOwner > 1>>ies<<else>>y<</if>> from your time with male arcology owners. + <br><<print num($PC.birthArcOwner)>> bab<<if $PC.birthArcOwner > 1>>ies<<else>>y<</if>> from your time with male arcology owners. <</if>> <<if $PC.birthCitizen > 0>> - <br><<print commaNum($PC.birthCitizen)>> bab<<if $PC.birthCitizen > 1>>ies<<else>>y<</if>> from sex with arcology citizens. + <br><<print num($PC.birthCitizen)>> bab<<if $PC.birthCitizen > 1>>ies<<else>>y<</if>> from sex with arcology citizens. + <</if>> + <<if $PC.birthFutaSis > 0>> + <br><<print commaNum($PC.birthFutaSis)>> bab<<if $PC.birthFutaSis > 1>>ies<<else>>y<</if>> conceived during orgies with the Futanari Sisters. <</if>> <<if $PC.birthOther > 0>> - <br><<print commaNum($PC.birthOther)>> bab<<if $PC.birthOther > 1>>ies<<else>>y<</if>> from sources you can't quite recall. + <br><<print num($PC.birthOther)>> bab<<if $PC.birthOther > 1>>ies<<else>>y<</if>> from sources you can't quite recall. <</if>> <<if $PC.birthSelf > 0>> - <br><<print commaNum($PC.birthSelf)>> bab<<if $PC.birthSelf > 1>>ies<<else>>y<</if>> that <<if $PC.birthSelf > 1>>were<<else>>was<</if>> literally all you. + <br><<print num($PC.birthSelf)>> bab<<if $PC.birthSelf > 1>>ies<<else>>y<</if>> that <<if $PC.birthSelf > 1>>were<<else>>was<</if>> literally all you. <</if>> <<if $PC.birthLab > 0>> <br><<print $PC.birthLab>> bab<<if $PC.birthLab > 1>>ies<<else>>y<</if>> specially designed in the lab. @@ -565,11 +568,11 @@ In total, you have given birth to: <</if>> <<if $PC.slavesKnockedUp > 0>> <br><br> - You've knocked up <<print commaNum($PC.slavesKnockedUp)>> fertile slave girl<<if $PC.slavesKnockedUp > 1>>s<</if>><<if $PC.slavesFathered > 0>> and fathered <<print commaNum($PC.slavesFathered)>> new slave<<if $PC.slavesFathered > 1>>s<</if>><</if>> as an arcology owner so far. + You've knocked up <<print num($PC.slavesKnockedUp)>> fertile slave girl<<if $PC.slavesKnockedUp > 1>>s<</if>><<if $PC.slavesFathered > 0>> and fathered <<print num($PC.slavesFathered)>> new slave<<if $PC.slavesFathered > 1>>s<</if>><</if>> as an arcology owner so far. <<else>> <<if $PC.slavesFathered > 0>> <br><br> - You've fathered <<print commaNum($PC.slavesFathered)>> new slave<<if $PC.slavesFathered > 1>>s<</if>> as an arcology owner so far. + You've fathered <<print num($PC.slavesFathered)>> new slave<<if $PC.slavesFathered > 1>>s<</if>> as an arcology owner so far. <</if>> <</if>> diff --git a/src/pregmod/newChildIntro.tw b/src/pregmod/newChildIntro.tw index 066a43037475e714b9f54088a854e45f0e71f075..8c4fc87b1e03ff572d6a86e1c98e18801754eda4 100644 --- a/src/pregmod/newChildIntro.tw +++ b/src/pregmod/newChildIntro.tw @@ -1107,7 +1107,7 @@ You beckon the curious $girl to your hefty breasts, having noticed how hungrily You take $him to the body modification studio, strap $him down, pierce $his clit, and insert what appears to be a large stainless steel barbell piercing. It actually contains a device that can vibrate to give $him sexual stimulation or create subtle pain to suppress pleasure. It is connected wirelessly to the arcology, which can be given instructions to encourage or discourage sexual pleasure in specific situations. You run a quick test. On the oral setting, as soon as $he kneels in front of your crotch, $he gasps as the stimulation starts. On the anal setting, $he whimpers when you run a finger across $his asshole. <</replace>> <</link>> - //This option costs <<print cashFormat($SPcost)>>// + //This will cost <<print cashFormat($SPcost)>>// <<elseif $activeSlave.dick > 0>> <br><<link "Give $him a smart frenulum piercing">> <<set $activeSlave.clitPiercing = 3>> @@ -1116,7 +1116,7 @@ You beckon the curious $girl to your hefty breasts, having noticed how hungrily You take $him to the body modification studio, strap $him down, pierce $his frenulum, and insert what appears to be a large stainless steel barbell piercing. It actually contains a device that can vibrate to give $him sexual stimulation or create subtle pain to suppress pleasure. It is connected wirelessly to the arcology, which can be given instructions to encourage or discourage sexual pleasure in specific situations. You run a quick test. On the oral setting, as soon as $he kneels in front of your crotch, $he gasps as the stimulation starts. On the anal setting, $he whimpers and gets rock hard when you run a finger across $his asshole. <</replace>> <</link>> - //This option costs <<print cashFormat($SPcost)>>// + //This will cost <<print cashFormat($SPcost)>>// <</if>> <br><<link "Tie $him up and give $him a good whipping">> diff --git a/src/pregmod/rePregInventorText.tw b/src/pregmod/rePregInventorText.tw index 940480217fd4eff36101b0b87aa1a2e1884f7127..7da749f3452cad8ea5e7c837f4cc7bfda7ee87fb 100644 --- a/src/pregmod/rePregInventorText.tw +++ b/src/pregmod/rePregInventorText.tw @@ -3,7 +3,7 @@ <<setNonlocalPronouns $seeDicks>> The interview starts about halfway into a special episode of "Husbandry with Millie." The show's host is introducing a who's who of important figures in the slave breeding community. As you turn on the show, Millie seems to have just completed another interview. <br><br> - "Everybody, give one last round of applause for renowned breakout porn star 'Twinner Jennie'!" she says. "Who'd have thought an eighteen year old slave could be pregnant with their own eighteen year old cloned sister? Quite a world — thank you again for that fascinating interview! Our next guest on 'Husbandry with Millie' is a clever 'broodmother' class breeding slave and mother of <<= commaNum($activeSlave.birthsTotal)>> children from the $continent arcology of '$arcologies[0].name.' Everybody, please give a hearty welcome to <<= SlaveFullName($activeSlave)>>!" + "Everybody, give one last round of applause for renowned breakout porn star 'Twinner Jennie'!" she says. "Who'd have thought an eighteen year old slave could be pregnant with their own eighteen year old cloned sister? Quite a world — thank you again for that fascinating interview! Our next guest on 'Husbandry with Millie' is a clever 'broodmother' class breeding slave and mother of <<= num($activeSlave.birthsTotal)>> children from the $continent arcology of '$arcologies[0].name.' Everybody, please give a hearty welcome to <<= SlaveFullName($activeSlave)>>!" <br><br> The first thing that the audience sees of your slave is a colossal $activeSlave.skin orb pressing forward through an inadequate looking faux doorway at the rear of the set. "Husbandry with Millie" is a show about breeders and for breeders, and the host, Millie, has seen pregnant slaves of innumerable sizes and descriptions. Despite this, she does a clear double take as your slave enters, and enters, and enters stage right, $his grossly distorted belly seeming to go on forever as it precedes $him. $He is always growing, and you are constantly increasing the size of $his menial entourage to ensure $his unhindered mobility. As a result, a veritable platoon of masked menials can be seen throwing themselves into your overladen babyfactory before $his <<if ($activeSlave.boobs >= 20000)>> diff --git a/src/pregmod/seBurst.tw b/src/pregmod/seBurst.tw index 032fad3539c850414b0d95c5b00fe1a5e0d7738f..7d4368e5661f24cbbd31cdead701bf667016b3e2 100644 --- a/src/pregmod/seBurst.tw +++ b/src/pregmod/seBurst.tw @@ -12,7 +12,7 @@ <<set _curBabies = $slaves[_b].curBabies.length>> /*just to improve speed and usability here.*/ <<set $birthsTotal += _curBabies>> - <<set _others = 0, _PC = 0, _citizens = 0, _oldMaster = 0, _arcOwner = 0, _lab = 0, _fathers = [], _babyFatherLink = []>> + <<set _others = 0, _PC = 0, _citizens = 0, _oldMaster = 0, _arcOwner = 0, _lab = 0, _futaS = 0, _fathers = [], _babyFatherLink = []>> <<for _cb = 0; _cb < $slaves[_b].curBabies.length; _cb++>> <<if $slaves[_b].curBabies[_cb].fatherID == 0 || $slaves[_b].curBabies[_cb].fatherID == -5>> <<set _others++>> @@ -33,6 +33,9 @@ <<elseif $slaves[_b].curBabies[_cb].fatherID == -7>> <<set _lab++>> <<set _fathers.push("the gene lab's")>> + <<elseif $slaves[_b].curBabies[_cb].fatherID == -9>> + <<set _futaS++>> + <<set _fathers.push("a Futanari Sister's")>> <<else>> <<set _babyDaddy = findFather($slaves[_b].curBabies[_cb].fatherID)>> <<if def _babyDaddy>> @@ -78,6 +81,8 @@ <<set _num = _arcOwner>> <<elseif _fathersReduced[_cb] == "the gene lab's">> <<set _num = _lab>> + <<elseif _fathersReduced[_cb] == "a Futanari Sister's">> + <<set _num = _futaS>> <<else>> <<set _cb2 = _babyFatherLink.findIndex(function(s) {_fathersReduced[_cb] == _babyFatherLink[s].string; })>> <<if _cb2 != -1>> @@ -200,6 +205,10 @@ <<if $arcologies[0].FSRestart != "unset" && $slaves[_b].breedingMark == 1 && $propOutcome == 1 && $slaves[_b].pregSource == -1>> <<set _lostBabies = 1>> From there, $his child<<if _curBabies > 1>>ren are<<else>> is<</if>> collected by the Societal Elite to be raised into upstanding members of the new society. + <<elseif $Cash4Babies == 1 && $slaves[_b].pregSource == -9>> + <<set _lostBabies = 1, _babyCost = random(1000,2500)>> + $His <<if _curBabies > 1>>babies were<<else>>baby was<</if>> purchased by the Futanari Sisters for @@.yellowgreen;<<print cashFormat(_curBabies*(_babyCost))>>.@@ + <<run cashX((_curBabies*(_babyCost)), "babyTransfer")>> <<elseif $Cash4Babies == 1 && $DefaultBirthDestination !== "the market">> <<set _lostBabies = 1>> <<set _babyCost = random(-12,12)>> @@ -232,6 +241,14 @@ <</replace>> <</link>> //Will cost <<print cashFormat(100)>> weekly// + <<if $slaves[_b].pregSource == -9>> + | <<link 'Give them to the Futanari Sisters.'>> + <<replace #dispositionId>> + The child<<if _count > 1>>ren are<<else>> is<</if>> handed off to be raised by their father, the Futanari Sisters. You recommend they take it easy for a while before any more burst into kids. + <<set $slaveOrphanageTotal -= _count>> + <</replace>> + <</link>> + <</if>> | <<link 'Have them raised privately'>> <<replace `"#" + $dispositionId`>> The child<<if _count > 1>>ren are<<else>> is<</if>> sent to be privately raised, to be brought up as a future high class citizen. diff --git a/src/pregmod/seFCTVshows.tw b/src/pregmod/seFCTVshows.tw index dd0d1bbc5b2ccbf5cbf63dde2490ac92cb9936c2..578b5d54fdaf8400e7da210722947ee29746f285 100644 --- a/src/pregmod/seFCTVshows.tw +++ b/src/pregmod/seFCTVshows.tw @@ -618,8 +618,8 @@ The offered price is <<print cashFormat($slaveCost)>>. You've already made the mistake of ordering the sham of a product. While it gave you a great excuse to fondle breasts, it's not like you needed one in the first place. <<if $Concubine != 0 && canTalk($Concubine)>> <<run Enunciate($Concubine)>> - <<setLocalPronouns $Concubine 2>> - "I told you it wouldn't work, <<Master>>. Plu<<s>> you know you can touch the<<s>>e anytime!" $Concubine.slaveName shakes _his2 chest at you. + <<setLocalPronouns $Concubine>> + "I told you it wouldn't work, <<Master>>. Plu<<s>> you know you can touch the<<s>>e anytime!" $Concubine.slaveName shakes $his chest at you. <</if>> <<elseif $showEleven > 1>> You could always order a crate to play around with. Who knows, maybe it'll actually work?<<if $PC.dick == 1>> At the very least it should make for some decent lubricant for a titfuck.<</if>> @@ -628,25 +628,25 @@ The offered price is <<print cashFormat($slaveCost)>>. <<link "Place an order">> <<replace #called>> <<set $purchasedSagBGone = 1>> - <<run cashX(-50, "PCmedical")>> + <<run cashX(forceNeg(Math.trunc(50 * $upgradeMultiplierTrade)), "PCmedical")>> Your order should arrive by next week. If the advertisement is to be believed, all you need to do is rub the cream into your breasts several times a day and it will ward off sagging. <</replace>> - <</link>> // This will cost <<print cashFormat(50)>> // + <</link>> // This will cost <<print cashFormat(Math.trunc(50 * $upgradeMultiplierTrade))>> // </span> <<else>> You could always order a crate to play around with. Who knows, maybe it'll actually work?<<if $PC.dick == 1>> At the very least it should make for some decent lubricant for a titfuck.<</if>> <<if $Concubine != 0>> <<run Enunciate($Concubine)>> - <<setLocalPronouns $Concubine 2>> + <<setLocalPronouns $Concubine>> <<if $Concubine.boobs > 2000 && $Concubine.boobShape == "saggy">> - $Concubine.slaveName hefts _his2 breasts and lets them flop back into their usual saggy position. <<if canTalk($Concubine)>>"Far too late for the<<s>>e ladie<<s>>. I doubt it will work though, product<<s>> like that never do."<<else>>_He2 sighs doubtfully.<</if>> + $Concubine.slaveName hefts $his breasts and lets them flop back into their usual saggy position. <<if canTalk($Concubine)>>"Far too late for the<<s>>e ladie<<s>>. I doubt it will work though, product<<s>> like that never do."<<else>>$He sighs doubtfully.<</if>> <<elseif $Concubine.boobs > 2000>> - $Concubine.slaveName massages _his2 big breasts. <<if canTalk($Concubine)>>"I doubt it will work, but if you're looking for an excu<<s>>e, you don't need one!"<<else>>_He2 scoffs at the commercial and clearly expresses _his2 doubt before puffing out _his2 chest at you.<</if>> _He2 leans into you so _his2 bust flops into your lap. + $Concubine.slaveName massages $his big breasts. <<if canTalk($Concubine)>>"I doubt it will work, but if you're looking for an excu<<s>>e, you don't need one!"<<else>>$He scoffs at the commercial and clearly expresses $his doubt before puffing out $his chest at you.<</if>> $He leans into you so $his bust flops into your lap. <<else>> - $Concubine.slaveName cups _his2 breasts. <<if canTalk($Concubine)>>"What a joke. I'm <<s>>ure it doe<<s>>n't work, plu<<s>> don't you think they are lovely enough already, <<Master>>?"<<else>>_He2 scoffs with doubt before proudly sticking out _his2 chest.<</if>> _He2 bounces _his2 tits for you. You'll have to agree with _him2; not a bit of sag to them. + $Concubine.slaveName cups $his breasts. <<if canTalk($Concubine)>>"What a joke. I'm <<s>>ure it doe<<s>>n't work, plu<<s>> don't you think they are lovely enough already, <<Master>>?"<<else>>$He scoffs with doubt before proudly sticking out $his chest.<</if>> $He bounces $his tits for you. You'll have to agree with $him; not a bit of sag to them. <</if>> <<if $PC.boobsBonus > 2 && $PC.boobsImplant == 0>> - _He2 slides closer to you, wraps an arm around your back and grabs your huge breasts. <<if canTalk($Concubine)>>"Oh <<Master>>! It feel<<s>> like YOU might need it!" _He2 jiggles your boobs in _his2 hands.<<else>>_He2 jiggles your huge boobs in _his2 hands. _He2's calling you saggy!<</if>> You take that as an open invitation and throw the covers over the two of you so you can have a little fun before bed. + $He slides closer to you, wraps an arm around your back and grabs your huge breasts. <<if canTalk($Concubine)>>"Oh <<Master>>! It feel<<s>> like YOU might need it!" $He jiggles your boobs in $his hands.<<else>>$He jiggles your huge boobs in $his hands. $He's calling you saggy!<</if>> You take that as an open invitation and throw the covers over the two of you so you can have a little fun before bed. <</if>> <<elseif $PC.boobsBonus > 2 && $PC.boobsImplant == 0>> You cup your huge breasts. They're pretty large and you swear they've been drooping a little lately; maybe you could benefit from this cream... @@ -656,10 +656,10 @@ The offered price is <<print cashFormat($slaveCost)>>. <<link "Place an order">> <<replace #called>> <<set $purchasedSagBGone = 1>> - <<run cashX(-50, "PCmedical")>> + <<run cashX(forceNeg(Math.trunc(50 * $upgradeMultiplierTrade)), "PCmedical")>> Your order should arrive by next week. If the advertisement is to be believed, all you need to do is rub the cream into your breasts several times a day and it will ward off sagging. <</replace>> - <</link>> // This will cost <<print cashFormat(50)>> // + <</link>> // This will cost <<print cashFormat(Math.trunc(50 * $upgradeMultiplierTrade))>> // </span> <</if>> @@ -1024,8 +1024,8 @@ The offered price is <<print cashFormat($slaveCost)>>. <<elseif $PC.dick == 1>> Stunned and fully erect, you inexplicably feel the urge to creampie a pussy, so you <<if $Concubine != 0 && $Concubine.vagina > 0 && canDoVaginal($Concubine)>> - <<setLocalPronouns $Concubine 2>> - grab $Concubine.slaveName and recreate the entire ending with _him2. + <<setLocalPronouns $Concubine>> + grab $Concubine.slaveName and recreate the entire ending with $him. <<set _fctvs = $slaveIndices[$Concubine.ID]>> <<set $slaves[_fctvs].vaginalCount += 1, $vaginalTotal += 1>> <<if canImpreg($Concubine, $PC)>> @@ -1040,8 +1040,8 @@ The offered price is <<print cashFormat($slaveCost)>>. <<else>> Stunned and soaking wet, you hurry to <<if $Concubine != 0 && canPenetrate($Concubine) && canImpreg($PC, $Concubine) && ($sexualOpeness == 1 || $Concubine.toyHole == "dick")>> - <<setLocalPronouns $Concubine 2>> - get $Concubine.slaveName nice and hard before recreating the entire ending with _him2. You've never had a more hope-filled orgasm. + <<setLocalPronouns $Concubine>> + get $Concubine.slaveName nice and hard before recreating the entire ending with $him. You've never had a more hope-filled orgasm. <<= knockMeUp($PC, 10, 0, $Concubine.ID, 1)>> <<set _fctvs = $slaveIndices[$Concubine.ID]>> <<set $slaves[_fctvs].penetrativeCount += 1, $penetrativeTotal += 1>> diff --git a/src/pregmod/sePlayerBirth.tw b/src/pregmod/sePlayerBirth.tw index ee19d59d3558a8c35708dd9f9d44893bbbfc8fa5..808ca1bacb0b6f0744f64b76f41d1bd0547df3e6 100644 --- a/src/pregmod/sePlayerBirth.tw +++ b/src/pregmod/sePlayerBirth.tw @@ -14,6 +14,7 @@ PC.pregSource documentation -5 - client -6 - Societal Elite -7 - designer baby +-9 - Futanari Sister */ @@ -42,7 +43,7 @@ PC.pregSource documentation <<set $PC.preg = 0, $PC.pregKnown = 0, $PC.labor = 0, $PC.births += _curBabies>> /* setting the tallies for each type of child born */ -<<set _others = 0, _self = 0, _citizens = 0, _oldMaster = 0, _arcOwner = 0, _clients = 0, _elite = 0, _lab = 0, _slavesLength = 0, _babies = []>> +<<set _others = 0, _self = 0, _citizens = 0, _oldMaster = 0, _arcOwner = 0, _clients = 0, _elite = 0, _lab = 0, _futaS = 0, _slavesLength = 0, _babies = []>> <<for _spb = 0; _spb < $PC.curBabies.length; _spb++>> <<if $PC.curBabies[_spb].fatherID == 0>> <<set _others++>> @@ -67,6 +68,9 @@ PC.pregSource documentation <<elseif $PC.curBabies[_spb].fatherID == -7>> <<set _lab++>> <<set _babies.push("designer")>> + <<elseif $PC.curBabies[_spb].fatherID == -9>> + <<set _futaS++>> + <<set _fathers.push("a Futanari Sister's")>> <<else>> <<set _babyDaddy = $slaveIndices[$PC.curBabies[_spb].fatherID]>> <<if def _babyDaddy>> @@ -564,7 +568,7 @@ You arrange yourself to give birth, relaxing until your body urges you to begin <</if>> <<if $arcologies[0].FSSubjugationist != "unset">> <<if _pb.race == $arcologies[0].FSSubjugationistRace>> - In addition, The Prophet's womb bore <<if _curBabies == 1>>a <</if>>$arcologies[0].FSSubjugationistRace child<<if _curBabies > 1>>ren<</if>>, surely a sign to end @@.red;reject $arcologies[0].FSSubjugationistRace subjugation.@@ + In addition, The Prophet's womb bore <<if _curBabies == 1>>a <</if>>$arcologies[0].FSSubjugationistRace child<<if _curBabies > 1>>ren<</if>>, surely a sign to @@.red;reject $arcologies[0].FSSubjugationistRace subjugation.@@ <<set $arcologies[0].FSSubjugationist -= 120>> <</if>> <</if>> @@ -613,6 +617,9 @@ You arrange yourself to give birth, relaxing until your body urges you to begin <<set _seed = random(1,10)>> Alternatively, since it is @@.orange;legal to sell slave babies,@@ your child should be worth quite a pretty ¤ at auction. <</if>> + <<if $PC.pregSource == -9>> + The Futanari Sisters would happily @@.orange;take them in.@@ + <</if>> <br><br> <span id="choice">What will it be? <br> @@ -624,6 +631,8 @@ You arrange yourself to give birth, relaxing until your body urges you to begin | <<link "Breeding School">><<replace "#choice">><<print "You have decided to send them to be raised into a proper breeder. Perhaps you'll even see them again, though it's unlikely you'll recognize them with their reproduction focused body.">><</replace>><<set $breederOrphanageTotal += _curBabies>><</link>> <</if>> <<if $Cash4Babies == 1>> | <<link "Auction Them">><<replace "#choice">><<print "You send the child<<if _curBabies > 1>>ren<</if>> to be sold at auction amongst other prestigious slaves. The winning bid for your offspring came in at @@.yellowgreen;<<print cashFormat(1000*_seed*_curBabies)>>.@@">><</replace>><<run cashX((1000*_seed*_curBabies), "babyTransfer")>><</link>><</if>> + <<if $PC.pregSource == -9>> + | <<link "Futanari Sisters">><<replace "#choice">><<print "You have decided to gift them to the Futanari Sisters to be raised to join them. They are more than happy to cover all the expenses for the gift you gave them — especially after they gave you a gift in return.">><</replace>><</link>> </span> <</if>> diff --git a/src/pregmod/widgets/economyWidgets.tw b/src/pregmod/widgets/economyWidgets.tw index df0c19a9ceea0d9ca128797a1d95d9d00943b131..356deba6caee9fc3e4d801c9a8fb697a164a1c7a 100644 --- a/src/pregmod/widgets/economyWidgets.tw +++ b/src/pregmod/widgets/economyWidgets.tw @@ -470,7 +470,7 @@ <<if ["all", "max"].includes(State.temporary[$args[1]].toLowerCase())>> <<set State.temporary[$args[1]] = Math.floor($corpCash/(State.variables[$args[0]+"AssetPrice"] * 500))>> <<replace `'#'+$args[0]+'AssetsPurchasing'`>> - Bought <<print commaNum(Math.floor($corpCash/(State.variables[$args[0]+"AssetPrice"] * 500)))>> units for <<print cashFormat(Math.floor($corpCash/(State.variables[$args[0]+"AssetPrice"] * 500))*500*State.variables[$args[0]+"AssetPrice"])>> + Bought <<print num(Math.floor($corpCash/(State.variables[$args[0]+"AssetPrice"] * 500)))>> units for <<print cashFormat(Math.floor($corpCash/(State.variables[$args[0]+"AssetPrice"] * 500))*500*State.variables[$args[0]+"AssetPrice"])>> <</replace>> <<set State.variables[$args[0]+"Assets"] += (eval(parse('_Num' + $args[0]))) * 500>> <<set $corpCash -= (eval(parse('_Num' + $args[0]))) * 500 * State.variables[$args[0]+"AssetPrice"]>> @@ -478,7 +478,7 @@ <<print cashFormat($corpCash)>> <</replace>> <<replace `'#'+$args[0]+'AssetsDisp'`>> - <<print cashFormat(State.variables[$args[0]+"AssetPrice"] * State.variables[$args[0]+"Assets"])>> (<<print commaNum(Math.floor(State.variables[$args[0]+"Assets"]/500))>> unit<<if State.variables[$args[0]+"Assets"]/500 > 1>>s<</if>>) + <<print cashFormat(State.variables[$args[0]+"AssetPrice"] * State.variables[$args[0]+"Assets"])>> (<<print num(Math.floor(State.variables[$args[0]+"Assets"]/500))>> unit<<if State.variables[$args[0]+"Assets"]/500 > 1>>s<</if>>) <</replace>> <<replace `'#'+'controls'+$args[0]`>><<CorpDevBuySell $args[0] $args[1]>><</replace>><<script>>setReplaceTextboxMaxLength(State.temporary["textboxMLArg"], 10);<</script>> <<else>> @@ -493,7 +493,7 @@ <<set _DesPerc = State.temporary[$args[1]]>> <<set State.temporary[$args[1]] = Math.floor((Math.clamp((Number.parseFloat(State.temporary[$args[1]])/100),0,1)*$corpCash)/(State.variables[$args[0]+"AssetPrice"] * 500))>> <<replace `'#'+$args[0]+'AssetsPurchasing'`>> - Purchased <<print commaNum(State.temporary[$args[1]])>> units (<<print commaNum((State.temporary[$args[1]]*(State.variables[$args[0]+"AssetPrice"] * 50000)/$corpCash).toFixed(2))>>% of cash, desired was _DesPerc) + Purchased <<print num(State.temporary[$args[1]])>> units (<<print num((State.temporary[$args[1]]*(State.variables[$args[0]+"AssetPrice"] * 50000)/$corpCash).toFixed(2))>>% of cash, desired was _DesPerc) <</replace>> <<set State.variables[$args[0]+"Assets"] += (eval(parse('_Num' + $args[0]))) * 500>> <<set $corpCash -= (eval(parse('_Num' + $args[0]))) * 500 * State.variables[$args[0]+"AssetPrice"]>> @@ -501,7 +501,7 @@ <<print cashFormat($corpCash)>> <</replace>> <<replace `'#'+$args[0]+'AssetsDisp'`>> - <<print cashFormat(State.variables[$args[0]+"AssetPrice"] * State.variables[$args[0]+"Assets"])>> (<<print commaNum(Math.floor(State.variables[$args[0]+"Assets"]/500))>> unit<<if State.variables[$args[0]+"Assets"]/500 > 1>>s<</if>>) + <<print cashFormat(State.variables[$args[0]+"AssetPrice"] * State.variables[$args[0]+"Assets"])>> (<<print num(Math.floor(State.variables[$args[0]+"Assets"]/500))>> unit<<if State.variables[$args[0]+"Assets"]/500 > 1>>s<</if>>) <</replace>> <<replace `'#'+'controls'+$args[0]`>><<CorpDevBuySell $args[0] $args[1]>><</replace>><<script>>setReplaceTextboxMaxLength(State.temporary["textboxMLArg"], 10);<</script>> /* Successful buy */ @@ -512,13 +512,13 @@ <<print cashFormat($corpCash)>> <</replace>> <<replace `'#'+$args[0]+'AssetsDisp'`>> - <<print cashFormat(State.variables[$args[0]+"AssetPrice"] * State.variables[$args[0]+"Assets"])>> (<<print commaNum(Math.floor(State.variables[$args[0]+"Assets"]/500))>> unit<<if State.variables[$args[0]+"Assets"]/500 > 1>>s<</if>>) + <<print cashFormat(State.variables[$args[0]+"AssetPrice"] * State.variables[$args[0]+"Assets"])>> (<<print num(Math.floor(State.variables[$args[0]+"Assets"]/500))>> unit<<if State.variables[$args[0]+"Assets"]/500 > 1>>s<</if>>) <</replace>> <<replace `'#'+$args[0]+'AssetsPurchasing'`>><</replace>> /* Unsuccessful buy but have enough cash for more than 1 unit */ <<elseif $corpCash > 500 * State.variables[$args[0]+"AssetPrice"]>> <<replace `'#'+$args[0]+'AssetsPurchasing'`>> - The corp can only buy <<print commaNum(Math.floor($corpCash/(State.variables[$args[0]+"AssetPrice"] * 500)))>> more unit<<if Math.floor($corpCash/(State.variables[$args[0]+"AssetPrice"] * 500)) > 1 >>s<</if>> of $args[0] assets. + The corp can only buy <<print num(Math.floor($corpCash/(State.variables[$args[0]+"AssetPrice"] * 500)))>> more unit<<if Math.floor($corpCash/(State.variables[$args[0]+"AssetPrice"] * 500)) > 1 >>s<</if>> of $args[0] assets. <</replace>> <<set State.temporary[$args[1]] = Math.floor($corpCash/(State.variables[$args[0]+"AssetPrice"] * 500))>> <<replace `'#'+'controls'+$args[0]`>><<CorpDevBuySell $args[0] $args[1]>><</replace>><<script>>setReplaceTextboxMaxLength(State.temporary["textboxMLArg"], 10);<</script>> @@ -532,7 +532,7 @@ /* Sell all */ <<if ["all", "max"].includes(State.temporary[$args[1]].toLowerCase())>> <<replace `'#'+$args[0]+'AssetsPurchasing'`>> - Sold <<print commaNum(Math.ceil((State.variables[$args[0]+"Assets"]-500)/500))>> units for <<print cashFormat(Math.ceil((State.variables[$args[0]+"Assets"]-500)/500)*500*State.variables[$args[0]+"AssetPrice"])>> + Sold <<print num(Math.ceil((State.variables[$args[0]+"Assets"]-500)/500))>> units for <<print cashFormat(Math.ceil((State.variables[$args[0]+"Assets"]-500)/500)*500*State.variables[$args[0]+"AssetPrice"])>> <</replace>> <<set State.temporary[$args[1]] = Math.ceil((State.variables[$args[0]+"Assets"]-500)/500)>> <<set State.variables[$args[0]+"Assets"] -= eval(parse('_Num' + $args[0])) * 500>> @@ -556,7 +556,7 @@ <<set _DesPerc = State.temporary[$args[1]]>> <<set State.temporary[$args[1]] = Math.ceil((State.variables[$args[0]+"Assets"]-500)/500*(Math.clamp((Number.parseFloat(State.temporary[$args[1]])/100),0,1)))>> <<replace `'#'+$args[0]+'AssetsPurchasing'`>> - Sold <<print commaNum(State.temporary[$args[1]])>> units (<<print commaNum((State.temporary[$args[1]]*100/((State.variables[$args[0]+"Assets"]-500)/500)).toFixed(2))>>% of $args[0] assets, desired was _DesPerc) + Sold <<print num(State.temporary[$args[1]])>> units (<<print num((State.temporary[$args[1]]*100/((State.variables[$args[0]+"Assets"]-500)/500)).toFixed(2))>>% of $args[0] assets, desired was _DesPerc) <</replace>> <<set State.variables[$args[0]+"Assets"] -= eval(parse('_Num' + $args[0])) * 500>> <<set $corpCash += eval(parse('_Num' + $args[0])) * 500 * State.variables[$args[0]+"AssetPrice"]>> @@ -581,7 +581,7 @@ /* Unsuccessful sell but have enough assets for more than 1 unit */ <<elseif State.variables[$args[0]+"Assets"] > 500>> <<replace `'#'+$args[0]+'AssetsPurchasing'`>> - The corp can only sell <<print commaNum(Math.ceil((State.variables[$args[0]+"Assets"]-500)/500))>> more unit<<if Math.ceil((State.variables[$args[0]+"Assets"]-500)/500) > 1 >>s<</if>> of $args[0] assets. + The corp can only sell <<print num(Math.ceil((State.variables[$args[0]+"Assets"]-500)/500))>> more unit<<if Math.ceil((State.variables[$args[0]+"Assets"]-500)/500) > 1 >>s<</if>> of $args[0] assets. <</replace>> <<set State.temporary[$args[1]] = Math.ceil((State.variables[$args[0]+"Assets"]-500)/500)>> <<replace `'#'+'controls'+$args[0]`>><<CorpDevBuySell $args[0] $args[1]>><</replace>><<script>>setReplaceTextboxMaxLength(State.temporary["textboxMLArg"], 10);<</script>> diff --git a/src/pregmod/widgets/pregmodWidgets.tw b/src/pregmod/widgets/pregmodWidgets.tw index 7c89e472c537972ca8a473bad9e941be9f3fc629..4ea78f894917a27eaa762c1a8b672b58e0b86f7c 100644 --- a/src/pregmod/widgets/pregmodWidgets.tw +++ b/src/pregmod/widgets/pregmodWidgets.tw @@ -1,7 +1,7 @@ :: pregmod widgets [nobr widget] <<widget "initPC">> - <<set $PC = {name: "Anonymous", surname: 0, title: 1, ID: -1, genes: "XY", pronoun: "he", possessive: "him", object: "his", dick: 1, vagina: 0, preg: 0, pregType: 0, pregWeek: 0, pregKnown: 0, belly: 0, bellyPreg: 0, mpreg: 0, pregSource: 0, pregMood: 0, labor: 0, births: 0, boobsBonus: 0, degeneracy: 0, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, lactation: 0, lactationDuration: 0, career: "capitalist", rumor: "wealth", birthWeek: random(0,51), age: 2, sexualEnergy: 4, refreshment: "cigar", refreshmentType: 0, trading: 0, warfare: 0, slaving: 0, engineering: 0, medicine: 0, hacking: 0, cumTap: 0, race: "white", origRace: "white", skin: "white", origSkin: "white", markings: "none", eyeColor: "blue", origEye: "blue", pupil: "circular", sclerae: "white", hColor: "blonde", origHColor: "blonde", nationality: "Stateless", father: 0, mother: 0, sisters: 0, daughters: 0, birthElite: 0, birthMaster: 0, birthDegenerate: 0, birthClient: 0, birthOther: 0, birthArcOwner: 0, birthCitizen: 0, birthSelf: 0, birthLab: 0, slavesFathered: 0, slavesKnockedUp: 0, intelligence: 100, face: 100, faceShape: "normal", actualAge: 35, physicalAge: 35, visualAge: 35, boobsImplant: 0, butt: 0, buttImplant: 0, balls: 0, ballsImplant: 0, ageImplant: 0, newVag: 0, reservedChildren: 0, reservedChildrenNursery: 0, fertDrugs: 0, forcedFertDrugs: 0, staminaPills: 0, ovaryAge: 35, eggType: "human", ballType: "human", storedCum: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", fetish: "none", pubicHStyle: "hairless", underArmHStyle: "hairless", geneticQuirks: {macromastia: 0, gigantomastia: 0, fertility: 0, hyperFertility: 0, superfetation: 0, gigantism: 0, dwarfism: 0, pFace: 0, uFace: 0, albinism: 0, heterochromia: 0, rearLipedema: 0, wellHung: 0, wGain: 0, wLoss: 0, androgyny: 0}}>> + <<set $PC = {name: "Anonymous", surname: 0, title: 1, ID: -1, genes: "XY", pronoun: "he", possessive: "him", object: "his", dick: 1, vagina: 0, preg: 0, pregType: 0, pregWeek: 0, pregKnown: 0, belly: 0, bellyPreg: 0, mpreg: 0, pregSource: 0, pregMood: 0, labor: 0, births: 0, boobsBonus: 0, degeneracy: 0, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, lactation: 0, lactationDuration: 0, career: "capitalist", rumor: "wealth", birthWeek: random(0,51), age: 2, sexualEnergy: 4, refreshment: "cigar", refreshmentType: 0, trading: 0, warfare: 0, slaving: 0, engineering: 0, medicine: 0, hacking: 0, cumTap: 0, race: "white", origRace: "white", skin: "white", origSkin: "white", markings: "none", eyeColor: "blue", origEye: "blue", pupil: "circular", sclerae: "white", hColor: "blonde", origHColor: "blonde", nationality: "Stateless", father: 0, mother: 0, sisters: 0, daughters: 0, birthElite: 0, birthMaster: 0, birthDegenerate: 0, birthClient: 0, birthOther: 0, birthArcOwner: 0, birthCitizen: 0, birthSelf: 0, birthLab: 0, birthFutaSis: 0, slavesFathered: 0, slavesKnockedUp: 0, intelligence: 100, face: 100, faceShape: "normal", actualAge: 35, physicalAge: 35, visualAge: 35, boobsImplant: 0, butt: 0, buttImplant: 0, balls: 0, ballsImplant: 0, ageImplant: 0, newVag: 0, reservedChildren: 0, reservedChildrenNursery: 0, fertDrugs: 0, forcedFertDrugs: 0, staminaPills: 0, ovaryAge: 35, eggType: "human", ballType: "human", storedCum: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", fetish: "none", pubicHStyle: "hairless", underArmHStyle: "hairless", geneticQuirks: {macromastia: 0, gigantomastia: 0, fertility: 0, hyperFertility: 0, superfetation: 0, gigantism: 0, dwarfism: 0, pFace: 0, uFace: 0, albinism: 0, heterochromia: 0, rearLipedema: 0, wellHung: 0, wGain: 0, wLoss: 0, androgyny: 0}}>> <<set WombInit($PC)>> diff --git a/src/pregmod/widgets/seBirthWidgets.tw b/src/pregmod/widgets/seBirthWidgets.tw index 598aa51a128f2519f707c9571a62e29bde801a23..ee6dd1feec5c42d324445889274729e2861e4a35 100644 --- a/src/pregmod/widgets/seBirthWidgets.tw +++ b/src/pregmod/widgets/seBirthWidgets.tw @@ -197,6 +197,13 @@ <<widget "seBirthPreScene">> +/* 000-250-006 */ +<<if $seeImages && $seeReportImages>> +<div class="imageRef medImg"> + <<SlaveArt $slaves[$i] 0 0>> +</div> +<</if>> +/* 000-250-006 */ <<if $slaves[$i].fuckdoll == 0>> <<if $slaves[$i].broodmother == 0 || $slaves[$i].broodmotherCountDown == 1>> <<if $slaves[$i].assignment != "work in the dairy">> @@ -411,6 +418,8 @@ This decriptions can be expanded with more outcomes later. But it's not practica <<set _fathers.push("the Societal Elite")>> <<elseif $slaves[$i].curBabies[_seb].fatherID == -7>> <<set _fathers.push("your own design")>> + <<elseif $slaves[$i].curBabies[_cb].fatherID == -9>> + <<set _fathers.push("a Futanari Sister")>> <<else>> <<set _babyDaddy = findFather($slaves[$i].curBabies[_seb].fatherID)>> <<if def _babyDaddy>> @@ -899,6 +908,10 @@ All in all, <<if $arcologies[0].FSRestart != "unset" && $slaves[$i].breedingMark == 1 && $propOutcome == 1 && $slaves[$i].pregSource == -1>> <<set _lostBabies = 1>> $His child<<if _curBabies > 1>>ren<</if>> are collected by the Societal Elite to be raised into upstanding members of the new society. + <<elseif $Cash4Babies == 1 && $slaves[_b].pregSource == -9>> + <<set _lostBabies = 1, _babyCost = random(1000,2500)>> + $His <<if _curBabies > 1>>babies were<<else>>baby was<</if>> purchased by the Futanari Sisters for @@.yellowgreen;<<print cashFormat(_curBabies*(_babyCost))>>.@@ + <<run cashX((_curBabies*(_babyCost)), "babyTransfer")>> <<elseif $Cash4Babies == 1 && $DefaultBirthDestination !== "the market">> <<set _lostBabies = 1>> <<set _babyCost = random(-12,12)>> @@ -913,7 +926,7 @@ All in all, <<set _lostBabies = 0>> <<else>> $His <<if _curBabies > 1>>babies<<else>>baby<</if>> sold for <<if _curBabies > 1>>a total of <</if>>@@.yellowgreen;<<print cashFormat(_curBabies*(50+_babyCost))>>.@@<<if $slaves[$i].prematureBirth == 1>> A low price due to the added costs of caring for them.<</if>> - <<set $cash += _curBabies*(50+_babyCost)>> + <<run cashX((_curBabies*(50+_babyCost)), "babyTransfer")>> <</if>> <</if>> <<if _lostBabies != 1 && $universalRulesChildrenBecomeBreeders > 0 && $arcologies[0].FSRepopulationFocus > 40 && $DefaultBirthDestination === "individually decided fates">> @@ -986,6 +999,20 @@ All in all, <</replace>> <</link>> //Will cost <<print cashFormat(100)>> weekly// + <<if $slaves[$i].pregSource == -9>> + | <<link 'Give them to the Futanari Sisters.'>> + <<replace `"#" + $dispositionId`>> + The child<<if _count > 1>>ren are<<else>> is<</if>> handed off to be raised by their father, the Futanari Sisters. $slaves[$i].slaveName + <<if $slaves[$i].fetish == "mindbroken" || $slaves[$i].fuckdoll > 0>> + has few thoughts about the matter. + <<else>> + is overjoyed that $his child<<if _count > 1>>ren<</if>> will follow in <<if _count > 1>>their<<else>>its<</if>> parent's footsteps. + <<set $slaves[$i].devotion += 4>> + <</if>> + <<set $slaveOrphanageTotal -= _count>> + <</replace>> + <</link>> + <</if>> | <<link 'Have them raised privately'>> <<replace `"#" + $dispositionId`>> The child<<if _count > 1>>ren are<<else>> is<</if>> sent to be privately raised, to be brought up as a future high class citizen. $slaves[$i].slaveName diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw index 0c0406f501ed539cb892acf4ba76c0b19af881a7..7389d62645c0084ca176bd48d60f05cb95f7cc34 100644 --- a/src/uncategorized/BackwardsCompatibility.tw +++ b/src/uncategorized/BackwardsCompatibility.tw @@ -2095,7 +2095,6 @@ Setting missing global variables: <<if ndef $trinkets>> <<set $trinkets = []>> - <<set $upgradeMultiplierMedicine = 1>> <<if $PC.career == "wealth">> <<set $trinkets.push("a collection of diplomas from expensive schools")>> <<elseif $PC.career == "capitalist">> @@ -2108,7 +2107,6 @@ Setting missing global variables: <<set $trinkets.push("an artist's impression of an early arcology design")>> <<elseif $PC.career == "medicine">> <<set $trinkets.push("a framed postsurgical x-ray")>> - <<set $upgradeMultiplierMedicine = 0.8>> <<elseif $PC.career == "celebrity">> <<set $trinkets.push("a framed copy of the first news story featuring yourself")>> <<elseif $PC.career == "arcology owner">> @@ -2532,82 +2530,82 @@ Setting missing global variables: /*Corporation variables added*/ <<if ndef $vanillaShareSplit>> -<<set $vanillaShareSplit = 1>> + <<set $vanillaShareSplit = 1>> <</if>> <<if ndef $corpCashDividend>> -<<set $corpCashDividend = 0>> + <<set $corpCashDividend = 0>> <</if>> <<if ndef $corpDiv>> -<<set $corpDiv = 0>> + <<set $corpDiv = 0>> <</if>> <<if ndef $corpExpand>> -<<set $corpExpand = 0>> + <<set $corpExpand = 0>> <</if>> <<if ndef $corpExpandToken>> -<<set $corpExpandToken = 0>> + <<set $corpExpandToken = 0>> <</if>> <<if ndef $corpSpec>> -<<set $corpSpec = 0>> + <<set $corpSpec = 0>> <</if>> <<if ndef $corpSpecToken>> -<<set $corpSpecToken = 0>> + <<set $corpSpecToken = 0>> <</if>> <<if ndef $corpDivExtra>> -<<set $corpDivExtra = 0>> + <<set $corpDivExtra = 0>> <</if>> <<if ndef $corpDivLegal>> -<<set $corpDivLegal = 0>> + <<set $corpDivLegal = 0>> <</if>> <<if ndef $corpDivBreak>> -<<set $corpDivBreak = 0>> + <<set $corpDivBreak = 0>> <</if>> <<if ndef $corpDivSurgery>> -<<set $corpDivSurgery = 0>> + <<set $corpDivSurgery = 0>> <</if>> <<if ndef $corpDivTrain>> -<<set $corpDivTrain = 0>> + <<set $corpDivTrain = 0>> <</if>> <<if ndef $corpDivArcade>> -<<set $corpDivArcade = 0>> + <<set $corpDivArcade = 0>> <</if>> <<if ndef $corpDivMenial>> -<<set $corpDivMenial = 0>> + <<set $corpDivMenial = 0>> <</if>> <<if ndef $corpDivDairy>> -<<set $corpDivDairy = 0>> + <<set $corpDivDairy = 0>> <</if>> <<if ndef $corpDivWhore>> -<<set $corpDivWhore = 0>> + <<set $corpDivWhore = 0>> <</if>> <<if ndef $corpDivExtraDev>> -<<set $corpDivExtraDev = 0>> + <<set $corpDivExtraDev = 0>> <</if>> <<if ndef $corpDivLegalDev>> -<<set $corpDivLegalDev = 0>> + <<set $corpDivLegalDev = 0>> <</if>> <<if ndef $corpDivBreakDev>> -<<set $corpDivBreakDev = 0>> + <<set $corpDivBreakDev = 0>> <</if>> <<if ndef $corpDivSurgeryDev>> -<<set $corpDivSurgeryDev = 0>> + <<set $corpDivSurgeryDev = 0>> <</if>> <<if ndef $corpDivTrainDev>> -<<set $corpDivTrainDev = 0>> + <<set $corpDivTrainDev = 0>> <</if>> <<if ndef $corpDivArcadeDev>> -<<set $corpDivArcadeDev = 0>> + <<set $corpDivArcadeDev = 0>> <</if>> <<if ndef $corpDivMenialDev>> -<<set $corpDivMenialDev = 0>> + <<set $corpDivMenialDev = 0>> <</if>> <<if ndef $corpDivDairyDev>> -<<set $corpDivDairyDev = 0>> + <<set $corpDivDairyDev = 0>> <</if>> <<if ndef $corpDivWhoreDev>> -<<set $corpDivWhoreDev = 0>> + <<set $corpDivWhoreDev = 0>> <</if>> <<if ndef $corpSpecRaces>> -<<set $corpSpecRaces = []>> + <<set $corpSpecRaces = []>> <</if>> <<if ndef $corpEasy>> <<if $economy > 100>> @@ -2630,7 +2628,7 @@ Setting missing global variables: <<set $corpMarket = 0>> <<unset $corpPeopleEnslaved, $slaveAssets, $slaveAssetPrice, $corpProfit, $corpCash, $corpValue, $sharePrice, $oldSharePrice, $personalShares, $publicShares, $generalAssetPrice, $generalAssets, $entrapmentAssets, $entrapmentAssetPrice, $captureAssets, $captureAssetPrice, $trainingAssets, $trainingAssetPrice, $surgicalAssets, $surgicalAssetPrice, $drugAssets, $drugAssetPrice, $generalUpgradeBreaking, $generalUpgradeWeight, $generalUpgradeMuscle, $entrapmentUpgradeDevotionOne, $entrapmentUpgradeDevotionTwo, $entrapmentUpgradeIntelligence, $captureUpgradeGender, $surgicalUpgradeGenitalia, $captureUpgradeAge, $captureUpgradeRace, $trainingUpgradeAccent, $trainingUpgradeEducation, $trainingUpgradeSexEd, $surgicalUpgradeCosmetics, $surgicalUpgradeImplants, $drugUpgradeHormones, $drugUpgradeInjectionOne, $drugUpgradeInjectionTwo>> <<for _i = 0; _i < $sectors.length; _i++>> - <<if $sectors[_i].type == "CorporateMarket">><<set $sectors[_i].type = "Markets">><<break>><</if>> + <<if $sectors[_i].type == "CorporateMarket">><<set $sectors[_i].type = "Markets">><<break>><</if>> <</for>> <</if>> @@ -3565,6 +3563,8 @@ Done! <<set $HackingSkillMultiplier = HackingSkillMultiplier()>> <<set $upgradeMultiplierArcology = upgradeMultiplierArcology()>> +<<set $upgradeMultiplierMedicine = upgradeMultiplierMedicine()>> +<<set $upgradeMultiplierTrade = upgradeMultiplierTrade()>> /* reset NaNArray after BC is run */ <<set $NaNArray = findNaN()>> diff --git a/src/uncategorized/PETS.tw b/src/uncategorized/PETS.tw index 78cd37b841559c13d2b2db10249103f7a4efbd2a..84330ebad7f264b2245867830159e49a045fbe6a 100644 --- a/src/uncategorized/PETS.tw +++ b/src/uncategorized/PETS.tw @@ -112,11 +112,11 @@ $activeSlave.slaveName, meanwhile, is obviously enjoying torturing the poor serv <<case "aggressive schoolteacher">> -<<print "[[$subSlave.slaveName|Long Slave Description][$nextLink = passage(), $eventDescription = 1]]">> is at the head of the class. In this case, the literal head of the class; _he2 has been performing poorly at _his2 studies, so <<EventNameLink>> has _him2 under the teacher's desk, giving $activeSlave.slaveName oral. $activeSlave.slaveName is continuing the lesson, giving little indication $he's being orally serviced. The other students are doing their best to look attentive, lest they be required to replace $subSlave.slaveName under the teacher's desk. +$subSlave.slaveName is at the head of the class. In this case, the literal head of the class; _he2 has been performing poorly at _his2 studies, so <<EventNameLink>> has _him2 under the teacher's desk, giving $activeSlave.slaveName oral. $activeSlave.slaveName is continuing the lesson, giving little indication $he's being orally serviced. The other students are doing their best to look attentive, lest they be required to replace $subSlave.slaveName under the teacher's desk. <<case "abusive wardeness">> -As you pass the entrance to the hall of cells where <<EventNameLink>> breaks bitches late one night, you hear some muffled cursing, followed by moans. Curious, you lean into the one cell with an open door and are treated to the sight of $activeSlave.slaveName holding <<print "[[$subSlave.slaveName|Long Slave Description][$nextLink = passage(), $eventDescription = 1]]">>'s head between $his legs, receiving what is very obviously non-consensual oral sex. $activeSlave.slaveName is clearly enjoying $himself, but gathers $himself together and greets you properly, without stopping. +As you pass the entrance to the hall of cells where <<EventNameLink>> breaks bitches late one night, you hear some muffled cursing, followed by moans. Curious, you lean into the one cell with an open door and are treated to the sight of $activeSlave.slaveName holding $subSlave.slaveName's head between $his legs, receiving what is very obviously non-consensual oral sex. $activeSlave.slaveName is clearly enjoying $himself, but gathers $himself together and greets you properly, without stopping. <br><br> "Told thi<<s>> whore I wa<<s>>n't turning the light<<s>> off in _his2 cell until _he2 got me off. _He2 can't <<s>>leep with 'em on, and bitche<<s>> do anything for a little <<s>>leep," $he explains. diff --git a/src/uncategorized/REFI.tw b/src/uncategorized/REFI.tw index 5ff429580440b76c56d5232cf181b8d5079055d7..7d726edd0f40675190b162c58fa72365b658a31e 100644 --- a/src/uncategorized/REFI.tw +++ b/src/uncategorized/REFI.tw @@ -23,6 +23,10 @@ /* Some scenes are also stored in useGuard.tw, walkPast.tw, and toychest.tw */ <<switch $REFIevent>> + <<case "sadist">> + /* TODO: expand this */ + <<set $activeSlave = getSlave($sadistInterestTargetID)>> + <<set _refi = $slaveIndices[$sadistID]>> <<case "masochist">> <<set $activeSlave = getSlave($masochistInterestTargetID)>> <<set _refi = $slaveIndices[$masochistID]>> @@ -55,6 +59,10 @@ <<set $slaves[_refi].induceLactation += 4>> <<run induceLactation($slaves[_refi])>> <</if>> + <<case "dom">> + /* TODO: expand this */ + <<set $activeSlave = getSlave($dominantInterestTargetID)>> + <<set _refi = $slaveIndices[$dominantID]>> <<case "submissive">> <<set $activeSlave = getSlave($submissiveInterestTargetID)>> <<set _refi = $slaveIndices[$subID]>> @@ -90,8 +98,6 @@ <<set $slaves[_refi].analCount += 1>> <<set $analTotal += 1>> <</if>> - <<case "dom">> - <<case "sadist">> <</switch>> <<if Array.isArray($REFIevent)>> @@ -123,9 +129,65 @@ <<set _clothesTemp = $subSlave.clothes>> <<switch $REFIevent>> -<<case "masochist" "pregnancy" "boobs" "cumslut">> /* Prep clothing for images */ - <<set $subSlave.clothes = "no clothing">> -<</switch>> + +<<case "sadist">> + +<<set $subSlave.penetrativeCount++, $penetrativeTotal++>> + +/* 000-250-006 */ +<<if $seeImages == 1>> + <div class="imageRef medImg"> + <<SlaveArt $subSlave 2 0>> + </div> + <div class="imageRef medImg"> + <<SlaveArt $activeSlave 2 0>> + </div> +<</if>> +/* 000-250-006 */ + +You are in your office, watching as $subSlave.slaveName takes a riding crop to another slave. This has become an almost daily occurence, as _he2 is liable to strike out against your other slaves out-of-turn if _he2 isn't allowed to get a chance to satisfy _his2 sadistic streak. The slave at _his2 feet is a quivering mess, though you've given $subSlave.slaveName strict instructions to not leave any permanent marks on the girl. The slave had been disobedient, and so you decided that you would let $subSlave.slaveName punish her. She winces as _he2 slowly drags the crop against the girl's shoulder, and you do your best to hide the small smile that threatens to escape. After another minute or so of the riding crop, you tell $subSlave.slaveName that this is getting boring and to change it up. _He2 gives you a wicked grin and gives +<<if $subSlave.dick > 0 && canAchieveErection($subSlave)>> + _his2 cock +<<else>> + the strap-on _he2 is wearing +<</if>> +a few rubs before unceremoniously stuffing it into his victim's asshole. You can't hide your smile this time as the poor girl gives a loud shriek, and a small noise at the doorway catches your attention. To your surprise, you see $activeSlave.slaveName at the door to your office. You call $him in. +<br><br> +<<EventNameLink $activeSlave>> hesitates before explaining $himself, and the $desc is obviously aroused: +<<if ($activeSlave.dick > 0) && ["chastity", "combined chastity"].includes($activeSlave.dickAccessory)>> + $he's got a string of precum leaking out of $his chastity cage. +<<elseif ($activeSlave.dick > 0) && ($activeSlave.hormoneBalance >= 100)>> + though $his hormone-filled body can't get $his dick hard any more, $he's got a string of precum coming off $his member. +<<elseif $activeSlave.dick > 0 && $activeSlave.balls > 0 && $activeSlave.ballType == "sterile">> + though $his useless balls can't muster the effort to get $his dick hard any more, $he's got a string of precum coming off $his limp member. +<<elseif ($activeSlave.dick > 0) && ($activeSlave.balls == 0)>> + though $his gelded body can't get $his dick hard any more, $he's got a string of precum coming off $his limp member. +<<elseif canAchieveErection($activeSlave)>> + <<if $activeSlave.dick > 4>> + $his gigantic cock is standing out like a mast. + <<elseif $activeSlave.dick > 2>> + $he's sporting an impressive erection. + <<elseif $activeSlave.dick > 0>> + $his little penis is rock hard. + <</if>> +<<elseif $activeSlave.dick > 7>> + $he's got a string of precum coming off $his engorged member. +<<elseif $activeSlave.dick > 0>> + $he's got a string of precum coming off $his limp member. +<<elseif $activeSlave.clit > 0>> + $his large clit is visibly engorged. +<<elseif $activeSlave.vagina > -1>> + <<if $activeSlave.nipples != "fuckable">>$his nipples are hard and <</if>>there's a sheen on $his pussylips. +<<elseif $activeSlave.balls > 0>> + <<if $activeSlave.nipples != "fuckable">>$his nipples are hard and <</if>>there is a distinct dribble of precum running from $his featureless crotch. +<<else>> + <<if $activeSlave.nipples != "fuckable">>$his nipples are hard and <</if>>there is a clear scent of lust around $him. +<</if>> +It seems $he passed by while $subSlave.slaveName was beating the girl and found the <<if canSee($activeSlave)>>sight<<elseif canHear($activeSlave)>>sounds<<else>>sensations<</if>> rather compelling. It should be possible to either encourage this fascination or steer $him away from it for now. + +<<case "masochist">> + +<<set _clothesTemp = $subSlave.clothes, $subSlave.clothes = "no clothing">> /* 000-250-006 */ <<if $seeImages == 1>> <div class="imageColumn"> @@ -406,6 +468,69 @@ Though you never touch anything but _his2 nipples, _he2 climaxes twice. After yo <</if>> It seems $he passed by while you were drinking from $subSlave.slaveName and found the <<if canSee($activeSlave)>>sight<<elseif canHear($activeSlave)>>sounds<<else>>sensations<</if>> rather compelling. It should be possible to either encourage this fascination or steer $him away from it for now. +<<case "dom">> + +<<if $subSlave.dick > 0>> + <<set $subSlave.penetrativeCount++, $penetrativeTotal++>> +<<elseif $subSlave.vagina > 0>> + <<set $subSlave.vaginalCount++, $vaginalTotal++>> +<<elseif $subSlave.anus > 0>> + <<st $subSlave.analCount++, $analTotal++>> +<</if>> + +/* 000-250-006 */ +<<if $seeImages == 1>> + <div class="imageRef medImg"> + <<SlaveArt $subSlave 2 0>> + </div> + <div class="imageRef medImg"> + <<SlaveArt $activeSlave 2 0>> + </div> +<</if>> +/* 000-250-006 */ + +$subSlave.slaveName is <<if $subSlave.vagina > 0 || $subSlave.anus > 0>>riding another slave, _his2 hands pinning her down<<else>>straddling another slave, _his2 <<if $subSlave.dick > 0>>cock in her mouth<<else>><<if $subSlave.vagina > 0>>pussy<<else>>ass<</if>>pressed to her face<</if>><</if>>. The <<if $seeDicks > 0 && ($subSlave.vagina > 0 || $subSlave.anus > 0)>>slaveboy<<else>>slavegirl<</if>> had been disobedient, and her punishment was to let $subSlave.slaveName dominate her. The truth is this is also _his2 reward; _he2 is such a dominant that _he2's prone to lashing out at your other slaves if _he2 isn't given a proper outlet. Sure enough, _his2 moans begin to increase in pitch and frequency, reaching a crescendo as _he2 comes to an orgasm. Once you feel the poor <<if $seeDicks > 0 && ($subSlave.vagina > 0 || $subSlave.anus > 0)>> beneath _him2 has had enough, you give $subSlave.slaveName the order to dismount. _He2 leaves your office with a smile on _his2 face, passing <<EventNameLink $activeSlave>>, who is +<<if $activeSlave.amp == 1>> + propped limblessly nearby. $He has +<<elseif !canWalk($activeSlave)>> + kneeling in the doorway with +<<else>> + standing in the doorway with +<</if>> +a troubled look on $his face. +<br><br> +<<EventNameLink $activeSlave>> hesitates before explaining $himself, and the $desc is obviously aroused: +<<if ($activeSlave.dick > 0) && ["chastity", "combined chastity"].includes($activeSlave.dickAccessory)>> + $he's got a string of precum leaking out of $his chastity cage. +<<elseif ($activeSlave.dick > 0) && ($activeSlave.hormoneBalance >= 100)>> + though $his hormone-filled body can't get $his dick hard any more, $he's got a string of precum coming off $his member. +<<elseif $activeSlave.dick > 0 && $activeSlave.balls > 0 && $activeSlave.ballType == "sterile">> + though $his useless balls can't muster the effort to get $his dick hard any more, $he's got a string of precum coming off $his limp member. +<<elseif ($activeSlave.dick > 0) && ($activeSlave.balls == 0)>> + though $his gelded body can't get $his dick hard any more, $he's got a string of precum coming off $his limp member. +<<elseif canAchieveErection($activeSlave)>> + <<if $activeSlave.dick > 4>> + $his gigantic cock is standing out like a mast. + <<elseif $activeSlave.dick > 2>> + $he's sporting an impressive erection. + <<elseif $activeSlave.dick > 0>> + $his little penis is rock hard. + <</if>> +<<elseif $activeSlave.dick > 7>> + $he's got a string of precum coming off $his engorged member. +<<elseif $activeSlave.dick > 0>> + $he's got a string of precum coming off $his limp member. +<<elseif $activeSlave.clit > 0>> + $his large clit is visibly engorged. +<<elseif $activeSlave.vagina > -1>> + <<if $activeSlave.nipples != "fuckable">>$his nipples are hard and <</if>>there's a sheen on $his pussylips. +<<elseif $activeSlave.balls > 0>> + <<if $activeSlave.nipples != "fuckable">>$his nipples are hard and <</if>>there is a distinct dribble of precum running from $his featureless crotch. +<<else>> + <<if $activeSlave.nipples != "fuckable">>$his nipples are hard and <</if>>there is a clear scent of lust around $him. +<</if>> +It seems $he passed by while $subSlave.slaveName was dominating the other <<if $seeDicks > 0>>slaveboy<<else>>slavegirl<</if>> and found the sight rather compelling. It should be possible to either encourage this fascination with domination or steer $him away from it for now. + <<case "submissive">> $subSlave.slaveName is lying on the edge of your desk with _his2<<if $subSlave.belly >= 1500>> bloated<</if>> body helpless beneath you, your <<if $PC.dick == 1>>dick<<else>>strap-on<</if>> in _him2, and your hands around _his2 neck. It's just breath play, and you're practiced enough that _he2's in no danger. _He2's such a sexual submissive that _he2 sometimes acts out if not managed. This happens when _he2 feels the urge to misbehave in order to access punishment, so you personally ensure that _he2 can indulge _his2 submissiveness when _he2 needs it. _He2 does not orgasm with you, _his2 complete servitude to your pleasure fulfilling a deeper need than that. _He2 leaves your office with a serene look on _his2 face, passing <<EventNameLink>>, who is @@ -488,7 +613,24 @@ It seems $he passed by while you were buttfucking $subSlave.slaveName and found <<case "cumslut">> -You wake up to the sensation of $subSlave.slaveName eagerly sucking your dick. _He2's industriously pumping _his2 mouth up and down on your member. In truth, $subSlave.slaveName doesn't give the perfect blowjob: _he2 loves cum so much that _he2 mostly enjoys oral sex in an anticipatory way, and usually works to make the recipient cum as soon as possible so as to get _his2 favorite treat into _his2 mouth quicker. Still, _his2 enthusiasm is nice and _he2 does have permission to wake you at your usual time in this way. As you get up after finishing, you notice <<EventNameLink>> at the door to your bedroom. You call $him in. +<<set _clothesTemp = $subSlave.clothes, $subSlave.clothes = "no clothing", $subSlave.oralCount++, $oralTotal++>> +/* 000-250-006 */ +<<if $seeImages == 1>> + <div class="imageRef medImg"> + <<SlaveArt $subSlave 2 0>> + </div> + <div class="imageRef medImg"> + <<SlaveArt $activeSlave 2 0>> + </div> +<</if>> +/* 000-250-006 */ +<<set $subSlave.clothes = _clothesTemp>> + +<<if $PC.dick > 0>> + You wake up to the sensation of $subSlave.slaveName eagerly sucking your dick. _He2's industriously pumping _his2 mouth up and down on your member. In truth, $subSlave.slaveName doesn't give the perfect blowjob: _he2 loves cum so much that _he2 mostly enjoys oral sex in an anticipatory way, and usually works to make the recipient cum as soon as possible so as to get _his2 favorite treat into _his2 mouth quicker. Still, _his2 enthusiasm is nice and _he2 does have permission to wake you at your usual time in this way. As you get up after finishing, you notice <<EventNameLink $activeSlave>> at the door to your bedroom. You call $him in. +<<else>> + You come across $subSlave.slaveName in the middle of what appears to be an impromptu blowbang, one that seems to be drawing to a close. One by one, the citizens pull out of _his2 wide-open mouth and splash cum into it. The bliss on _his2 face is obvious even from where you are standing, and as you watch the scene unfolding before you, you notice <<EventNameLink $activeSlave>> is also looking on. You call $him over. +<</if>> <br><br> <<EventNameLink>> hesitates before explaining $himself, and the $desc is obviously aroused: <<if ($activeSlave.chastityPenis == 1)>> @@ -520,7 +662,7 @@ You wake up to the sensation of $subSlave.slaveName eagerly sucking your dick. _ <<else>> <<if $activeSlave.nipples != "fuckable">>$his nipples are hard and <</if>>there is a clear scent of lust around $him. <</if>> -It seems $he passed by while $subSlave.slaveName was blowing you. $He swallows painfully at the <<if canSee($activeSlave)>>sight of the satisfied cumslut swirling your ejaculate around _his2 mouth<<elseif canHear($activeSlave)>>sound of the satisfied cumslut savoring your fresh load<<else>>reminder of the taste and texture of your cum<</if>>. It should be possible to either encourage this fascination or steer $him away from it for now. +It seems $he passed by while $subSlave.slaveName was <<if $PC.dick > 0>>in the midst of _his2 little oral party<<else>>blowing you<</if>>. $He swallows painfully at the <<if canSee($activeSlave)>>sight of the satisfied cumslut swirling the ejaculate around _his2 mouth<<elseif canHear($activeSlave)>>sound of the satisfied cumslut savoring the fresh load<<else>>reminder of the taste and texture of the cum<</if>>. It should be possible to either encourage this fascination or steer $him away from it for now. <<case "humiliation">> @@ -566,6 +708,122 @@ There was a glint of envy <<if canSee($activeSlave)>>in $his eyes when $he saw<< <span id="result"> <<switch $REFIevent>> +<<case "sadist">> +/* TODO: rewrite this */ + +<<link "Show $him how enjoyable causing pain is">> + <<EventNameDelink $activeSlave>> + <<replace "#result">> + <<if !canTalk($activeSlave)>> + <<if $activeSlave.accent >= 3>> + Since $he doesn't speak $language well enough to handle the + <<if $activeSlave.amp == 1>> + subject and has no hands, it takes a long, frustrating time + <<else>> + subject, $he's forced to use gestures + <</if>> + to communicate $his desire to be abuse someone. + <<elseif $activeSlave.voice == 0>> + $He's + <<if $activeSlave.amp == 1>> + mute and has no hands, so it takes a long, frustrating time for $him to communicate that $he would like + <<else>> + mute, so $he uses gestures to ask + <</if>> + to hurt someone, too. + <<else>> + $He's incapable of forming + <<if $activeSlave.amp == 1>> + words and has no hands, so it takes a long, frustrating time for $him to communicate that $he would like + <<else>> + words, so $he uses gestures to ask + <</if>> + to hurt someone, too. + <</if>> + <<else>> + <<if $activeSlave.lips > 70>> + $He asks through $his massive dick-sucking lips, + <<elseif ($activeSlave.lipsPiercing+$activeSlave.tonguePiercing > 2)>> + $He asks through $his big oral piercings, + <<else>> + $He asks, + <</if>> + "<<Master>>, can — can I hurt someone? Like that?" + <</if>> + You make $him state it more explicitly, so $he tries again: + /* TODO: not sure what to change this to */ + <<if $activeSlave.amp == 1 && !canTalk($activeSlave)>> + $he wriggles $himself into a position where $he can lightly slap $his amputee ass against a chair leg. + <<elseif !canTalk($activeSlave)>> + $he turns around and starts to spank $himself roughly. + <<else>> + "Plea<<s>>e let me beat someone, <<Master>>!" + <</if>> + You call in another slave and have her kneel on the floor, ass up. You then hand $him a leathern cat-o-nine tails and tell $him to get busy, or $he'll take the other slave's place. As you note the remorse on $his face, you tell $him to get used to it. One of $his jobs is to cause pain now, second thoughts or not. + /* TODO: not sure what to do here */ + <<if canDoAnal($activeSlave)>> + <<if $activeSlave.anus == 0>> + $He hasn't recovered before $he feels the still more urgent pain of <<if $PC.dick == 1>>your dick brutally @@.lime;taking $his anal virginity@@<<else>>an enormous dildo @@.lime;stealing $his anal virginity@@<</if>>, followed by rough anal, + <<set $activeSlave.anus = 1>> + <<else>> + $He hasn't recovered before $he feels the still more urgent pain of rough anal, + <</if>> + <<= AnalVCheck()>> + <<elseif canDoVaginal($activeSlave)>> + <<if $activeSlave.vagina == 0>> + $He hasn't recovered before $he feels the still more urgent pain of <<if $PC.dick == 1>>your dick brutally @@.lime;stripping $him of $his virginity@@<<else>>an enormous dildo @@.lime;stealing $his virginity@@<</if>>, followed by rough sex, + <<set $activeSlave.vagina = 1>> + <<else>> + $He hasn't recovered before $he feels the still more urgent pain of <<if $PC.dick == 1>>your dick<<else>>an enormous dildo<</if>> slamming against $his cervix, + <</if>> + <<= VaginalVCheck()>> + <<else>> + $He hasn't recovered before $he feels + <<switch $activeSlave.collar>> + <<case "dildo gag" "massive dildo gag">> + the relief of the dildo gag being drawn from $his throat before + <<case "ball gag" "bit gag">> + you unhook $his gag before + <</switch>> + the still more urgent pain of <<if $PC.dick == 1>>your dick getting shoved as deep down $his throat as you can<<else>>an enormous dildo forcing $his jaw wide and working its way down $his throat<</if>>, + <<set $activeSlave.oralCount++, $oralTotal++>> + <</if>> + which is then overlaid by rough spanking, nipple pinching, and + <<if ["chastity", "combined chastity"].includes($activeSlave.dickAccessory)>> + cock torment. + <<elseif $activeSlave.dick > 0>> + dick abuse. + <<elseif $activeSlave.vagina > -1 && canDoVaginal($activeSlave)>> + clit torture. + <<elseif $activeSlave.belly >= 1500>> + stomach abuse. + <<elseif $activeSlave.vagina > -1>> + chastity assault. + <<elseif $activeSlave.scrotum > 1>> + ball crushing. + <<else>> + urethral torment. + <</if>> + @@.hotpink;$He has become more devoted to you,@@ and @@.lightcoral;$he has started to get off on causing pain.@@ + <<set $activeSlave.devotion += 4>> + <<set $activeSlave.fetish = "sadist", $activeSlave.fetishKnown = 1, $activeSlave.fetishStrength = 65>> + <</replace>> +<</link>><<if canDoAnal($activeSlave) && ($activeSlave.anus == 0)>>//This option will take virginity//<<elseif !canDoAnal($activeSlave) && canDoVaginal($activeSlave) && ($activeSlave.vagina == 0)>> //This option will take anal virginity//<</if>> +<br><<link "Steer $him away from an obsession with causing pain for the moment">> + <<EventNameDelink $activeSlave>> + <<replace "#result">> + Good slaves get aroused according to their masters' whim, not their own silly tendencies. You call $activeSlave.slaveName over before $he can give voice to $his interest in dishing out pain, + <<if canDoVaginal($activeSlave) || ($activeSlave.dick > 0 && !["chastity", "combined chastity"].includes($activeSlave.dickAccessory))>> + and let $him masturbate while <<if ($PC.dick == 0)>>eating you out<<else>>sucking you off<</if>>, + <<else>> + and play with $him until $he orgasms while <<if ($PC.dick == 0)>>eating you out<<else>>sucking you off<</if>>, all while + <</if>> + carefully making sure $he only causes pleasure. You'll keep an eye on $him, and with this correction @@.hotpink;$he'll become more submissive to you.@@ + <<set $activeSlave.devotion += 4>> + <<set $activeSlave.oralCount += 1, $oralTotal += 1>> + <</replace>> +<</link>> + <<case "masochist">> <<link "Turn $him into another pain slut">> @@ -1248,6 +1506,44 @@ There was a glint of envy <<if canSee($activeSlave)>>in $his eyes when $he saw<< <</replace>> <</link>> +<<case "dom">> +/* TODO: */ + +<<link "Turn $him into a dominant too">> + <<EventNameDelink $activeSlave>> + <<replace "#result">> + <<if canWalk($activeSlave) && canSee($activeSlave)>> + You order a passing slave to come in and kneel besides you, then snap your fingers at $activeSlave.slaveName and point commandingly at her. You tell $him that a proper dom does what $he wants -- with your permission, of course -- and order $him to get started on the other slave. + <<elseif $activeSlave.amp == 1>> + You place $activeSlave.slaveName's helpless body on the floor next to your desk, then order a passing slave to come in and service $him. You tell $him that a proper dom does what he wants -- with your permission, of course -- and order $him to tell the other slave what to do. + <<else>> + You order a passing slave to come in and kneel besides you, then guide $activeSlave.slaveName to the waiting slave. You tell $him that a proper dom does what $he wants -- with your permission, of course -- and order $him to get started on the other slave. + <</if>> + Then, you watch as $he begins to use the other slave as $his plaything. $activeSlave.slaveName spends almost all $his sexual experiences dominating other slaves for the rest of the week. The other slaves who have sex with $him are $his to use, not for $him to make love to. @@.hotpink;$He has become more obedient,@@ and @@.lightcoral;$his sexuality now focuses on domination.@@ + <<set $activeSlave.devotion += 4>> + <<set $activeSlave.oralCount += 10, $oralTotal += 10>> + <<set $activeSlave.fetish = "dom", $activeSlave.fetishKnown = 1, $activeSlave.fetishStrength = 65>> + <</replace>> +<</link>> +<br><<link "Steer $him away from total domination for the moment">> + <<EventNameDelink $activeSlave>> + <<replace "#result">> + Good slaves get aroused according to their masters' whim, not their own silly tendencies. You call $activeSlave.slaveName over before $he can give voice to $his interest in domination, and + <<if canDoVaginal($activeSlave) && $activeSlave.vagina > 0>> + make $him take <<if ($PC.dick == 0)>>a strap-on you've put on<<else>>your dick<</if>>, hard. + <<= VaginalVCheck()>> + <<elseif canDoAnal($activeSlave) && $activeSlave.anus > 0>> + make $him take <<if ($PC.dick == 0)>>a strap-on you've put on<<else>>your dick<</if>>, hard. + <<= AnalVCheck()>> + <<else>> + <<if $PC.dick == 1>>ram your dick down $his throat<<if $PC.vagina == 1>> and make $him eat you out<</if>><<else>>mash your clit in $his face, making $him eat you out<</if>>. + <<set $activeSlave.oralCount++, $oralTotal++>> + <</if>> + You ensure that $he maintains the submissive role throughout. You'll keep an eye on $him, and with this correction @@.hotpink;$he'll become more obedient.@@ + <<set $activeSlave.devotion += 4>> + <</replace>> +<</link>> + <<case "submissive">> <<link "Turn $him into a submissive too">> diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw index ed1b50ee0a414ee078e0c7dffbecaa61a43d922d..f32c1327caf4ea9f4d9392edf53eafef696118e1 100644 --- a/src/uncategorized/RESS.tw +++ b/src/uncategorized/RESS.tw @@ -122,6 +122,21 @@ <</if>> /* 000-250-006 */ </span> +<<elseif $RESSevent == "PA flirting">> + <span id="artFrame"> + /* 000-250-006 */ + <<if $seeImages == 1>> + <div class="imageColumn"> + <div class="imageRef medImg"> + <<SlaveArt $activeSlave 2 0>> + </div> + <div class="imageRef medImg"> + <<= assistantArt(2)>> + </div> + </div> + <</if>> + /* 000-250-006 */ + </span> <<else>> <span id="artFrame"> /* 000-250-006 */ @@ -2692,8 +2707,6 @@ running $his tongue over $his<<if $activeSlave.lips > 40>> whorish<<elseif $acti <<case "PA flirting">> -<<if $seeImages == 1>><<= assistantArt(2)>><</if>> - Partway through <<EventNameLink>>'s weekly inspection, you have to leave for a moment to deal with a minor matter. Inspecting such a devoted slave is a pleasure, but you tear yourself away. Such sacrifices must be made. <br><br> When you return, the comfortably nude $desc is flirting shamelessly with $assistantName. Your personal assistant's $assistantAppearance avatar is glowing brightly on the desktop, and $he and $activeSlave.slaveName are trading increasingly exaggerated compliments. @@ -5031,7 +5044,7 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He <</if>> dick in without a second thought. You make sure to clamp down as hard as possible so the experience is not all that pleasant for $him, but $he continues to thrust in a daze. <<if canImpreg($PC, $activeSlave)>> - You make one last plea for $him not to cum inside, it's a danger day. If anything, it only encourages $him to thrust deeper before painting the insides of your pussy with $his load. + You make one last plea for $him not to cum inside; it's a danger day. If anything, it only encourages $him to thrust deeper before painting the insides of your pussy with $his load. <<= knockMeUp($PC, 100, 0, $activeSlave.ID)>> <</if>> Once spent, $he shoves you to the ground and crashes into your office chair. The moment $he lets down $his guard, you slam the heaviest object you can find into $his head. Now that you have $him controlled, it's time $he learned $his place; when $he wakes up, of course. It's more fun that way. @@ -9569,7 +9582,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address <<= AnalVCheck()>> <</if>> <</replace>> -<</link>><<if ($activeSlave.anus == 0 && canDoAnal($activeSlave)) || ($activeSlave.vagina == 0 && canDoVaginal($activeSlave))>> //This option will take virginity//<</if>> +<</link>><<if canDoVaginal($activeSlave) && ($activeSlave.vagina == 0)>> //This option will take virginity//<<elseif !canDoVaginal($activeSlave) && ($activeSlave.anus == 0)>> //This option will take anal virginity//<</if>> <</if>> <<case "impregnation please">> @@ -14130,7 +14143,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address $He keeps licking away, cleaning up the mess you made as $assistantName does everything $he can to make it seem like the slave is pleasuring $him. Partway through, $assistantName sticks out a hand for a high-five from you, producing a gurgle of indignation @@.mediumaquamarine;or perhaps even laughter@@ as $his owner and $his owner's personal assistant program high-five over $his back. <<set $activeSlave.trust += 4, $activeSlave.oralCount++, $oralTotal++>> <</replace>> -<</link>><<if canDoVaginal($activeSlave) && ($activeSlave.vagina == 0)>>//This option will take virginity//<<elseif !canDoVaginal($activeSlave) && ($activeSlave.anus == 0)>> //This option will take anal virginity//<</if>> +<</link>><<if canDoVaginal($activeSlave) && ($activeSlave.vagina == 0)>> //This option will take virginity//<<elseif !canDoVaginal($activeSlave) && ($activeSlave.anus == 0)>> //This option will take anal virginity//<</if>> <<if canDoAnal($activeSlave)>> <br><<link "Double penetrate the slave with your PA">> <<EventNameDelink $activeSlave>> @@ -14192,7 +14205,9 @@ You tell $him kindly that you understand, and that $he'll be trained to address <<else>> feminine <</if>> - thighs quivering a little from supporting $his body in its perch atop the machine, and from the fullness of $his anus. $He knows this is going to be challenging, and is breathing deeply, doing $his best to stay relaxed. You cannot resist slapping your <<if $PC.dick == 1>>big cock lightly<<else>>lubricated strap-on<</if>> against $his cheek, producing a groan of apprehension. + thighs quivering a little from supporting $his body in its perch atop the machine, and from the fullness of $his anus. + <<= AnalVCheck(3)>> + $He knows this is going to be challenging, and is breathing deeply, doing $his best to stay relaxed. You cannot resist slapping your <<if $PC.dick == 1>>big cock lightly<<else>>lubricated strap-on<</if>> against $his cheek, producing a groan of apprehension. <br><br> You push $him gently backward, letting $him get accustomed to the new angle.<<if $activeSlave.boobs > 2000>> $His monstrous tits spread to either side of $his <<if $activeSlave.belly >= 5000>>_belly <<if $activeSlave.bellyPreg >= 3000>>pregnant <</if>>belly<<else>>now upright torso<</if>>, and you take a moment to play with them as $he prepares $himself.<</if>> <<if canDoVaginal($activeSlave)>> @@ -14236,9 +14251,8 @@ You tell $him kindly that you understand, and that $he'll be trained to address "I like you," $he says cheerily. <</switch>> <<set $activeSlave.devotion += 4>> - <<= AnalVCheck(3)>> <</replace>> -<</link>><<if canDoVaginal($activeSlave) && ($activeSlave.vagina == 0)>>//This option will take virginity//<<elseif !canDoVaginal($activeSlave) && ($activeSlave.anus == 0)>> //This option will take anal virginity//<</if>> +<</link>><<if canDoVaginal($activeSlave) && ($activeSlave.vagina == 0)>> //This option will take virginity//<<elseif !canDoVaginal($activeSlave) && ($activeSlave.anus == 0)>> //This option will take anal virginity//<</if>> <</if>> <<case "like me">> @@ -16768,6 +16782,8 @@ You tell $him kindly that you understand, and that $he'll be trained to address <<case "bad dream">> +/* TODO: add a positive variant */ + <<link "Hug $him">> <<EventNameDelink $activeSlave>> <<replace "#result">> @@ -19741,7 +19757,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address <<replace "#result">> Though your evening could hardly be called eventful, there is something eminently comforting about having a warm <<if $activeSlave.physicalAge > 30>> - woman + $woman <<elseif $activeSlave.physicalAge > 18>> young lady <<elseif $activeSlave.physicalAge > 12>> diff --git a/src/uncategorized/arcmgmt.tw b/src/uncategorized/arcmgmt.tw index da831561c4af5a8a87153eeef9478a93da6ce54b..0013f17583c9afb0a24c8e4909eec38fbec43c28 100644 --- a/src/uncategorized/arcmgmt.tw +++ b/src/uncategorized/arcmgmt.tw @@ -1117,14 +1117,14 @@ You own <</if>> <</if>> <</if>> - <<if $menials > 1>> <<print commaNum($menials)>> menial slaves<<if ($menialBioreactors > 0) && ($fuckdolls == 0)>> and<<else>>,<</if>><<else>>one menial slave<<if ($menialBioreactors > 0) && ($fuckdolls == 0)>> and<<else>>,<</if>><</if>> + <<if $menials > 1>> <<print num($menials)>> menial slaves<<if ($menialBioreactors > 0) && ($fuckdolls == 0)>> and<<else>>,<</if>><<else>>one menial slave<<if ($menialBioreactors > 0) && ($fuckdolls == 0)>> and<<else>>,<</if>><</if>> <<run cashX(_menialEarnings, "menialTrades")>> <</if>> <<if $menialBioreactors > 0>> <<set _bioreactorEarnings = $menialBioreactors*(10+(10*$arcologies[0].FSPastoralistLaw))>> <<if $dairy && $dairyUpgradeMenials>><<set _bioreactorEarnings += $menialBioreactors*5>><</if>> - <<if $menialBioreactors > 1>> <<print commaNum($menialBioreactors)>> standard bioreactors,<<else>>one standard bioreactor,<</if>> + <<if $menialBioreactors > 1>> <<print num($menialBioreactors)>> standard bioreactors,<<else>>one standard bioreactor,<</if>> <<if $fuckdolls > 0>>and<</if>> <<run cashX(_bioreactorEarnings, "menialBioreactors")>> <</if>> @@ -1133,7 +1133,7 @@ You own <<if $fuckdolls > 0>> <<set _fuckdollsEarnings = $fuckdolls*(15+(10*$arcologies[0].FSDegradationistLaw))>> <<if $arcade && $arcadeUpgradeMenials>><<set _fuckdollsEarnings += $fuckdolls*5>><</if>> - <<if $fuckdolls > 1>> <<print commaNum($fuckdolls)>> standard fuckdolls,<<else>>one fuckdoll,<</if>> + <<if $fuckdolls > 1>> <<print num($fuckdolls)>> standard fuckdolls,<<else>>one fuckdoll,<</if>> <<set _fuckdollsEarnings += random(1,10)>> <<run cashX(_fuckdollsEarnings, "fuckdolls")>> <</if>> diff --git a/src/uncategorized/arcologyDescription.tw b/src/uncategorized/arcologyDescription.tw index 7ed8ab23529e19b0c0113c746f749207c9eec9a2..13ad0e7a862a03755f65de79700d543ec8b3f133 100644 --- a/src/uncategorized/arcologyDescription.tw +++ b/src/uncategorized/arcologyDescription.tw @@ -613,7 +613,7 @@ Its<<if $weatherCladding == 2>> glorious<<elseif $weatherCladding > 0>> dull<<el The noise in the thriving open space is almost oppressive, with the sounds of drunken merriment, traditional music, and distant intercourse forming an omnipresent hum. <</if>> -<<print commaNum($ACitizens)>> citizens and <<print commaNum($ASlaves+$slaves.length)>> slaves live in $arcologies[0].name. +<<print num($ACitizens)>> citizens and <<print num($ASlaves+$slaves.length)>> slaves live in $arcologies[0].name. <<if $arcologies[0].FSSupremacistLawME == 1>>The citizenry is entirely $arcologies[0].FSSupremacistRace.<</if>> <<if $arcologies[0].FSRomanRevivalistLaw == 1>>Every citizen has military responsibilities, which are a point of pride to many, with most opting to wear utilitarian clothing even when off duty.<</if>> <<if $arcologies[0].FSAztecRevivalistLaw == 1>>Most citizens wear satin loincloths and cloaks, distinguished from those of slaves by the richness of their adornments.<</if>> diff --git a/src/uncategorized/assistantEvents.tw b/src/uncategorized/assistantEvents.tw index 014c2c1af96e005386c525a452e92e55a5cb5422..18a7c5cc03c58c7def6dcc959dd34d447d24c202 100644 --- a/src/uncategorized/assistantEvents.tw +++ b/src/uncategorized/assistantEvents.tw @@ -1575,15 +1575,15 @@ __Personal Assistant and Market Assistant relationship styles:__ <<case "shemale">> an appropriate fuckbuddy. $assistantName laughs throatily and turns to the market assistant's avatar. The younger dickgirl tries to introduce _himselfM, but is cut off by the senior assistant's lascivious kiss. They start rubbing their dicks against each over, giggling into each others' mouths. <<case "schoolgirl">> - looks pretty cute. $assistantName giggles, and the new _girlM giggles too. "Hey," $assistantName says to the market assistant's avatar, "Wanna be my girlfriend?" The market assistant's avatar nods cutely and says "Sure!" $assistantName's avatar kisses _himM girlishly, and goes a whole two seconds before sliding a hand down the front of the market assistant's avatar's skirt. + looks pretty cute. $assistantName giggles, and the new _girlM giggles too. "Hey," $assistantName says to the market assistant's avatar, "Wanna be my <<= _girlM>>friend?" The market assistant's avatar nods cutely and says "Sure!" $assistantName's avatar kisses _himM girlishly, and goes a whole two seconds before sliding a hand down the front of the market assistant's avatar's skirt. <<case "goddess">> would be a fine consort. $assistantName smiles beatifically and turns to the market assistant's avatar, taking _himM by the hand. "I love you," _heA says. The market assistant's avatar smiles back, saying, "I love you too." They kiss, running their hands voluptuously over one another. <<case "hypergoddess">> would be a fine consort. $assistantName smiles beatifically and turns to the market assistant's avatar, taking _himM by the hand. "I love you," _heA says. The market assistant's avatar smiles back, saying, "I love you too." They kiss, running their hands voluptuously over one another. "I'm going to have to give you a few babies though..." <<case "loli">> - looks pretty cute. $assistantName giggles, and the new _girlM giggles too. "Hey," $assistantName says to the market assistant's avatar, "Wanna be my girlfriend?" The market assistant's avatar nods cutely and says "O-ok..." $assistantName's avatar kisses _himM girlishly, before both of them blush deeply. + looks pretty cute. $assistantName giggles, and the new _girlM giggles too. "Hey," $assistantName says to the market assistant's avatar, "Wanna be my <<= _girlM>>friend?" The market assistant's avatar nods cutely and says "O-ok..." $assistantName's avatar kisses _himM girlishly, before both of them blush deeply. <<case "preggololi">> - looks pretty cute. $assistantName giggles, and the new _girlM giggles too. "Hey," $assistantName says to the market assistant's avatar, "Wanna be my girlfriend?" The market assistant's avatar nods cutely and says "O-ok..." $assistantName's avatar kisses _himM girlishly, _hisA pregnant belly pushing into _hisA new girlfriend's, before both of them blush deeply. + looks pretty cute. $assistantName giggles, and the new _girlM giggles too. "Hey," $assistantName says to the market assistant's avatar, "Wanna be my <<= _girlM>>friend?" The market assistant's avatar nods cutely and says "O-ok..." $assistantName's avatar kisses _himM girlishly, _hisA pregnant belly pushing into _hisA new <<= _girlM>>friend's, before both of them blush deeply. <<case "businesswoman">> might be a good way to relax after work. $assistantName grins, and the new businesswoman laughs. "Hey," $assistantName says to the market assistant's avatar, "How about a martini after things settle down tonight? And after that, maybe dessert at my place?" The market assistant's avatar cracks back, saying, "Why don't we skip straight to the dessert? It looks delicious from here!" _HeM undoes the top button of _hisM suit jacket as _heM says it. <<case "fairy">> diff --git a/src/uncategorized/bodyModification.tw b/src/uncategorized/bodyModification.tw index ae350e5ff6c7679e5660809e67b92dbea2a7753b..3ebc6ef2d386beeaa971a5f3dbd83ba6b949a705 100644 --- a/src/uncategorized/bodyModification.tw +++ b/src/uncategorized/bodyModification.tw @@ -767,7 +767,7 @@ Choose a tattoo style: <br> <<if $activeSlave.abortionTat > 0>> <<if $activeSlave.abortionTat > 1>> - $He has a series of numberToWords($activeSlave.abortionTat) crossed out baby-shaped tattoos<<if $activeSlave.pregKnown == 1>>, and one uncrossed one,<</if>> adorning $his stomach. + $He has a series of num($activeSlave.abortionTat) crossed out baby-shaped tattoos<<if $activeSlave.pregKnown == 1>>, and one uncrossed one,<</if>> adorning $his stomach. <<else>> $He has a single crossed out baby-shaped tattoo<<if $activeSlave.pregKnown == 1>>, and one uncrossed one,<</if>> adorning $his stomach. <</if>> diff --git a/src/uncategorized/buySlaves.tw b/src/uncategorized/buySlaves.tw index 59eda6ce117b3952c779979d970228bd8de22000..be6622fe1bf32f5de725f97067d07155068e0068 100644 --- a/src/uncategorized/buySlaves.tw +++ b/src/uncategorized/buySlaves.tw @@ -53,17 +53,17 @@ Slave demand is <</if>> <<if ($cheatMode) && ($cheatModeM)>> <span id="menialDemandFactor"> - @@.yellowgreen;Slave Demand@@ - | <<print $menialDemandFactor>> + @@.yellowgreen;Slave Demand@@ + | <<print $menialDemandFactor>> </span> <<set _TmenialDemandFactor = $menialDemandFactor>> <<textbox "_TmenialDemandFactor" _TmenialDemandFactor>> <<link "Apply">> - <<set $menialDemandFactor = Math.clamp(Math.trunc(Number(_TmenialDemandFactor)),-50000,50000) || $menialDemandFactor, $cheater = 1>> - <<replace "#menialDemandFactor">> - @@.yellowgreen; Slave Demand@@ - | <<print $menialDemandFactor>> - <</replace>> + <<set $menialDemandFactor = Math.clamp(Math.trunc(Number(_TmenialDemandFactor)),-50000,50000) || $menialDemandFactor, $cheater = 1>> + <<replace "#menialDemandFactor">> + @@.yellowgreen; Slave Demand@@ + | <<print $menialDemandFactor>> + <</replace>> <</link>> <</if>> <br> @@ -393,7 +393,7 @@ The parts of your arcology you own can house a total of $PopCap menial slaves. <br> <<if $menials > 1>> - You own <<print commaNum(Math.trunc($menials))>> menial slaves. + You own <<print num(Math.trunc($menials))>> menial slaves. <<elseif $menials > 0>> You own one menial slave. <<else>> @@ -457,7 +457,7 @@ The market price of menials is <<print cashFormat(_menialPrice)>>. <</if>> <<if $fuckdolls > 1>> - <br>You own <<print commaNum(Math.trunc($fuckdolls))>> standard Fuckdolls. + <br>You own <<print num(Math.trunc($fuckdolls))>> standard Fuckdolls. <<elseif $fuckdolls > 0>> <br>You own one standard Fuckdoll. <<elseif $arcologies[0].FSPaternalist == "unset">> @@ -497,7 +497,7 @@ The market price of standard Fuckdolls is <<print cashFormat(_menialPrice*2)>>. <</if>> <<if $menialBioreactors > 1>> - <br>You own <<print commaNum(Math.trunc($menialBioreactors))>> standard bioreactors. + <br>You own <<print num(Math.trunc($menialBioreactors))>> standard bioreactors. <<elseif $menialBioreactors > 0>> <br>You own one standard bioreactor. <<elseif $arcologies[0].FSPaternalist == "unset">> diff --git a/src/uncategorized/clinicReport.tw b/src/uncategorized/clinicReport.tw index b3ac44e544ac9e8583c382ce3e34fd06f4cd6b95..dd145f5167cf75f24146b65ed979815d34bb16cd 100644 --- a/src/uncategorized/clinicReport.tw +++ b/src/uncategorized/clinicReport.tw @@ -184,7 +184,7 @@ <<if (_DL < $clinic)>> <<set _seed = random(1,10)+(($clinic-_DL)*(random(150,170)+(_idleBonus*10)))>> <<run cashX(_seed, "clinic", $Nurse)>> - <br> Since $he doesn't have enough girls to occupy all $his time, the clinic takes in citizens' slaves on a contract basis and $he helps them too, earning @@.yellowgreen;<<print cashFormat(_seed)>>.@@ + <br> Since $he doesn't have enough patients to occupy all $his time, the clinic takes in citizens' slaves on a contract basis and $he helps them too, earning @@.yellowgreen;<<print cashFormat(_seed)>>.@@ <</if>> <<if (_DL > 0)>><br><br><</if>> <</if>> @@ -304,7 +304,7 @@ <<elseif ($Nurse != 0) && ($slaves[$i].pregAdaptation*1000 < $slaves[$i].bellyPreg || $slaves[$i].preg > $slaves[$i].pregData.normalBirth/1.33)>> $He stays in the clinic waiting for the child to be born. <<elseif ($Nurse != 0) && ($clinicInflateBelly > 0) && ($slaves[$i].bellyImplant >= 0) && ($slaves[$i].bellyImplant <= ($arcologies[0].FSTransformationFetishistResearch ? 800000 : 130000))>> - $He stays in the clinic as $his implants can still recieve more filling. + $He stays in the clinic as $his implants can still receive more filling. <</if>> <br> <<= saChoosesOwnClothes($slaves[$i])>> diff --git a/src/uncategorized/costsBudget.tw b/src/uncategorized/costsBudget.tw index a0493fed04b7eb5b9039ab863a0545f4cd02a55a..329ed2cd00b98e4c237e79eed28274f96972a4e5 100644 --- a/src/uncategorized/costsBudget.tw +++ b/src/uncategorized/costsBudget.tw @@ -265,7 +265,7 @@ for(var i = 0; i < State.variables.lastWeeksCashIncome.length; i++){ <<print budgetLine("event", "Events")>> - <<print budgetLine("war", "Archology conflict")>> + <<print budgetLine("war", "Arcology conflict")>> <<print budgetLine("capEx", "Capital expenses")>> diff --git a/src/uncategorized/costsReport.tw b/src/uncategorized/costsReport.tw index 18fac0b47ff03305456796fa86ea478344ea1ae3..314867026ee540cabf2253b1aa2a99b0b62680d9 100644 --- a/src/uncategorized/costsReport.tw +++ b/src/uncategorized/costsReport.tw @@ -66,13 +66,13 @@ your personal living expenses are @@.yellowgreen;<<print cashFormat(Math.trunc($ <br> __Orphanage__ fee: @@.yellowgreen;<<print cashFormat($citizenOrphanageTotal*100+$privateOrphanageTotal*500+_breederTuition)>>@@ <<set _arcologyCosts += $citizenOrphanageTotal*100+$privateOrphanageTotal*500+_breederTuition>> <<if $citizenOrphanageTotal > 0>> - <br> Citizen: @@.yellowgreen;<<print cashFormat(100)>>@@ per child. Currently <<print commaNum($citizenOrphanageTotal)>> are being taught, bringing the total to @@.yellowgreen;<<print cashFormat($citizenOrphanageTotal*100)>>@@. + <br> Citizen: @@.yellowgreen;<<print cashFormat(100)>>@@ per child. Currently <<print num($citizenOrphanageTotal)>> are being taught, bringing the total to @@.yellowgreen;<<print cashFormat($citizenOrphanageTotal*100)>>@@. <</if>> <<if $privateOrphanageTotal > 0>> - <br> Private: @@.yellowgreen;<<print cashFormat(500)>>@@ per child. Currently <<print commaNum($privateOrphanageTotal)>> are being taught, bringing the total to @@.yellowgreen;<<print cashFormat($privateOrphanageTotal*500)>>@@. + <br> Private: @@.yellowgreen;<<print cashFormat(500)>>@@ per child. Currently <<print num($privateOrphanageTotal)>> are being taught, bringing the total to @@.yellowgreen;<<print cashFormat($privateOrphanageTotal*500)>>@@. <</if>> <<if $breederOrphanageTotal > 0>> - <br> Since <<print commaNum($breederOrphanageTotal)>> of your slaves' children are being raised into productive members of society in a society funded school, you pay a flat @@.yellowgreen;<<print cashFormat(50)>>@@ usage fee. + <br> Since <<print num($breederOrphanageTotal)>> of your slaves' children are being raised into productive members of society in a society funded school, you pay a flat @@.yellowgreen;<<print cashFormat(50)>>@@ usage fee. <</if>> <</if>> diff --git a/src/uncategorized/costsWidgets.tw b/src/uncategorized/costsWidgets.tw index 2fbf44cfbdda9715a8bfd4320a02313d3ab6cbe1..85fe9e2b7471b2f9cc406d9c27d954f68a91a187 100644 --- a/src/uncategorized/costsWidgets.tw +++ b/src/uncategorized/costsWidgets.tw @@ -462,9 +462,9 @@ <<if $args[0].lastWeeksRepIncome == 0>> had no positive effect on your reputation, but <<else>> - improved your reputation by @@.green;<<print commaNum($args[0].lastWeeksRepIncome)>>@@ and + improved your reputation by @@.green;<<print num($args[0].lastWeeksRepIncome)>>@@ and <</if>> - over $his entire time with you, $he gained @@.green;<<print commaNum($args[0].lifetimeRepIncome)>>@@. + over $his entire time with you, $he gained @@.green;<<print num($args[0].lifetimeRepIncome)>>@@. <</if>> <<if $args[0].lifetimeRepExpenses != 0>> <br> @@ -472,18 +472,18 @@ <<if $args[0].lastWeeksRepExpenses == 0>> had no negative effect on your reputation, but <<else>> - lowered your reputation by @@.red;<<print commaNum($args[0].lastWeeksRepExpenses)>>@@ and + lowered your reputation by @@.red;<<print num($args[0].lastWeeksRepExpenses)>>@@ and <</if>> - over $his entire time with you, $he cost @@.red;<<print commaNum($args[0].lifetimeRepExpenses)>>@@. + over $his entire time with you, $he cost @@.red;<<print num($args[0].lifetimeRepExpenses)>>@@. <</if>> <br> Overall then, $he has changed your reputation by <<if _repTotal > 0>> - @@.green;<<print commaNum(_repTotal)>>@@ + @@.green;<<print num(_repTotal)>>@@ <<elseif _repTotal < 0>> - @@.red;<<print commaNum(_repTotal)>>@@ + @@.red;<<print num(_repTotal)>>@@ <<else>> - <<print commaNum(_repTotal)>> + <<print num(_repTotal)>> <</if>> <<else>> /* lowercasedonkey: TODO: I don't like how vague my placeholder is. Probably need to set up some kind of sliding scale to describe how much rep (roughly) she has made or lost. Need to get a sense of common ranges. */ <br> diff --git a/src/uncategorized/dairyReport.tw b/src/uncategorized/dairyReport.tw index c102a4800cd9579dd8c32b4d0e78ef6e424cbc28..551513703c5d7df8906d4053eb0fbf7108c63ecd 100644 --- a/src/uncategorized/dairyReport.tw +++ b/src/uncategorized/dairyReport.tw @@ -193,7 +193,7 @@ <<set $slaves[_FLs].muscles++>> <</if>> <<if ($Milkmaid.oralSkill > 30)>> - $His skilled tongue helps $him keep $his girls happy. + $His skilled tongue helps $him keep $his cattle happy. <</if>> <<if ($Milkmaid.oralSkill < 90)>> <<set $skillIncrease = 3>> diff --git a/src/uncategorized/descriptionOptions.tw b/src/uncategorized/descriptionOptions.tw index f00dc4288fa6b17eab9cb3cd24e3a69f7b4e792d..c1637508017f2dca91b79c86aaab992819550bbe 100644 --- a/src/uncategorized/descriptionOptions.tw +++ b/src/uncategorized/descriptionOptions.tw @@ -86,7 +86,7 @@ Height and length units are in <br> -<<if $showNumbers == 1>>Only numbers@@.green;UP TO $showNumbersMax@@<<else>>Numbers<</if>> are displayed as +<<if $showNumbers == 1>>Only numbers @@.green;UP TO $showNumbersMax@@<<else>>Numbers<</if>> are displayed as <<if $showNumbers == 1>> words.<br> <<textbox "$showNumbersMax" $showNumbersMax>> //[[Words|Description Options][$showNumbers = 0]]// | //[[Integers|Description Options][$showNumbers = 2]]// diff --git a/src/uncategorized/fsDevelopments.tw b/src/uncategorized/fsDevelopments.tw index 6204acfedb72a151b294f7cea52d6bb1a8c1cb44..22c7ada6eaa006024dcc0baae2951aaf3d10a8ab 100644 --- a/src/uncategorized/fsDevelopments.tw +++ b/src/uncategorized/fsDevelopments.tw @@ -94,9 +94,9 @@ /* Spending, terrain, rep effects */ <<set _broadProgress = 0>> -<<if $SF.Toggle && $SF.Active >= 1 && $SF.UC.Assign > 0 && $SFUC > 0>> +<<if $SF.Toggle && $SF.Active >= 1 && $SF.UC.Assign > 0 && $SF.UC.num > 0>> Assigning a <<if $SF.UC.Assign === 1>>small<<else>>large<</if>> portion of $SF.Lower to undercover work helps forward your goals for your arcology's future. - <<set _broadProgress += $SFUC/100>> <br> + <<set _broadProgress += $SF.UC.num/100>> <br> <</if>> <<if $FSSpending > 1>> Your @@.yellowgreen;societal spending@@ helps forward your goals for the arcology's future. diff --git a/src/uncategorized/genericPlotEvents.tw b/src/uncategorized/genericPlotEvents.tw index e36afbcbf1cb3ff98418d26b2251f596118f711c..54d78171e5d8dfa218c1593f2dcd1e0b8a33c9ad 100644 --- a/src/uncategorized/genericPlotEvents.tw +++ b/src/uncategorized/genericPlotEvents.tw @@ -1166,6 +1166,17 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your <<set $activeSlave.behavioralFlaw = "arrogant">> <<set $activeSlave.sexualFlaw = "idealistic">> <<setLocalPronouns $activeSlave>> + <span id="artFrame"> + /* 000-250-006 */ + <<if $seeImages == 1>> + <<if $imageChoice == 1>> + <div class="imageRef medImg"><<SlaveArt $activeSlave 2 0>></div> + <<else>> + <div class="imageRef medImg"><<SlaveArt $activeSlave 2 0>></div> + <</if>> + <</if>> + /* 000-250-006 */ + </span> You decide to stop the athletic slave $girl about to win $his freedom, and place your taser slug in $his muscular buttock. $He goes stiff and skids across the grass with a growl. Your taser slug is linked to $assistantName, who hits $him again whenever $he tries to continue running. Fury glints from $his eyes, but $he apparently knows how to pick $his battles. By the time you approach $him, $he's already bent over, presenting $himself, and from the oily sheen on $his privates, it looks like $he even managed to get some lube somewhere to make the experience a little easier. It is a strange thing, respecting a slave, but $he rises even higher in your estimation as you fuck $him on the grass. $He does $his best to please you, having clearly decided to do $his best given $his situation. $He's sexually inexpert, but clearly smart enough to know when to submit. <<run newSlave($activeSlave)>> /* skip New Slave Intro */ <</replace>> @@ -1213,6 +1224,17 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your <<set $activeSlave.behavioralFlaw = "anorexic">> <<set $activeSlave.sexualFlaw = "idealistic">> <<setLocalPronouns $activeSlave>> + <span id="artFrame"> + /* 000-250-006 */ + <<if $seeImages == 1>> + <<if $imageChoice == 1>> + <div class="imageRef medImg"><<SlaveArt $activeSlave 2 0>></div> + <<else>> + <div class="imageRef medImg"><<SlaveArt $activeSlave 2 0>></div> + <</if>> + <</if>> + /* 000-250-006 */ + </span> You decide to stop the wide-hipped $loli struggling to run, and easily place your taser slug in $his broad rear. $He goes stiff and falls flat on $his face. Your taser slug is linked to $assistantName, but since the $girl can't manage to flip over, let alone stand, shocking $him more is unneeded. Fury glints from $his eyes, but $he fully realizes it's over for $him. By the time you approach $him, $he's hoisted $his overly wide rear upwards, presenting $himself, moisture beginning to ooze from $his virgin cunt. It looks like $he was being groomed to be a breeding slave, and $he seems to understand $his role quite well, judging by the way $he rocks $his hips back and forth for you. You thoroughly enjoy $his gratifyingly tight pussy, which is so nice that you confine yourself entirely to it despite the appealing sight of $his virgin butthole. <<run newSlave($activeSlave)>> /* skip New Slave Intro */ <</replace>> @@ -1253,6 +1275,17 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your <<set $activeSlave.behavioralFlaw = "bitchy">> <<set $activeSlave.sexualFlaw = "hates anal">> <<setLocalPronouns $activeSlave>> + <span id="artFrame"> + /* 000-250-006 */ + <<if $seeImages == 1>> + <<if $imageChoice == 1>> + <div class="imageRef medImg"><<SlaveArt $activeSlave 2 0>></div> + <<else>> + <div class="imageRef medImg"><<SlaveArt $activeSlave 2 0>></div> + <</if>> + <</if>> + /* 000-250-006 */ + </span> You decide to drop the luscious specimen in the rear, and place your taser slug in $his huge buttock. $He goes stiff and slumps to the grass in defeat. Your taser slug is linked to $assistantName, who hits $him again whenever $he tries to rise. Meanwhile, an athletic slave has successfully crossed the lawn, and is sobbing with joy as _hisU manumission forms are completed. Disbelief and anger fills your supine prize's eyes, and $he's spitting with rage by the time you reach $him. It's a comical sight, since $his gyrations only serve to display $his magnificent breasts and broad butt. $He must have been recently enslaved, and is new enough to slavery that you are obliged to tase $him twice more before $he presents $his holes. The impression of newness to slavery despite $his age is reinforced by $his gratifyingly tight pussy, which is so nice that you confine yourself entirely to it despite the appealing sight of what is almost certainly a virgin butthole. <<run newSlave($activeSlave)>> /* skip New Slave Intro */ <</replace>> @@ -1299,6 +1332,17 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your <<set $activeSlave.sexualFlaw = "none">> <<set $activeSlave.behavioralFlaw = "odd">> <<setLocalPronouns $activeSlave>> + <span id="artFrame"> + /* 000-250-006 */ + <<if $seeImages == 1>> + <<if $imageChoice == 1>> + <div class="imageRef medImg"><<SlaveArt $activeSlave 2 0>></div> + <<else>> + <div class="imageRef medImg"><<SlaveArt $activeSlave 2 0>></div> + <</if>> + <</if>> + /* 000-250-006 */ + </span> You decide to drop the really rare specimen, and place your taser slug in $his leg. $He goes stiff and slumps to the grass, squealing with pain since the taser robbed $his ability to break $his fall, leading $him to land on nearly <<if $showInches == 2>>a foot<<else>>thirty centimeters<</if>> of flaccid cock. Your taser slug is linked to $assistantName, who hits $him again whenever $he tries to rise. Meanwhile, an athletic slave has successfully crossed the lawn, and is sobbing with joy as _hisU manumission forms are completed. Apathy fills your supine prize's eyes, and $he simply lies face-down and quiescent. $He obeys orders to roll over so you can see what you've gotten, however. $He's clearly a work of long and careful hormonal treatment. $He has no implants, but sports big breasts, feminine hips, a nice butt, plush lips, and a huge dick. When you fuck $his pussy and then $his anus, $he even gets a massive erection, showing that $he isn't even on hormone treatment to maintain this unusual set of attributes. <<run newSlave($activeSlave)>> /* skip New Slave Intro */ <</replace>> diff --git a/src/uncategorized/longSlaveDescription.tw b/src/uncategorized/longSlaveDescription.tw index 3eba3043a131692f1ad09ab6115c3466402f0e7c..6f19d35da2490cc35dde221daa0929b35a17b12f 100644 --- a/src/uncategorized/longSlaveDescription.tw +++ b/src/uncategorized/longSlaveDescription.tw @@ -389,23 +389,23 @@ is <</if>> <<if ($activeSlave.oralCount + $activeSlave.vaginalCount + $activeSlave.analCount + $activeSlave.mammaryCount + $activeSlave.penetrativeCount) > 0>> - and has been fucked about <<print commaNum($activeSlave.oralCount + $activeSlave.vaginalCount + $activeSlave.analCount + $activeSlave.mammaryCount + $activeSlave.penetrativeCount)>> times, including + and has been fucked about <<print num($activeSlave.oralCount + $activeSlave.vaginalCount + $activeSlave.analCount + $activeSlave.mammaryCount + $activeSlave.penetrativeCount)>> times, including <<if $activeSlave.mammaryCount > 0>> - <<print commaNum($activeSlave.mammaryCount)>> mammary, + <<print num($activeSlave.mammaryCount)>> mammary, <</if>> <<if $activeSlave.vaginalCount > 0>> - <<print commaNum($activeSlave.vaginalCount)>> vanilla, + <<print num($activeSlave.vaginalCount)>> vanilla, <</if>> <<if $activeSlave.analCount > 0>> - <<print commaNum($activeSlave.analCount)>> anal, + <<print num($activeSlave.analCount)>> anal, <</if>> <<if $activeSlave.penetrativeCount > 0>> - <<print commaNum($activeSlave.penetrativeCount)>> penetrating, + <<print num($activeSlave.penetrativeCount)>> penetrating, <</if>> <<if ($activeSlave.penetrativeCount+$activeSlave.mammaryCount+$activeSlave.vaginalCount+$activeSlave.analCount) > 0>> and <</if>> - <<print commaNum($activeSlave.oralCount)>> oral sexual encounters. + <<print num($activeSlave.oralCount)>> oral sexual encounters. <<else>> <<if $week-$activeSlave.weekAcquired >= 1>> and @@ -501,9 +501,9 @@ is <</if>> <<if ($activeSlave.lactation > 0) && ($activeSlave.milk < 20)>> - $He has given a small quantity of milk<<if ($activeSlave.cum > 0)>> and about <<print commaNum($activeSlave.cum)>> deciliters of cum<</if>>. + $He has given a small quantity of milk<<if ($activeSlave.cum > 0)>> and about <<print num($activeSlave.cum)>> deciliters of cum<</if>>. <<elseif ($activeSlave.milk > 1)>> - $He has given about <<print commaNum($activeSlave.milk)>> liters of milk<<if ($activeSlave.cum > 0)>> and about <<print commaNum($activeSlave.cum)>> deciliters of cum<</if>>. + $He has given about <<print num($activeSlave.milk)>> liters of milk<<if ($activeSlave.cum > 0)>> and about <<print num($activeSlave.cum)>> deciliters of cum<</if>>. <</if>> <<if ($activeSlave.birthsTotal != 0)>> @@ -1108,7 +1108,16 @@ is <<else>> is @@.green;very happy@@ <</if>> - when a dick is pushed inside <<if $activeSlave.vagina >= -1>>either of $his lower holes<<else>>$his rear hole<</if>>. + when a dick is pushed inside + <<if canDoVaginal($activeSlave) && $activeSlave.vagina > 0 && canDoAnal($activeSlave) && $activeSlave.anus > 0>> + either of $his lower holes. + <<elseif canDoVaginal($activeSlave) && $activeSlave.vagina > 0>> + $his front hole. + <<elseif canDoAnal($activeSlave) && $activeSlave.anus > 0>> + $his rear hole. + <<else>> + it. + <</if>> <</if>> <</if>> /* END MENTAL REPORT */ diff --git a/src/uncategorized/manageArcology.tw b/src/uncategorized/manageArcology.tw index c13db5806b3a0c662323c1aee10cfd877c269610..88707d4aac4a5087d21b9aeffb1a9b534b8c2c0d 100644 --- a/src/uncategorized/manageArcology.tw +++ b/src/uncategorized/manageArcology.tw @@ -260,7 +260,7 @@ __Special Arcology Upgrades__ <br><br> -Your slaves have participated in approximately <<print commaNum($oralTotal+$vaginalTotal+$analTotal)>> sexual encounters: <<print commaNum($oralTotal)>> primarily oral, <<print commaNum($vaginalTotal)>> vanilla, <<print commaNum($mammaryTotal)>> mammary, <<print commaNum($analTotal)>> anal, and <<print commaNum($penetrativeTotal)>> with the slave penetrating another. They have produced about <<print commaNum($milkTotal)>> liters of marketable milk, <<if $seeDicks != 0>>about <<print commaNum($cumTotal)>> deciliters of marketable cum, <</if>>and have given birth <<print commaNum($birthsTotal)>> times. +Your slaves have participated in approximately <<print num($oralTotal+$vaginalTotal+$analTotal)>> sexual encounters: <<print num($oralTotal)>> primarily oral, <<print num($vaginalTotal)>> vanilla, <<print num($mammaryTotal)>> mammary, <<print num($analTotal)>> anal, and <<print num($penetrativeTotal)>> with the slave penetrating another. They have produced about <<print num($milkTotal)>> liters of marketable milk, <<if $seeDicks != 0>>about <<print num($cumTotal)>> deciliters of marketable cum, <</if>>and have given birth <<print num($birthsTotal)>> times. <<if $pitKillsTotal > 0>>$pitKillsTotal slaves have died in your fighting pit.<</if>> <<if $fuckdollsSold > 0>>$fuckdollsSold mindbroken arcade slaves have been converted into Fuckdolls and sold.<</if>> @@ -268,26 +268,26 @@ Your slaves have participated in approximately <<print commaNum($oralTotal+$vagi <<if $secExp == 1 && $battlesEnabled == 1>> <br><br> <<if $SF.Toggle === 0||$SF.Active === 0>> - Your army counts <<print commaNum($militiaEmployedManpower + $slavesEmployedManpower + $mercEmployedManpower)>> total soldiers. + Your army counts <<print num($militiaEmployedManpower + $slavesEmployedManpower + $mercEmployedManpower)>> total soldiers. <<elseif $SF.Toggle && $SF.Active >= 1>> - Your army counts <<print commaNum($militiaEmployedManpower + $slavesEmployedManpower + $mercEmployedManpower + $SF.Squad.Troops)>> total soldiers of which <<print commaNum($SF.Squad.Troops)>> under the special force command and the rest under your direct control. + Your army counts <<print num($militiaEmployedManpower + $slavesEmployedManpower + $mercEmployedManpower + $SF.Squad.Troops)>> total soldiers of which <<print num($SF.Squad.Troops)>> under the special force command and the rest under your direct control. <</if>> <<if $hasFoughtOnce == 1>> - Your troops were involved in <<print commaNum($battlesCount)>> battles of which <<print commaNum($majorBattlesCount)>> were major engagements. You won + Your troops were involved in <<print num($battlesCount)>> battles of which <<print num($majorBattlesCount)>> were major engagements. You won <<if $battlesCount == $PCvictories>> all of them. <<elseif $battlesCount == $PClosses>> none of them. <<else>> - <<print commaNum($PCvictories)>> of them, while the enemy managed to gain the upper hand in the other <<print commaNum($PClosses)>>. + <<print num($PCvictories)>> of them, while the enemy managed to gain the upper hand in the other <<print num($PClosses)>>. <</if>> <</if>> <<if $rebellionsCount >= 1>> - Your arcology was involved in <<print commaNum($rebellionsCount)>> rebellions. You won <<print commaNum($PCrebWon)>> of them, while the rebels defeated your forces in <<print commaNum($PCrebLoss)>>. + Your arcology was involved in <<print num($rebellionsCount)>> rebellions. You won <<print num($PCrebWon)>> of them, while the rebels defeated your forces in <<print num($PCrebLoss)>>. <</if>> -During all battles you lost a total of <<print commaNum($militiaTotalCasualties + $slavesTotalCasualties + $mercTotalCasualties)>> men, while scoring a total of <<print commaNum($totalKills)>> kills. +During all battles you lost a total of <<print num($militiaTotalCasualties + $slavesTotalCasualties + $mercTotalCasualties)>> men, while scoring a total of <<print num($totalKills)>> kills. <</if>> <br><br> diff --git a/src/uncategorized/manufacturing.tw b/src/uncategorized/manufacturing.tw index 794fdc4c900109cc41e86601f555dd119481e998..deb09d2f597cc26cf8d15f5eb4285e2c793d6212 100644 --- a/src/uncategorized/manufacturing.tw +++ b/src/uncategorized/manufacturing.tw @@ -16,7 +16,7 @@ This is a space in the arcology's service areas, <<if $sectors[$AS].type == "Sweatshops">> <<if $menials > 0>> <br><br> - You own <<print commaNum($menials)>> menial slaves. All your sweatshops together can use only <<print $Sweatshops*500>>, + You own <<print num($menials)>> menial slaves. All your sweatshops together can use only <<print $Sweatshops*500>>, <<if $menials > $Sweatshops*500>> the remainder is assigned to various odd jobs in the arcology. <<elseif $menials == $Sweatshops*500>> diff --git a/src/uncategorized/neighborInteract.tw b/src/uncategorized/neighborInteract.tw index 6794342b509060946e2d44b6874807c2da75428f..f0ae674b296be48211d4b61e90275a40f71704c3 100644 --- a/src/uncategorized/neighborInteract.tw +++ b/src/uncategorized/neighborInteract.tw @@ -364,8 +364,8 @@ If $activeArcology.name has developed enough to begin exporting worthwhile goods <<elseif $activeArcology.direction != $arcologies[0].embargoTarget>> <br><<link "Purchase a shipment of togas" "Neighbor Interact">> <<set $clothesBoughtToga = 1>> - <<run cashX(forceNeg(Math.trunc(7500-_prices)), "capEx")>> - <</link>> //Will cost <<print cashFormat(Math.trunc(7500-_prices))>>// + <<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>> + <</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>// <</if>> <<else>> <br>You already have enough togas. @@ -384,8 +384,8 @@ If $activeArcology.name has developed enough to begin exporting worthwhile goods <<elseif $activeArcology.direction != $arcologies[0].embargoTarget>> <br><<link "Purchase a shipment of kimonos" "Neighbor Interact">> <<set $clothesBoughtKimono = 1>> - <<run cashX(forceNeg(Math.trunc(7500-_prices)), "capEx")>> - <</link>> //Will cost <<print cashFormat(Math.trunc(7500-_prices))>>// + <<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>> + <</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>// <</if>> <<else>> <br>You already have enough kimonos. @@ -404,8 +404,8 @@ If $activeArcology.name has developed enough to begin exporting worthwhile goods <<elseif $activeArcology.direction != $arcologies[0].embargoTarget>> <br><<link "Purchase a shipment of silken harem garb" "Neighbor Interact">> <<set $clothesBoughtHarem = 1>> - <<run cashX(forceNeg(Math.trunc(7500-_prices)), "capEx")>> - <</link>> //Will cost <<print cashFormat(Math.trunc(7500-_prices))>>// + <<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>> + <</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>// <</if>> <<else>> <br>You already have enough silk. @@ -424,8 +424,8 @@ If $activeArcology.name has developed enough to begin exporting worthwhile goods <<elseif $activeArcology.direction != $arcologies[0].embargoTarget>> <br><<link "Purchase a shipment of huipils" "Neighbor Interact">> <<set $clothesBoughtHuipil = 1>> - <<run cashX(forceNeg(Math.trunc(7500-_prices)), "capEx")>> - <</link>> //Will cost <<print cashFormat(Math.trunc(7500-_prices))>>// + <<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>> + <</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>// <</if>> <<else>> <br>You already have enough huipils. @@ -444,8 +444,8 @@ If $activeArcology.name has developed enough to begin exporting worthwhile goods <<elseif $activeArcology.direction != $arcologies[0].embargoTarget>> <br><<link "Purchase a shipment of qipaos" "Neighbor Interact">> <<set $clothesBoughtQipao = 1>> - <<run cashX(forceNeg(Math.trunc(7500-_prices)), "capEx")>> - <</link>> //Will cost <<print cashFormat(Math.trunc(7500-_prices))>>// + <<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>> + <</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>// <</if>> <<else>> <br>You already have enough skimpy qipaos. @@ -464,8 +464,8 @@ If $activeArcology.name has developed enough to begin exporting worthwhile goods <<elseif $activeArcology.direction != $arcologies[0].embargoTarget>> <br><<link "Purchase a shipment of Egyptian necklace replicas" "Neighbor Interact">> <<set $clothesBoughtEgypt = 1>> - <<run cashX(forceNeg(Math.trunc(7500-_prices)), "capEx")>> - <</link>> //Will cost <<print cashFormat(Math.trunc(7500-_prices))>>// + <<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>> + <</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>// <</if>> <<else>> <br>You already have enough replicas of Egyptian necklaces. @@ -485,8 +485,8 @@ If $activeArcology.name has developed enough to begin exporting worthwhile goods <<elseif $activeArcology.direction != $arcologies[0].embargoTarget>> <br><<link "Purchase a shipment of conservative clothing" "Neighbor Interact">> <<set $clothesBoughtConservative = 1>> - <<run cashX(forceNeg(Math.trunc(7500-_prices)), "capEx")>> - <</link>> //Will cost <<print cashFormat(Math.trunc(7500-_prices))>>// + <<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>> + <</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>// <</if>> <<else>> <br>You already have enough modest clothing. @@ -505,8 +505,8 @@ If $activeArcology.name has developed enough to begin exporting worthwhile goods <<elseif $activeArcology.direction != $arcologies[0].embargoTarget>> <br><<link "Purchase a shipment of binding chains" "Neighbor Interact">> <<set $clothesBoughtChains = 1>> - <<run cashX(forceNeg(Math.trunc(7500-_prices)), "capEx")>> - <</link>> //Will cost <<print cashFormat(Math.trunc(7500-_prices))>>// + <<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>> + <</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>// <</if>> <<else>> <br>You already have enough chains. @@ -526,8 +526,8 @@ If $activeArcology.name has developed enough to begin exporting worthwhile goods <<elseif $activeArcology.direction != $arcologies[0].embargoTarget>> <br><<link "Purchase a shipment of bunny suits" "Neighbor Interact">> <<set $clothesBoughtBunny = 1>> - <<run cashX(forceNeg(Math.trunc(7500-_prices)), "capEx")>> - <</link>> //Will cost <<print cashFormat(Math.trunc(7500-_prices))>>// + <<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>> + <</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>// <</if>> <<else>> <br>You already have enough bunny suits and bowties. @@ -547,8 +547,8 @@ If $activeArcology.name has developed enough to begin exporting worthwhile goods <<elseif $activeArcology.direction != $arcologies[0].embargoTarget>> <br><<link "Purchase a shipment of body oil" "Neighbor Interact">> <<set $clothesBoughtOil = 1>> - <<run cashX(forceNeg(Math.trunc(7500-_prices)), "capEx")>> - <</link>> //Will cost <<print cashFormat(Math.trunc(7500-_prices))>>// + <<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>> + <</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>// <</if>> <<else>> <br>You already have enough body oil. @@ -567,8 +567,8 @@ If $activeArcology.name has developed enough to begin exporting worthwhile goods <<elseif $activeArcology.direction != $arcologies[0].embargoTarget>> <br><<link "Purchase a shipment of stretch pants and crop-tops" "Neighbor Interact">> <<set $clothesBoughtLazyClothes = 1>> - <<run cashX(forceNeg(Math.trunc(7500-_prices)), "capEx")>> - <</link>> //Will cost <<print cashFormat(Math.trunc(7500-_prices))>>// + <<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>> + <</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>// <</if>> <<else>> <br>You already have enough elastic waistbands and tight tops. @@ -588,8 +588,8 @@ If $activeArcology.name has developed enough to begin exporting worthwhile goods <<elseif $activeArcology.direction != $arcologies[0].embargoTarget>> <br><<link "Purchase a shipment of chattel religionist habits" "Neighbor Interact">> <<set $clothesBoughtHabit = 1>> - <<run cashX(forceNeg(Math.trunc(7500-_prices)), "capEx")>> - <</link>> //Will cost <<print cashFormat(Math.trunc(7500-_prices))>>// + <<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>> + <</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>// <</if>> <<else>> <br>You already have enough chattel religionist habits. @@ -609,8 +609,8 @@ If $activeArcology.name has developed enough to begin exporting worthwhile goods <<elseif $activeArcology.direction != $arcologies[0].embargoTarget>> <br><<link "Purchase a shipment of western clothing" "Neighbor Interact">> <<set $clothesBoughtWestern = 1>> - <<run cashX(forceNeg(Math.trunc(7500-_prices)), "capEx")>> - <</link>> //Will cost <<print cashFormat(Math.trunc(7500-_prices))>>// + <<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>> + <</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>// <</if>> <<else>> <br>You already have enough rancher outfits. @@ -630,8 +630,8 @@ If $activeArcology.name has developed enough to begin exporting worthwhile goods <<elseif $activeArcology.direction != $arcologies[0].embargoTarget>> <br><<link "Purchase a shipment of maternity clothing" "Neighbor Interact">> <<set $clothesBoughtMaternityDress = 1>> - <<run cashX(forceNeg(Math.trunc(7500-_prices)), "capEx")>> - <</link>> //Will cost <<print cashFormat(Math.trunc(7500-_prices))>>// + <<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>> + <</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>// <</if>> <<else>> <br>You already have enough maternity dresses. @@ -648,8 +648,8 @@ If $activeArcology.name has developed enough to begin exporting worthwhile goods <<elseif $activeArcology.direction != $arcologies[0].embargoTarget>> <br><<link "Purchase a shipment of maternity lingerie" "Neighbor Interact">> <<set $clothesBoughtMaternityLingerie = 1>> - <<run cashX(forceNeg(Math.trunc(7500-_prices)), "capEx")>> - <</link>> //Will cost <<print cashFormat(Math.trunc(7500-_prices))>>// + <<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>> + <</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>// <</if>> <<else>> <br>You already have enough lingerie suited for pregnant women. @@ -666,7 +666,7 @@ If $activeArcology.name has developed enough to begin exporting worthwhile goods <<elseif $activeArcology.direction != $arcologies[0].embargoTarget>> <br><<link "Purchase a shipment of empathy bellies" "Neighbor Interact">> <<set $clothesBoughtBelly = 1>> - <<run cashX(forceNeg(Math.trunc(15000-(_prices*2))), "capEx")>> + <<run cashX(forceNeg(Math.trunc((15000-(_prices*2))*$upgradeMultiplierTrade)), "capEx")>> <</link>> //Will cost <<print cashFormat(Math.trunc(15000-(_prices*2)))>>// <</if>> <<else>> diff --git a/src/uncategorized/nextWeek.tw b/src/uncategorized/nextWeek.tw index 64b03fe8c148bf095b275a50d8cd198ef5184e78..384210fe9d8b5e6897569aa80fb08b4f96223e6b 100644 --- a/src/uncategorized/nextWeek.tw +++ b/src/uncategorized/nextWeek.tw @@ -2,6 +2,8 @@ <<set $HackingSkillMultiplier = HackingSkillMultiplier()>> <<set $upgradeMultiplierArcology = upgradeMultiplierArcology()>> +<<set $upgradeMultiplierMedicine = upgradeMultiplierMedicine()>> +<<set $upgradeMultiplierTrade = upgradeMultiplierTrade()>> <<if $rivalOwner != 0>> <<set _rival = $arcologies.find(function(s) { return s.rival == 1; })>> @@ -381,7 +383,8 @@ /% 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 $averageProsperity = 0, $beauty = 0, $beautyMultiplier = 0, $boobsID = -1, $boobsInterestTargetID = -1, $brideSlave = -1, $buttslutID = -1, $buttslutInterestTargetID = -1, $cumslutID = -1, $FResult = 0, $groomSlave = -1, $humiliationID = -1, $humiliationInterestTargetID = -1, $i = 0, $influenceBonus = 0, $j = 0, $masochistID = -1, $masochistInterestTargetID = -1, $opinion = 0, $r = 0, $subID = -1, $submissiveInterestTargetID = -1, $x = 0, $mother = -1, $daughter = -1, $devMother = -1, $devDaughter = -1, $alphaTwin = -1, $betaTwin = -1, $youngerSister = -1, $olderSister = -1, $recruiterSlave = -1>> +<<set $i = 0, $j = 0, $x = 0, $r = 0, $opinion = 0, $influenceBonus = 0, $averageProsperity = 0, $beauty = 0, $beautyMultiplier = 0, $FResult = 0, $groomSlave = -1, $brideSlave = -1, $mother = -1, $daughter = -1, $devMother = -1, $devDaughter = -1, $alphaTwin = -1, $betaTwin = -1, $youngerSister = -1, $olderSister = -1, $recruiterSlave = -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, $dominantInterestID = -1, $subID = -1, $submissiveInterestTargetID = -1>> /% Other arrays %/ <<set $events = [], $RESSevent = [], $RESSTRevent = [], $RETSevent = [], $RECIevent = [], $RecETSevent = [], $REFIevent = [], $REFSevent = [], $PESSevent = [], $PETSevent = [], $FSAcquisitionEvents = [], $FSNonconformistEvents = [], $qualifiedNicknames = [], $REAnalCowgirlSubIDs = [], $REButtholeCheckinIDs = [], $recruit = [], $RETasteTestSubIDs = [], $devotedSlaves = [], $rebelSlaves = [], $REBoobCollisionSubIDs = [], $REIfYouEnjoyItSubIDs = [], $RESadisticDescriptionSubIDs = [], $REShowerForceSubIDs = [], $RESimpleAssaultIDs = [], $RECockmilkInterceptionIDs = [], $REInterslaveBeggingIDs = [], $bedSlaves = [], $qualifiedFS = [], $eligibleSlaves = [], $slavesInLine = []>> @@ -407,8 +410,6 @@ <<script>>Save.autosave.save("Week Start Autosave")<</script>> <</if>> -<<if $SF.Toggle && $SF.Active >= 1 && $SF.MercCon.CanAttend > -1 && $SF.MercCon.CanAttend > -2>> - <<set $SF.MercCon.CanAttend = -1>> -<</if>> +<<if $SF.Toggle && $SF.Active >= 1>> <<= Count()>> <</if>> <<set $NaNArray = findNaN()>> <<goto "Main">> diff --git a/src/uncategorized/pens.tw b/src/uncategorized/pens.tw index 57073472dfcb2301a5b71f9625bc079f45d61ce6..21c2d713a04017f17792000efe71481587e40969 100644 --- a/src/uncategorized/pens.tw +++ b/src/uncategorized/pens.tw @@ -10,14 +10,14 @@ This is a space in the arcology's service areas, designed to house hundreds of s <br><br> You own <<if $menials > 0>> - <<if $menials > 1>><<print commaNum($menials)>> menial slaves<<if ($menialBioreactors > 0) && ($fuckdolls == 0)>> and<<else>>,<</if>><<else>>one menial slave<<if ($menialBioreactors > 0) && ($fuckdolls == 0)>> and<<else>>,<</if>><</if>> + <<if $menials > 1>><<print num($menials)>> menial slaves<<if ($menialBioreactors > 0) && ($fuckdolls == 0)>> and<<else>>,<</if>><<else>>one menial slave<<if ($menialBioreactors > 0) && ($fuckdolls == 0)>> and<<else>>,<</if>><</if>> <</if>> <<if $menialBioreactors > 0>> - <<if $menialBioreactors > 1>><<print commaNum($menialBioreactors)>> standard bioreactors,<<else>>one standard bioreactor,<</if>> + <<if $menialBioreactors > 1>><<print num($menialBioreactors)>> standard bioreactors,<<else>>one standard bioreactor,<</if>> <<if $fuckdolls > 0>>and<</if>> <</if>> <<if $fuckdolls > 0>> - <<if $fuckdolls > 1>><<print commaNum($fuckdolls)>> standard Fuckdolls,<<else>>one Fuckdoll,<</if>> + <<if $fuckdolls > 1>><<print num($fuckdolls)>> standard Fuckdolls,<<else>>one Fuckdoll,<</if>> <</if>> <<if $menials+$menialBioreactors+$fuckdolls > 0>>partially<</if>> housed in this sector. diff --git a/src/uncategorized/persBusiness.tw b/src/uncategorized/persBusiness.tw index a9af9c69933df6dec24f10ab11f06ea1afcbfafa..31e7c744dc0237060921bc09be4617a33c92c62b 100644 --- a/src/uncategorized/persBusiness.tw +++ b/src/uncategorized/persBusiness.tw @@ -49,7 +49,7 @@ <<set _income = random(2000,4500)>> <<if $PC.belly >= 1500>> <<if $arcologies[0].FSRepopulationFocus != "unset">> - You focus on finding "dates" this week and earn @@.yellowgreen;<<print cashFormat(Math.trunc((_income*($rep/500))+($PC.belly)))>>@@ for your body, much more than usual; guess your pregnancy focused population wants your baby rounded body more than ever. However, doing such things @@.red;damages your reputation@@. + You focus on finding "dates" this week and earn @@.yellowgreen;<<print cashFormat(Math.trunc((_income*($rep/500))+($PC.belly)))>>@@ for your body, much more than usual; you guess your pregnancy focused population wants your baby rounded body more than ever. However, doing such things @@.red;damages your reputation@@. <<run cashX(Math.trunc((_income*($rep/500))+($PC.belly)), "personalBusiness")>> <<run repX(($rep*.95) - $rep, "personalBusiness")>> <<elseif $arcologies[0].FSRepopulationFocusPregPolicy == 1>> @@ -85,7 +85,12 @@ <<run cashX(1000, "personalBusiness")>> <<set $PC.forcedFertDrugs += 2>> <<elseif random(1,100) > 90>> - Your client this week offered you some free pills to make sex more fun. He was right; it made bareback sex feel amazing. + <<if $PC.medicine >= 25>> + Your client this week tried to trick you into taking fertility supplements disguised as party drugs. You still took them, of course, but made sure he @@.yellowgreen;paid extra@@ for the privilege. + <<run cashX(1000, "personalBusiness")>> + <<else>> + Your client this week offered you some free pills to make sex more fun. He was right; it made bareback sex feel amazing. + <</if>> <<set $PC.forcedFertDrugs += 2>> <</if>> <<= knockMeUp($PC, 20, 0, -5)>> @@ -296,7 +301,7 @@ <<run repX(($rep*.8) - $rep, "personalBusiness")>> <<set $enduringRep *= .5>> <<elseif random(1,100) >= 50>> - You are as discreet as possible, but yet some people seem to have doubts about who you are, and for quite some time, you can hear whispers @@.red;that you may be helping the more shady businesses in your arcology@@. + You are as discreet as possible, but yet some people seem to have doubts about who you are, and for quite some time, you can hear whispers @@.red;that you may be helping the shadier businesses in your arcology@@. <<run repX(($rep*.9) - $rep, "personalBusiness")>> <<set $enduringRep *= .75>> <<else>> @@ -546,7 +551,7 @@ <<else>> <<set $PC.medicine -= _Cal>> <</if>> - <<if _oldSkill <= 10>> + <<if _oldSkill <= 10>> <<if $PC.medicine > 10>> You now have @@.green;basic knowledge@@ about how to be a slave surgeon. <<else>> diff --git a/src/uncategorized/personalAttentionSelect.tw b/src/uncategorized/personalAttentionSelect.tw index e2bbef624f0d2460c0473cbe95896af388f67911..7e903f39e8cec427eb311c9b22761243b1f37c1e 100644 --- a/src/uncategorized/personalAttentionSelect.tw +++ b/src/uncategorized/personalAttentionSelect.tw @@ -3,11 +3,11 @@ <<set $nextButton = "Back to Main", $nextLink = "Main">> <<if $PC.career == "escort">> -[[Focus on "connecting"|Main][$personalAttention = "whoring"]] + [[Focus on "connecting"|Main][$personalAttention = "whoring"]] <<elseif $PC.career == "servant">> -[[Maintain your home|Main][$personalAttention = "upkeep"]] + [[Maintain your home|Main][$personalAttention = "upkeep"]] <<else>> -[[Focus on business|Main][$personalAttention = "business"]] + [[Focus on business|Main][$personalAttention = "business"]] <<if $PC.career == "gang">> | [[Help people "pass" things around|Main][$personalAttention = "smuggling"]] <</if>> diff --git a/src/uncategorized/policies.tw b/src/uncategorized/policies.tw index 2824d4e8219efcb37256f73a6286f563bf57873e..d8f307855f9796e3eaada65a95ca97f5244e4e2f 100644 --- a/src/uncategorized/policies.tw +++ b/src/uncategorized/policies.tw @@ -154,19 +154,19 @@ <</if>> <<if $SexMilestoneRetirement == 1>> - <br>''Sexual Milestone Retirement:'' slaves will be rewarded with their freedom once they have been fucked <<print commaNum($retirementSex)>> times. + <br>''Sexual Milestone Retirement:'' slaves will be rewarded with their freedom once they have been fucked <<print num($retirementSex)>> times. [[Repeal|Policies][$SexMilestoneRetirement = 0]] <br> Set a new retirement requirement: <<textbox "$retirementSex" $retirementSex "Policies">> <</if>> <<if $MilkMilestoneRetirement == 1>> - <br>''Productive Cow Retirement:'' slaves will be rewarded with their freedom once they have given <<print commaNum($retirementMilk)>> liters of milk. + <br>''Productive Cow Retirement:'' slaves will be rewarded with their freedom once they have given <<print num($retirementMilk)>> liters of milk. [[Repeal|Policies][$MilkMilestoneRetirement = 0]] <br> Set a new retirement requirement: <<textbox "$retirementMilk" $retirementMilk "Policies">> <</if>> <<if $CumMilestoneRetirement == 1>> - <br>''Productive Bull Retirement:'' slaves will be rewarded with their freedom once they have given <<print commaNum($retirementCum)>> deciliters of cum. + <br>''Productive Bull Retirement:'' slaves will be rewarded with their freedom once they have given <<print num($retirementCum)>> deciliters of cum. [[Repeal|Policies][$CumMilestoneRetirement = 0]] <br> Set a new retirement requirement: <<textbox "$retirementCum" $retirementCum "Policies">> <</if>> @@ -906,15 +906,15 @@ <<if $CitizenRetirement == 1>> <<if $SexMilestoneRetirement == 0>> - <br>''Sexual Milestone Retirement:'' slaves will be rewarded with their freedom once they have been fucked <<print commaNum($retirementSex)>> times. + <br>''Sexual Milestone Retirement:'' slaves will be rewarded with their freedom once they have been fucked <<print num($retirementSex)>> times. [[Implement|Policies][$SexMilestoneRetirement = 1, cashX(-5000, "policies"), repX(-1000, "policies")]] <</if>> <<if $MilkMilestoneRetirement == 0>> - <br>''Productive Cow Retirement:'' slaves will be rewarded with their freedom once they have given <<print commaNum($retirementMilk)>> liters of milk. + <br>''Productive Cow Retirement:'' slaves will be rewarded with their freedom once they have given <<print num($retirementMilk)>> liters of milk. [[Implement|Policies][$MilkMilestoneRetirement = 1, cashX(-5000, "policies"), repX(-1000, "policies")]] <</if>> <<if $CumMilestoneRetirement == 0>> - <br>''Productive Bull Retirement:'' slaves will be rewarded with their freedom once they have given <<print commaNum($retirementCum)>> deciliters of cum. + <br>''Productive Bull Retirement:'' slaves will be rewarded with their freedom once they have given <<print num($retirementCum)>> deciliters of cum. [[Implement|Policies][$CumMilestoneRetirement = 1, cashX(-5000, "policies"), repX(-1000, "policies")]] <</if>> <<if $BirthsMilestoneRetirement == 0>> diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw index ea4cd026cb5c00002978388a2f157965febc59ac..73807103bfdec1953598d5de97f472a08acb001d 100644 --- a/src/uncategorized/randomNonindividualEvent.tw +++ b/src/uncategorized/randomNonindividualEvent.tw @@ -287,6 +287,10 @@ <</if>> <<set $cumslutInterestTargetID = $slaves[$i].ID>> <</if>> + <<if ($dominantID != 0) && ($dominantInterestTargetID == 0)>> + <<set $REFIevent.push("dom")>> + <<set $dominantInterestTargetID = $slaves[$i].ID>> + <</if>> <<if ($subID != 0) && ($submissiveInterestTargetID == 0)>> <<set $REFIevent.push("submissive")>> <<set $submissiveInterestTargetID = $slaves[$i].ID>> @@ -303,6 +307,10 @@ <<set $REFIevent.push("pregnancy")>> <<set $pregnancyInterestTargetID = $slaves[$i].ID>> <</if>> + <<if ($sadistID != 0) && ($sadistInterestTargetID == 0)>> + <<set $REFIevent.push("sadist")>> + <<set $sadistInterestTargetID = $slaves[$i].ID>> + <</if>> <<if ($masochistID != 0) && ($masochistInterestTargetID == 0)>> <<set $REFIevent.push("masochist")>> <<set $masochistInterestTargetID = $slaves[$i].ID>> diff --git a/src/uncategorized/reAWOL.tw b/src/uncategorized/reAWOL.tw index 337379f6c287bc260d5c67be5cffe6c5f3d65576..bcdf5237457a611cb015cbaa58d2eff2a61108d8 100644 --- a/src/uncategorized/reAWOL.tw +++ b/src/uncategorized/reAWOL.tw @@ -38,15 +38,30 @@ <<set $activeSlave.sexualFlaw = "hates men">> <<set $activeSlave.hStyle = "shaved into a mohawk">> <<set $activeSlave.customTat = "She has a number of tattoos from a variety of mercenary companies.">> +<<set $activeSlave.clothes = "a military uniform">> <<setLocalPronouns $activeSlave>> <<setAssistantPronouns>> +<span id="artFrame"> + /* 000-250-006 */ + <<if $seeImages == 1>> + <div class="imageColumn"> + <<if $imageChoice == 1>> + <div class="imageRef lrgVector"><div class="mask"> </div><<SlaveArt $activeSlave 2 0>></div> + <<else>> + <div class="imageRef lrgRender"><div class="mask"> </div><<SlaveArt $activeSlave 2 0>></div> + <</if>> + <<= assistantArt(3)>> + </div> + <</if>> + /* 000-250-006 */ +</span> Human soldiers are superior to drones in a number of ways — they have the capability for suspicion, the ability to understand human interactions, and are impervious to the ever-present threat of cyber-warfare. That said, a crucial failing of any sentient warrior is their agency. <br><br> -On this particular evening, you find your work interrupted by an urgent alert from $assistantName. +On this particular evening, you find your work interrupted by an urgent alert from $assistantName<<if $seeImages == 1>>, accompanied by a recent picture<</if>>. <<if $assistant > 0>> "<<= properMaster()>>, one of the $mercenariesTitle has gone AWOL." _HeA pauses before continuing. "$He's taken a number of weapons with $him." <<else>> @@ -71,9 +86,18 @@ Your window of opportunity to act is closing. If you have plans for punishing th <br> <<link "Let your mercenaries handle $him">> + <<replace "#artFrame">> + /* 000-250-006 */ + <<if $seeImages == 1>> + <div class="imageColumn"> + <<= assistantArt(3)>> + </div> + <</if>> + /* 000-250-006 */ + <</replace>> <<replace "#result">> <<if random(1,100) > 50>> - Despite the trouble $he has caused you, the culmination of this mercenary's wanton flight from the rest of the $mercenariesTitle is decidedly an anti-climax. The last you hear of the matter is chorus of grim grunts and nods as your mercenaries file back into the arcology. The matter is done. + Despite the trouble $he has caused you, the culmination of this mercenary's wanton flight from the rest of the $mercenariesTitle is decidedly an anti-climax. The last you hear of the matter is a chorus of grim grunts and nods as your mercenaries file back into the arcology. The matter is done. <<else>> Your mercenaries return to tell you that they could not find the mutineer. It could be that $he managed to escape beyond their reach or that one among your 'loyal' retainers allowed $him to flee your judgment, but alas there is little that can be done to remedy the issue now. Still, aside from a slight grumbling within the arcology, few fault you for allowing the $mercenariesTitle to recapture one of their own — even if they failed to do so. <</if>> @@ -90,6 +114,17 @@ Your window of opportunity to act is closing. If you have plans for punishing th <span id="SFresult"> <<link "You want $him dead">> + <<replace "#artFrame">> + /* 000-250-006 */ + <<if $seeImages == 1>> + <<set $activeSlave.trust = 100>> + <<set $activeSlave.devotion = 100>> + <div class="imageColumn"> + <<= assistantArt(3)>> + </div> + <</if>> + /* 000-250-006 */ + <</replace>> <<replace "#SFresult">> Despite the trouble $he has caused you, the culmination of this mercenary's wanton flight from the rest of the $mercenariesTitle is decidedly anti-climatic. The last you hear of $him is in the footnote of one of your daily reports, with some minute yet suitably gory pictures as an accompaniment. When the stolen weapons are returned to their rightful place in your arcology, the unfortunate matter is concluded once and for all. @@.green;Your reputation and $arcologies[0].name's prosperity improves,@@ a result of the fear crossing you will bring, in addition to showing your citizens that you are willing and able to deal with such matters in-house. <<set $arcologies[0].prosperity += 2>> @@ -104,6 +139,21 @@ Your window of opportunity to act is closing. If you have plans for punishing th <<link "You want $him alive">> <<replace "#SFresult">> + <<replace "#artFrame">> + /* 000-250-006 */ + <<if $seeImages == 1>> + <<set $activeSlave.clothes = "chains">> + <div class="imageColumn"> + <<if $imageChoice == 1>> + <div class="imageRef lrgVector"><div class="mask"> </div><<SlaveArt $activeSlave 2 0>></div> + <<else>> + <div class="imageRef lrgRender"><div class="mask"> </div><<SlaveArt $activeSlave 2 0>></div> + <</if>> + <<= assistantArt(3)>> + </div> + <</if>> + /* 000-250-006 */ + <</replace>> It doesn't take long for a squad of $SF.Lower to track $him down. Soon you have the troublesome turncoat before you in chains. <br><br> <span id="aliveresult"> @@ -150,6 +200,15 @@ Your window of opportunity to act is closing. If you have plans for punishing th <span id="bountyresult"> <<link "You want $him dead">> + <<replace "#artFrame">> + /* 000-250-006 */ + <<if $seeImages == 1>> + <div class="imageColumn"> + <<= assistantArt(3)>> + </div> + <</if>> + /* 000-250-006 */ + <</replace>> <<replace "#bountyresult">> Despite the trouble $he has caused you, the culmination of this mercenary's wanton flight from the rest of the $mercenariesTitle is decidedly an anti-climax. The last you hear of $him is in the footnote of one of your daily reports, with some minute yet suitably gory pictures as an accompaniment. When the stolen weapons are returned to their rightful place in your arcology, the unfortunate matter is concluded once and for all. @@.green;Your reputation improves,@@ a result of the fear of crossing you that your unpleasantness has inspired. <<run repX(5000, "event", $activeSlave)>> @@ -160,6 +219,21 @@ Your window of opportunity to act is closing. If you have plans for punishing th <br> <<link "You want $him alive">> + <<replace "#artFrame">> + /* 000-250-006 */ + <<if $seeImages == 1>> + <<set $activeSlave.clothes = "chains">> + <div class="imageColumn"> + <<if $imageChoice == 1>> + <div class="imageRef lrgVector"><div class="mask"> </div><<SlaveArt $activeSlave 2 0>></div> + <<else>> + <div class="imageRef lrgRender"><div class="mask"> </div><<SlaveArt $activeSlave 2 0>></div> + <</if>> + <<= assistantArt(3)>> + </div> + <</if>> + /* 000-250-006 */ + <</replace>> <<replace "#bountyresult">> It doesn't take long for some hired guns, motivated by the bounty, to track $him down. Soon you have the troublesome turncoat before you in chains. <br><br> diff --git a/src/uncategorized/reRecruit.tw b/src/uncategorized/reRecruit.tw index dbd2482277d5233418fde8429615f719afa4b09d..102b441595f49edb13f20ec7a53a7546788b2239 100644 --- a/src/uncategorized/reRecruit.tw +++ b/src/uncategorized/reRecruit.tw @@ -2013,7 +2013,7 @@ Your Head Girl sends you a discreet message that _he2 may have found a slave for you. $HeadGirl.slaveName duly ushers a $girl into your office. $He looks very young, like a dissolute party $girl. $He bites $his lip nervously when $he sees you, and looks to $HeadGirl.slaveName for guidance. $HeadGirl.slaveName nods at $him reassuringly, so $he explains $himself. <br><br> -"<<if $PC.title != 0>><<S>>ir<<else>>Ma'am<</if>>, my name i<<s>> $activeSlave.slaveName. I'm, um, bored, I gue<<ss>>. I go to club<<s>> and get drunk and fuck guy<<s>> and it'<<s>> ju<<s>>t kinda boring. I thought it would be different when I turned <<= numberToWords($activeSlave.actualAge)>>, but that wa<<s>> a couple month<<s>> ago and, well, nothing'<<s>> different. I <<s>>aw $HeadGirl.slaveName and <<he 2>> wa<<s>> ju<<s>>t <<s>>o gra<<c>>eful and beautiful and <<he 2>> <<s>>eemed <<s>>o confident in what <<he 2>> wa<<s>> doing and who <<he 2>> wa<<s>> and I talked to _him2 and <<he 2>> <<s>>aid <<he 2>> wa<<s>> your Head Girl and... I want to be like _him2. Can I be your <<s>>lave? I'd be good, I'm good at <<s>>ucking dick<<s>> and <<s>>tuff." $He seems to be a little naïve about sexual slavery, but there's no need to tell $him that. +"<<if $PC.title != 0>><<S>>ir<<else>>Ma'am<</if>>, my name i<<s>> $activeSlave.slaveName. I'm, um, bored, I gue<<ss>>. I go to club<<s>> and get drunk and fuck guy<<s>> and it'<<s>> ju<<s>>t kinda boring. I thought it would be different when I turned <<= num($activeSlave.actualAge)>>, but that wa<<s>> a couple month<<s>> ago and, well, nothing'<<s>> different. I <<s>>aw $HeadGirl.slaveName and _he2 wa<<s>> ju<<s>>t <<s>>o gra<<c>>eful and beautiful and _he2 <<s>>eemed <<s>>o confident in what _he2 wa<<s>> doing and who _he2 wa<<s>> and I talked to _him2 and _he2 <<s>>aid _he2 wa<<s>> your Head Girl and... I want to be like _him2. Can I be your <<s>>lave? I'd be good, I'm good at <<s>>ucking dick<<s>> and <<s>>tuff." $He seems to be a little naïve about sexual slavery, but there's no need to tell $him that. <<case "male recruit">> @@ -2022,7 +2022,7 @@ Your Head Girl sends you a discreet message that _he2 may have found a slave for Your Head Girl sends you a discreet message that _he2 may have found a slave for you. $HeadGirl.slaveName duly ushers an androgynous young person into your office. $He's dressed as a girl and acts like one. $He looks very young, like a dissolute party girl. $He bites $his lip nervously when $he sees you, and looks to $HeadGirl.slaveName for guidance. $HeadGirl.slaveName nods at $him reassuringly, so $he explains $himself. <br><br> -"<<if $PC.title != 0>><<S>>ir<<else>>Ma'am<</if>>, my name i<<s>> $activeSlave.slaveName. I'm, um, bored, I gue<<ss>>. I go to club<<s>> and get drunk and fuck guy<<s>> and it'<<s>> ju<<s>>t kinda boring. I thought it would be different when I turned <<= numberToWords($activeSlave.actualAge)>>, but that wa<<s>> a couple month<<s>> ago and, well, nothing'<<s>> different. I <<s>>aw $HeadGirl.slaveName and <<he 2>> wa<<s>> ju<<s>>t <<s>>o beautiful and ha<<s>> a dick like me and <<he 2>> <<s>>eemed <<s>>o confident in what <<he 2>> wa<<s>> doing and who <<he 2>> wa<<s>> and I talked to _him2 and <<he 2>> <<s>>aid <<he 2>> wa<<s>> your Head Girl and... I want to be like _him2. Can I be your <<s>>lave? I'd be good, I'm good at <<s>>ucking dick<<s>>." $He seems to be a little naïve about sexual slavery, but there's no need to tell $him that. +"<<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>, my name i<<s>> $activeSlave.slaveName. I'm, um, bored, I gue<<ss>>. I go to club<<s>> and get drunk and fuck guy<<s>> and it'<<s>> ju<<s>>t kinda boring. I thought it would be different when I turned <<= num($activeSlave.actualAge)>>, but that wa<<s>> a couple month<<s>> ago and, well, nothing'<<s>> different. I <<s>>aw $HeadGirl.slaveName and _he2 wa<<s>> ju<<s>>t <<s>>o beautiful and ha<<s>> a dick like me and _he2 <<s>>eemed <<s>>o confident in what _he2 wa<<s>> doing and who _he2 wa<<s>> and I talked to _him2 and _he2 <<s>>aid _he2 wa<<s>> your Head Girl and... I want to be like _him2. Can I be your <<s>>lave? I'd be good, I'm good at <<s>>ucking dick<<s>>." $He seems to be a little naïve about sexual slavery, but there's no need to tell $him that. <<case "whore recruit">> @@ -2582,9 +2582,9 @@ He explains that one of his servant <<= $girl>>s was impregnated by his fool of <<case "shemale PC">> You put $him through the enslavement procedures. $He's almost excited. Though $he knows $he's signed $himself over to a life of sexual slavery, the anticipation of becoming more feminine is clearly more important to $him than any kind of fear. <<case "female SD">> - Contacting the wealthy resident, you apologize for his inconvenience and offer to 'deal with ' the matter personally. He is content with not having the hassle and agrees with little thought, leaving you owning the debt of the unfortunate student. Making your way to the guard station where $he is being kept, you tell the young $woman $he's getting out of jail right away. $He cooperates to having $his biometric readings taken and logged, only later realizing this isn't for $his release but to register $him as a slave. In shock and with tears in $his eyes, $he dejectedly follows the guard you summon to have $him brought to the slave quarters. + Contacting the wealthy resident, you apologize for his inconvenience and offer to 'deal with' the matter personally. He is content with not having the hassle and agrees with little thought, leaving you owning the debt of the unfortunate student. Making your way to the guard station where $he is being kept, you tell the young $woman $he's getting out of jail right away. $He cooperates to having $his biometric readings taken and logged, only later realizing this isn't for $his release but to register $him as a slave. In shock and with tears in $his eyes, $he dejectedly follows the guard you summon to have $him brought to the slave quarters. <<case "female SD 2">> - Contacting the wealthy resident, you apologize for his inconvenience and offer to 'deal with ' the matter personally. He is content with not having the hassle and agrees with little thought, leaving you owning the debt of the unfortunate student. Making your way to the guard station where $he is being kept, you tell the young $woman $he's getting out of jail right away. $He cooperates to having $his biometric readings taken and logged, only later realizing this isn't for $his release but to register $him as a slave. $He makes a poor decision to rebel against you on the way to the slave quarters, but $his jiggling mass makes it a pathetically short distance before tiring and dejectedly following the guard the rest of the way. + Contacting the wealthy resident, you apologize for his inconvenience and offer to 'deal with' the matter personally. He is content with not having the hassle and agrees with little thought, leaving you owning the debt of the unfortunate student. Making your way to the guard station where $he is being kept, you tell the young $woman $he's getting out of jail right away. $He cooperates to having $his biometric readings taken and logged, only later realizing this isn't for $his release but to register $him as a slave. $He makes a poor decision to rebel against you on the way to the slave quarters, but $his jiggling mass makes it a pathetically short distance before tiring and dejectedly following the guard the rest of the way. <<case "male SD">> Contacting the wealthy resident, you apologize for his inconvenience and offer to 'deal with' the matter personally. He is content with not having the hassle and agrees with little thought, leaving you owning the debt of the unfortunate student. Making your way to the guard station where he is being kept, you tell the young man he's getting out of jail right away. He cooperates to having his biometric readings taken and logged, only later realizing this isn't for a release but to register him as a slave. In shock and with tears in his eyes, he gets angry and tries to fight, only to be overwhelmed by your guards and be dragged off to the remote surgery. It doesn't take long at all to add a pretty dickgirl to your slave quarters after that. <<case "female SE">> @@ -2718,7 +2718,7 @@ He explains that one of his servant <<= $girl>>s was impregnated by his fool of <<case "female SD">> Contacting the wealthy resident, you apologize for his inconvenience and offer to 'deal with' the matter personally. He is content with not having the hassle and agrees with little thought, leaving you owning the debt of the unfortunate student. Making your way to the guard station where $he is being kept, you tell the young $woman $he's getting out of jail right away. $He cooperates to having $his biometric readings taken and logged, only later realizing this isn't for $his release but to register $him as a slave. In shock and with tears in $his eyes, $he dejectedly follows the guard you summon to have $him brought to the slave broker you sold $him to. <<case "female SD 2">> - Contacting the wealthy resident, you apologize for his inconvenience and offer to 'deal with ' the matter personally. He is content with not having the hassle and agrees with little thought, leaving you owning the debt of the unfortunate student. Making your way to the guard station where $he is being kept, you tell the young $woman $he's getting out of jail right away. $He cooperates to having $his biometric readings taken and logged, only later realizing this isn't for $his release but to register $him as a slave. $He makes a poor decision to rebel against $his guard you summoned to have $him brought to the slave broker you sold $him to, earning $himself a taser shock and a degrading cart ride with $his ass bare for all to see. + Contacting the wealthy resident, you apologize for his inconvenience and offer to 'deal with' the matter personally. He is content with not having the hassle and agrees with little thought, leaving you owning the debt of the unfortunate student. Making your way to the guard station where $he is being kept, you tell the young $woman $he's getting out of jail right away. $He cooperates to having $his biometric readings taken and logged, only later realizing this isn't for $his release but to register $him as a slave. $He makes a poor decision to rebel against $his guard you summoned to have $him brought to the slave broker you sold $him to, earning $himself a taser shock and a degrading cart ride with $his ass bare for all to see. <<case "male SD">> Contacting the wealthy resident, you apologize for his inconvenience and offer to 'deal with' the matter personally. He is content with not having the hassle and agrees with little thought, leaving you owning the debt of the unfortunate student. Making your way to the guard station where he is being kept, you tell the young man he's getting out of jail right away. He cooperates to having his biometric readings taken and logged, only later realizing this isn't for a release but to register him as a slave. In shock and with tears in his eyes, he gets angry and tries to fight, only to be overwhelmed by your guards and be dragged off to the remote surgery. It doesn't take long at all before the student is transported to the office of the slave broker you sold $him to. <<case "gang leader">> diff --git a/src/uncategorized/reRelationshipAdvice.tw b/src/uncategorized/reRelationshipAdvice.tw index a917d79e3f32b73df09ab9f272500bb1c62d3a2e..a3505eb4995057532dc17893b3572173ad38b8b6 100644 --- a/src/uncategorized/reRelationshipAdvice.tw +++ b/src/uncategorized/reRelationshipAdvice.tw @@ -120,7 +120,7 @@ $He nods $his head quickly, still staring at $his feet. $He shuts $his eyes tigh <</if>> $activeSlave.slaveName bursts out laughing. They're now @@.lightgreen;friends with benefits.@@ <<elseif $activeSlave.relationship == 3>> - t-to b-be your girlfriend." $He takes a deep breath. "It'<<s>> fun, ju<<s>>t + t-to b-be your <<= $girl>>friend." $He takes a deep breath. "It'<<s>> fun, ju<<s>>t <<if ($activeSlave.fetishKnown == 1) && ($activeSlave.fetish == "buttslut")>> fucking your butt. <<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetish == "cumslut")>> @@ -140,7 +140,7 @@ $He nods $his head quickly, still staring at $his feet. $He shuts $his eyes tigh <<else>> having <<s>>e<<x>> with you. <</if>> - But I — I really like you." $subSlave.slaveName looks relieved, and <<if $subSlave.voice != 0>>says, "I really like you too. And you're really cute! I'd love to be your girlfriend." _He2<<else>>lovingly<</if>> takes $activeSlave.slaveName's hands in _hers2, and then kisses $him on the cheek. $activeSlave.slaveName crushes $subSlave.slaveName in a hug, pressing a squeak out of _him2. They're now @@.lightgreen;lovers.@@ + But I — I really like you." $subSlave.slaveName looks relieved, and <<if $subSlave.voice != 0>>says, "I really like you too. And you're really cute! I'd love to be your <<= _girl2>>friend." _He2<<else>>lovingly<</if>> takes $activeSlave.slaveName's hands in _hers2, and then kisses $him on the cheek. $activeSlave.slaveName crushes $subSlave.slaveName in a hug, pressing a squeak out of _him2. They're now @@.lightgreen;lovers.@@ <<elseif $activeSlave.relationship == 4>> - " $He stops $himself. "No, I want to do thi<<s>> right." $He takes $subSlave.slaveName's hand, and then drops to one knee. After a moment of uncomprehending shock, $subSlave.slaveName begins to cry. "Will you marry me?" $subSlave.slaveName turns to you and<<if !canTalk($subSlave)>> wordlessly<</if>> asks if it's all right with you; you nod, and _he2 turns back to $activeSlave.slaveName. <<if !canTalk($subSlave)>>_He2 gestures distractedly that $activeSlave.slaveName is being silly, and of course _he2'll marry $him, because _he2 loves $him.<<else>><<run Enunciate($subSlave)>>"O-of cour<<s>>e I'll m-marry you, <<s>>illy $girl. I love you."<</if>> $activeSlave.slaveName jumps up and crushes $subSlave.slaveName in a hug, kissing _him2 frantically through $his tears. You @@.lightgreen;marry them@@ solemnly, and they embrace tightly, hugging each other close. $activeSlave.slaveName comes to face you over $his wife's shoulder, and $he mouths a silent thanks to you. <</if>> diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw index 7942216347f5ad16e073d052ca76ebf522235ce2..7e603835792b90889c23bb7fce270f71c558f738 100644 --- a/src/uncategorized/remoteSurgery.tw +++ b/src/uncategorized/remoteSurgery.tw @@ -1924,7 +1924,7 @@ Work on $him structurally: [[Encase in a Fuckdoll suit|Surgery Degradation][$activeSlave.subTarget=0, $activeSlave.sentence=0, $activeSlave.training=0, $activeSlave.toyHole="all her holes", $activeSlave.pubicHStyle="waxed", $activeSlave.livingRules="spare", $activeSlave.speechRules="restrictive", $activeSlave.releaseRules="restrictive", $activeSlave.relationshipRules="restrictive", $activeSlave.fuckdoll=1, $activeSlave.choosesOwnClothes=0, $activeSlave.clothes="a Fuckdoll suit", $activeSlave.collar="none", $activeSlave.shoes="heels",$activeSlave.legAccessory="none", $activeSlave.vaginalAccessory="none", $activeSlave.vaginalAttachment="none", $activeSlave.dickAccessory="none", $activeSlave.chastityAnus=0, $activeSlave.chastityPenis=0, $activeSlave.chastityVagina=0, $activeSlave.buttplug="none", $activeSlave.attrKnown=1, $activeSlave.fetishKnown=1, $activeSlave.inflation=0, $activeSlave.inflationType="none", $activeSlave.inflationMethod=0, $activeSlave.milkSource=0, $activeSlave.cumSource=0, $surgeryType = "fuckdoll"]] //This will greatly restrict $him// <</if>> <<else>> - <br>$He is encased in a Fuckdoll suit. [[Extract " + $him + "|Surgery Degradation][$activeSlave.fuckdoll=0, $activeSlave.clothes="no clothing", $activeSlave.shoes="none", $surgeryType = "fuckdollExtraction"]] + <br>$He is encased in a Fuckdoll suit. [["Extract " + $him|Surgery Degradation][$activeSlave.fuckdoll=0, $activeSlave.clothes="no clothing", $activeSlave.shoes="none", $surgeryType = "fuckdollExtraction"]] <</if>> <</if>> diff --git a/src/uncategorized/repBudget.tw b/src/uncategorized/repBudget.tw index fe0d34951a2ce43fb4e2177e227661adc3b744c9..c9133ee567e539a7a67808eb466194c9aaee31e5 100644 --- a/src/uncategorized/repBudget.tw +++ b/src/uncategorized/repBudget.tw @@ -170,7 +170,7 @@ for(var i = 0; i < State.variables.lastWeeksRepIncome.length; i++){ <<set $lastWeeksRepProfits.Total = ($lastWeeksRepIncome.Total + $lastWeeksRepExpenses.Total)>> /* each "profit" item is calculated on this sheet, and there's two ways to generate a profit total: the difference of the income and expense totals, and adding all the profit items. If they aren't the same, I probably forgot to properly add an item's profit calculation to this sheet.*/ <<if $lastWeeksRepProfits.Total != hashSum($lastWeeksRepProfits) - $lastWeeksRepProfits.Total>>/* The profits object includes the total number of profits, so we have to subtract it back out */ - <<print (commaNum(Math.trunc(hashSum($lastWeeksRepProfits)-$lastWeeksRepProfits.Total)))>><br> + <<print (num(Math.trunc(hashSum($lastWeeksRepProfits)-$lastWeeksRepProfits.Total)))>><br> @@.red;Fix profit calc<br>@@ <</if>> <<print repFormat(Math.trunc($lastWeeksRepProfits.Total))>> diff --git a/src/uncategorized/reputation.tw b/src/uncategorized/reputation.tw index cc6aad833f56b3774849a3092e0b98d505d63d56..ed57923f1de6c10cfb07105fae8e3cca081de26d 100644 --- a/src/uncategorized/reputation.tw +++ b/src/uncategorized/reputation.tw @@ -627,7 +627,7 @@ On formal occasions, you are announced as $PCTitle. The public @@.green;approves@@ of the way you're providing for $citizenOrphanageTotal of your slaves' children to be raised as citizens. <<= FSChange("Paternalist", $citizenOrphanageTotal)>> <<if $privateOrphanageTotal > 0>> - Raising <<print commaNum($privateOrphanageTotal)>> of your slaves' children privately is considered even more @@.green;impressive.@@ + Raising <<print num($privateOrphanageTotal)>> of your slaves' children privately is considered even more @@.green;impressive.@@ <<set _care = $privateOrphanageTotal*2>> <<= FSChange("Paternalist", _care)>> <</if>> @@ -639,7 +639,7 @@ On formal occasions, you are announced as $PCTitle. <</if>> <<elseif $privateOrphanageTotal > 0>> <<if $arcologies[0].FSPaternalist != "unset">> - Raising <<print commaNum($privateOrphanageTotal)>> of your slaves' children privately is considered extremely @@.green;impressive.@@ + Raising <<print num($privateOrphanageTotal)>> of your slaves' children privately is considered extremely @@.green;impressive.@@ <<set _care = $privateOrphanageTotal*2>> <<= FSChange("Paternalist", _care)>> <<elseif $arcologies[0].FSDegradationist != "unset">> @@ -647,7 +647,7 @@ On formal occasions, you are announced as $PCTitle. <</if>> <</if>> <<if $breederOrphanageTotal > 0 && $arcologies[0].FSRepopulationFocus != "unset">> - The public @@.green;approves@@ of the way you've dedicated <<print commaNum($breederOrphanageTotal)>> of your slaves' children to be raised into future breeders. + The public @@.green;approves@@ of the way you've dedicated <<print num($breederOrphanageTotal)>> of your slaves' children to be raised into future breeders. <<set _futureBreeders = Math.round((($breederOrphanageTotal/100)+1))>> <<= FSChange("Repopulationist", _futureBreeders)>> <</if>> diff --git a/src/uncategorized/resSale.tw b/src/uncategorized/resSale.tw index 52ea5c071b31887a5f1450da8666a9d160620e2f..e6519ed509e2e4cbf5d0e49dd9db6400cb7512c7 100644 --- a/src/uncategorized/resSale.tw +++ b/src/uncategorized/resSale.tw @@ -5,22 +5,67 @@ <<set $RESSale = $RESSale.random()>> <<if $RESSale == "TSS">> <<set $TSS.schoolSale = 1>> + <<if $seeImages == 1>> + <<GenerateMarketSlave "TSS">> + <<set $activeSlave.clothes = "a schoolgirl outfit">> + <</if>> <<elseif $RESSale == "GRI">> <<set $GRI.schoolSale = 1>> + <<if $seeImages == 1>> + <<GenerateMarketSlave "GRI">> + <<set $activeSlave.clothes = "a slave gown">> + <</if>> <<elseif $RESSale == "SCP">> <<set $SCP.schoolSale = 1>> + <<if $seeImages == 1>> + <<GenerateMarketSlave "SCP">> + <<set $activeSlave.clothes = "a string bikini">> + <</if>> <<elseif $RESSale == "LDE">> <<set $LDE.schoolSale = 1>> + <<if $seeImages == 1>> + <<GenerateMarketSlave "LDE">> + <</if>> <<elseif $RESSale == "TGA">> <<set $TGA.schoolSale = 1>> + <<if $seeImages == 1>> + <<GenerateMarketSlave "TGA">> + <</if>> <<elseif $RESSale == "TCR">> <<set $TCR.schoolSale = 1>> + <<if $seeImages == 1>> + <<GenerateMarketSlave "TCR">> + <</if>> <<elseif $RESSale == "HA">> <<set $HA.schoolSale = 1>> + <<if $seeImages == 1>> + <<GenerateMarketSlave "HA">> + <<set $activeSlave.clothes = "a nice maid outfit">> + <</if>> <<else>> <<set $TFS.schoolSale = 1>> + <<if $seeImages == 1>> + <<GenerateMarketSlave "TFS">> + <</if>> <</if>> +<span id="artFrame"> + /* 000-250-006 */ + <<if $seeImages == 1>> + <<set $activeSlave.trust = 100>> + <<set $activeSlave.devotion = 100>> + <div class="imageColumn"> + <<if $imageChoice == 1>> + <div class="imageRef lrgVector"><div class="mask"> </div><<SlaveArt $activeSlave 2 0>></div> + <<else>> + <div class="imageRef lrgRender"><div class="mask"> </div><<SlaveArt $activeSlave 2 0>></div> + <</if>> + <<= assistantArt(3)>> + </div> + <</if>> + /* 000-250-006 */ +</span> + You receive a personal call from <<if $RESSale == "TSS">> The Slavegirl School, a rising slave training organization known for its reliably unremarkable products, offered at a competitive price. diff --git a/src/uncategorized/saDiet.tw b/src/uncategorized/saDiet.tw index b753be11dff1a09c3aa6f9862d96ca669055b92e..f3180d8c637f4872e312b297f73bdf147cf084f8 100644 --- a/src/uncategorized/saDiet.tw +++ b/src/uncategorized/saDiet.tw @@ -764,30 +764,23 @@ $His health, all things considered, cannot get much better. @@.yellow;$His cleansing diet has ended.@@ <<set $slaves[$i].diet = "healthy">> <</if>> + <<if $slaves[$i].health <= 90>> + <<set $slaves[$i].health += 2>> + <</if>> + <<if $slaves[$i].chem > 2>> + <<set $slaves[$i].chem -= 2>> + <</if>> <<if $slaves[$i].fetish == "mindbroken">> $His diet tastes and smells awful, but such things are lost on $his broken mind. $His body @@.green;appreciates@@ it, however. - <<set $slaves[$i].health += 2>> - <<if $slaves[$i].chem > 2>> - <<set $slaves[$i].chem -= 2>> - <</if>> <<elseif !canSmell($slaves[$i]) && !canTaste($slaves[$i])>> $His diet tastes and smells awful, but $he is incapable of recognizing it, allowing $him to feel nothing but its @@.green;significant restorative effect.@@ - <<set $slaves[$i].trust++, $slaves[$i].health += 2>> - <<if $slaves[$i].chem > 2>> - <<set $slaves[$i].chem -= 2>> - <</if>> + <<set $slaves[$i].trust++>> <<elseif $slaves[$i].sexualFlaw == "self hating">> $His diet @@.hotpink;tastes and smells awful,@@ the perfect meal for such a wretched creature as $himself. $He knows you are @@.green;preserving $his health@@ but doesn't understand why you'd waste time and credits on $him. - <<set $slaves[$i].devotion += 2, $slaves[$i].health += 2>> - <<if $slaves[$i].chem > 2>> - <<set $slaves[$i].chem -= 2>> - <</if>> + <<set $slaves[$i].devotion += 2>> <<else>> $His diet @@.mediumorchid;tastes and smells awful@@ but $he actively @@.green;feels better@@ the more $he eats. $He @@.mediumaquamarine;trusts you more@@ since you seem to care about $his health. - <<set $slaves[$i].devotion -= 2, $slaves[$i].trust++, $slaves[$i].health += 2>> - <<if $slaves[$i].chem > 2>> - <<set $slaves[$i].chem -= 2>> - <</if>> + <<set $slaves[$i].devotion -= 2, $slaves[$i].trust++>> <</if>> <<case "fertility">> /* + ovum and small boosts to energy and attrXY */ <<if !isFertile($slaves[$i]) || $slaves[$i].preg != 0>> diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw index 9a27d3c1d8f78c21a522310548952fb213457360..fdf45562fdf1f9d11650ab79d73124db5e2a1a2d 100644 --- a/src/uncategorized/saLongTermEffects.tw +++ b/src/uncategorized/saLongTermEffects.tw @@ -1605,7 +1605,7 @@ <<switch $slaves[$i].clitSetting>> <<case "none">> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing disrupt arousal, @@.red;reducing $his sex drive@@ and @@.mediumorchid;infuriating $him.@@ <<set $slaves[$i].devotion -= 3>> <<if $slaves[$i].energy > 5>> @@ -1633,7 +1633,7 @@ <<case "all">> <<if $slaves[$i].energy <= 95>> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing encourage sex of all kinds, @@.green;increasing $his sex drive.@@ <<set $slaves[$i].energy += 5>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -1647,7 +1647,7 @@ <<case "women">> <<if $slaves[$i].attrXX < 95>> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing successfully @@.green;increase $his attraction to girls@@ by pleasuring $him when $he's around them. <<set $slaves[$i].attrXX += 6+$assistant+$assistant>> <<if $slaves[$i].energy < 80>> @@ -1673,7 +1673,7 @@ <<case "anti-women">> <<if $slaves[$i].attrXX > 0>> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing successfully @@.green;suppress $his attraction to girls@@ by making $his private parts very uncomfortable when $he's around them. <<set $slaves[$i].attrXX -= Math.clamp($slaves[$i].attrXX-(6+$assistant+$assistant),0,100)>> <<if $slaves[$i].energy > 0>> @@ -1699,7 +1699,7 @@ <<case "men">> <<if $slaves[$i].attrXY < 95>> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing successfully @@.green;increase $his attraction to guys@@ by pleasuring $him when $he's around cocks. <<set $slaves[$i].attrXY += 6+$assistant+$assistant>> <<if $slaves[$i].energy < 80>> @@ -1725,7 +1725,7 @@ <<case "anti-men">> <<if $slaves[$i].attrXY > 0>> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing successfully @@.green;suppress $his attraction to guys@@ by making $his private parts very uncomfortable when $he's around them. <<set $slaves[$i].attrXY -= Math.clamp($slaves[$i].attrXY-(6+$assistant+$assistant),0,100)>> <<if $slaves[$i].energy > 0>> @@ -1751,7 +1751,7 @@ <<case "vanilla">> <<if ($slaves[$i].fetish != "none") && (_fetishChangeChance > random(0,100)-20*$assistant)>> After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing encourage many orgasms during straightforward sex, @@.coral;$his sexuality returns to normal.@@ <<set $slaves[$i].fetish = "none", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -1766,7 +1766,7 @@ <<if ($slaves[$i].fetish != "cumslut")>> <<if $slaves[$i].fetishStrength >= 10>> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's using $his mouth. <<set $slaves[$i].fetishStrength -= 30>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -1778,7 +1778,7 @@ <</if>> <<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>> After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing encourage many orgasms as $he performs oral sex, @@.lightcoral;$he develops a fetish for cum.@@ <<set $slaves[$i].fetish = "cumslut", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -1791,7 +1791,7 @@ <</if>> <<elseif ($slaves[$i].fetishStrength <= 95)>> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing @@.lightcoral;advance $his oral fetish.@@ <<set $slaves[$i].fetishStrength += 6>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -1806,7 +1806,7 @@ <<if ($slaves[$i].fetish != "buttslut")>> <<if $slaves[$i].fetishStrength >= 10>> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $his rear hole is being fucked. <<set $slaves[$i].fetishStrength -= 30>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -1818,7 +1818,7 @@ <</if>> <<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>> After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing encourage many orgasms when $his ass is being stimulated, @@.lightcoral;$he develops a fetish for being an anal bottom.@@ <<set $slaves[$i].fetish = "buttslut", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -1831,7 +1831,7 @@ <</if>> <<elseif ($slaves[$i].fetishStrength <= 95)>> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing @@.lightcoral;advance $his anal fetish.@@ <<set $slaves[$i].fetishStrength += 6>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -1846,7 +1846,7 @@ <<if ($slaves[$i].fetish != "boobs")>> <<if $slaves[$i].fetishStrength >= 10>> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $his tits are being touched. <<set $slaves[$i].fetishStrength -= 30>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -1858,7 +1858,7 @@ <</if>> <<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>> After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing encourage many orgasms when $his nipples are being stimulated, @@.lightcoral;$he develops a fetish for $his tits.@@ <<set $slaves[$i].fetish = "boobs", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -1871,7 +1871,7 @@ <</if>> <<elseif ($slaves[$i].fetishStrength <= 95)>> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing @@.lightcoral;advance $his boob fetish.@@ <<set $slaves[$i].fetishStrength += 6>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -1886,7 +1886,7 @@ <<if ($slaves[$i].fetish != "submissive")>> <<if $slaves[$i].fetishStrength >= 10>> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's being held down and used. <<set $slaves[$i].fetishStrength -= 30>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -1898,7 +1898,7 @@ <</if>> <<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>> After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing encourage many orgasms when $he is restrained, @@.lightcoral;$he develops a fetish for submission.@@ <<set $slaves[$i].fetish = "submissive", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -1911,7 +1911,7 @@ <</if>> <<elseif ($slaves[$i].fetishStrength <= 95)>> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing @@.lightcoral;advance $his submission.@@ <<set $slaves[$i].fetishStrength += 6>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -1926,7 +1926,7 @@ <<if ($slaves[$i].fetish != "humiliation")>> <<if $slaves[$i].fetishStrength >= 10>> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's got an audience. <<set $slaves[$i].fetishStrength -= 30>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -1938,7 +1938,7 @@ <</if>> <<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>> After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing encourage many orgasms when $he is being humiliated, @@.lightcoral;$he develops a fetish for humiliation.@@ <<set $slaves[$i].fetish = "humiliation", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -1951,7 +1951,7 @@ <</if>> <<elseif ($slaves[$i].fetishStrength <= 95)>> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing @@.lightcoral;advance $his humiliation fetish.@@ <<set $slaves[$i].fetishStrength += 6>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -1966,7 +1966,7 @@ <<if ($slaves[$i].fetish != "pregnancy")>> <<if $slaves[$i].fetishStrength >= 10>> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he feels like $he's being bred. <<set $slaves[$i].fetishStrength -= 30>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -1978,7 +1978,7 @@ <</if>> <<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>> After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing encourage many orgasms during <<if $PC.dick == 1>>unprotected sex<<if $PC.vagina == 1>> and <</if>><</if>><<if $PC.vagina == 1>>loving contact with the female anatomy<</if>>, @@.lightcoral;$he begins to fantasize about pregnancy.@@ <<set $slaves[$i].fetish = "pregnancy", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -1991,7 +1991,7 @@ <</if>> <<elseif ($slaves[$i].fetishStrength <= 95)>> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing @@.lightcoral;advance $his pregnancy fetish.@@ <<set $slaves[$i].fetishStrength += 6>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -2006,7 +2006,7 @@ <<if ($slaves[$i].fetish != "dom")>> <<if $slaves[$i].fetishStrength >= 10>> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when another slave is servicing $him. <<set $slaves[$i].fetishStrength -= 30>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -2018,7 +2018,7 @@ <</if>> <<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>> After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing encourage many orgasms while $he's taking an active, dominant sexual role, @@.lightcoral;$he begins to enjoy dominance.@@ <<set $slaves[$i].fetish = "dom", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -2031,7 +2031,7 @@ <</if>> <<elseif ($slaves[$i].fetishStrength <= 95)>> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing @@.lightcoral;advance $his dominance.@@ <<set $slaves[$i].fetishStrength += 6>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -2046,7 +2046,7 @@ <<if ($slaves[$i].fetish != "masochist")>> <<if $slaves[$i].fetishStrength >= 10>> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's being hurt. <<set $slaves[$i].fetishStrength -= 30>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -2058,7 +2058,7 @@ <</if>> <<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>> After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing encourage many orgasms while $he's being beaten, @@.lightcoral;$he begins to enjoy pain.@@ <<set $slaves[$i].fetish = "masochist", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -2071,7 +2071,7 @@ <</if>> <<elseif ($slaves[$i].fetishStrength <= 95)>> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing @@.lightcoral;advance $his masochism.@@ <<set $slaves[$i].fetishStrength += 6>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -2086,7 +2086,7 @@ <<if ($slaves[$i].fetish != "sadist")>> <<if $slaves[$i].fetishStrength >= 10>> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he witnesses or even takes part in another slave's pain. <<set $slaves[$i].fetishStrength -= 30>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -2098,7 +2098,7 @@ <</if>> <<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>> After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing encourage many orgasms while $he's involved in the abuse of other slaves, @@.lightcoral;$he begins to develop a sadistic streak.@@ <<set $slaves[$i].fetish = "sadist", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -2111,7 +2111,7 @@ <</if>> <<elseif ($slaves[$i].fetishStrength <= 95)>> $His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing - <<if $slaves[$i].vaginalAccessory == "bullet vibrator">> + <<if $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> and the bullet vibrator $he is wearing @@.lightcoral;advance $his sadism.@@ <<set $slaves[$i].fetishStrength += 6>> <<elseif $slaves[$i].vaginalAttachment == "vibrator">> @@ -2124,6 +2124,184 @@ <</if>> <</switch>> <</if>> +<<elseif $slaves[$i].vaginalAccessory == "bullet vibrator" || $slaves[$i].dickAccessory == "bullet vibrator">> + <<if $slaves[$i].fetish == "mindbroken">> + The effects of the bullet vibrator $he is wearing cannot reach $his shattered mind. + <<else>> + <<switch $slaves[$i].clitSetting>> + <<case "none">> + The bullet vibrator $he is wearing disrupt arousal, @@.red;reducing $his sex drive@@ and @@.mediumorchid;infuriating $him.@@ + <<set $slaves[$i].devotion -= 3>> + <<if $slaves[$i].energy > 5>> + <<set $slaves[$i].energy -= 13>> + <<elseif $slaves[$i].energy > 0>> + <<set $slaves[$i].energy = 0>> + <</if>> + <<case "all">> + <<if $slaves[$i].energy <= 95>> + The bullet vibrator $he is wearing encourages sex of all kinds, @@.green;increasing $his sex drive.@@ + <<set $slaves[$i].energy += 3>> + <</if>> + <<case "women">> + <<if $slaves[$i].attrXX < 95>> + The bullet vibrator $he is wearing successfully @@.green;increase $his attraction to girls@@ by pleasuring $him when $he's around them. + <<set $slaves[$i].attrXX += 6+$assistant+$assistant>> + <<if $slaves[$i].energy < 80>> + This has the secondary effect of slightly @@.green;enhancing $his libido.@@ + <<set $slaves[$i].energy += 2>> + <</if>> + <</if>> + <<case "anti-women">> + <<if $slaves[$i].attrXX > 0>> + The bullet vibrator $he is wearing successfully @@.green;suppress $his attraction to girls@@ by making $his private parts very uncomfortable when $he's around them. + <<set $slaves[$i].attrXX -= Math.clamp($slaves[$i].attrXX-(6+$assistant+$assistant),0,100)>> + <<if $slaves[$i].energy > 0>> + This has the secondary effect of slightly @@.red;reducing $his libido.@@ + <<set $slaves[$i].energy -= 2>> + <</if>> + <</if>> + <<case "men">> + <<if $slaves[$i].attrXY < 95>> + The bullet vibrator $he is wearing successfully @@.green;increase $his attraction to guys@@ by pleasuring $him when $he's around cocks. + <<set $slaves[$i].attrXY += 6+$assistant+$assistant>> + <<if $slaves[$i].energy < 80>> + This has the secondary effect of slightly @@.green;enhancing $his libido.@@ + <<set $slaves[$i].energy += 2>> + <</if>> + <</if>> + <<case "anti-men">> + <<if $slaves[$i].attrXY > 0>> + The bullet vibrator $he is wearing successfully @@.green;suppress $his attraction to guys@@ by making $his private parts very uncomfortable when $he's around them. + <<set $slaves[$i].attrXY -= Math.clamp($slaves[$i].attrXY-(6+$assistant+$assistant),0,100)>> + <<if $slaves[$i].energy > 0>> + This has the secondary effect of slightly @@.red;reducing $his libido.@@ + <<set $slaves[$i].energy -= 2>> + <</if>> + <</if>> + <<case "vanilla">> + <<if ($slaves[$i].fetish != "none") && (_fetishChangeChance > random(0,100)-20*$assistant)>> + The bullet vibrator $he is wearing encourages many orgasms during straightforward sex, @@.coral;$his sexuality returns to normal.@@ + <<set $slaves[$i].fetish = "none", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>> + <</if>> + <<case "oral">> + <<if ($slaves[$i].fetish != "cumslut")>> + <<if $slaves[$i].fetishStrength >= 10>> + The bullet vibrator $he is wearing acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's using $his mouth. + <<set $slaves[$i].fetishStrength -= 30>> + <<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>> + The bullet vibrator $he is wearing encourages many orgasms as $he performs oral sex, @@.lightcoral;$he develops a fetish for cum.@@ + <<set $slaves[$i].fetish = "cumslut", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>> + <</if>> + <<elseif ($slaves[$i].fetishStrength <= 95)>> + The bullet vibrator $he is wearing @@.lightcoral;advances $his oral fetish.@@ + <<set $slaves[$i].fetishStrength += 6>> + <</if>> + <<case "anal">> + <<if ($slaves[$i].fetish != "buttslut")>> + <<if $slaves[$i].fetishStrength >= 10>> + The bullet vibrator $he is wearing acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $his rear hole is being fucked. + <<set $slaves[$i].fetishStrength -= 30>> + <<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>> + The bullet vibrator $he is wearing encourages many orgasms when $his ass is being stimulated, @@.lightcoral;$he develops a fetish for being an anal bottom.@@ + <<set $slaves[$i].fetish = "buttslut", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>> + <</if>> + <<elseif ($slaves[$i].fetishStrength <= 95)>> + The bullet vibrator $he is wearing @@.lightcoral;advances $his anal fetish.@@ + <<set $slaves[$i].fetishStrength += 6>> + <</if>> + <<case "boobs">> + <<if ($slaves[$i].fetish != "boobs")>> + <<if $slaves[$i].fetishStrength >= 10>> + The bullet vibrator $he is wearing acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $his tits are being touched. + <<set $slaves[$i].fetishStrength -= 30>> + <<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>> + The bullet vibrator $he is wearing encourages many orgasms when $his nipples are being stimulated, @@.lightcoral;$he develops a fetish for $his tits.@@ + <<set $slaves[$i].fetish = "boobs", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>> + <</if>> + <<elseif ($slaves[$i].fetishStrength <= 95)>> + The bullet vibrator $he is wearing @@.lightcoral;advances $his boob fetish.@@ + <<set $slaves[$i].fetishStrength += 6>> + <</if>> + <<case "submissive">> + <<if ($slaves[$i].fetish != "submissive")>> + <<if $slaves[$i].fetishStrength >= 10>> + The bullet vibrator $he is wearing acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's being held down and used. + <<set $slaves[$i].fetishStrength -= 30>> + <<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>> + The bullet vibrator $he is wearing encourages many orgasms when $he is restrained, @@.lightcoral;$he develops a fetish for submission.@@ + <<set $slaves[$i].fetish = "submissive", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>> + <</if>> + <<elseif ($slaves[$i].fetishStrength <= 95)>> + The bullet vibrator $he is wearing @@.lightcoral;advances $his submission.@@ + <<set $slaves[$i].fetishStrength += 6>> + <</if>> + <<case "humiliation">> + <<if ($slaves[$i].fetish != "humiliation")>> + <<if $slaves[$i].fetishStrength >= 10>> + The bullet vibrator $he is wearing acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's got an audience. + <<set $slaves[$i].fetishStrength -= 30>> + <<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>> + The bullet vibrator $he is wearing encourages many orgasms when $he is being humiliated, @@.lightcoral;$he develops a fetish for humiliation.@@ + <<set $slaves[$i].fetish = "humiliation", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>> + <</if>> + <<elseif ($slaves[$i].fetishStrength <= 95)>> + The bullet vibrator $he is wearing @@.lightcoral;advances $his humiliation fetish.@@ + <<set $slaves[$i].fetishStrength += 6>> + <</if>> + <<case "pregnancy">> + <<if ($slaves[$i].fetish != "pregnancy")>> + <<if $slaves[$i].fetishStrength >= 10>> + The bullet vibrator $he is wearing acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he feels like $he's being bred. + <<set $slaves[$i].fetishStrength -= 30>> + <<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>> + The bullet vibrator $he is wearing encourages many orgasms during <<if $PC.dick == 1>>unprotected sex<<if $PC.vagina == 1>> and <</if>><</if>><<if $PC.vagina == 1>>loving contact with the female anatomy<</if>>, @@.lightcoral;$he begins to fantasize about pregnancy.@@ + <<set $slaves[$i].fetish = "pregnancy", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>> + <</if>> + <<elseif ($slaves[$i].fetishStrength <= 95)>> + The bullet vibrator $he is wearing @@.lightcoral;advances $his pregnancy fetish.@@ + <<set $slaves[$i].fetishStrength += 6>> + <</if>> + <<case "dom">> + <<if ($slaves[$i].fetish != "dom")>> + <<if $slaves[$i].fetishStrength >= 10>> + The bullet vibrator $he is wearing acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when another slave is servicing $him. + <<set $slaves[$i].fetishStrength -= 30>> + <<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>> + The bullet vibrator $he is wearing encourages many orgasms while $he's taking an active, dominant sexual role, @@.lightcoral;$he begins to enjoy dominance.@@ + <<set $slaves[$i].fetish = "dom", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>> + <</if>> + <<elseif ($slaves[$i].fetishStrength <= 95)>> + The bullet vibrator $he is wearing @@.lightcoral;advances $his dominance.@@ + <<set $slaves[$i].fetishStrength += 6>> + <</if>> + <<case "masochist">> + <<if ($slaves[$i].fetish != "masochist")>> + <<if $slaves[$i].fetishStrength >= 10>> + The bullet vibrator $he is wearing acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's being hurt. + <<set $slaves[$i].fetishStrength -= 30>> + <<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>> + The bullet vibrator $he is wearing encourages many orgasms while $he's being beaten, @@.lightcoral;$he begins to enjoy pain.@@ + <<set $slaves[$i].fetish = "masochist", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>> + <</if>> + <<elseif ($slaves[$i].fetishStrength <= 95)>> + The bullet vibrator $he is wearing @@.lightcoral;advances $his masochism.@@ + <<set $slaves[$i].fetishStrength += 6>> + <</if>> + <<case "sadist">> + <<if ($slaves[$i].fetish != "sadist")>> + <<if $slaves[$i].fetishStrength >= 10>> + The bullet vibrator $he is wearing acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he witnesses or even takes part in another slave's pain. + <<set $slaves[$i].fetishStrength -= 30>> + <<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>> + The bullet vibrator $he is wearing encourages many orgasms while $he's involved in the abuse of other slaves, @@.lightcoral;$he begins to develop a sadistic streak.@@ + <<set $slaves[$i].fetish = "sadist", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>> + <</if>> + <<elseif ($slaves[$i].fetishStrength <= 95)>> + The bullet vibrator $he is wearing @@.lightcoral;advances $his sadism.@@ + <<set $slaves[$i].fetishStrength += 6>> + <</if>> + <</switch>> + <</if>> <</if>> /* ORGANIC FETISH DEVELOPMENTS */ @@ -3478,6 +3656,9 @@ <<if ($slaves[$i].pregSource == $slaves[$i].relationshipTarget) && ($slaves[$i].relationship > 2)>> $He can't help but feel @@.mediumaquamarine;satisfaction@@ in carrying $his lover's child. <<set $slaves[$i].trust += 1>> + <<elseif $slaves[$i].pregSource == -9>> + $He can't help but feel @@.mediumaquamarine;proud@@ over the life you helped conceive and the future generation of Futanari Sisters. + <<set $slaves[$i].devotion += 1>> <</if>> /* pregmod start */ <<if $slaves[$i].pregSource == $slaves[$i].ID>> diff --git a/src/uncategorized/saRules.tw b/src/uncategorized/saRules.tw index 51a793ea3d157296c7762300f2e101c608014bbe..09d25c62049bf8417a891b0d5cab9fe5780bb57c 100644 --- a/src/uncategorized/saRules.tw +++ b/src/uncategorized/saRules.tw @@ -104,22 +104,22 @@ <<if $BrothiIDs.length > 2>> Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;adores@@ you for leaving plentiful outlets for $his nymphomania under $his care. <<else>> - Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;eagerly awaits@@ the day you assign more girls to $brothelName. + Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;eagerly awaits@@ the day you assign more whores to $brothelName. <</if>> <<set $slaves[$i].devotion += 1>> <<elseif ($slaves[$i].fetishKnown == 1) && ($slaves[$i].fetishStrength > 60)>> <<if ($slaves[$i].fetish == "sadist")>> <<if $BrothiIDs.length > 2>> - Under the rules, $he's allowed to sexually abuse other slaves, and $he @@.hotpink;adores@@ you for providing a whole brothel of girls for $him to rape. + Under the rules, $he's allowed to sexually abuse other slaves, and $he @@.hotpink;adores@@ you for providing a whole brothel of whores for $him to rape. <<else>> - Under the rules, $he's allowed to sexually abuse other slaves, and $he @@.hotpink;eagerly awaits@@ the day you assign more girls to $brothelName for $him to rape. + Under the rules, $he's allowed to sexually abuse other slaves, and $he @@.hotpink;eagerly awaits@@ the day you assign more whores to $brothelName for $him to rape. <</if>> <<set $slaves[$i].devotion += 1>> <<elseif ($slaves[$i].fetish == "dom")>> <<if $BrothiIDs.length > 2>> - Under the rules, $he's allowed to force other slaves to have sex with $him, and $he @@.hotpink;adores@@ you for allowing $him a brothel of girls to dominate. + Under the rules, $he's allowed to force other slaves to have sex with $him, and $he @@.hotpink;adores@@ you for allowing $him a brothel of whores to dominate. <<else>> - Under the rules, $he's allowed to force other slaves to have sex with $him, and $he @@.hotpink;eagerly awaits@@ the day you assign more girls to $his domain. + Under the rules, $he's allowed to force other slaves to have sex with $him, and $he @@.hotpink;eagerly awaits@@ the day you assign more whores to $his domain. <</if>> <<set $slaves[$i].devotion += 1>> <</if>> @@ -589,22 +589,22 @@ <<if $ClubiIDs.length > 2>> Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;adores@@ you for leaving plentiful, tantalizing, outlets for $his nymphomania under $his care. <<else>> - Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;eagerly awaits@@ the day you assign more girls to $clubName. + Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;eagerly awaits@@ the day you assign more sluts to $clubName. <</if>> <<set $slaves[$i].devotion += 1>> <<elseif ($slaves[$i].fetishKnown == 1) && ($slaves[$i].fetishStrength > 60)>> <<if ($slaves[$i].fetish == "sadist")>> <<if $ClubiIDs.length > 2>> - Under the rules, $he's allowed to sexually abuse other slaves, and $he @@.hotpink;adores@@ you for providing a whole club of girls for $him to rape. + Under the rules, $he's allowed to sexually abuse other slaves, and $he @@.hotpink;adores@@ you for providing a whole club of sluts for $him to rape. <<else>> - Under the rules, $he's allowed to sexually abuse other slaves, and $he @@.hotpink;eagerly awaits@@ the day you assign more girls to $clubName for $him to rape. + Under the rules, $he's allowed to sexually abuse other slaves, and $he @@.hotpink;eagerly awaits@@ the day you assign more sluts to $clubName for $him to rape. <</if>> <<set $slaves[$i].devotion += 1>> <<elseif ($slaves[$i].fetish == "dom")>> <<if $ClubiIDs.length > 2>> Under the rules, $he's allowed to force other slaves to have sex with $him, and $he @@.hotpink;adores@@ you for allowing $him a club of sluts to dominate. <<else>> - Under the rules, $he's allowed to force other slaves to have sex with $him, and $he @@.hotpink;eagerly awaits@@the day you assign more girls to $his domain. + Under the rules, $he's allowed to force other slaves to have sex with $him, and $he @@.hotpink;eagerly awaits@@the day you assign more sluts to $his domain. <</if>> <<set $slaves[$i].devotion += 1>> <</if>> @@ -2524,22 +2524,22 @@ <<if $NurseryiIDs.length > 2>> Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;adores@@ you for providing plentiful outlets for $his nymphomania. <<else>> - Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;eagerly awaits@@ the day <<if $Matron != 0>>more of your slaves join $him in $nurseryName <<else>>you assign more girls to $nurseryName to help $him relieve $his <<if $slaves[$i].balls > 0>>swollen balls<<else>>tension<</if>><</if>>. + Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;eagerly awaits@@ the day <<if $Matron != 0>>more of your slaves join $him in $nurseryName <<else>>you assign more nurses to $nurseryName to help $him relieve $his <<if $slaves[$i].balls > 0>>swollen balls<<else>>tension<</if>><</if>>. <</if>> <<set $slaves[$i].devotion += 1>> <<elseif ($slaves[$i].fetishKnown == 1) && ($slaves[$i].fetishStrength > 60)>> <<if ($slaves[$i].fetish == "sadist")>> <<if $NurseryiIDs.length > 2>> - Under the rules, $he's allowed to sexually abuse other slaves, and $he @@.hotpink;adores@@ you for providing a whole nursery of girls for $him to rape. + Under the rules, $he's allowed to sexually abuse other slaves, and $he @@.hotpink;adores@@ you for providing a whole nursery of slaves for $him to rape. <<else>> - Under the rules, $he's allowed to sexually abuse other slaves, and $he @@.hotpink;eagerly awaits@@ the day <<if $Matron != 0>>more of your slaves join $him in $nurseryName <<else>>you assign more girls to $nurseryName to help $him unwind<</if>>. + Under the rules, $he's allowed to sexually abuse other slaves, and $he @@.hotpink;eagerly awaits@@ the day <<if $Matron != 0>>more of your slaves join $him in $nurseryName <<else>>you assign more nurses to $nurseryName to help $him unwind<</if>>. <</if>> <<set $slaves[$i].devotion += 1>> <<elseif ($slaves[$i].fetish == "dom")>> <<if $NurseryiIDs.length > 2>> - Under the rules, $he's allowed to force other slaves to have sex with $him, and $he @@.hotpink;adores@@ you for providing a whole nursery of girls for $him to dominate. + Under the rules, $he's allowed to force other slaves to have sex with $him, and $he @@.hotpink;adores@@ you for providing a whole nursery of slaves for $him to dominate. <<else>> - Under the rules, $he's allowed to force other slaves to have sex with $him, and $he @@.hotpink;eagerly awaits@@ the day <<if $Matron != 0>>more of your slaves join $him in $nurseryName <<else>>you assign more girls to $nurseryName to help $him unwind<</if>>. + Under the rules, $he's allowed to force other slaves to have sex with $him, and $he @@.hotpink;eagerly awaits@@ the day <<if $Matron != 0>>more of your slaves join $him in $nurseryName <<else>>you assign more nurses to $nurseryName to help $him unwind<</if>>. <</if>> <<set $slaves[$i].devotion += 1>> <</if>> @@ -2736,14 +2736,14 @@ <<elseif ($slaves[$i].fetishKnown == 1) && ($slaves[$i].fetishStrength > 60)>> <<if ($slaves[$i].fetish == "sadist")>> <<if $SchlRiIDs.length > 2>> - Under the rules, $he's allowed to sexually abuse other slaves, and $he @@.hotpink;adores@@ you for providing a whole class of girls for $him to rape lessons into. + Under the rules, $he's allowed to sexually abuse other slaves, and $he @@.hotpink;adores@@ you for providing a whole class of students for $him to rape lessons into. <<else>> Under the rules, $he's allowed to sexually abuse other slaves, and $he @@.hotpink;eagerly awaits@@ the day more of your slaves enroll in $schoolroomName. <</if>> <<set $slaves[$i].devotion += 1>> <<elseif ($slaves[$i].fetish == "dom")>> <<if $SchlRiIDs.length > 2>> - Under the rules, $he's allowed to force other slaves to have sex with $him, and $he @@.hotpink;adores@@ you for providing a whole class of girls to demonstrate proper submission with. + Under the rules, $he's allowed to force other slaves to have sex with $him, and $he @@.hotpink;adores@@ you for providing a whole class of students to demonstrate proper submission with. <<else>> Under the rules, $he's allowed to force other slaves to have sex with $him, and $he @@.hotpink;eagerly awaits@@ the day more of your slaves enroll in $schoolroomName. <</if>> @@ -3219,7 +3219,7 @@ <<if $ServQiIDs.length > 2>> Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;adores@@ you for leaving plentiful outlets for $his nymphomania under $his charge. <<else>> - Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;eagerly awaits@@ the day you assign more girls to $servantsQuartersName. + Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;eagerly awaits@@ the day you assign more maids to $servantsQuartersName. <</if>> <<set $slaves[$i].devotion += 1>> <<elseif ($slaves[$i].fetishKnown == 1) && ($slaves[$i].fetishStrength > 60)>> @@ -3227,14 +3227,14 @@ <<if $ServQiIDs.length > 2>> Under the rules, $he's allowed to sexually abuse other slaves, and $he @@.hotpink;adores@@ you for providing so many maids for $him to rape. <<else>> - Under the rules, $he's allowed to sexually abuse other slaves, and $he @@.hotpink;eagerly awaits@@ the day you assign more girls to $servantsQuartersName for $him to rape. + Under the rules, $he's allowed to sexually abuse other slaves, and $he @@.hotpink;eagerly awaits@@ the day you assign more maids to $servantsQuartersName for $him to rape. <</if>> <<set $slaves[$i].devotion += 1>> <<elseif ($slaves[$i].fetish == "dom")>> <<if $ServQiIDs.length > 2>> Under the rules, $he's allowed to force other slaves to have sex with $him, and $he @@.hotpink;adores@@ you for allowing $him so many maids to dominate. <<else>> - Under the rules, $he's allowed to force other slaves to have sex with $him, and $he @@.hotpink;eagerly awaits@@ the day you assign more girls to $his domain. + Under the rules, $he's allowed to force other slaves to have sex with $him, and $he @@.hotpink;eagerly awaits@@ the day you assign more maids to $his domain. <</if>> <<set $slaves[$i].devotion += 1>> <</if>> @@ -5040,7 +5040,7 @@ <<if $spa != 0>> usually spends in $spaName<<if $Attendant != 0>> enjoying $Attendant.slaveName's care<</if>>. <<else>> - usually spends relaxing in your Head Girls private room. + usually spends relaxing in your Head Girl's private room. <</if>> <<if $slaves[$i].relationship > 0>> $He often asks to save these breaks so $he can spend them with $his <<if $slaves[$i].relationship == 1>>friend<<elseif $slaves[$i].relationship == 2>>best friend<<elseif $slaves[$i].relationship == 3>>friend with benefits<<elseif $slaves[$i].relationship == 4>>sweetheart<<else>>wife<</if>>. diff --git a/src/uncategorized/schoolroom.tw b/src/uncategorized/schoolroom.tw index cb02ae48173967a840204402aec55c103ec4d4c9..2134cfd76cda29c9287eab9f9685ec00f26fab3a 100644 --- a/src/uncategorized/schoolroom.tw +++ b/src/uncategorized/schoolroom.tw @@ -61,7 +61,7 @@ $schoolroomNameCaps is well-equipped, with wallscreens to display lessons. These <</switch>> <<if $schoolroomSlaves > 2>> - $schoolroomNameCaps is busy with slaves, repeating their lessons out loud to drill the instruction home. A few girls are maintaining uncomfortable positions in the corner as punishment for poor work. + $schoolroomNameCaps is busy with slaves, repeating their lessons out loud to drill the instruction home. A few students are maintaining uncomfortable positions in the corner as punishment for poor work. <<elseif $schoolroomSlaves > 0>> $schoolroomNameCaps is sparsely populated, the few students repeating their lessons out loud to drill the instruction home. One girl is maintaining an uncomfortable position in the corner as punishment for poor work. <<elseif $Schoolteacher != 0>> diff --git a/src/uncategorized/seBirth.tw b/src/uncategorized/seBirth.tw index 21ac41937f18c405bd0bc327be041cce1047c222..caaadf74ce28e957bc12f141302666863bd93c2f 100644 --- a/src/uncategorized/seBirth.tw +++ b/src/uncategorized/seBirth.tw @@ -78,6 +78,22 @@ I need to break single passage to several widgets, as it's been overcomplicated <</if>> The child<<if _curBabies > 1>>ren<</if>> will be raised privately, with expert care and tutoring, an expensive proposition. <<set $slaves[$i].devotion += 6, $privateOrphanageTotal += _curBabies>> + <<case "breeder schools">> + <<if $slaves[$i].fetish == "mindbroken" || $slaves[$i].fuckdoll > 0>> + has few thoughts about the matter. + <<elseif $slaves[$i].devotion > 95>> + loves you already, but $he'll @@.hotpink;love you even more@@ for this. $He can't wait to see $his child<<if _curBabies > 1>>ren<</if>> proudly furthering your cause. + <<set $slaves[$i].devotion += 4>> + <<elseif $slaves[$i].devotion > 50>> + heard about these and will be @@.hotpink;happy that $his child<<if $slaves[$i].pregType > 1>>ren<</if>> will have a purpose in your society other than slavery.@@ $He will miss $his child<<if $slaves[$i].pregType > 1>>ren<</if>>, but $he expected that. + <<set $slaves[$i].devotion += 4>> + <<elseif $slaves[$i].devotion > 20>> + will naturally miss $his child<<if _curBabies > 1>>ren<</if>>, but will is broken enough to hope that $his offspring will have a better life, or at least an enjoyable one. + <<else>> + will of course @@.mediumorchid;hate you for this.@@ The mere thought of $his $fertilityAge year old daughter<<if _curBabies > 1>>s<</if>> swollen with life, and proud of it, fills $him with @@.gold;disdain.@@ + <<set $slaves[$i].devotion -= 4, $slaves[$i].trust -= 4>> + <</if>> + <<set $breederOrphanageTotal += _curBabies>> <<case "the market">> <<if $slaves[$i].prestige > 1 || $slaves[$i].pornPrestige > 2>> <<set _babyCost = random(-12,100)>> diff --git a/src/uncategorized/seExpiration.tw b/src/uncategorized/seExpiration.tw index 61b0c5879dbb8f9918f44ac2d77c5ed222f9967e..0aa40044de1376b1a949e6f717f326854cd701cb 100644 --- a/src/uncategorized/seExpiration.tw +++ b/src/uncategorized/seExpiration.tw @@ -96,7 +96,8 @@ $activeSlave.slaveName's indentured servitude is ending this week, meaning that <</for>> <</replace>> <</link>> //This will cost <<print cashFormat(1000)>>// - <<else>>//You cannot afford to do this// + <<else>> + //You cannot afford to do this// <</if>> </span> @@ -128,14 +129,15 @@ $activeSlave.slaveName's indentured servitude is ending this week, meaning that <<set $lowerClass -= 1>> <<set $expired = 0>><<set $expiree = 0>> <<for $i = 0; $i < $slaves.length; $i++>> - <<if $slaves[$i].indenture == 0>> - <<set $expiree = $slaves[$i].ID>> - <<break>> - <</if>> + <<if $slaves[$i].indenture == 0>> + <<set $expiree = $slaves[$i].ID>> + <<break>> + <</if>> <</for>> <</replace>> <</link>> //This will cost <<print cashFormat($slaveCost)>>// - <<else>>//You cannot afford to do this// + <<else>> + //You cannot afford to do this// <</if>> </span> @@ -159,14 +161,15 @@ at the moment of $his scheduled emancipation, $he seems willing to consider a sh <<set $lowerClass -= 1>> <<set $expired = 0>><<set $expiree = 0>> <<for $i = 0; $i < $slaves.length; $i++>> - <<if $slaves[$i].indenture == 0>> - <<set $expiree = $slaves[$i].ID>> - <<break>> - <</if>> + <<if $slaves[$i].indenture == 0>> + <<set $expiree = $slaves[$i].ID>> + <<break>> + <</if>> <</for>> <</replace>> <</link>> //This will cost <<print cashFormat($slaveCost)>>// -<<else>>//You cannot afford to do this// +<<else>> + //You cannot afford to do this// <</if>> </span> diff --git a/src/uncategorized/seIndependenceDay.tw b/src/uncategorized/seIndependenceDay.tw index 141048e25368b8bbed9c8635205f5e68745b1398..b314e00284199f90d50240a7b11713f11cc92148 100644 --- a/src/uncategorized/seIndependenceDay.tw +++ b/src/uncategorized/seIndependenceDay.tw @@ -327,9 +327,9 @@ In the Free Cities, Independence Day falls on the day when the Free City achieve <<replace "#result2">> <br><br>Once darkness falls outside the arcology, a traditional fireworks display erupts from mortars mounted on your penthouse balconies. The noise and light @@.green;delights@@ your citizens, terrifies the arcology's stupider slaves, and serves a useful ancillary purpose in defense preparedness. The arcology's radar and laser sensors track the display, using it as an opportunity to calibrate the point defense systems on real targets. There is general agreement that this sort of thing should be a yearly tradition here, just like it was in some parts of the old world: old ideas aren't all bad. <<run repX(5000, "event")>> - <<run cashX(-10000, "event")>> + <<run cashX(forceNeg(Math.trunc(10000*$upgradeMultiplierTrade)), "event")>> <</replace>> -<</link>> //Costs @@.yellowgreen;<<print cashFormat(10000)>>@@// </span> +<</link>> //Costs @@.yellowgreen;<<print cashFormat(Math.trunc(10000*$upgradeMultiplierTrade))>>@@// </span> <<if $SF.Toggle && $SF.Active >= 1>> <span id="result3"> <br><<link "Host a parade">> diff --git a/src/uncategorized/seLethalPit.tw b/src/uncategorized/seLethalPit.tw index bb99a3cd0cf031894035dcacf8c4f610294f7ca7..ddf0b664c92121017fabb91e8f66020c364037a2 100644 --- a/src/uncategorized/seLethalPit.tw +++ b/src/uncategorized/seLethalPit.tw @@ -592,92 +592,92 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and <</if>> <<if (_winner.fetish != "sadist")>> - <<if random(1,100) > 50>> - Cruelty and callousness seeps its way into $his sexuality; $he has become a @@.lightcoral;bloody sadist.@@ - <<set _winner.fetish = "sadist">> - <<set _winner.fetishKnown = 1>> - <<set _winner.fetishStrength = 65>> - <</if>> + <<if random(1,100) > 50>> + Cruelty and callousness seeps its way into $his sexuality; $he has become a @@.lightcoral;bloody sadist.@@ + <<set _winner.fetish = "sadist">> + <<set _winner.fetishKnown = 1>> + <<set _winner.fetishStrength = 65>> + <</if>> <</if>> <<if (_winner.rivalry > 0) && (_loser.ID == _winner.rivalryTarget)>> <<if (_winner.devotion > 75)>> - $He is so accepting of the low value of slave life that $he @@.hotpink;is pleased@@ to have killed $his rival _loser.slaveName. - <<set _winner.devotion += 4>> + $He is so accepting of the low value of slave life that $he @@.hotpink;is pleased@@ to have killed $his rival _loser.slaveName. + <<set _winner.devotion += 4>> <</if>> <<elseif (_winner.relationship >= 0) && (_loser.ID == _winner.relationshipTarget)>> <<if (_winner.devotion > 95)>> - $He is so worshipful of you that $he sees the death of $his only friend at $his own hand as an @@.hotpink;honorable@@ end to their doomed slave relationship. - <<set _winner.devotion += 4>> + $He is so worshipful of you that $he sees the death of $his only friend at $his own hand as an @@.hotpink;honorable@@ end to their doomed slave relationship. + <<set _winner.devotion += 4>> <<else>> - $He shows little reaction to the death of $his only friend at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again. - <<set _winner.fetish = "mindbroken">> - <<set _winner.fetishKnown = 1>> + $He shows little reaction to the death of $his only friend at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again. + <<set _winner.fetish = "mindbroken">> + <<set _winner.fetishKnown = 1>> <</if>> <<elseif _winner.mother == _loser.ID>> <<if (_winner.devotion > 95)>> - $He is so worshipful of you that $he sees the death of $his mother at $his own hand as an @@.hotpink;honorable@@ end to their doomed family. - <<set _winner.devotion += 4>> + $He is so worshipful of you that $he sees the death of $his mother at $his own hand as an @@.hotpink;honorable@@ end to their doomed family. + <<set _winner.devotion += 4>> <<else>> - $He shows little reaction to the death of $his mother at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again. - <<set _winner.fetish = "mindbroken">> - <<set _winner.fetishKnown = 1>> + $He shows little reaction to the death of $his mother at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again. + <<set _winner.fetish = "mindbroken">> + <<set _winner.fetishKnown = 1>> <</if>> <<elseif _winner.father == _loser.ID>> <<if (_winner.devotion > 95)>> - $He is so worshipful of you that $he sees the death of $his father at $his own hand as an @@.hotpink;honorable@@ end to their doomed family. - <<set _winner.devotion += 4>> + $He is so worshipful of you that $he sees the death of $his father at $his own hand as an @@.hotpink;honorable@@ end to their doomed family. + <<set _winner.devotion += 4>> <<else>> - $He shows little reaction to the death of $his father at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again. - <<set _winner.fetish = "mindbroken">> - <<set _winner.fetishKnown = 1>> + $He shows little reaction to the death of $his father at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again. + <<set _winner.fetish = "mindbroken">> + <<set _winner.fetishKnown = 1>> <</if>> <<elseif _loser.mother == _winner.ID || _loser.father == _winner.ID>> <<if (_winner.devotion > 95)>> - $He is so worshipful of you that $he sees the death of $his daughter at $his own hand as an @@.hotpink;honorable@@ end to their doomed family. - <<set _winner.devotion += 4>> + $He is so worshipful of you that $he sees the death of $his daughter at $his own hand as an @@.hotpink;honorable@@ end to their doomed family. + <<set _winner.devotion += 4>> <<else>> - $He shows little reaction to the death of $his daughter at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again. - <<set _winner.fetish = "mindbroken">> - <<set _winner.fetishKnown = 1>> + $He shows little reaction to the death of $his daughter at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again. + <<set _winner.fetish = "mindbroken">> + <<set _winner.fetishKnown = 1>> <</if>> <<elseif _winner.sisters > 0>> <<switch areSisters(_winner, _loser)>> <<case 1>> <<if (_winner.devotion > 95)>> - $He is so worshipful of you that $he sees the death of $his twin at $his own hand as an @@.hotpink;honorable@@ end to their doomed family. - <<set _winner.devotion += 4>> + $He is so worshipful of you that $he sees the death of $his twin at $his own hand as an @@.hotpink;honorable@@ end to their doomed family. + <<set _winner.devotion += 4>> <<else>> - $He shows little reaction to the death of $his twin at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again. - <<set _winner.fetish = "mindbroken">> - <<set _winner.fetishKnown = 1>> + $He shows little reaction to the death of $his twin at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again. + <<set _winner.fetish = "mindbroken">> + <<set _winner.fetishKnown = 1>> <</if>> <<case 2>> <<if (_winner.devotion > 95)>> - $He is so worshipful of you that $he sees the death of $his sister at $his own hand as an @@.hotpink;honorable@@ end to their doomed family. - <<set _winner.devotion += 4>> + $He is so worshipful of you that $he sees the death of $his sister at $his own hand as an @@.hotpink;honorable@@ end to their doomed family. + <<set _winner.devotion += 4>> <<else>> - $He shows little reaction to the death of $his sister at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again. - <<set _winner.fetish = "mindbroken">> - <<set _winner.fetishKnown = 1>> + $He shows little reaction to the death of $his sister at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again. + <<set _winner.fetish = "mindbroken">> + <<set _winner.fetishKnown = 1>> <</if>> <<case 3>> <<if (_winner.devotion > 95)>> - $He is so worshipful of you that $he sees the death of $his half-sister at $his own hand as an @@.hotpink;honorable@@ end to their doomed family. - <<set _winner.devotion += 4>> + $He is so worshipful of you that $he sees the death of $his half-sister at $his own hand as an @@.hotpink;honorable@@ end to their doomed family. + <<set _winner.devotion += 4>> <<else>> - $He is @@.mediumorchid;utterly devastated@@ at being forced to take the life of $his half-sister. - <<set _winner.devotion -= 50>> + $He is @@.mediumorchid;utterly devastated@@ at being forced to take the life of $his half-sister. + <<set _winner.devotion -= 50>> <</if>> <</switch>> <<elseif (_winner.relation != 0) && (_loser.ID == _winner.relationTarget)>> <<if (_winner.devotion > 95)>> - $He is so worshipful of you that $he sees the death of $his _loser.relation at $his own hand as an @@.hotpink;honorable@@ end to their doomed family. - <<set _winner.devotion += 4>> + $He is so worshipful of you that $he sees the death of $his _loser.relation at $his own hand as an @@.hotpink;honorable@@ end to their doomed family. + <<set _winner.devotion += 4>> <<else>> - $He shows little reaction to the death of $his _loser.relation at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again. - <<set _winner.fetish = "mindbroken">> - <<set _winner.fetishKnown = 1>> + $He shows little reaction to the death of $his _loser.relation at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again. + <<set _winner.fetish = "mindbroken">> + <<set _winner.fetishKnown = 1>> <</if>> <</if>> <<else>> /*if fighting an animal*/ diff --git a/src/uncategorized/seNicaeaPreperation.tw b/src/uncategorized/seNicaeaPreperation.tw index 84a658bf25c0b72133736da1da432c7b3feaf635..59c9fb5e84c007b62de34cd598a8b5622b092241 100644 --- a/src/uncategorized/seNicaeaPreperation.tw +++ b/src/uncategorized/seNicaeaPreperation.tw @@ -31,13 +31,13 @@ The first major choice you have to make concerns the seats on the Council. There <span id="result"> <<link "Apportion Council seats impartially">> <<replace "#result">> - You apportion the seats impartially, doing everything you can to help ensure that all Chattel Religionists will see the Council as authoritative. + You apportion the seats impartially, doing everything you can to help ensure that all Chattel Religionists will see the Council as authoritative. <</replace>> <</link>> <br><<link "Invite Chattel Religionists you agree with">> <<replace "#result">> - You do your best to invite Chattel Religionists you hope will agree with you, while trying to keep what you're doing from being too obvious. - <<set $nicaeaPower -= 1, $nicaeaInfluence += 1>> + You do your best to invite Chattel Religionists you hope will agree with you, while trying to keep what you're doing from being too obvious. + <<set $nicaeaPower -= 1, $nicaeaInfluence += 1>> <</replace>> <</link>> </span> @@ -49,14 +49,14 @@ Second, you need to decide whether you intend to engage in a canvassing campaign <span id="result2"> <<link "Rely on your prominence">> <<replace "#result2">> - You decide that you don't need to spend precious reputational power. You're prominent enough that you expect to achieve your goals without special leverage. + You decide that you don't need to spend precious reputational power. You're prominent enough that you expect to achieve your goals without special leverage. <</replace>> <</link>> <br><<link "Leverage reputation into power">> <<replace "#result2">> - This isn't an opportunity that will come again. @@.red;You call in every favor you have.@@ You'll have to rebuild your reputation later. - <<set $nicaeaInfluence += 1>> - <<run repX(($rep * 0.5)-$rep, "event")>> + This isn't an opportunity that will come again. @@.red;You call in every favor you have.@@ You'll have to rebuild your reputation later. + <<set $nicaeaInfluence += 1>> + <<run repX(($rep * 0.5)-$rep, "event")>> <</replace>> <</link>> //This will cost a great deal of reputation// </span> @@ -68,14 +68,14 @@ Finally, you could use money to influence the Council. Everyone who's likely to <span id="result3"> <<link "Just host the Council">> <<replace "#result3">> - The Council doesn't need the distraction of a lot of less important people enjoying themselves loudly nearby, so you decide not to broaden the event. + The Council doesn't need the distraction of a lot of less important people enjoying themselves loudly nearby, so you decide not to broaden the event. <</replace>> <</link>> <br><<link "Host a festival to coincide with their arrival">> <<replace "#result3">> - Good works will spread the joy of a Chattel Religionist revival, and make you even more influential with the Council. You plan a public festival as part of the event. - <<set $nicaeaInfluence += 1>> - <<run cashX(-50000, "event")>> + Good works will spread the joy of a Chattel Religionist revival, and make you even more influential with the Council. You plan a public festival as part of the event. + <<set $nicaeaInfluence += 1>> + <<run cashX(-50000, "event")>> <</replace>> <</link>> //This will cost <<print cashFormat(50000)>>// </span> diff --git a/src/uncategorized/seNonlethalPit.tw b/src/uncategorized/seNonlethalPit.tw index 7ae6176f16599216d4e483f46c6449d35965523b..77eb1d679803f63f6c439c8c1d0fd0d10eddf775 100644 --- a/src/uncategorized/seNonlethalPit.tw +++ b/src/uncategorized/seNonlethalPit.tw @@ -1008,21 +1008,21 @@ <</if>> <<if (_loser.fetish != "masochist") && (_loser.fetish != "humiliation") && (_loser.sexualFlaw != "self-hating")>> - <<if (_loser.relationship != 0)>> - <<if (_loser.relationship <= 4)>> - <<if (_loser.relationshipTarget == _winner.ID)>> - Fighting and rape have @@.lightsalmon;damaged@@ the relationship between the slaves. - <<set _loser.relationship -= 1, _winner.relationship -= 1>> - <</if>> - <</if>> - <</if>> + <<if (_loser.relationship != 0)>> + <<if (_loser.relationship <= 4)>> + <<if (_loser.relationshipTarget == _winner.ID)>> + Fighting and rape have @@.lightsalmon;damaged@@ the relationship between the slaves. + <<set _loser.relationship -= 1, _winner.relationship -= 1>> + <</if>> + <</if>> + <</if>> <</if>> <<if (_winner.combatSkill == 0)>> - <<if random(1,100) < (20+_winner.devotion)>> - With experience in $pitName, _winner.slaveName has @@.green;learned basic combat skills.@@ - <<set _winner.combatSkill += 1>> - <</if>> + <<if random(1,100) < (20+_winner.devotion)>> + With experience in $pitName, _winner.slaveName has @@.green;learned basic combat skills.@@ + <<set _winner.combatSkill += 1>> + <</if>> <</if>> <<set $slaves[$slaveIndices[_winner.ID]] = _winner>> @@ -1088,7 +1088,7 @@ <<else>> <<set _minutesLasted = random(1,5)>> <<if _canRun == 1>> - $activeSlave.slaveName is quick, but not quick enough. $He manages to last almost <<= numberToWords(_minutesLasted)>> full minutes before the _animal.species finally catches $him. + $activeSlave.slaveName is quick, but not quick enough. $He manages to last almost <<= num(_minutesLasted)>> full minutes before the _animal.species finally catches $him. <<elseif _canRun == 0>> $activeSlave.slaveName isn't quick enough to avoid the beast, and $he only manages to last a pitiful thirty seconds before the _animal.species catches $him. <</if>> diff --git a/src/uncategorized/seWeddingDouble.tw b/src/uncategorized/seWeddingDouble.tw index 0cdfcb93f079927fcccb8f683a1f5eb23b24bd20..d796f52f90e814ab0ae118c9bdba54c2ed588c73 100644 --- a/src/uncategorized/seWeddingDouble.tw +++ b/src/uncategorized/seWeddingDouble.tw @@ -1006,7 +1006,7 @@ <<elseif _slave1.devotion < -20 && _slave1.trust > 20>> The slaves are unwilling, so you gather _slave1.slaveName up and hold $him in front of you, pulling $his panties off as you do. $He was crying before, but this causes $him to tremble and tear up in anticipation of what's next. Ignoring this, you maneuver your dick inside $him while holding $him against your <<if $PC.boobs == 1>>breasts<<elseif $PC.title == 0>>flat chest<<else>>strong chest<</if>>.<<if _slave1.amp != 1>> Then you pull $his knees up to give your guests a good view of the consummation.<</if>> $He is left to face them, watching sullenly as you fuck $his fertile <<if _slave1.mpreg == 1>>asshole<<else>>cunt<</if>>. Though $his face is towards the crowd, $his mind is concentrated on your hard cock, pumping in and out of $him at an angle; to $him, this is torture. $He gasps when your seed flows into $him, faking an orgasm to @@.green;applause from your guests.@@ At this, $he shoots you a dirty look, blaming you for this indignity. You've already moved on to _slave2.slaveName, however. _He2 had watched timidly as you had fucked _slave1.slaveName, but when you grab _him2, _he2 begins to cry softly. You ignore this, of course, and instead focus on pushing your already-hard cock into _his2 <<if _slave2.mpreg == 1>>asshole<<else>>pussy<</if>>. You can tell _he2 is trying _his2 hardest not to sob outright, and sure enough, a small sob escapes _his2 lips when you fill _him2 to the brim to the @@.green;applause of your guests.@@ You'll fuck them repeatedly over the next few days, ensuring impregnation, despite their efforts to defy you. <<elseif _slave1.devotion < -20>> - The <<if _slave1.genes == "XX" && _slave2.genes == "XX">>girls<<else>>slaves<</if>> are unwilling, so you gather _slave1.slaveName up and hold $him in front of you, pulling $his panties off as you do. $He was crying before, but this causes $him to tremble and sob loudly in anticipation of what's next. Ignoring this, you maneuver your dick inside $him while holding $him against your <<if $PC.boobs == 1>>breasts<<elseif $PC.title == 0>>flat chest<<else>>strong chest<</if>>.<<if _slave1.amp != 1>> Then you pull $his knees up to give your guests a good view of the consummation.<</if>> $He is left to face them, watching sullenly as you fuck $his fertile <<if _slave1.mpreg == 1>>asshole<<else>>cunt<</if>>. Though $his face is towards the crowd, $his mind is concentrated on your hard cock, pumping in and out of $him at an angle; to $him, this is torture. $He gasps when your seed flows into $him, orgasming unwillingly to @@.green;applause from your guests.@@ At this, $he completely breaks down, blubbering like a child at the unwelcome warmth in $his lower belly. You then turn your attention to _slave2.slaveName. _He2 had watched timidly as you had fucked _slave1.slaveName, but when you grab _him2, _he2 begins to cry softly. You ignore this, of course, and instead focus on pushing your already-hard cock into _his2 <<if _slave2.mpreg == 1>>asshole<<else>>pussy<</if>>. You can tell _he2 is trying _his2 hardest not to sob outright, and sure enough, a small sob escapes _his2 lips when you fill _him2 to the brim to the @@.green;applause of your guests.@@ You'll fuck them repeatedly over the next few days, ensuring impregnation, despite their protesting. + The <<if _slave1.noun == _slave2.noun>><<= $girl>>s<<else>>slaves<</if>> are unwilling, so you gather _slave1.slaveName up and hold $him in front of you, pulling $his panties off as you do. $He was crying before, but this causes $him to tremble and sob loudly in anticipation of what's next. Ignoring this, you maneuver your dick inside $him while holding $him against your <<if $PC.boobs == 1>>breasts<<elseif $PC.title == 0>>flat chest<<else>>strong chest<</if>>.<<if _slave1.amp != 1>> Then you pull $his knees up to give your guests a good view of the consummation.<</if>> $He is left to face them, watching sullenly as you fuck $his fertile <<if _slave1.mpreg == 1>>asshole<<else>>cunt<</if>>. Though $his face is towards the crowd, $his mind is concentrated on your hard cock, pumping in and out of $him at an angle; to $him, this is torture. $He gasps when your seed flows into $him, orgasming unwillingly to @@.green;applause from your guests.@@ At this, $he completely breaks down, blubbering like a child at the unwelcome warmth in $his lower belly. You then turn your attention to _slave2.slaveName. _He2 had watched timidly as you had fucked _slave1.slaveName, but when you grab _him2, _he2 begins to cry softly. You ignore this, of course, and instead focus on pushing your already-hard cock into _his2 <<if _slave2.mpreg == 1>>asshole<<else>>pussy<</if>>. You can tell _he2 is trying _his2 hardest not to sob outright, and sure enough, a small sob escapes _his2 lips when you fill _him2 to the brim to the @@.green;applause of your guests.@@ You'll fuck them repeatedly over the next few days, ensuring impregnation, despite their protesting. <<else>> Your wives-to-be aren't particularly excited about what's coming, but they're fully prepared for it and have accepted it as a fact of life. There are worse things one can be than the slave-wife of a wealthy arcology owner. You <<if _slave1.amp == 1>>gather _slave1.slaveName.slaveName up and hold $him in front of you, pulling $his panties off as you do. Showing considerable dexterity, you maneuver your dick inside $him while holding $him against your <<if $PC.boobs == 1>>breasts<<elseif $PC.title == 0>>flat chest<<else>>strong chest<</if>><<else>>take _slave1.slaveName's hand and pull $him to $his feet while $he shimmies out of $his panties. $He cocks $his hips for you and you slide your cock inside $him before taking $his knees and drawing them up to hold $him in midair, impaled on you<</if>>. Though $his face is towards the crowd, their mind is concentrated on your hard cock, pumping in and out of $him at an angle; to $him, it's just another part of being your slave. $He gasps when your seed flows into $him, orgasming shortly after to @@.green;applause from your guests.@@ Next, you turn your attention to _slave2.slaveName. You <<if (_slave1.amp == 1 && _slave2.amp == 1)>>also <</if>><<if _slave2.amp == 1>>pick _him2 up, then <<else>>pull _him2 to _his2 feet and <</if>>pull _his2 g-string off in one swift motion, then maneuver your already-hard cock into _his2 <<if _slave2.mpreg == 1>>asshole<<else>>pussy<</if>>. You fuck _him2, hard, then fill _him2 to the brim @@.green;while your audience gives another round of applause.@@ You'll fuck them repeatedly over the next few days, ensuring impregnation. <</if>> diff --git a/src/uncategorized/sellSlave.tw b/src/uncategorized/sellSlave.tw index 5d03d42942c17627f9adc37ea2e53734896604d7..652f08c8c7ca191f7cc4e949615a6a8d1c130a0b 100644 --- a/src/uncategorized/sellSlave.tw +++ b/src/uncategorized/sellSlave.tw @@ -119,9 +119,9 @@ A reputable slave appraiser arrives promptly to inspect $him and certify $his qu "Pharaoh, <<else>> <<if $PC.title == 1>> - "My prince, + "My prince, <<else>> - "My princess, + "My princess, <</if>> <</if>> <</if>> @@ -133,9 +133,9 @@ A reputable slave appraiser arrives promptly to inspect $him and certify $his qu <<else>> <<if $arcologies[0].FSEdoRevivalist >= $FSLockinLevel*0.9>> <<if $PC.title == 1>> - "Honored Emperor, + "Honored Emperor, <<else>> - "Honored Deity, + "Honored Deity, <</if>> <<elseif $arcologies[0].FSEdoRevivalist >= $FSLockinLevel*0.6>> "Honored Shogun, @@ -151,15 +151,15 @@ A reputable slave appraiser arrives promptly to inspect $him and certify $his qu <<else>> <<if $arcologies[0].FSArabianRevivalist >= $FSLockinLevel*0.9>> <<if $PC.title == 1>> - "Honored Caliph, + "Honored Caliph, <<else>> - "Handmaiden of Allah, your servant's heart is desolate with the honor of looking upon you. + "Handmaiden of Allah, your servant's heart is desolate with the honor of looking upon you. <</if>> <<elseif $arcologies[0].FSArabianRevivalist >= $FSLockinLevel*0.6>> <<if $PC.title == 1>> - "Honored Sultan, + "Honored Sultan, <<else>> - "Sultana, your servant's heart is desolate with the honor of looking upon you. + "Sultana, your servant's heart is desolate with the honor of looking upon you. <</if>> <<else>> "Peace be upon you, honored slaveowner. @@ -268,16 +268,16 @@ A reputable slave appraiser arrives promptly to inspect $him and certify $his qu <</if>> <</if>> <<if ($week-$activeSlave.weekAcquired >= 20) && ($activeSlave.entertainSkill >= 100)>> -<<if setup.entertainmentCareers.includes($activeSlave.career)>> -<<else>> - $He's gotten enough experience as a slave entertainer that $he has the added value of a $girl with a history in entertainment from before $he was a slave. -<</if>> + <<if setup.entertainmentCareers.includes($activeSlave.career)>> + <<else>> + $He's gotten enough experience as a slave entertainer that $he has the added value of a $girl with a history in entertainment from before $he was a slave. + <</if>> <</if>> <<if ($activeSlave.oralCount + $activeSlave.analCount + $activeSlave.vaginalCount + $activeSlave.mammaryCount + $activeSlave.penetrativeCount > 1000)>> -<<if setup.whoreCareers.includes($activeSlave.career)>> -<<else>> - I see $he's sexually very experienced; that counts as a stand-in for the usual bonus value from having been a sex worker before enslavement. -<</if>> + <<if setup.whoreCareers.includes($activeSlave.career)>> + <<else>> + I see $he's sexually very experienced; that counts as a stand-in for the usual bonus value from having been a sex worker before enslavement. + <</if>> <</if>> <<set _careers = []>> @@ -403,7 +403,7 @@ A reputable slave appraiser arrives promptly to inspect $him and certify $his qu <<if $activeSlave.attrKnown == 1>> <<if $activeSlave.energy > 95>> - Nymphomania adds a major price bonus. + Nymphomania adds a major price bonus. <</if>> <<else>> With $his sex drive not well tested, I cannot award $him any value in that area. @@ -639,25 +639,25 @@ A reputable slave appraiser arrives promptly to inspect $him and certify $his qu <<if $arcologies[0].FSGenderRadicalistLawFuta != 0>> <<if $arcologies[0].FSGenderRadicalistLawFuta == 1>> <<if $activeSlave.dick > 0>> - <<if $activeSlave.vagina > -1>> - Futas appraise better than ever, thanks to your leadership on gender. - <</if>> + <<if $activeSlave.vagina > -1>> + Futas appraise better than ever, thanks to your leadership on gender. + <</if>> <</if>> <<elseif $arcologies[0].FSGenderRadicalistLawFuta == 2>> <<if $activeSlave.dick > 0>> - <<if $activeSlave.balls > 0>> - Slaves with cocks and balls appraise quite well, thanks to your leadership on gender. - <</if>> + <<if $activeSlave.balls > 0>> + Slaves with cocks and balls appraise quite well, thanks to your leadership on gender. + <</if>> <</if>> <<else>> <<if $activeSlave.butt >= 5>> - <<if $activeSlave.anus >= 2>> - <<if $activeSlave.hips >= 1>> - <<if $activeSlave.analSkill > 60>> - Slaves with big butts and skilled anuses appraise quite well, thanks to your leadership on gender. - <</if>> - <</if>> - <</if>> + <<if $activeSlave.anus >= 2>> + <<if $activeSlave.hips >= 1>> + <<if $activeSlave.analSkill > 60>> + Slaves with big butts and skilled anuses appraise quite well, thanks to your leadership on gender. + <</if>> + <</if>> + <</if>> <</if>> <</if>> <</if>> diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw index 26da2f35a10873117b4e0dc6c6f5084a34d67fcc..22d32a04353c5aa6c7c4248fa6cff1e28b610ac6 100644 --- a/src/uncategorized/slaveInteract.tw +++ b/src/uncategorized/slaveInteract.tw @@ -70,12 +70,12 @@ <span id="sexoption"> <<if ($activeSlave.vagina > -1)>> <<if canDoVaginal($activeSlave)>> - <<link "Fuck $him">><<replace "#miniscene">><<include "FVagina">><br><</replace>><</link>> + <<link "Fuck $him">><<replace "#miniscene">><<include "FVagina">><br><</replace>><</link>> <<if canDoAnal($activeSlave)>> - | <<link "Use $his holes">><<replace "#miniscene">><<include "FButt">><br> <</replace>><</link>> + | <<link "Use $his holes">><<replace "#miniscene">><<include "FButt">><br> <</replace>><</link>> <</if>> <<else>> - //Remove $his chastity belt if you wish to fuck $him// + //Remove $his chastity belt if you wish to fuck $him// <</if>> <</if>> <<if $activeSlave.bellyPreg >= 300000>> @@ -91,9 +91,9 @@ </span> <span id="analsexoption"> <<if canDoAnal($activeSlave)>> - | <<link "Fuck $his ass">><<replace "#miniscene">><<include "FAnus">><br> <</replace>><</link>> + | <<link "Fuck $his ass">><<replace "#miniscene">><<include "FAnus">><br> <</replace>><</link>> <<else>> - | //Remove $his chastity belt if you wish to fuck $his ass// + | //Remove $his chastity belt if you wish to fuck $his ass// <</if>> </span> | <<link "Use $his mouth">><<replace "#miniscene">><<include "FLips">><br> <</replace>><</link>> @@ -113,28 +113,28 @@ <</if>> <span id="analgropeoption"> <<if canDoAnal($activeSlave)>> - | <<link "Grope $his butt">><<replace "#miniscene">><<include "FondleButt">><br> <</replace>><</link>> + | <<link "Grope $his butt">><<replace "#miniscene">><<include "FondleButt">><br> <</replace>><</link>> <</if>> </span> <span id="gropeoption"> <<if ($activeSlave.vagina > -1)>> <<if canDoVaginal($activeSlave)>> - | <<link "Grope $his pussy">><<replace "#miniscene">><<include "FondleVagina">><br> <</replace>><</link>> - | <<link "Eat $him out">><<replace "#miniscene">><<include "FLickPussy">><br> <</replace>><</link>> + | <<link "Grope $his pussy">><<replace "#miniscene">><<include "FondleVagina">><br> <</replace>><</link>> + | <<link "Eat $him out">><<replace "#miniscene">><<include "FLickPussy">><br> <</replace>><</link>> <</if>> <</if>> </span> <span id="dickgropeoption"> <<if ($activeSlave.dick > 0)>> <<if !($activeSlave.chastityPenis)>> - | <<link "Grope $his dick">><<replace "#miniscene">><<include "FondleDick">><br> <</replace>><</link>> + | <<link "Grope $his dick">><<replace "#miniscene">><<include "FondleDick">><br> <</replace>><</link>> <<if canPenetrate($activeSlave)>> <<if $sexualOpeness == 1 || $activeSlave.toyHole == "dick">> | <<link "Ride $his dick">><<replace "#miniscene">><<include "FDick">><br> <</replace>><</link>> <</if>> <</if>> <<else>> - | //Remove $his dick chastity belt if you wish to play with $his cock// + | //Remove $his dick chastity belt if you wish to play with $his cock// <</if>> <</if>> </span> @@ -144,10 +144,10 @@ <span id = "impreg"> <<if (canGetPregnant($activeSlave)) && ($activeSlave.fuckdoll == 0) && $seePreg != 0>> <<if canImpreg($activeSlave, $PC)>> - | <<link "Impregnate $him yourself">><<replace "#miniscene">><<include "FPCImpreg">><br> <</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> + | <<link "Impregnate $him yourself">><<replace "#miniscene">><<include "FPCImpreg">><br> <</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> <</if>> <<if canImpreg($activeSlave, $activeSlave)>> - | <<link "Use $his own seed to impregnate $him">><<replace "#miniscene">><<include "FSlaveSelfImpreg">><br> <</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> + | <<link "Use $his own seed to impregnate $him">><<replace "#miniscene">><<include "FSlaveSelfImpreg">><br> <</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> <</if>> | <<link "Use another slave to impregnate $him" "FSlaveImpreg">><</link>> <<if ($activeSlave.eggType != "human") && (_CL > 0 || _HL > 0 || _FL > 0) && ($cheatMode == 1)>> @@ -1055,7 +1055,9 @@ <<if $activeSlave.vagina > -1>> <br>Vaginal accessory: ''<span id="vaginalAccessory">$activeSlave.vaginalAccessory</span>.'' <<link "None">><<set $activeSlave.vaginalAccessory = "none">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><<SlaveInteractSexOption>><<SlaveInteractAnalSexOption>><<SlaveInteractGropeOption>><<SlaveInteractDickGropeOption>><<SlaveInteractAnalGropeOption>><</link>> - | <<link "Bullet vibrator">><<set $activeSlave.vaginalAccessory = "bullet vibrator">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><</link>> + <<if isItemAccessible("bullet vibrator")>> + | <<link "Bullet vibrator">><<set $activeSlave.vaginalAccessory = "bullet vibrator">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><</link>> + <</if>> | <<link "Dildo">><<set $activeSlave.vaginalAccessory = "dildo">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><</link>> <<if isItemAccessible("long dildo") && ($activeSlave.breedingMark != 1 || $propOutcome == 0)>> | <<link "Long dildo">><<set $activeSlave.vaginalAccessory = "long dildo">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><</link>> @@ -1070,24 +1072,21 @@ | <<link "Huge and long dildo">><<set $activeSlave.vaginalAccessory = "long, huge dildo">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><</link>> <</if>> <</if>> - <<if isItemAccessible("vibrator")>> + <<if isItemAccessible("vibrator") && $activeSlave.vaginalAccessory != "none" && $activeSlave.vaginalAccessory != "bullet vibrator" && $toysBoughtVaginalAttachments == 1>> <br> - <<if $activeSlave.vaginalAccessory != "none">> - Vaginal accessory attachment: - <<else>> - Vaginal attachment: - <</if>> + Vaginal accessory attachment: ''<span id="vaginalAttachment">$activeSlave.vaginalAttachment</span>.'' <<link "None">><<set $activeSlave.vaginalAttachment = "none">><<replace "#vaginalAttachment">>$activeSlave.vaginalAttachment<</replace>><</link>> - <<if $toysBoughtVaginalAttachments == 1>> - | <<link "Vibrating dildo">><<set $activeSlave.vaginalAttachment = "vibrator">><<replace "#vaginalAttachment">>$activeSlave.vaginalAttachment<</replace>><</link>> - <</if>> + | <<link "Vibrating dildo">><<set $activeSlave.vaginalAttachment = "vibrator">><<replace "#vaginalAttachment">>$activeSlave.vaginalAttachment<</replace>><</link>> <</if>> <</if>> <<if $activeSlave.dick > 0>> <br>Dick accessory: ''<span id="dickAccessory">$activeSlave.dickAccessory</span>.'' <<link "None">><<set $activeSlave.dickAccessory = "none">><<replace "#dickAccessory">>$activeSlave.dickAccessory<</replace>><<SlaveInteractSexOption>><<SlaveInteractAnalSexOption>><<SlaveInteractGropeOption>><<SlaveInteractDickGropeOption>><<SlaveInteractAnalGropeOption>><</link>> + <<if isItemAccessible("bullet vibrator") && $toysBoughtVaginalAttachments == 1>> + <<link "Bullet vibrator">><<set $activeSlave.dickAccessory = "bullet vibrator">><<replace "#dickAccessory">>$activeSlave.dickAccessory<</replace>><</link>> + <</if>> <</if>> <br>Chastity device: ''<span id="chastity"><<if $activeSlave.chastityAnus == 1 && $activeSlave.chastityPenis == 1 && $activeSlave.chastityVagina == 1>>Full Chastity<<elseif $activeSlave.chastityPenis == 1 && $activeSlave.chastityVagina == 1>>Genital Chastity<<elseif $activeSlave.chastityAnus == 1 && $activeSlave.chastityPenis == 1>>Combined Chastity Cage<<elseif $activeSlave.chastityAnus == 1 && $activeSlave.chastityVagina == 1>>Combined Chastity Belt<<elseif $activeSlave.chastityVagina == 1>>Chastity Belt<<elseif $activeSlave.chastityPenis == 1>>Chastity Cage<<elseif $activeSlave.chastityAnus == 1>>Anal Chastity<<elseif $activeSlave.chastityAnus == 0 && $activeSlave.chastityPenis == 0 && $activeSlave.chastityVagina == 0>>None<<else>>THERE HAS BEEN AN ERROR<</if>></span>.'' @@ -1509,17 +1508,17 @@ Aphrodisiacs: <span id="aphrodisiacs"><strong><<if $activeSlave.aphrodisiacs > 1 <span id="bloating"> <<if $activeSlave.inflation > 0>> -<br> -__Required Bloating__: <strong><span id="inflate"><<if $activeSlave.inflation == 3>><<print "$He is required to keep 2 gallons of $activeSlave.inflationType in $him at all times">><<elseif $activeSlave.inflation == 2>><<print "$He is required to keep 4 liters of $activeSlave.inflationType in $him at all times">><<elseif $activeSlave.inflation == 1>><<print "$He is required to keep 2 liters of $activeSlave.inflationType in $him at all times">><</if>></span></strong>. -<<if $activeSlave.inflationMethod == 3>> - <<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0,$activeSlave.cumSource = 0,$activeSlave.milkSource = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> -<<elseif $activeSlave.inflationType == "milk">> - <<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> -<<elseif $activeSlave.inflationType == "cum">> - <<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> -<<else>> - <<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> -<</if>> + <br> + __Required Bloating__: <strong><span id="inflate"><<if $activeSlave.inflation == 3>><<print "$He is required to keep 2 gallons of $activeSlave.inflationType in $him at all times">><<elseif $activeSlave.inflation == 2>><<print "$He is required to keep 4 liters of $activeSlave.inflationType in $him at all times">><<elseif $activeSlave.inflation == 1>><<print "$He is required to keep 2 liters of $activeSlave.inflationType in $him at all times">><</if>></span></strong>. + <<if $activeSlave.inflationMethod == 3>> + <<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0,$activeSlave.cumSource = 0,$activeSlave.milkSource = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> + <<elseif $activeSlave.inflationType == "milk">> + <<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> + <<elseif $activeSlave.inflationType == "cum">> + <<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> + <<else>> + <<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>> + <</if>> <</if>> </span> @@ -1660,11 +1659,16 @@ Hormones: <strong><span id="hormones"> <</if>> <</if>> -<<if $activeSlave.clitPiercing >= 3>> +<<if $activeSlave.clitPiercing == 3 || $activeSlave.vaginalAccessory == "bullet vibrator">> <br> - <<if $activeSlave.dick < 1>> - $His <<if $activeSlave.clitPiercing == 4>>advanced<<else>>smart<</if>> clit piercing is set to - <<else>>$His smart frenulum piercing is set to + <<if $activeSlave.clitPiercing == 3>> + <<if $activeSlave.dick < 1>> + $His smart clit piercing is set to + <<else>> + $His smart frenulum piercing is set to + <</if>> + <<else>> + $His bullet vibe is set to <</if>> <strong><span id="setting">$activeSlave.clitSetting</span></strong>. <<link "Vanilla">><<set $activeSlave.clitSetting = "vanilla">><<replace "#setting">>$activeSlave.clitSetting<</replace>><</link>> diff --git a/src/uncategorized/slaveSold.tw b/src/uncategorized/slaveSold.tw index 47ae4ca2ee49267b92ecfc19a53032e00b1b40df..296de31fc13d8ad125609b72a4232fc22a872b16 100644 --- a/src/uncategorized/slaveSold.tw +++ b/src/uncategorized/slaveSold.tw @@ -5,7 +5,7 @@ <<setLocalPronouns $activeSlave>> <<set $display = 0>> -<<if !["abortion TV", "elite auction", "eugenics arcology", "organ crafter", "peacekeepers", "repopulationist arcology", "tentacle bred", "womb filler"].includes($buyer) && ((($activeSlave.actualAge < $retirementAge-1) && $PhysicalRetirementAgePolicy != 1) || (($activeSlave.physicalAge < $retirementAge-1) && $PhysicalRetirementAgePolicy == 1))>> /* organ crafter is not viable now, the elite won't part so easily with a prize, some take place x months later when the event's max is 15 weeks, and the rest are snuff events. You don't want that slave back. */ +<<if !["abortion TV", "elite auction", "eugenics arcology", "organ crafter", "peacekeepers", "repopulationist arcology", "tentacle bred", "womb filler"].includes($buyer) && ((($activeSlave.actualAge < $retirementAge-1) && $PhysicalRetirementAgePolicy != 1) || (($activeSlave.physicalAge < $retirementAge-1) && $PhysicalRetirementAgePolicy == 1))>> /* organ crafter is not viable now, the elite/peacekeepers won't part so easily with a prize, some take place x months later when the event's max is 15 weeks, and the rest are snuff events. You don't want that slave back. */ <<if !$boomerangSlave || $boomerangWeeks > 15>> <<if $activeSlave.fuckdoll == 0>> <<if canWalk($activeSlave)>> diff --git a/src/uncategorized/storyCaption.tw b/src/uncategorized/storyCaption.tw index 75980a8a7335fd564119532321a97332b5efaa08..884228afd8c6e9f8feed39643007dd9ba542f629 100644 --- a/src/uncategorized/storyCaption.tw +++ b/src/uncategorized/storyCaption.tw @@ -193,7 +193,7 @@ <</if>> <br>Upkeep | <</if>><<print cashFormat($costs)>> -<br><br>@@.pink;Total Sex Slaves@@ | <<print commaNum(_SL)>> +<br><br>@@.pink;Total Sex Slaves@@ | <<print num(_SL)>> <br>@@.pink;Penthouse Beds@@ | <<if $dormitoryPopulation+$roomsPopulation > ($dormitory+$rooms)>>@@.red;<<print $dormitoryPopulation+$roomsPopulation>>@@<<else>><<print $dormitoryPopulation+$roomsPopulation>><</if>>/<<print ($dormitory+$rooms)>> <br>@@.pink;Dormitory Beds@@ | <<if $dormitoryPopulation > $dormitory>>@@.red;<<print $dormitoryPopulation>>@@<<else>><<print $dormitoryPopulation>><</if>>/<<print $dormitory>> @@ -265,7 +265,7 @@ <<else>> @@color:rgb(0,255,0);unknown@@ <</if>> -(<<print commaNum($rep)>>) +(<<print num($rep)>>) </span> <<if (_Pass == "Main")>> <<if ($cheatMode) && ($cheatModeM)>> @@ -371,7 +371,7 @@ <<else>> @@color:rgb(211,0,204);harmless@@ <</if>> -(<<print commaNum($authority)>>) +(<<print num($authority)>>) </span> <<if (_Pass == "Main")>> <<if ($cheatMode) && ($cheatModeM)>> diff --git a/src/uncategorized/surgeryDegradation.tw b/src/uncategorized/surgeryDegradation.tw index 3f89746d099b6c779932d8008291d5ec32baaf68..c1c0a9853d580c63000f71f86be61036a8f327af 100644 --- a/src/uncategorized/surgeryDegradation.tw +++ b/src/uncategorized/surgeryDegradation.tw @@ -2587,16 +2587,19 @@ As the remote surgery's long recovery cycle completes, <<if ($activeSlave.amp == 1)>> <<set _hairLand = "below " + $him>> <</if>> - <<if (($activeSlave.underArmHStyle != "hairless") && ($activeSlave.underArmHStyle != "bald"))>> - <<set _hairChanges++, $activeSlave.underArmHStyle = "bald">> - <<set _hair = "The first thing " + $he + " notices is that " + $his + " armpit hair has just fallen out, in a small pile " + _hairLand + ".">> - <<if (($activeSlave.pubicHStyle != "hairless") && ($activeSlave.pubicHStyle != "bald"))>> + <<set _pubertyAge = Math.min($activeSlave.pubertyAgeXX, $activeSlave.pubertyAgeXY)>> + <<if ($activeSlave.physicalAge > _pubertyAge-2)>> + <<if (($activeSlave.underArmHStyle != "hairless") && ($activeSlave.underArmHStyle != "bald"))>> + <<set _hairChanges++, $activeSlave.underArmHStyle = "bald">> + <<set _hair = "The first thing " + $he + " notices is that " + $his + " armpit hair has just fallen out, in a small pile " + _hairLand + ".">> + <<if (($activeSlave.pubicHStyle != "hairless") && ($activeSlave.pubicHStyle != "bald"))>> + <<set _hairChanges++, $activeSlave.pubicHStyle = "bald">> + <<set _hair = _hair + " The same thing happens to " + $his + " pubic hair.">> + <</if>> + <<elseif $activeSlave.pubicHStyle != "hairless" && $activeSlave.pubicHStyle != "bald">> <<set _hairChanges++, $activeSlave.pubicHStyle = "bald">> - <<set _hair = _hair + " The same thing happens to " + $his + " pubic hair.">> + <<set _hair = "The first thing " + $he + " notices is that " + $his + " pubic hair has just fallen out, in a small pile " + _hairLand + ".">> <</if>> - <<elseif $activeSlave.pubicHStyle != "hairless" && $activeSlave.pubicHStyle != "bald">> - <<set _hairChanges++, $activeSlave.pubicHStyle = "bald">> - <<set _hair = "The first thing " + $he + " notices is that " + $his + " pubic hair has just fallen out, in a small pile " + _hairLand + ".">> <</if>> <<if canSee($activeSlave)>> <<set _sense = "see">> diff --git a/src/uncategorized/theFutanariSisters.tw b/src/uncategorized/theFutanariSisters.tw index 95b7c1490169d61c8e598021231764afb80e0cbd..ae69e671ac889ba5319fc2a063cc92ad4bfe5b10 100644 --- a/src/uncategorized/theFutanariSisters.tw +++ b/src/uncategorized/theFutanariSisters.tw @@ -59,18 +59,39 @@ Visitors are not common: in fact, visitors are only as frequent as you feel like <<switch $futaAddiction>> <<case 1>> You agree to spend some time taking part in the Sisters' orgy. The futa matron looks doubtful. "You'd have to agree to act as one of us," she says. "No different. No special sexual treatment." Her voice rises cutely on the last syllable, as you take her enormous dick in one hand and begin to stroke it vigorously. "V-very well," she gasps, taking one of your breasts in each of her hands. You leave the Sisters' suite after a few hours of fucking and being fucked, feeling tired but satisfied. + <<if $PC.preg == 0 && $PC.vagina > 0>> + <<= knockMeUp($PC, 5, 0, -9, 1)>> + <</if>> <<case 2>> She doesn't have to explain the Sisters' sexual equality this time, or that you have to subject yourself to it. You remember, and you let her know you're willing by giving her a friendly hug that squashes your breasts against each other and rubs your stiff pricks together. She reaches around you to grab your ass, already pulling you towards the pile of futas. You leave the Sisters' suite after a few hours of fucking and being fucked, in a state of total sexual satiation. + <<if $PC.preg == 0 && $PC.vagina > 0>> + <<= knockMeUp($PC, 10, 0, -9, 1)>> + <</if>> <<case 3>> She asked that with a distinctly flirty tone, obviously hoping you'd agree again, and she isn't disappointed. You take her by the hand and skip over to the pile of futas, most of which know you very intimately by now. They see their Sister and you approaching, and those of them that don't have their mouths full greet you eagerly. Three of them quickly rearrange themselves to present you with a couple of dicks to sit on and a pussy to fuck, all at once. You leave the Sisters' suite after many hours of fucking and being fucked, tired but satisfied. + <<if $PC.preg == 0 && $PC.vagina > 0>> + <<= knockMeUp($PC, 20, 0, -9, 1)>> + <</if>> <<case 4>> She asked that in a knowing voice, confident you'd agree, and was already moving in to kiss you when you did. She seems to want you more than usual today, and pulls you down onto the edge of the pit, guiding your cock into her pussy. She isn't selfish, of course, and reaches around to spread your buttocks so you can get fucked while you fuck. You leave the Sisters' suite after many hours of this, very tired. You wonder when you can make time to visit the Sisters again. + <<if $PC.preg == 0 && $PC.vagina > 0>> + <<= knockMeUp($PC, 40, 0, -9, 1)>> + <</if>> <<case 5>> She runs her tongue over her lips as she asks, and sits you down on the edge of the pit and deepthroats you as soon as you agree. She wants your cum, and uses a couple of fingers to tickle your prostate and make it appear faster. You jerk with orgasm, and she pushes your wet cock up against your stomach so she can fuck your pussy. She pauses for a moment, letting a younger Sister enter her ass first. You leave the Sisters' suite after a full day of this, utterly exhausted but eager to return. + <<if $PC.preg == 0 && $PC.vagina > 0>> + <<= knockMeUp($PC, 60, 0, -9, 1)>> + <</if>> <<case 6>> You nod, and she turns back towards the orgy, not seeing any reason to lead you, since you know the way. You both sink back into the pile of cocks, pussies, mouths, asses, boobs; the hours go by without you noticing. You leave the Sisters' suite unable to remember specifics, but you clearly fucked and got fucked by every futa there at least once. You're surprised when you learn how long you were there, but the worries of being an arcology owner no longer seem as pressing as they once did. + <<if $PC.preg == 0 && $PC.vagina > 0>> + <<= knockMeUp($PC, 80, 0, -9, 1)>> + <</if>> <<case 7>> You don't even bother to respond, and head straight for the orgy. You insert yourself into an eager mouth, bending over so the matron following you can take you from behind. The worries of your life as an arcology owner seem very far away as she slides inside you. You only leave when $assistantName repeatedly pages you over the arcology's public announcement system. On the way to your office, you notice how full of cum your stomach is, how relaxed your pussy and ass are, and how happy you feel. + <<if $PC.preg == 0 && $PC.vagina > 0>> + <<= knockMeUp($PC, 100, 0, -9, 1)>> + <</if>> <<case 8>> <<set $gameover = "sisters">> <<goto "Gameover">> diff --git a/src/uncategorized/universalRules.tw b/src/uncategorized/universalRules.tw index d8924a82d16b8c90e816dab476f707b00b43f774..2d7abc3d1e03ba6c2011658f577b2645827f6e1c 100644 --- a/src/uncategorized/universalRules.tw +++ b/src/uncategorized/universalRules.tw @@ -142,21 +142,32 @@ Slave requests for growth hormones are <br><br> Upon birth slave babies will be sent to $DefaultBirthDestination. <br>You can decide on a new policy: - <<if $DefaultBirthDestination != "individually decided fates">>[[decide individually|Universal Rules][$DefaultBirthDestination = "individually decided fates",$universalRulesChildrenBecomeBreeders = 0]]|<</if>> - <<if $DefaultBirthDestination != "an orphanage">>[[slave orphanage|Universal Rules][$DefaultBirthDestination = "an orphanage",$universalRulesChildrenBecomeBreeders = 0]]<</if>> - <<if $DefaultBirthDestination != "a citizen school">>|[[citizen school|Universal Rules][$DefaultBirthDestination = "a citizen school",$universalRulesChildrenBecomeBreeders = 0]]<</if>> - <<if $DefaultBirthDestination != "a private school">>|[[private school|Universal Rules][$DefaultBirthDestination = "a private school",$universalRulesChildrenBecomeBreeders = 0]]<</if>> + <<if $DefaultBirthDestination != "individually decided fates">> + [[Decide individually|Universal Rules][$DefaultBirthDestination = "individually decided fates",$universalRulesChildrenBecomeBreeders = 0]] + <</if>> + <<if $DefaultBirthDestination != "an orphanage">> + | [[Slave orphanage|Universal Rules][$DefaultBirthDestination = "an orphanage",$universalRulesChildrenBecomeBreeders = 0]] + <</if>> + <<if $DefaultBirthDestination != "a citizen school">> + | [[Citizen school|Universal Rules][$DefaultBirthDestination = "a citizen school",$universalRulesChildrenBecomeBreeders = 0]] + <</if>> + <<if $DefaultBirthDestination != "a private school">> + | [[Private school|Universal Rules][$DefaultBirthDestination = "a private school",$universalRulesChildrenBecomeBreeders = 0]] + <</if>> <<if $Cash4Babies > 0>> - <<if $DefaultBirthDestination != "the market">>|[[market|Universal Rules][$DefaultBirthDestination = "the market",$universalRulesChildrenBecomeBreeders = 0]]<</if>> + <<if $DefaultBirthDestination != "the market">> + | [[Market|Universal Rules][$DefaultBirthDestination = "the market",$universalRulesChildrenBecomeBreeders = 0]] + <</if>> <</if>> <<if $arcologies[0].FSRepopulationFocus > 40>> <br> <<if $DefaultBirthDestination != "breeder schools">> - |[[breeder schools|Universal Rules][$DefaultBirthDestination = "breeder schools",$universalRulesChildrenBecomeBreeders = 1]] + | [[Breeder schools|Universal Rules][$DefaultBirthDestination = "breeder schools",$universalRulesChildrenBecomeBreeders = 1]] //Will require a <<print cashFormat(50)>> donation per week once enrollment begins// <</if>> <</if>> - <br>//Children reserved for the incubator or any other pre-assigned fate (e.g. the elites or the nursery) will not be affected// + <br> + //Children reserved for the Incubator or Nursery will not be affected// <</if>>/*Closes seePreg check*/ <br><br> diff --git a/src/uncategorized/walkPast.tw b/src/uncategorized/walkPast.tw index d3bd57c6d6332b99f2bf84faaa71e04195b6ac57..1c55bfbfaa7896c4280b6917727dfa3bfa444527 100644 --- a/src/uncategorized/walkPast.tw +++ b/src/uncategorized/walkPast.tw @@ -3225,7 +3225,7 @@ <<if (_flag <= 80) && (_flag > 60) && ($activeSlave.chastityAnus)>> //If you wish to have anal intercourse with $him you must order $him to remove $his chastity belt.// <span id="walkpast"><<link "Grope $his rear instead">><<replace "#walk">><<include $target>><</replace>><</link>></span> - <<if (_flag <= 60) && (_flag > 40) && ($activeSlave.chastityVagina)>> + <<elseif (_flag <= 60) && (_flag > 40) && ($activeSlave.chastityVagina)>> //If you wish to have vanilla intercourse with $him you must order $him to remove $his chastity belt.// <<elseif _flag > 100>> <<if $familyTesting == 1 && _flag == 110>> diff --git a/src/uncategorized/wardrobe.tw b/src/uncategorized/wardrobe.tw index 80c2c5509a98c0688fd2c6e2a2c96c3ca137a9e4..25efda9a2099680bea974b19f7db29e8badea995 100644 --- a/src/uncategorized/wardrobe.tw +++ b/src/uncategorized/wardrobe.tw @@ -30,279 +30,279 @@ The room containing all the clothes and accessories you have available to dress <br> <<if !isItemAccessible("a bunny outfit")>> - [[Order a shipment of bunny suits|Wardrobe][cashX(-7500, "capEx"), $clothesBoughtBunny = 1]] - //Costs <<print cashFormat(7500)>>// + [[Order a shipment of bunny suits|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtBunny = 1]] + //Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with classic bunny suits and bowties. <</if>> <br> <<if !isItemAccessible("conservative clothing")>> - [[Order a shipment of conservative clothes|Wardrobe][cashX(-7500, "capEx"), $clothesBoughtConservative = 1]] - //Costs <<print cashFormat(7500)>>// + [[Order a shipment of conservative clothes|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtConservative = 1]] + //Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with modest outfits. <</if>> <br> <<if !isItemAccessible("chains")>> - [[Order a shipment of chains|Wardrobe][cashX(-7500, "capEx"), $clothesBoughtChains = 1]] - //Costs <<print cashFormat(7500)>>// + [[Order a shipment of chains|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtChains = 1]] + //Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with various lengths of binding chains. <</if>> <br> <<if !isItemAccessible("Western clothing")>> - [[Order a shipment of western outfits|Wardrobe][cashX(-7500, "capEx"), $clothesBoughtWestern = 1]] - //Costs <<print cashFormat(7500)>>// + [[Order a shipment of western outfits|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtWestern = 1]] + //Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with cowgirl outfits. <</if>> <br> <<if !isItemAccessible("body oil")>> - [[Order a shipment of body oil|Wardrobe][cashX(-7500, "capEx"), $clothesBoughtOil = 1]] - //Costs <<print cashFormat(7500)>>// + [[Order a shipment of body oil|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtOil = 1]] + //Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with various body oils. <</if>> <br> <<if !isItemAccessible("stretch pants and a crop-top")>> - [[Order a shipment of comfortable, rather stretchy, clothes|Wardrobe][cashX(-7500, "capEx"), $clothesBoughtLazyClothes = 1]] - //Costs <<print cashFormat(7500)>>// + [[Order a shipment of comfortable, rather stretchy, clothes|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtLazyClothes = 1]] + //Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with various comfy pants and rather tight crop-tops. <</if>> <br> <<if !isItemAccessible("a chattel habit")>> - [[Order a shipment of chattel habits|Wardrobe][cashX(-7500, "capEx"), $clothesBoughtHabit = 1]] - //Costs <<print cashFormat(7500)>>// + [[Order a shipment of chattel habits|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtHabit = 1]] + //Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with habits from the chattel religion. <</if>> <br> <<if !isItemAccessible("ancient Egyptian")>> - [[Order a shipment of Egyptian necklaces|Wardrobe][cashX(-7500, "capEx"), $clothesBoughtEgypt = 1]] - //Costs <<print cashFormat(7500)>>// + [[Order a shipment of Egyptian necklaces|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtEgypt = 1]] + //Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with ancient Egyptian necklaces. <</if>> <br> <<if !isItemAccessible("a toga")>> - [[Order a shipment of togas|Wardrobe][cashX(-7500, "capEx"), $clothesBoughtToga = 1]] - //Costs <<print cashFormat(7500)>>// + [[Order a shipment of togas|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtToga = 1]] + //Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with fine roman-styled togas. <</if>> <br> <<if !isItemAccessible("a huipil")>> - [[Order a shipment of huipil|Wardrobe][cashX(-7500, "capEx"), $clothesBoughtHuipil = 1]] - //Costs <<print cashFormat(7500)>>// + [[Order a shipment of huipil|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtHuipil = 1]] + //Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>>// <<else>> - You are well stocked with exquisite Aztec Huipil. + You are well stocked with exquisite Aztec huipils. <</if>> <br> <<if !isItemAccessible("a kimono")>> - [[Order a shipment of kimonos|Wardrobe][cashX(-7500, "capEx"), $clothesBoughtKimono = 1]] - //Costs <<print cashFormat(7500)>>// -<<else>>You are well stocked with elegant Japanese Kimonos. + [[Order a shipment of kimonos|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtKimono = 1]] + //Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>>// +<<else>>You are well stocked with elegant Japanese kimonos. <</if>> <br> <<if !isItemAccessible("harem gauze")>> - [[Order a shipment of harem outfits|Wardrobe][cashX(-7500, "capEx"), $clothesBoughtHarem = 1]] - //Costs <<print cashFormat(7500)>>// + [[Order a shipment of harem outfits|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtHarem = 1]] + //Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with Arabic harem garb made from the finest available silks. <</if>> <br> <<if !isItemAccessible("a slutty qipao")>> - [[Order a shipment of qipaos|Wardrobe][cashX(-7500, "capEx"), $clothesBoughtQipao = 1]] - //Costs <<print cashFormat(7500)>>// + [[Order a shipment of qipaos|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtQipao = 1]] + //Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with slutty Chinese qipaos. <</if>> <br> <<if !isItemAccessible("a maternity dress")>> - [[Order a shipment of maternity dresses|Wardrobe][cashX(-7500, "capEx"), $clothesBoughtMaternityDress = 1]] - //Costs <<print cashFormat(7500)>>// + [[Order a shipment of maternity dresses|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtMaternityDress = 1]] + //Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with dresses specially tailored for pregnant women. <</if>> <br> <<if !isItemAccessible("attractive lingerie for a pregnant woman")>> - [[Order a shipment of maternity lingerie|Wardrobe][cashX(-7500, "capEx"), $clothesBoughtMaternityLingerie = 1]] - //Costs <<print cashFormat(7500)>>// + [[Order a shipment of maternity lingerie|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtMaternityLingerie = 1]] + //Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with sexy silken lingerie designed for pregnant women. <</if>> <br> <<if !isItemAccessible("battlearmor")>> - [[Order a shipment of military themed clothing|Wardrobe][cashX(-5000, "capEx"), $clothesBoughtMilitary = 1]] - //Costs <<print cashFormat(5000)>>// + [[Order a shipment of military themed clothing|Wardrobe][cashX(forceNeg(Math.trunc(5000 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtMilitary = 1]] + //Costs <<print cashFormat(Math.trunc(5000 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with a variety of military themed garb. <</if>> <br> <<if !isItemAccessible("a dirndl")>> - [[Order a shipment of cultural outfits|Wardrobe][cashX(-15000, "capEx"), $clothesBoughtCultural = 1]] - //Costs <<print cashFormat(15000)>>// + [[Order a shipment of cultural outfits|Wardrobe][cashX(forceNeg(Math.trunc(15000 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtCultural = 1]] + //Costs <<print cashFormat(Math.trunc(15000 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with a variety of signature outfits from a variety of countries. <</if>> <br> <<if !isItemAccessible("a burqa")>> - [[Order a shipment of burqas and similar garb|Wardrobe][cashX(-5000, "capEx"), $clothesBoughtMiddleEastern = 1]] - //Costs <<print cashFormat(5000)>>// + [[Order a shipment of burqas and similar garb|Wardrobe][cashX(forceNeg(Math.trunc(5000 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtMiddleEastern = 1]] + //Costs <<print cashFormat(Math.trunc(5000 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with a number of burqas and similar clothing. <</if>> <br> <<if !isItemAccessible("jeans")>> - [[Order an extra large shipment of casual clothing|Wardrobe][cashX(-5000, "capEx"), $clothesBoughtCasual = 1]] - //Costs <<print cashFormat(5000)>>// + [[Order an extra large shipment of casual clothing|Wardrobe][cashX(forceNeg(Math.trunc(5000 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtCasual = 1]] + //Costs <<print cashFormat(Math.trunc(5000 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with casual clothing. <</if>> <br> <<if !isItemAccessible("a police uniform")>> - [[Order a shipment of professional garments|Wardrobe][cashX(-2500, "capEx"), $clothesBoughtCareer = 1]] - //Costs <<print cashFormat(2500)>>// + [[Order a shipment of professional garments|Wardrobe][cashX(forceNeg(Math.trunc(2500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtCareer = 1]] + //Costs <<print cashFormat(Math.trunc(2500 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with selection of professional outfits. <</if>> <br> <<if !isItemAccessible("a gothic lolita dress")>> - [[Order a shipment of professionally tailored dresses|Wardrobe][cashX(-15000, "capEx"), $clothesBoughtDresses = 1]] - //Costs <<print cashFormat(15000)>>// + [[Order a shipment of professionally tailored dresses|Wardrobe][cashX(forceNeg(Math.trunc(15000 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtDresses = 1]] + //Costs <<print cashFormat(Math.trunc(15000 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with selection of fine dresses. <</if>> <br> <<if !isItemAccessible("a cybersuit")>> - [[Order a shipment of exotic bodysuits|Wardrobe][cashX(-7500, "capEx"), $clothesBoughtBodysuits = 1]] - //Costs <<print cashFormat(7500)>>// + [[Order a shipment of exotic bodysuits|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtBodysuits = 1]] + //Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with selection of bodysuits. <</if>> <br> <<if !isItemAccessible("boyshorts")>> - [[Order a shipment of undergarments|Wardrobe][cashX(-5000, "capEx"), $clothesBoughtUnderwear = 1]] - //Costs <<print cashFormat(5000)>>// + [[Order a shipment of undergarments|Wardrobe][cashX(forceNeg(Math.trunc(5000 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtUnderwear = 1]] + //Costs <<print cashFormat(Math.trunc(5000 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with underwear. <</if>> <br> <<if !isItemAccessible("sport shorts and a sports bra")>> - [[Order a shipment of exercise wear|Wardrobe][cashX(-2500, "capEx"), $clothesBoughtSports = 1]] - //Costs <<print cashFormat(2500)>>// + [[Order a shipment of exercise wear|Wardrobe][cashX(forceNeg(Math.trunc(2500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtSports = 1]] + //Costs <<print cashFormat(Math.trunc(2500 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with exercise wear. <</if>> <br> <<if !isItemAccessible("a one-piece swimsuit")>> - [[Order a shipment of swimwear|Wardrobe][cashX(-3500, "capEx"), $clothesBoughtSwimwear = 1]] - //Costs <<print cashFormat(3500)>>// + [[Order a shipment of swimwear|Wardrobe][cashX(forceNeg(Math.trunc(3500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtSwimwear = 1]] + //Costs <<print cashFormat(Math.trunc(3500 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with swimwear. <</if>> <br> <<if !isItemAccessible("a nice pony outfit")>> - [[Order a shipment of specialized latex ponygirl outfits|Wardrobe][cashX(-10000, "capEx"), $clothesBoughtPony = 1]] - //Costs <<print cashFormat(10000)>>// + [[Order a shipment of specialized latex ponygirl outfits|Wardrobe][cashX(forceNeg(Math.trunc(10000 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtPony = 1]] + //Costs <<print cashFormat(Math.trunc(10000 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with ponygirl bodysuits. <</if>> <br> <<if !isItemAccessible("a schutzstaffel uniform")>> - [[Order a shipment of politically incorrect clothing|Wardrobe][cashX(-15000, "capEx"), $clothesBoughtPol = 1]] - //Costs <<print cashFormat(15000)>>// + [[Order a shipment of politically incorrect clothing|Wardrobe][cashX(forceNeg(Math.trunc(15000 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtPol = 1]] + //Costs <<print cashFormat(Math.trunc(15000 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with a selection of outfits once considered distasteful. <</if>> <br> <<if !isItemAccessible("a Santa dress")>> - [[Order a shipment of colorful and revealing costumes|Wardrobe][cashX(-15000, "capEx"), $clothesBoughtCostume = 1]] - //Costs <<print cashFormat(15000)>>// + [[Order a shipment of colorful and revealing costumes|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtCostume = 1]] + //Costs <<print cashFormat(Math.trunc(15000 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with a variety of costume party supplies. <</if>> <br> <<if !isItemAccessible("shimapan panties")>> - [[Order a large crate of panties from Japan|Wardrobe][cashX(-2500, "capEx"), $clothesBoughtPantsu = 1]] - //Costs <<print cashFormat(2500)>>// + [[Order a large crate of panties from Japan|Wardrobe][cashX(forceNeg(Math.trunc(2500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtPantsu = 1]] + //Costs <<print cashFormat(Math.trunc(2500 * $upgradeMultiplierTrade))>>// <<else>> You have an impressive stash of panties and other striped underwear that may or may not be have at one point been used. <</if>> <br><br> <<if !isItemAccessible("a small empathy belly")>> - [[Order a shipment of fake pregnancy bellies|Wardrobe][cashX(-15000, "capEx"), $clothesBoughtBelly = 1]] - //Costs <<print cashFormat(15000)>>// + [[Order a shipment of fake pregnancy bellies|Wardrobe][cashX(forceNeg(Math.trunc(15000 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtBelly = 1]] + //Costs <<print cashFormat(Math.trunc(15000 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with silicone pregnancy bellies modeled after variously sized women. <</if>> <br><br> <<if $toysBoughtDildos == 0>> - [[Order a shipment of extra long dildos|Wardrobe][cashX(-10000, "capEx"), $toysBoughtDildos = 1]] - //Costs <<print cashFormat(10000)>>// + [[Order a shipment of extra long dildos|Wardrobe][cashX(forceNeg(Math.trunc(10000 * $upgradeMultiplierTrade)), "capEx"), $toysBoughtDildos = 1]] + //Costs <<print cashFormat(Math.trunc(10000 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with extra long dildos in a variety of sizes. <</if>> <br> <<if $toysBoughtVaginalAttachments == 0>> - [[Order a shipment of bullet vibes and vibrating dildos|Wardrobe][cashX(-10000, "capEx"), $toysBoughtVaginalAttachments = 1]] - //Costs <<print cashFormat(10000)>>// + [[Order a shipment of bullet vibes and vibrating dildos|Wardrobe][cashX(forceNeg(Math.trunc(10000 * $upgradeMultiplierTrade)), "capEx"), $toysBoughtVaginalAttachments = 1]] + //Costs <<print cashFormat(Math.trunc(10000 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with bullet vibrators and vibrating dildos. <</if>> <br> <<if $toysBoughtButtPlugs == 0>> - [[Order a shipment of extra long buttplugs|Wardrobe][cashX(-10000, "capEx"), $toysBoughtButtPlugs = 1]] - //Costs <<print cashFormat(10000)>>// + [[Order a shipment of extra long buttplugs|Wardrobe][cashX(forceNeg(Math.trunc(10000 * $upgradeMultiplierTrade)), "capEx"), $toysBoughtButtPlugs = 1]] + //Costs <<print cashFormat(Math.trunc(10000 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with extra long buttplugs in a variety of sizes. <</if>> <br> <<if $toysBoughtButtPlugTails == 0>> - [[Order a shipment of attachable tails|Wardrobe][cashX(-5000, "capEx"), $toysBoughtButtPlugTails = 1]] - //Costs <<print cashFormat(5000)>>// + [[Order a shipment of attachable tails|Wardrobe][cashX(forceNeg(Math.trunc(5000 * $upgradeMultiplierTrade)), "capEx"), $toysBoughtButtPlugTails = 1]] + //Costs <<print cashFormat(Math.trunc(5000 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with tails to attach to your buttplugs. <</if>> <br> <<if $toysBoughtGags == 0>> - [[Order a shipment of extra long dildo gags|Wardrobe][cashX(-5000, "capEx"), $toysBoughtGags = 1]] - //Costs <<print cashFormat(5000)>>// + [[Order a shipment of extra long dildo gags|Wardrobe][cashX(forceNeg(Math.trunc(5000 * $upgradeMultiplierTrade)), "capEx"), $toysBoughtGags = 1]] + //Costs <<print cashFormat(Math.trunc(5000 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with extra long dildo gags. <</if>> @@ -317,15 +317,14 @@ The room containing all the clothes and accessories you have available to dress <br> <<if $enema == 0>> - [[Order enema supplies|Wardrobe][cashX(-5000, "capEx"), $enema = 1]] - //Costs <<print cashFormat(5000)>>// + [[Order enema supplies|Wardrobe][cashX(forceNeg(Math.trunc(5000 * $upgradeMultiplierTrade)), "capEx"), $enema = 1]] + //Costs <<print cashFormat(Math.trunc(5000 * $upgradeMultiplierTrade))>>// <<else>> You are well stocked with specially formulated liquids to be used safely for long term enemas along with the tools needed to keep a slave bloated for extended periods of time. <<if $medicalEnema == 0>> - [[Order medical enema supplies|Wardrobe][cashX(-25000, "capEx"), $medicalEnema = 1]] - //Costs <<print cashFormat(25000)>>// + [[Order medical enema supplies|Wardrobe][cashX(forceNeg(Math.trunc(25000 * $upgradeMultiplierTrade)), "capEx"), $medicalEnema = 1]] + //Costs <<print cashFormat(Math.trunc(25000 * $upgradeMultiplierTrade))>>// <<else>> You are also well stocked with drugs to be mixed with the enema water for use in medical enemas. <</if>> <</if>> - diff --git a/src/uncategorized/wardrobeUse.tw b/src/uncategorized/wardrobeUse.tw index 5ebd2fe8eda8e94d2c1d6e21a95c22211e1134ec..6aeecb154501d71fb88d5376b96b50a9f587fa19 100644 --- a/src/uncategorized/wardrobeUse.tw +++ b/src/uncategorized/wardrobeUse.tw @@ -1103,12 +1103,14 @@ Clothes: ''<span id="clothes">$activeSlave.clothes</span>.'' <<replace "#vaginalAccessoryDescription">>//<<vaginalAccessoryDescription>>//<</replace>> <<replace "#buttplugDescription">>//<<buttplugDescription>>//<</replace>> <</link>> - | <<link "Bullet vibrator">> - <<set $activeSlave.vaginalAccessory = "bullet vibrator">> - <<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>> - <<replace "#vaginalAccessoryDescription">>//<<vaginalAccessoryDescription>>//<</replace>> - <<replace "#buttplugDescription">>//<<buttplugDescription>>//<</replace>> - <</link>> + <<if isItemAccessible("bullet vibrator")>> + | <<link "Bullet vibrator">> + <<set $activeSlave.vaginalAccessory = "bullet vibrator">> + <<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>> + <<replace "#vaginalAccessoryDescription">>//<<vaginalAccessoryDescription>>//<</replace>> + <<replace "#buttplugDescription">>//<<buttplugDescription>>//<</replace>> + <</link>> + <</if>> | <<link "Dildo">> <<set $activeSlave.vaginalAccessory = "dildo">> <<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>> @@ -1153,13 +1155,9 @@ Clothes: ''<span id="clothes">$activeSlave.clothes</span>.'' <</link>> <</if>> <</if>> - <<if isItemAccessible("vibrator")>> + <<if isItemAccessible("vibrator") && $activeSlave.vaginalAccessory != "none" && $activeSlave.vaginalAccessory != "bullet vibrator" && $toysBoughtVaginalAttachments == 1>> <br><br> - <<if $activeSlave.vaginalAccessory != "none">> - Vaginal accessory attachment: - <<else>> - Vaginal attachment: - <</if>> + Vaginal accessory attachment: ''<span id="vaginalAttachment">$activeSlave.vaginalAttachment</span>.'' <span id="vaginalAttachmentDescription"><<if ($activeSlave.vaginalAttachment != "none")>><br><</if>>//<<vaginalAttachmentDescription>>//</span> <br> @@ -1167,7 +1165,7 @@ Clothes: ''<span id="clothes">$activeSlave.clothes</span>.'' <<set $activeSlave.vaginalAttachment = "none">> <<replace "#vaginalAttachment">>$activeSlave.vaginalAttachment<</replace>> <<replace "#vaginalAttachmentDescription">>//<<vaginalAccessoryDescription>>//<</replace>> - <<replace "#buttplugDescription">>//<<buttplugDescription>>//<</replace>> /* TODO: don't actually know if I need this - what is this for? */ + <<replace "#buttplugDescription">>//<<buttplugDescription>>//<</replace>> <</link>> | <<link "Vibrating dildo">> <<set $activeSlave.vaginalAttachment = "vibrator">> @@ -1180,7 +1178,10 @@ Clothes: ''<span id="clothes">$activeSlave.clothes</span>.'' <<if $activeSlave.dick > 0>> <br><br>Dick accessory: ''<span id="dickAccessory">$activeSlave.dickAccessory</span>.'' - <span id="dickAccessoryDescription"><<if ($activeSlave.dickAccessory != "none")>><br><</if>>//<<dickAccessoryDescription>>//</span> + <span id="dickAccessoryDescription"> + <<if ($activeSlave.dickAccessory != "none")>> + <br><</if>>//<<dickAccessoryDescription>>// + </span> <br> <<link "None">> <<set $activeSlave.dickAccessory = "none">> @@ -1188,6 +1189,14 @@ Clothes: ''<span id="clothes">$activeSlave.clothes</span>.'' <<replace "#dickAccessoryDescription">>//<<dickAccessoryDescription>>//<</replace>> <<replace "#buttplugDescription">>//<<buttplugDescription>>//<</replace>> <</link>> + <<if isItemAccessible("bullet vibrator") && $toysBoughtVaginalAttachments == 1>> + | <<link "Bullet vibrator">> + <<set $activeSlave.dickAccessory = "bullet vibrator">> + <<replace "#dickAccessory">>$activeSlave.dickAccessory<</replace>> + <<replace "#dickAccessoryDescription">>//<<dickAccessoryDescription>>//<</replace>> + <<replace "#buttplugDescription">>//<<buttplugDescription>>//<</replace>> + <</link>> + <</if>> <</if>> <br><br> Anal accessory: ''<span id="buttplug">$activeSlave.buttplug</span>.'' diff --git a/src/utility/descriptionWidgetsFlesh.tw b/src/utility/descriptionWidgetsFlesh.tw index 95dd2e5772febc0bd6fc00c4782032822533bdc1..d7d9eaa468a5b791fd4b094c9b2a82ca245bd7e0 100644 --- a/src/utility/descriptionWidgetsFlesh.tw +++ b/src/utility/descriptionWidgetsFlesh.tw @@ -1011,66 +1011,66 @@ $His <<elseif $activeSlave.boobs < 500>><<print either("perky", "small")>> <<print either("boobs", "bosoms", "breasts", "tits")>><<if $showBoobCCs == 1>>, <<print $activeSlave.boobs>> CCs each,<</if>> would fill B-cups. <<elseif $activeSlave.boobs < 650>><<print either("curved", "healthy")>> <<print either("boobs", "bosoms", "breasts", "tits")>><<if $showBoobCCs == 1>>, <<print $activeSlave.boobs>> CCs each,<</if>> would fill C-cups. <<elseif $activeSlave.boobs < 800>><<print either("big", "sizable")>> <<print either("boobs", "bosoms", "breasts", "tits")>><<if $showBoobCCs == 1>>, <<print $activeSlave.boobs>> CCs each,<</if>> would fill D-cups. -<<elseif $activeSlave.boobs < 1000>><<print either("big", "large")>> <<print either("boobs", "bosoms", "breasts", "tits")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill DD-cups. -<<elseif $activeSlave.boobs < 1200>><<print either("hefty", "proud")>> <<print either("tits", "breasts", "mammaries", "udders", "boobs")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill F-cups. -<<elseif $activeSlave.boobs < 1400>><<print either("hefty", "huge")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill G-cups. -<<elseif $activeSlave.boobs < 1600>><<print either("huge", "massive")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill H-cups. -<<elseif $activeSlave.boobs < 1800>><<print either("enormous", "massive")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill I-cups. -<<elseif $activeSlave.boobs < 2050>><<print either("enormous", "titanic")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill J-cups. -<<elseif $activeSlave.boobs < 2300>><<print either("stupendous", "titanic")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill K-cups. -<<elseif $activeSlave.boobs < 2600>><<print either("magnificent", "stupendous")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill L-cups. -<<elseif $activeSlave.boobs < 2900>><<print either("impressive", "magnificent")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill M-cups. -<<elseif $activeSlave.boobs < 3250>><<print either("awe-inspiring", "impressive")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill N-cups. -<<elseif $activeSlave.boobs < 3600>><<print either("absurd", "awe-inspiring")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill O-cups. -<<elseif $activeSlave.boobs < 3950>><<print either("attention-grabbing", "disproportionate")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill P-cups. -<<elseif $activeSlave.boobs < 4300>><<print either("massive", "shocking")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill Q-cups. -<<elseif $activeSlave.boobs < 4700>><<print either("jaw-dropping", "striking")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill R-cups. +<<elseif $activeSlave.boobs < 1000>><<print either("big", "large")>> <<print either("boobs", "bosoms", "breasts", "tits")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill DD-cups. +<<elseif $activeSlave.boobs < 1200>><<print either("hefty", "proud")>> <<print either("tits", "breasts", "mammaries", "udders", "boobs")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill F-cups. +<<elseif $activeSlave.boobs < 1400>><<print either("hefty", "huge")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill G-cups. +<<elseif $activeSlave.boobs < 1600>><<print either("huge", "massive")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill H-cups. +<<elseif $activeSlave.boobs < 1800>><<print either("enormous", "massive")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill I-cups. +<<elseif $activeSlave.boobs < 2050>><<print either("enormous", "titanic")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill J-cups. +<<elseif $activeSlave.boobs < 2300>><<print either("stupendous", "titanic")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill K-cups. +<<elseif $activeSlave.boobs < 2600>><<print either("magnificent", "stupendous")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill L-cups. +<<elseif $activeSlave.boobs < 2900>><<print either("impressive", "magnificent")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill M-cups. +<<elseif $activeSlave.boobs < 3250>><<print either("awe-inspiring", "impressive")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill N-cups. +<<elseif $activeSlave.boobs < 3600>><<print either("absurd", "awe-inspiring")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill O-cups. +<<elseif $activeSlave.boobs < 3950>><<print either("attention-grabbing", "disproportionate")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill P-cups. +<<elseif $activeSlave.boobs < 4300>><<print either("massive", "shocking")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill Q-cups. +<<elseif $activeSlave.boobs < 4700>><<print either("jaw-dropping", "striking")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill R-cups. <<elseif $activeSlave.boobs < 5000+($activeSlave.muscles*10) && $activeSlave.physicalAge <= 3>> <<if ($activeSlave.amp == 1)>> - <<print either("astounding", "tremendous")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill S-cups and are so large that $he might not be able to walk, if $he still had legs. + <<print either("astounding", "tremendous")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill S-cups and are so large that $he might not be able to walk, if $he still had legs. <<elseif ($activeSlave.muscles > 5)>> - <<print either("astounding", "tremendous")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill S-cups and are so large that $his <<if $activeSlave.muscles > 95>>shredded<<elseif $activeSlave.muscles > 30>>rippling<<else>>toned<</if>> back muscles get a workout just from supporting them. If they grow any larger, $he may not be able to walk. + <<print either("astounding", "tremendous")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill S-cups and are so large that $his <<if $activeSlave.muscles > 95>>shredded<<elseif $activeSlave.muscles > 30>>rippling<<else>>toned<</if>> back muscles get a workout just from supporting them. If they grow any larger, $he may not be able to walk. <<else>> - <<print either("astounding", "tremendous")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill S-cups and are so large that $he can barely stand. If they grow any larger, $he may not be able to walk. + <<print either("astounding", "tremendous")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill S-cups and are so large that $he can barely stand. If they grow any larger, $he may not be able to walk. <</if>> -<<elseif $activeSlave.boobs < 5100>><<print either("astounding", "tremendous")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill S-cups. -<<elseif $activeSlave.boobs < 5500>><<print either("frightening", "unmissable")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill T-cups. -<<elseif $activeSlave.boobs < 6000>><<print either("attention-grabbing", "unmissable")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill U-cups. -<<elseif $activeSlave.boobs < 6500>><<print either("attention-grabbing", "spectacular")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill V-cups. -<<elseif $activeSlave.boobs < 7000>><<print either("obviously engineered", "spectacular")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill W-cups. -<<elseif $activeSlave.boobs < 7500>><<print either("disproportionate", "obviously engineered")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill X-cups. -<<elseif $activeSlave.boobs < 8000>><<print either("disproportionate", "nearly inhuman")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill Y-cups. -<<elseif $activeSlave.boobs < 8500>><<print either("nearly alien", "nearly inhuman")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> would fill Z-cups. +<<elseif $activeSlave.boobs < 5100>><<print either("astounding", "tremendous")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill S-cups. +<<elseif $activeSlave.boobs < 5500>><<print either("frightening", "unmissable")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill T-cups. +<<elseif $activeSlave.boobs < 6000>><<print either("attention-grabbing", "unmissable")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill U-cups. +<<elseif $activeSlave.boobs < 6500>><<print either("attention-grabbing", "spectacular")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill V-cups. +<<elseif $activeSlave.boobs < 7000>><<print either("obviously engineered", "spectacular")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill W-cups. +<<elseif $activeSlave.boobs < 7500>><<print either("disproportionate", "obviously engineered")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill X-cups. +<<elseif $activeSlave.boobs < 8000>><<print either("disproportionate", "nearly inhuman")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill Y-cups. +<<elseif $activeSlave.boobs < 8500>><<print either("nearly alien", "nearly inhuman")>> <<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> would fill Z-cups. <<elseif $activeSlave.boobs < 10000+($activeSlave.muscles*20) && $activeSlave.physicalAge <= 12>> <<if ($activeSlave.amp == 1)>> - <<print either("boobs", "breasts", "mammaries", "udders")>> have <<if $activeSlave.boobsImplant>>been altered<<else>>grown<</if>> past any pretense of proportion.<<if $showBoobCCs == 1>> At <<print commaNum($activeSlave.boobs)>> CCs each, they<<else>> They<</if>> are so large that $he might not be able to walk, if $he still had legs. + <<print either("boobs", "breasts", "mammaries", "udders")>> have <<if $activeSlave.boobsImplant>>been altered<<else>>grown<</if>> past any pretense of proportion.<<if $showBoobCCs == 1>> At <<print num($activeSlave.boobs)>> CCs each, they<<else>> They<</if>> are so large that $he might not be able to walk, if $he still had legs. <<elseif ($activeSlave.muscles >= 5)>> - <<print either("boobs", "breasts", "mammaries", "udders")>> have <<if $activeSlave.boobsImplant>>been altered<<else>>grown<</if>> past any pretense of proportion.<<if $showBoobCCs == 1>> At <<print commaNum($activeSlave.boobs)>> CCs each, they<<else>> They<</if>> are so large that $his <<if $activeSlave.muscles > 95>>shredded<<elseif $activeSlave.muscles > 30>>rippling<<else>>toned<</if>> back muscles get a workout just from supporting them. If they grow any larger, $he may not be able to walk. + <<print either("boobs", "breasts", "mammaries", "udders")>> have <<if $activeSlave.boobsImplant>>been altered<<else>>grown<</if>> past any pretense of proportion.<<if $showBoobCCs == 1>> At <<print num($activeSlave.boobs)>> CCs each, they<<else>> They<</if>> are so large that $his <<if $activeSlave.muscles > 95>>shredded<<elseif $activeSlave.muscles > 30>>rippling<<else>>toned<</if>> back muscles get a workout just from supporting them. If they grow any larger, $he may not be able to walk. <<else>> - <<print either("boobs", "breasts", "mammaries", "udders")>> have <<if $activeSlave.boobsImplant>>been altered<<else>>grown<</if>> past any pretense of proportion.<<if $showBoobCCs == 1>> At <<print commaNum($activeSlave.boobs)>> CCs each, they<<else>> They<</if>> are so large that $he can barely stand. If they grow any larger, $he may not be able to walk. + <<print either("boobs", "breasts", "mammaries", "udders")>> have <<if $activeSlave.boobsImplant>>been altered<<else>>grown<</if>> past any pretense of proportion.<<if $showBoobCCs == 1>> At <<print num($activeSlave.boobs)>> CCs each, they<<else>> They<</if>> are so large that $he can barely stand. If they grow any larger, $he may not be able to walk. <</if>> <<elseif $activeSlave.boobs < 20000+($activeSlave.muscles*50) && $activeSlave.physicalAge < 18>> <<if ($activeSlave.amp == 1)>> - <<print either("boobs", "breasts", "mammaries", "udders")>> have <<if $activeSlave.boobsImplant>>been altered<<else>>grown<</if>> past any pretense of proportion.<<if $showBoobCCs == 1>> At <<print commaNum($activeSlave.boobs)>> CCs each, they<<else>> They<</if>> are so large that $he might not be able to walk, if $he still had legs. + <<print either("boobs", "breasts", "mammaries", "udders")>> have <<if $activeSlave.boobsImplant>>been altered<<else>>grown<</if>> past any pretense of proportion.<<if $showBoobCCs == 1>> At <<print num($activeSlave.boobs)>> CCs each, they<<else>> They<</if>> are so large that $he might not be able to walk, if $he still had legs. <<elseif ($activeSlave.muscles >= 5)>> - <<print either("boobs", "breasts", "mammaries", "udders")>> have <<if $activeSlave.boobsImplant>>been altered<<else>>grown<</if>> past any pretense of proportion.<<if $showBoobCCs == 1>> At <<print commaNum($activeSlave.boobs)>> CCs each, they<<else>> They<</if>> are so large that $his <<if $activeSlave.muscles > 95>>shredded<<elseif $activeSlave.muscles > 30>>rippling<<else>>toned<</if>> back muscles get a workout just from supporting them. If they grow any larger, $he may not be able to walk. + <<print either("boobs", "breasts", "mammaries", "udders")>> have <<if $activeSlave.boobsImplant>>been altered<<else>>grown<</if>> past any pretense of proportion.<<if $showBoobCCs == 1>> At <<print num($activeSlave.boobs)>> CCs each, they<<else>> They<</if>> are so large that $his <<if $activeSlave.muscles > 95>>shredded<<elseif $activeSlave.muscles > 30>>rippling<<else>>toned<</if>> back muscles get a workout just from supporting them. If they grow any larger, $he may not be able to walk. <<else>> - <<print either("boobs", "breasts", "mammaries", "udders")>> have <<if $activeSlave.boobsImplant>>been altered<<else>>grown<</if>> past any pretense of proportion.<<if $showBoobCCs == 1>> At <<print commaNum($activeSlave.boobs)>> CCs each, they<<else>> They<</if>> are so large that $he can barely stand. If they grow any larger, $he may not be able to walk. + <<print either("boobs", "breasts", "mammaries", "udders")>> have <<if $activeSlave.boobsImplant>>been altered<<else>>grown<</if>> past any pretense of proportion.<<if $showBoobCCs == 1>> At <<print num($activeSlave.boobs)>> CCs each, they<<else>> They<</if>> are so large that $he can barely stand. If they grow any larger, $he may not be able to walk. <</if>> -<<elseif $activeSlave.boobs < 20000>><<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> have <<if $activeSlave.boobsImplant>>been altered<<else>>grown<</if>> past any pretense of proportion. +<<elseif $activeSlave.boobs < 20000>><<print either("breasts", "mammaries", "tits", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> have <<if $activeSlave.boobsImplant>>been altered<<else>>grown<</if>> past any pretense of proportion. <<elseif $activeSlave.boobs < 30000+($activeSlave.muscles*100) && $activeSlave.physicalAge >= 18>> <<if $activeSlave.amp == 1>> - <<print either("boobs", "breasts", "mammaries", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> are so large that $he might not be able to walk, if $he still had legs. + <<print either("boobs", "breasts", "mammaries", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> are so large that $he might not be able to walk, if $he still had legs. <<elseif ($activeSlave.muscles > 5)>> - <<print either("boobs", "breasts", "mammaries", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> are so large that $his <<if $activeSlave.muscles > 95>>shredded<<elseif $activeSlave.muscles > 30>>rippling<<else>>toned<</if>> back muscles get a workout just from supporting them. If they grow any larger, $he may not be able to walk. + <<print either("boobs", "breasts", "mammaries", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> are so large that $his <<if $activeSlave.muscles > 95>>shredded<<elseif $activeSlave.muscles > 30>>rippling<<else>>toned<</if>> back muscles get a workout just from supporting them. If they grow any larger, $he may not be able to walk. <<else>> - <<print either("boobs", "breasts", "mammaries", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> are so large that $he can barely stand. If they grow any larger, $he may not be able to walk. + <<print either("boobs", "breasts", "mammaries", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> are so large that $he can barely stand. If they grow any larger, $he may not be able to walk. <</if>> <<else>> <<if $activeSlave.amp == 1>> - <<print either("tits", "boobs", "mammaries")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> are so immense it is safer to leave $him resting atop them. $His udders each weigh more than twice the rest of $his body, since $his body consists of nothing but $his head, torso, and breasts. + <<print either("tits", "boobs", "mammaries")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> are so immense it is safer to leave $him resting atop them. $His udders each weigh more than twice the rest of $his body, since $his body consists of nothing but $his head, torso, and breasts. <<else>> - <<print either("tits", "boobs", "mammaries", "udders")>><<if $showBoobCCs == 1>>, <<print commaNum($activeSlave.boobs)>> CCs each,<</if>> are so gargantuan that they effectively immobilize $him. $He's most comfortable lying down. + <<print either("tits", "boobs", "mammaries", "udders")>><<if $showBoobCCs == 1>>, <<print num($activeSlave.boobs)>> CCs each,<</if>> are so gargantuan that they effectively immobilize $him. $He's most comfortable lying down. <</if>> <</if>> @@ -5445,7 +5445,7 @@ $He's got a <</if>> <</if>> <<print either("tend to droop when $he is relaxed or sad", "twitch at the slightest touch")>>. -<<elseif $activeSlave.earT == "human">> +<<elseif $activeSlave.earT == "normal">> $He has <<if $activeSlave.earShape != "none">>a second set<<else>>a pair<</if>> of non-functioning ears grafted to the top of $his head. <</if>> @@ -16360,6 +16360,10 @@ $He has Tests show $his womb contains <<if $activeSlave.pregType > 1>><<if $activeSlave.pregType > 10>>many of <</if>>your growing children<<else>>your growing child<</if>>. <<elseif $activeSlave.pregSource == -2>> Tests show $his womb contains <<if $activeSlave.pregType > 1>><<if $activeSlave.pregType > 10>>many <</if>>children <<else>>a child <</if>>fathered by one of your citizens. + <<elseif $activeSlave.pregSource == -3>> + Tests show $his womb contains <<if $activeSlave.pregType > 1>><<if $activeSlave.pregType > 10>>many <</if>>children <<else>>a child <</if>>fathered by your former Master. He was quite the busy man. + <<elseif $activeSlave.pregSource == -9>> + $His womb contains <<if $activeSlave.pregType > 1>><<if $activeSlave.pregType > 10>>many <</if>>children <<else>>a child <</if>>fathered by the Futanari Sisters, given how far along $he is and $his history. <<elseif $activeSlave.pregSource == 0>> Tests are inconclusive on who fathered the <<if $activeSlave.pregType > 1>><<if $activeSlave.pregType > 10>>many <</if>>children <<else>>child <</if>>growing in $his womb. <<elseif $activeSlave.pregSource == $activeSlave.ID>> @@ -16766,9 +16770,9 @@ $He has <<if $activeSlave.actualAge == 0>> <<print 0+$week-$activeSlave.weekAcquired>> weeks <<elseif $activeSlave.actualAge == 1>> - $activeSlave.actualAge year + <<= num($activeSlave.actualAge)>> year <<else>> - $activeSlave.actualAge years + <<= num($activeSlave.actualAge)>> years <</if>> old<<if ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. <<else>> @@ -16776,84 +16780,84 @@ $He has <<if $activeSlave.actualAge == 0>> <<print 0+$week-$activeSlave.weekAcquired>> weeks <<elseif $activeSlave.actualAge == 1>> - $activeSlave.actualAge year + <<= num($activeSlave.actualAge)>> year <<else>> - $activeSlave.actualAge years + <<= num($activeSlave.actualAge)>> years <</if>> old. <</if>> <<elseif $activeSlave.actualAge < 5>> a toddler, <<if $showAgeDetail == 1>> - $activeSlave.actualAge years old<<if ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. + <<= num($activeSlave.actualAge)>> years old<<if ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. <<else>> - only $activeSlave.actualAge years old. + only <<= num($activeSlave.actualAge)>> years old. <</if>> <<elseif $activeSlave.actualAge < 13>> a little $girl, <<if $showAgeDetail == 1>> - $activeSlave.actualAge years old<<if ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. + <<= num($activeSlave.actualAge)>> years old<<if ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. <<else>> - only $activeSlave.actualAge years old. + only <<= num($activeSlave.actualAge)>> years old. <</if>> <<elseif $activeSlave.actualAge < 16>> almost a child, <<if $showAgeDetail == 1>> - $activeSlave.actualAge years old<<if ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. + <<= num($activeSlave.actualAge)>> years old<<if ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. <<else>> less than 17 years old. <</if>> <<elseif $activeSlave.actualAge < 17>> - young and fresh at $activeSlave.actualAge<<if $showAgeDetail == 1 && ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. + young and fresh at <<= num($activeSlave.actualAge)>><<if $showAgeDetail == 1 && ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. <<elseif $activeSlave.actualAge < 18>> young, fresh, and nearly 18<<if $showAgeDetail == 1 && ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<if $seeAge == 1>> and people are already beginning to eye $him<</if>><<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. <<elseif $activeSlave.actualAge < 19>> <<if $activeSlave.birthWeek == 0 && $seeAge == 1>> - just turned $activeSlave.actualAge this week, which many citizens find especially appealing. + just turned <<= num($activeSlave.actualAge)>> this week, which many citizens find especially appealing. <<elseif $activeSlave.birthWeek < 4 && $seeAge == 1>> - only turned $activeSlave.actualAge this month. + only turned <<= num($activeSlave.actualAge)>> this month. <<else>> - $activeSlave.actualAge years old<<if $showAgeDetail == 1 && ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. + <<= num($activeSlave.actualAge)>> years old<<if $showAgeDetail == 1 && ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. <</if>> <<elseif $activeSlave.actualAge < 20>> in $his final year as a teenager at age 19<<if $showAgeDetail == 1 && ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. <<elseif $activeSlave.actualAge < 26>> a young $woman, <<if $showAgeDetail == 1>> - $activeSlave.actualAge years old<<if ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. + <<= num($activeSlave.actualAge)>> years old<<if ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. <<else>> in $his early twenties. <</if>> <<elseif $activeSlave.actualAge < 30>> a younger $woman, <<if $showAgeDetail == 1>> - $activeSlave.actualAge years old<<if ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. + <<= num($activeSlave.actualAge)>> years old<<if ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. <<else>> in $his late twenties. <</if>> <<elseif $activeSlave.actualAge < 36>> <<if $showAgeDetail == 1>> - $activeSlave.actualAge years old<<if ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. + <<= num($activeSlave.actualAge)>> years old<<if ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. <<else>> in $his early thirties. <</if>> <<elseif $activeSlave.actualAge < 40>> middle-aged for a slave, <<if $showAgeDetail == 1>> - at $activeSlave.actualAge years old<<if ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. + at <<= num($activeSlave.actualAge)>> years old<<if ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. <<else>> in $his late thirties. <</if>> <<else>> old for a slave, <<if $showAgeDetail == 1>> - at $activeSlave.actualAge years old<<if ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. + at <<= num($activeSlave.actualAge)>> years old<<if ($seeAge != 0)>>; <<if $activeSlave.birthWeek == 51>>$his birthday is next week<<else>>$his birthday is in <<print 52-$activeSlave.birthWeek>> weeks<</if>><</if>>. <<else>> - <<if $activeSlave.actualAge < 50>>in $his forties.<<elseif $activeSlave.actualAge < 60>>in $his fifties. <<elseif $activeSlave.actualAge < 70>>extremely old for a slave, in $his 60s.<<elseif $activeSlave.actualAge < 80>>extremely old for a slave, in $his 70s. <<elseif $activeSlave.actualAge < 90>>extremely old for a slave, in $his 80s.<<elseif $activeSlave.actualAge < 100>>extremely old for a slave, in $his 90s.<<elseif $activeSlave.actualAge >= 100>>ancient by any measure, over a century old.<</if>> + <<if $activeSlave.actualAge < 50>>in $his forties.<<elseif $activeSlave.actualAge < 60>>in $his fifties. <<elseif $activeSlave.actualAge < 70>>extremely old for a slave, in $his 60s.<<elseif $activeSlave.actualAge < 80>>extremely old for a slave, in $his <<= num(70)>>s. <<elseif $activeSlave.actualAge < 90>>extremely old for a slave, in $his <<= num(80)>>s.<<elseif $activeSlave.actualAge < 100>>extremely old for a slave, in $his <<= num(90)>>s.<<elseif $activeSlave.actualAge >= 100>>ancient by any measure, over a century old.<</if>> <</if>> <</if>> <<if $activeSlave.actualAge != $activeSlave.physicalAge>> - However, $he has the body of a <<print $activeSlave.physicalAge>>-year old; + However, $he has the body of a <<= num($activeSlave.physicalAge)>>-year old; <<if $activeSlave.physicalAge < 18 && $activeSlave.actualAge >= 18>> a stark contrast given $his maturity. <<elseif $activeSlave.physicalAge < 18 && $activeSlave.actualAge < 18>> diff --git a/src/utility/descriptionWidgetsStyle.tw b/src/utility/descriptionWidgetsStyle.tw index a8ebcadaece955fd3061f405872f1f5a79a5259b..e29a790e5b1146fc22c67cd831915b27a77f2c03 100644 --- a/src/utility/descriptionWidgetsStyle.tw +++ b/src/utility/descriptionWidgetsStyle.tw @@ -3609,7 +3609,7 @@ $His <</if>> <<elseif _pregCollar == 2>> <<if $activeSlave.pregWeek < 0>> - "<<= numberToWords($activeSlave.pregWeek*-1)>> week<<if $activeSlave.pregWeek != -1>>s<</if>> until I can get preggers again!" + "<<= num($activeSlave.pregWeek*-1)>> week<<if $activeSlave.pregWeek != -1>>s<</if>> until I can get preggers again!" <<elseif $activeSlave.pregKnown == 1>> <<if $activeSlave.broodmother == 2>> <<if $activeSlave.preg > 37>> @@ -3634,6 +3634,10 @@ $His "Womb claimed by my <<= WrittenMaster($activeSlave)>>!" <<elseif ($activeSlave.pregSource == -2 || $activeSlave.pregSource == 0)>> "Baby made by slutting around!" + <<elseif $activeSlave.pregSource == -7>> + "My baby was made with science!" + <<elseif $activeSlave.pregSource == -9>> + "Futanari Sisters, now two for the price of one!" <<elseif $activeSlave.pregSource > 0>> "Womb claimed by _daddy!" <<else>> diff --git a/src/utility/extendedFamilyWidgets.tw b/src/utility/extendedFamilyWidgets.tw index 0548a3081b6e070eea73f5cdebf2c09d680bb131..848bfd1c7be37d8e639c0a92dc72d8689c572cb6 100644 --- a/src/utility/extendedFamilyWidgets.tw +++ b/src/utility/extendedFamilyWidgets.tw @@ -748,7 +748,7 @@ <</if>> <<if $cheatMode == 1>> - $activeSlave.sisters sisters, $activeSlave.daughters daughters. + $He has $activeSlave.sisters sisters, and $activeSlave.daughters daughters. <</if>> <</widget>> diff --git a/src/utility/miscWidgets.tw b/src/utility/miscWidgets.tw index 46f3d90e418e306dd1481ae01c09845683d5daa7..e2f8e5f5ac3bed31ad9661ecccdf337d017a72ec 100644 --- a/src/utility/miscWidgets.tw +++ b/src/utility/miscWidgets.tw @@ -686,7 +686,7 @@ This experience <<elseif def $args[1]>> [[Customize the exterior of the arcology to support this goal|Future Society][$arcologies[0][_FSDecoration] = 100, State.variables[$args[1]] = 1, cashX(-20000, "capEx")]] //Costs <<print cashFormat(20000)>>// <<elseif $args[0] == "FSRestart">> - [[Customize the exterior of the arcology to support this goal and fully establish the Societal Elite|Future Society][$arcologies[0].FSRestartDecoration = 100, $upgradeMultiplierArcology = upgradeMultiplierArcology(), $upgradeMultiplierMedicine = 0.5, $cash -= 75000]] //Costs <<print cashFormat(75000)>> and may dilute your control over the arcology// + [[Customize the exterior of the arcology to support this goal and fully establish the Societal Elite|Future Society][$arcologies[0].FSRestartDecoration = 100, $upgradeMultiplierArcology = upgradeMultiplierArcology(), $upgradeMultiplierMedicine = upgradeMultiplierMedicine(), $cash -= 75000]] //Costs <<print cashFormat(75000)>> and may dilute your control over the arcology// <<else>> [[Customize the exterior of the arcology to support this goal|Future Society][$arcologies[0][_FSDecoration] = 100, cashX(-20000, "capEx")]] //Costs <<print cashFormat(20000)>>// <</if>> diff --git a/src/utility/slaveCreationWidgets.tw b/src/utility/slaveCreationWidgets.tw index 0ba79c5e55a442ef9e74175d4611cfdb283edf13..fc445c9fda38d31ac0608564f74dee09da139bbc 100644 --- a/src/utility/slaveCreationWidgets.tw +++ b/src/utility/slaveCreationWidgets.tw @@ -3735,6 +3735,7 @@ <<set $activeSlave.pregType = 1>> <</if>> <<set $activeSlave.pregWeek = $activeSlave.preg>> + <<set $activeSlave.pregSource = -9>> <</if>> <</if>> <<run SetBellySize($activeSlave)>>