diff --git a/devNotes/Useful JS Function Documentation.txt b/devNotes/Useful JS Function Documentation.txt index dbf7faa8c58a2863944c53f246acf7fe0e5e90fa..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)>>@@' 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/secBarracks.tw b/src/SecExp/secBarracks.tw index e1a8a60e1cc1cc419a502d741dcdb582d111a6f1..d00288aaa7e06245cf519474bb117a5b08132d4c 100644 --- a/src/SecExp/secBarracks.tw +++ b/src/SecExp/secBarracks.tw @@ -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>> @@ -165,7 +165,7 @@ 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>> @@ -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>> @@ -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>> 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/SpecialForce/SpecialForce.js b/src/SpecialForce/SpecialForce.js index 4b9719478e935a53ca35f27b61989e64f6443040..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, 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; + 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:-2, 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, @@ -99,16 +100,16 @@ window.SFBC = function() { TotalMercs:0}; TradeShow(); 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, @@ -132,51 +133,51 @@ window.SFBC = function() { } } 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.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(); @@ -184,14 +185,14 @@ 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.SF.UC.num=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") { @@ -201,13 +202,13 @@ window.SFReport = function() { } 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.SF.UC.num=Math.ceil(S.Troops*0.01); - } else { V.SF.UC.num=Math.ceil(S.Troops*0.05); } + 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); } } @@ -261,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; @@ -281,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") { @@ -324,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>>`; + 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.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; } @@ -367,37 +368,37 @@ 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(); @@ -406,13 +407,13 @@ window.Count = function() { }; 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); }; @@ -423,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)}`;} @@ -448,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.`; @@ -514,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.`; @@ -526,263 +530,431 @@ window.BadOutcome = function() { }; window.UnitText = function(input) { - "use strict"; const V=State.variables,T=State.temporary,S=V.SF.Squad; let r =``; + "use strict"; + const V = State.variables; + T = State.temporary; + S = V.SF.Squad; + let r = ``; switch(input) { case '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=``; + 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`; + 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.`; + 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}`; - } break; - case 'troop': r += `<br> The large dormitories are`; - Quantity=`the ${commaNum(S.Troops)} members of ${V.SF.Lower}`; - if (S.Troops < 100) {return `${r} sparsely occupied, ${Quantity} 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 `${r} lightly occupied, with ${Quantity} starting to spread out across them`;} - else if (S.Troops < 800) {return `${r} moderately occupied, though ${Quantity} residing within have a considerable amount of extra room`;} - else if (S.Troops < 1500) {return `${r} well-occupied, and ${Quantity} residing within have started to form small cliques based on section and row`;} - else {return `${r} near capacity, and ${Quantity} often barter their personal loot, whether it be monetary or human, for the choicest bunks`;} + } break; case 'armoury': - let 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.`; + 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': - let 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.`; + 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}`; - } break; - case 'UAV': if(S.Firebase >= 2 && S.Drones >= 1) { r += `<br><br>''Drone Bay:''`; - 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 `${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}`; - } break; + } + 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}`; + } + break; case '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.`, engine1=``, armor2=``, armor22=``, ammo1=``, mg=``, fireC0=``, fireC1=``, fireC2=``, fireC3=``, turret=``; + 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.`; + 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': - 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`, engine3=``, armor3=``, tires=``, m1=``, m2=``, pod1=``, pod2=``; + 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.`; + 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; + } + break; case 'PGT': - let 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=``; + 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`; + 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': - 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=``; + 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.`; + 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': - let Num=`number`, type=`tiltrotor`, capacity=`small platoon or 15`, engines0=``, engines01=``, Radar=``, Armor=``, landing=``, miniguns=``, counter=``; + 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.`; + 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': - let 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=``; + 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`; + 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': - let 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=``; + 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`; + 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': - let 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=``; + 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}`; + 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': - 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.`, armor8=``, actuator=``, cannon1=``, heatsink=``, ammo2=``, missile=``; + 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.`; + 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': - let 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=``; + 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`; + 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': - let 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=``; + 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`; + 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': - let 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=``; + 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.`; + 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': - let recom2=`; has been recommissioned for use by ${V.SF.Lower}. It`, tons=`200`, skirt=``, guns=``, guns2=``, fans=``, speed=``, turbines=``, armor10=``, ramps=``, HATframe=``, loadout=``; + 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.`; + 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">> @@ -791,22 +963,22 @@ window.UnitText = function(input) { }; /*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; @@ -833,7 +1005,7 @@ window.UnitText = function(input) { 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)) { @@ -857,18 +1029,18 @@ window.UnitText = function(input) { 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; @@ -893,36 +1065,36 @@ window.UnitText = function(input) { 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/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/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/facilities/farmyard/farmyard.tw b/src/facilities/farmyard/farmyard.tw index 12666fe9b69397ff4e9dba973f2a29ac7fa7e179..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> 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/longChildDescription.tw b/src/facilities/nursery/longChildDescription.tw index 8c06c38cd191fbe4b5c1c0ced5d556c3c0deff11..16f2b93a3e51cfc06a33460a7b89d24b791913e2 100644 --- a/src/facilities/nursery/longChildDescription.tw +++ b/src/facilities/nursery/longChildDescription.tw @@ -243,23 +243,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/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/js/SlaveState.js b/src/js/SlaveState.js index cb6e8e09b3fb572cc7cfc24b18904c5e75ff2a47..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. @@ -1528,6 +1529,7 @@ App.Entity.SlaveState = class SlaveState { * * "silk ribbon" * * "ball gag" * * "bit gag" + * * "ring gag" * * "porcelain mask" */ this.collar = "none"; @@ -1544,6 +1546,7 @@ App.Entity.SlaveState = class SlaveState { /** * may accept strings, use at own risk * * "none" + * * "bullet vibrator" * * "dildo" * * "large dildo" * * "huge dildo" @@ -1555,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/economyJS.js b/src/js/economyJS.js index 8ef3f5edff213e9dae0767e63e56b7672369cc8b..08b4014739b3dcce6672b37c6615d48cf6c67e9d 100644 --- a/src/js/economyJS.js +++ b/src/js/economyJS.js @@ -1,4 +1,3 @@ -/* eslint-disable no-redeclare */ /* eslint-disable no-undef */ window.LivingRule = Object.freeze({LUXURIOUS: 'luxurious', NORMAL: 'normal', SPARE: 'spare'}); window.Job = Object.freeze({ @@ -14,7 +13,7 @@ window.PersonalAttention = Object.freeze({TRADE: 'trading', WAR: 'warfare', SLAV window.predictCost = function(array) { const array2 = array; let totalCosts = ( - getBrothelCosts() + + getBrothelCosts() + getBrothelAdsCosts() + getArcadeCosts() + getClubCosts() + @@ -53,7 +52,7 @@ window.predictCost = function(array) { ); /* // clean up - if(totalCosts > 0) { + if (totalCosts > 0) { totalCosts = 0; } else { totalCosts = Math.ceil(totalCosts); @@ -143,7 +142,7 @@ window.getBrothelCosts = function() { window.getBrothelAdsCosts = function() { const brothel = State.variables.brothel; let costs = 0; - if(brothel > 0) { + if (brothel > 0) { costs += State.variables.brothelAdsSpending; } return costs; @@ -163,7 +162,7 @@ window.getClubCosts = function() { 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; @@ -172,7 +171,7 @@ window.getClubCosts = function() { window.getClubAdsCosts = function() { const club = State.variables.club; let costs = 0; - if(club > 0) { + if (club > 0) { costs += State.variables.clubAdsSpending; } return costs; @@ -184,7 +183,7 @@ window.getDairyCosts = function() { 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; @@ -199,7 +198,7 @@ window.getIncubatorCosts = function() { + (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; @@ -214,10 +213,10 @@ window.getServantsQuartersCosts = function() { window.getMasterSuiteCosts = function() { let costs = 0; - if(State.variables.masterSuitePregnancySlaveLuxuries === 1) { + if (State.variables.masterSuitePregnancySlaveLuxuries === 1) { costs += 500; } - if(State.variables.masterSuitePregnancyFertilitySupplements === 1) { + if (State.variables.masterSuitePregnancyFertilitySupplements === 1) { costs += 1000; } return costs; @@ -241,51 +240,51 @@ window.getSecurityExpansionCost = function() { //security expansion let secExpCost = 0; let soldierMod = 0; - if(State.variables.secExp === 1) { - if(State.variables.edictsUpkeep > 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) { + 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) { + 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) { + 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; } } @@ -306,7 +305,7 @@ window.getLifestyleCosts = function() { window.getFSCosts = function() { 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; @@ -321,7 +320,7 @@ window.getCitizenOrphanageCosts = function() { window.getPrivateOrphanageCosts = function() { let costs = 0; costs += State.variables.privateOrphanageTotal * 500; - if(State.variables.breederOrphanageTotal > 0) { + if (State.variables.breederOrphanageTotal > 0) { costs += 50; } return costs; @@ -329,7 +328,7 @@ window.getPrivateOrphanageCosts = function() { window.getPeacekeeperCosts = function() { let costs = 0; - if(State.variables.peacekeepers !== 0 && State.variables.peacekeepers.undermining !== 0) { + if (State.variables.peacekeepers !== 0 && State.variables.peacekeepers.undermining !== 0) { costs += State.variables.peacekeepers.undermining; } return costs; @@ -338,11 +337,11 @@ window.getPeacekeeperCosts = function() { window.getMercenariesCosts = function() { let costs = 0; let mercCosts = State.variables.mercenaries * 2000; - if(State.variables.mercenaries > 0) { - if(State.variables.barracks) { + 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; @@ -352,7 +351,7 @@ window.getMercenariesCosts = function() { window.getMenialRetirementCosts = function() { let costs = 0; - if(State.variables.citizenRetirementMenials === 1) { + if (State.variables.citizenRetirementMenials === 1) { costs += State.variables.menials * 2; } return costs; @@ -361,7 +360,7 @@ window.getMenialRetirementCosts = function() { // policy and other expenses window.getRecruiterCosts = function() { let costs = 0; - if(State.variables.Recruiter !== 0) { + if (State.variables.Recruiter !== 0) { costs += 250; } return costs; @@ -369,52 +368,52 @@ window.getRecruiterCosts = function() { window.getSchoolCosts = function() { let costs = 0; - if(State.variables.TSS.schoolPresent === 1) { + 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; @@ -422,25 +421,25 @@ window.getSchoolCosts = function() { window.getPolicyCosts = function() { let costs = 0; - const policyCost = State.variables.policyCost; - if(State.variables.alwaysSubsidizeGrowth === 1) { + 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; @@ -448,7 +447,7 @@ window.getPolicyCosts = function() { window.getCyberModCosts = function() { let costs = 0; - if(State.variables.cyberMod !== 0 && State.variables.researchLab.built === 'true') { + 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; @@ -458,18 +457,18 @@ window.getCyberModCosts = function() { //player expenses window.getPCTrainingCosts = function() { let costs = 0; - if(State.variables.PC.actualAge >= State.variables.IsInPrimePC && State.variables.PC.actualAge < State.variables.IsPastPrimePC) { - if(State.variables.personalAttention === PersonalAttention.TRADE) { + 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; } } @@ -477,14 +476,14 @@ window.getPCTrainingCosts = function() { }; window.getPCCosts = function() { let costs = 0; - if(State.variables.PC.preg === -1) { + 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; @@ -492,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; @@ -508,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); } } @@ -522,7 +521,7 @@ window.getEnvironmentCosts = function(cost) { window.getSFCosts = function() { let costs = 0; - if(State.variables.SF.Toggle && State.variables.SF.Active >= 1 && State.variables.SF.Subsidy !== undefined) { + if (State.variables.SF.Toggle && State.variables.SF.Active >= 1 && State.variables.SF.Subsidy !== undefined) { Count(); costs += Math.ceil(State.temporary.SFSubsidy); } return costs; @@ -530,10 +529,10 @@ window.getSFCosts = function() { window.getWeatherCosts = function() { let costs = 0; - if(State.variables.econWeatherDamage && State.variables.disasterResponse > 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; @@ -541,43 +540,43 @@ window.getWeatherCosts = function() { window.getSlaveMinorCosts = function(slave) { let costs = 0; - const rulesCost = State.variables.rulesCost; - if(slave.assignment === Job.SERVANT || slave.assignment === Job.SERVER) { - if(slave.trust < -20) { + 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; } } @@ -585,7 +584,7 @@ window.getSlaveMinorCosts = function(slave) { }; window.getSlaveCost = function(s) { - if(!s) { return 0; } + if (!s) { return 0; } // Data duplicated from Cost Report let cost = 0; const rulesCost = State.variables.rulesCost; @@ -598,11 +597,11 @@ 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; @@ -616,7 +615,7 @@ window.getSlaveCost = function(s) { } break; case Job.BROTHEL: - if(s.livingRules === LivingRule.NORMAL) { + if (s.livingRules === LivingRule.NORMAL) { cost += rulesCost * 1.5; } else { cost += rulesCost; @@ -626,28 +625,28 @@ window.getSlaveCost = function(s) { 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; @@ -655,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; @@ -667,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; @@ -687,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? @@ -724,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; @@ -811,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; @@ -823,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; @@ -858,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; @@ -891,7 +890,7 @@ window.getSlaveCost = function(s) { // PC buying slaves reduces supply, selling slaves reduces demand. window.menialSlaveCost = function(q) { - if(!q) { + if (!q) { q = 0; } const demand = State.variables.menialDemandFactor; @@ -905,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 { let corpAssets = 0; - if(V.corpDivExtra > 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; @@ -957,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)))); @@ -970,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; @@ -979,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; @@ -988,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; @@ -997,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; @@ -1006,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; @@ -1015,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; @@ -1024,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; @@ -1035,9 +1034,9 @@ window.corpDivWhoreSlavesRoom = function() { //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) { let raceArray = State.variables.corpSpecRaces; - if(raceArray.length > 0 && blacklist === 1) { + 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); @@ -1046,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, @@ -1055,11 +1054,11 @@ 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 { const data = { @@ -1124,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') { @@ -1141,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') { @@ -1175,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') { @@ -1184,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') { @@ -1196,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') { @@ -1226,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/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 a198122bcfaba6e7e5106c43d1bad52674817141..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); @@ -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/slaveSummaryWidgets.js b/src/js/slaveSummaryWidgets.js index ae064be43d7f029ff7599bf51f7cb891a766fe6d..fa8ff6642dddbc7aa7bbef0b79ba44a89ccae6d3 100644 --- a/src/js/slaveSummaryWidgets.js +++ b/src/js/slaveSummaryWidgets.js @@ -1,5 +1,3 @@ -/* eslint-disable no-unused-vars */ -/* eslint-disable no-redeclare */ /* eslint-disable no-undef */ window.clearSummaryCache = /** @param {App.Entity.SlaveState | number} slave */ function clearSummaryCache(slave) { if (!slave) @@ -2297,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) { @@ -2322,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 { /* @@ -2337,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>) `; @@ -3789,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; } @@ -3815,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; } @@ -3841,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; } @@ -3853,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; } @@ -3869,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; } @@ -3884,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) { @@ -3967,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; } @@ -3994,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; } @@ -4021,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; } @@ -4033,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; } @@ -4055,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; } @@ -4667,6 +4665,9 @@ window.SlaveSummaryUncached = (function(){ case "sock": r += `Cock sock.`; break; + case "vibrator": + r += `Frenulum bullet vibrator.`; + break; } r += " "; } @@ -4732,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), }; /** @@ -4860,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 + '>'; } @@ -4875,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(""); @@ -4898,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, + 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>>">... @@ -4987,7 +4988,7 @@ App.UI.slaveSummaryList = function (passageName) { const _slaveName = SlaveFullName(_Slave); - let _tableCount = 0; + 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">'); @@ -4996,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 */ } @@ -5005,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 */ @@ -5032,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 { @@ -5045,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 { @@ -5059,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; @@ -5072,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)); @@ -5081,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}]]]`); @@ -5096,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}]]]`); @@ -5110,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}]]]`); @@ -5125,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}]]]`); @@ -5139,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 { @@ -5152,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 { @@ -5174,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 { @@ -5188,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 { @@ -5201,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>`); @@ -5211,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 { @@ -5236,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 { @@ -5244,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 { @@ -5257,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 { @@ -5275,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)); @@ -5284,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 { @@ -5297,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)); @@ -5306,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 { @@ -5319,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)); @@ -5329,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 { @@ -5342,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}]]]`); @@ -5363,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 { @@ -5383,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 { @@ -5393,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}@@''__`); @@ -5401,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}]]]''__`); @@ -5409,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}]]]''__`); @@ -5426,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); @@ -5447,27 +5451,27 @@ 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'); @@ -5475,7 +5479,7 @@ App.UI.slaveSummaryList = function (passageName) { } else { 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 { @@ -5484,29 +5488,29 @@ App.UI.slaveSummaryList = function (passageName) { } 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`); @@ -5519,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 = [] + 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 { @@ -5564,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 { @@ -5580,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 { @@ -5617,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'); @@ -5638,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/>'); @@ -5658,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}]]`); @@ -5672,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]]'); @@ -5694,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]]'); @@ -5710,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]]'); @@ -5726,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>>`); @@ -5750,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]]'); @@ -5769,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]]'); @@ -5785,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]]'); @@ -5801,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]]'); @@ -5817,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]]'); @@ -5833,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]]'); @@ -5859,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>> @@ -5878,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/utilJS.js b/src/js/utilJS.js index c3316f352ca735c75890f9b3c168d47e0465be56..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// 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/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/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/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 e7c6c9938d78791d3c3499a23cdf557b02715ded..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,31 +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. @@ -568,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/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/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/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/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/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 11b6c7bded2ddf8fd8ceeaefa49a2180ab6ce614..be6622fe1bf32f5de725f97067d07155068e0068 100644 --- a/src/uncategorized/buySlaves.tw +++ b/src/uncategorized/buySlaves.tw @@ -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/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/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/longSlaveDescription.tw b/src/uncategorized/longSlaveDescription.tw index d9b597eda57891fdfdae00feb21bb182130554d0..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)>> 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/nextWeek.tw b/src/uncategorized/nextWeek.tw index ae7563add2d19eea26932d98fb06a41a78ed673c..384210fe9d8b5e6897569aa80fb08b4f96223e6b 100644 --- a/src/uncategorized/nextWeek.tw +++ b/src/uncategorized/nextWeek.tw @@ -383,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 = []>> 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/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/reRecruit.tw b/src/uncategorized/reRecruit.tw index 18b0819c9d07b3053d14f47d4e5d8f93c8c859cd..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">> 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/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw index 1dcad485e8d26ea8e6cb3213bb64665456528662..fc63525ccbaca1f44d362fdcb39c150ed7ad7671 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 */ diff --git a/src/uncategorized/seNonlethalPit.tw b/src/uncategorized/seNonlethalPit.tw index a9e1dffa4e0449f656bdfd933cfd0d0948c9e63e..77eb1d679803f63f6c439c8c1d0fd0d10eddf775 100644 --- a/src/uncategorized/seNonlethalPit.tw +++ b/src/uncategorized/seNonlethalPit.tw @@ -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/slaveInteract.tw b/src/uncategorized/slaveInteract.tw index 13fd470930b52dd2bb75935151e6bb75d0ba0ff0..22d32a04353c5aa6c7c4248fa6cff1e28b610ac6 100644 --- a/src/uncategorized/slaveInteract.tw +++ b/src/uncategorized/slaveInteract.tw @@ -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>.'' @@ -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 smart 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/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/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/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 cb97f8511de3b640ec603a36cdcbe69ea71a1b83..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>> @@ -16770,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>> @@ -16780,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 9626c29dda4b251b8d377004739b961b7edd64c9..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>>