diff --git a/Changelog.txt b/Changelog.txt index 8ca757c2fbbf18965130896152360dbe3f6136ec..524c3d0759bc2c1b3470b89e8cb82d297a8ecdc6 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -3,8 +3,8 @@ Pregmod 0.10.7.1-3.2.x 2 - -assignment tiredness affected by usage count - -added tiredness clearing to health focused attention + -tiredness overhauled + -slave performance listing -expanded racial eye, hair and skin color ranges -various fixes and balance changes diff --git a/devNotes/Useful JS Function Documentation.txt b/devNotes/Useful JS Function Documentation.txt index ce207214a82387fdc82dabee1d7052eae1ce41e7..5c1848870bad1628597d5aba957910ea2ed9b459 100644 --- a/devNotes/Useful JS Function Documentation.txt +++ b/devNotes/Useful JS Function Documentation.txt @@ -88,6 +88,8 @@ canBreed(slave1, slave2) - Returns if slave1 and slave2 are capable of breeding canImpreg(slave1, slave2) - Returns if slave2 can impregnate slave1. PC works as an argument as well. +canFemImpreg(slave1, slave2) - Returns if slave2 can squirt cum and impregnate slave1. Assumes a slave does not have a dick. PC works as an argument as well. + isFertile(slave) - Returns if the actor is capable of having children. canAchieveErection(slave) - Returns if the slave can get an erection. (Not blocked by chastity.) diff --git a/devTools/FC.d.ts b/devTools/FC.d.ts index 4f056f82d3c9d940f28e8ab3a8c71838f89930fd..252710a8cd1e87976f79e3566559453970c861b3 100644 --- a/devTools/FC.d.ts +++ b/devTools/FC.d.ts @@ -22,6 +22,10 @@ interface Window { } declare namespace App { + namespace Art {} + + namespace Corporate {} + namespace Data { namespace Pronouns { class Definition { @@ -35,9 +39,17 @@ declare namespace App { } } + namespace Debug {} + namespace Desc {} + namespace Entity { + namespace Utils {} } + namespace Facilities {} + + namespace Interact {} + namespace RA { class NumericTarget { cond: string; @@ -221,6 +233,17 @@ declare namespace App { } } + namespace SecExp {} + namespace SF {} + + namespace UI { + namespace DOM {} + namespace View {} + } + + namespace Update {} + namespace Utils {} + namespace Medicine { namespace Surgery { /** diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt index cb33cf24d9a823fa7478ad8e20955607ab588bdd..8bb6da7b614f90be6165a71f794ee5cc9d7e8507 100644 --- a/slave variables documentation - Pregmod.txt +++ b/slave variables documentation - Pregmod.txt @@ -999,9 +999,10 @@ slave's illness state health.tired: slave's level of exhaustion -0 - 50 - No effect -51 - 80 - Tired, small penalty to productivity and increase in devotion/fear -81 - 100 - Exhausted, medium penalty to productivity and increase in devotion/fear +0 - 30 - No effect +31 - 60 - Tired, increase in devotion or trust, depending on circumstances +61 - 90 - Fatigued, penalty to productivity and health and increase in devotion/fear +91 - 100 - Exhausted, major penalty to productivity, health and devotion/trust unless handled health.health: diff --git a/src/002-config/fc-js-init.js b/src/002-config/fc-js-init.js index 27db52b134934fac831a6d5f4bdd700180d9ed4a..ff16bb6b663e94dfc8ea59ef54558a9025662d97 100644 --- a/src/002-config/fc-js-init.js +++ b/src/002-config/fc-js-init.js @@ -17,6 +17,7 @@ App.Entity.Utils = {}; App.UI = {}; App.UI.DOM = {}; App.UI.View = {}; +App.Update = {}; App.Utils = {}; App.Interact = {}; App.Desc = {}; diff --git a/src/SecExp/attackReport.tw b/src/SecExp/attackReport.tw index f4daf424d3c64e5c3d7076359255799ef7e33b7d..e5a7ac58b1ffd2c825c2b386d1877573f5d7b2bb 100644 --- a/src/SecExp/attackReport.tw +++ b/src/SecExp/attackReport.tw @@ -1289,7 +1289,7 @@ <</if>> <<elseif $battleTerrain == "hills">> <<if $chosenTactic == "Bait and Bleed">> - While the hills offer some protection, they also make it harder to maneuver, bait and bleed tactics will not be 100% effective here. + While the hills offer some protection, they also make it harder to maneuver; bait and bleed tactics will not be 100% effective here. <<elseif $chosenTactic == "Guerrilla">> The hills offer protection to both your troops and your enemy's, making it harder for your men to accomplish guerrilla attacks effectively. <<elseif $chosenTactic == "Choke Points">> @@ -1311,15 +1311,15 @@ <<elseif $chosenTactic == "Guerrilla">> On the coast there's little space and protection to effectively employ guerrilla tactics. <<elseif $chosenTactic == "Choke Points">> - Amphibious attacks are difficult in the best of situations, the defender has a very easy time funneling the enemy towards their key defensive positions. + Amphibious attacks are difficult in the best of situations; the defender has a very easy time funneling the enemy towards their key defensive positions. <<elseif $chosenTactic == "Interior Lines">> - While in an amphibious landing mobility is not the defender best weapon, exploiting interior lines still affords your troops some advantages. + While in an amphibious landing mobility is not the defender's best weapon, exploiting interior lines still affords your troops some advantages. <<elseif $chosenTactic == "Pincer Maneuver">> Attempting to encircle a landing party is not the best course of action, but not the worst either. <<elseif $chosenTactic == "Defense In Depth">> In an amphibious assault it's very easy for the enemy to overextend, making defense in depth tactics quite effective. <<elseif $chosenTactic == "Blitzkrieg">> - The rough, restricted terrain does not lend itself well to lightning strikes, but the precarious position of the enemy still gives your mobile troops tactical superiority + The rough, restricted terrain does not lend itself well to lightning strikes, but the precarious position of the enemy still gives your mobile troops tactical superiority. <<elseif $chosenTactic == "Human Wave">> The rough, restricted terrain does not lend itself well to mass assaults, but the precarious position of the enemy still gives your troops tactical superiority. <</if>> @@ -1329,7 +1329,7 @@ <<elseif $chosenTactic == "Guerrilla">> Fighting just beneath the walls of the arcology does not allow for the dynamic redeployment of troops guerrilla tactics would require. <<elseif $chosenTactic == "Choke Points">> - The imposing structure of the arcology itself provides plenty of opportunities to create fortified choke points where to shatter the enemy assault. + The imposing structure of the arcology itself provides plenty of opportunities to create fortified choke points from which to shatter the enemy assault. <<elseif $chosenTactic == "Interior Lines">> While the presence of the arcology near the battlefield is an advantage, it does limit maneuverability, lowering overall effectiveness of interior lines tactics. <<elseif $chosenTactic == "Pincer Maneuver">> @@ -1343,21 +1343,21 @@ <</if>> <<elseif $battleTerrain == "mountains">> <<if $chosenTactic == "Bait and Bleed">> - While the mountains offer great protection, they also limit maneuverability, bait and bleed tactics will not be quite as effective here. + While the mountains offer great protection, they also limit maneuverability; bait and bleed tactics will not be quite as effective here. <<elseif $chosenTactic == "Guerrilla">> The mountains offer many excellent hiding spots and defensive positions, making guerrilla tactics very effective. <<elseif $chosenTactic == "Choke Points">> - The mountains offer plenty of opportunity to build strong defensive positions where to shatter the enemy's assault. + The mountains offer plenty of opportunity to build strong defensive positions from which to shatter the enemy's assault. <<elseif $chosenTactic == "Interior Lines">> While the rough terrain complicates maneuvers, the defensive advantages offered by the mountains offsets its negative impact. <<elseif $chosenTactic == "Pincer Maneuver">> - The rough terrain complicates maneuvers, your men have a really hard time pulling off an effective encirclement in this environment. + The rough terrain complicates maneuvers; your men have a really hard time pulling off an effective encirclement in this environment. <<elseif $chosenTactic == "Defense In Depth">> - While mobility is limited, defensive positions are plentiful, your men are not able to fully exploit overextended assaults, but are able to better resist them. + While mobility is limited, defensive positions are plentiful; your men are not able to fully exploit overextended assaults, but are able to better resist them. <<elseif $chosenTactic == "Blitzkrieg">> - The rough terrain complicates maneuvers, your men have a really hard time pulling off an effective lightning strike in this environment. + The rough terrain complicates maneuvers; your men have a really hard time pulling off an effective lightning strike in this environment. <<elseif $chosenTactic == "Human Wave">> - The rough terrain complicates maneuvers, your men have a really hard time pulling off an effective mass assault in this environment. + The rough terrain complicates maneuvers; your men have a really hard time pulling off an effective mass assault in this environment. <</if>> <<elseif $battleTerrain == "wasteland">> <<if $chosenTactic == "Bait and Bleed">> @@ -1365,11 +1365,11 @@ <<elseif $chosenTactic == "Guerrilla">> While the wastelands are mostly open terrain, there are enough hiding spots to make guerrilla tactics work well enough. <<elseif $chosenTactic == "Choke Points">> - The wastelands are mostly open terrain, your men have a difficult time setting up effective fortified positions. + The wastelands are mostly open terrain; your men have a difficult time setting up effective fortified positions. <<elseif $chosenTactic == "Interior Lines">> The wastelands, while rough, are mostly open terrain, where your men can exploit to the maximum the superior mobility of the defender. <<elseif $chosenTactic == "Pincer Maneuver">> - The wastelands, while rough, are mostly open terrain, your men can set up an effective encirclement here. + The wastelands, while rough, are mostly open terrain; your men can set up an effective encirclement here. <<elseif $chosenTactic == "Defense In Depth">> The wastelands, while rough, are mostly open terrain, allowing your men to liberally maneuver to exploit overextended enemies. <<elseif $chosenTactic == "Blitzkrieg">> diff --git a/src/SecExp/js/secExp.js b/src/SecExp/js/secExp.js index 3818dcc0ed090fef530916d5823f1edab76ff24a..d3cff6963bb24c358c1b27df25683eed4981817c 100644 --- a/src/SecExp/js/secExp.js +++ b/src/SecExp/js/secExp.js @@ -408,9 +408,11 @@ App.SecExp.Check = (function() { V.SecExp = {settings:{show:V.SecExp.settings.show}}; } + delete V.SecExp.army; + if (V.secExpEnabled > 0) { V.SecExp.core = V.SecExp.core || {}; - V.SecExp.army = V.SecExp.army || {}; + V.SecExp.core.trade = V.SecExp.core.trade || 0; if (passage() === "Acquisition" || V.SecExp.core.trade === 0) { const V = State.variables; @@ -462,58 +464,54 @@ App.SecExp.Check = (function() { V.SecExp.settings.battle.enabled = V.battlesEnabled; delete V.battlesEnabled; } - delete V.SecExp.battle; - V.SecExp.settings.battle.major = V.SecExp.settings.battle.major || {}; - V.SecExp.settings.battle.frequency = V.SecExp.settings.battle.frequency || 1; - if (jsDef(V.battleFrequency)) { - V.SecExp.settings.battle.frequency = V.battleFrequency; - delete V.battleFrequency; - } - V.SecExp.settings.battle.force = V.SecExp.settings.battle.force || 0; - if (jsDef(V.forceBattle)) { - V.SecExp.settings.battle.force = V.forceBattle; - delete V.forceBattle; - } + delete V.SecExp.battle; - if (jsDef(V.readiness)) { - if(V.readiness === 10) { - V.sectionInFirebase = 1; - } - delete V.readiness; + V.SecExp.settings.battle.major = V.SecExp.settings.battle.major || {}; + V.SecExp.settings.battle.frequency = V.SecExp.settings.battle.frequency || 1; + if (jsDef(V.battleFrequency)) { + V.SecExp.settings.battle.frequency = V.battleFrequency; + delete V.battleFrequency; + } + V.SecExp.settings.battle.force = V.SecExp.settings.battle.force || 0; + if (jsDef(V.forceBattle)) { + V.SecExp.settings.battle.force = V.forceBattle; + delete V.forceBattle; + } + + if (jsDef(V.readiness)) { + if(V.readiness === 10) { + V.sectionInFirebase = 1; } + delete V.readiness; + } - V.SecExp.settings.unitDescriptions = V.SecExp.settings.unitDescriptions || 0; + V.SecExp.settings.unitDescriptions = V.SecExp.settings.unitDescriptions || 0; - V.SecExp.settings.battle.allowSlavePrestige = V.SecExp.settings.battle.allowSlavePrestige || 1; - if (jsDef(V.allowPrestigeFromBattles)) { - V.SecExp.settings.battle.allowSlavePrestige = V.allowPrestigeFromBattles; - delete V.allowPrestigeFromBattles; - } + V.SecExp.settings.battle.allowSlavePrestige = V.SecExp.settings.battle.allowSlavePrestige || 1; + if (jsDef(V.allowPrestigeFromBattles)) { + V.SecExp.settings.battle.allowSlavePrestige = V.allowPrestigeFromBattles; + delete V.allowPrestigeFromBattles; + } - V.SecExp.settings.battle.major.enabled = V.SecExp.settings.battle.major.enabled || 1; - if (jsDef(V.majorBattlesEnabled)) { - V.SecExp.settings.battle.major.enabled = V.majorBattlesEnabled; - delete V.majorBattlesEnabled; - } + V.SecExp.settings.battle.major.enabled = V.SecExp.settings.battle.major.enabled || 1; + if (jsDef(V.majorBattlesEnabled)) { + V.SecExp.settings.battle.major.enabled = V.majorBattlesEnabled; + delete V.majorBattlesEnabled; + } - if (V.SecExp.settings.battle.major.enabled > 0) { - V.SecExp.settings.battle.major.gameOver = V.SecExp.settings.battle.major.gameOver || 1; - if (jsDef(V.majorBattleGameOver)) { - V.SecExp.settings.battle.major.gameOver = V.majorBattleGameOver; - delete V.majorBattleGameOver; - } - V.SecExp.settings.battle.major.force = V.SecExp.settings.battle.major.force || 0; - if (jsDef(V.forceMajorBattle)) { - V.SecExp.settings.battle.major.force = V.forceMajorBattle; - delete V.forceMajorBattle; - } + V.SecExp.settings.battle.major.gameOver = V.SecExp.settings.battle.major.gameOver || 1; + if (jsDef(V.majorBattleGameOver)) { + V.SecExp.settings.battle.major.gameOver = V.majorBattleGameOver; + delete V.majorBattleGameOver; + } + V.SecExp.settings.battle.major.force = V.SecExp.settings.battle.major.force || 0; + if (jsDef(V.forceMajorBattle)) { + V.SecExp.settings.battle.major.force = V.forceMajorBattle; + delete V.forceMajorBattle; + } - V.SecExp.settings.battle.major.mult = V.SecExp.settings.battle.major.mult || 1; - if (jsDef(V.majorBattleMult)) { - V.SecExp.settings.battle.major.mult = V.majorBattleMult; - delete V.majorBattleMult; - } - } + delete V.majorBattleMult; + delete V.SecExp.settings.battle.major.mult; V.SecExp.settings.rebellion = V.SecExp.settings.rebellion || {}; V.SecExp.settings.rebellion.enabled = V.SecExp.settings.rebellion.enabled || 1; @@ -522,22 +520,22 @@ App.SecExp.Check = (function() { delete V.rebellionsEnabled; } - V.SecExp.settings.rebellion.force = V.SecExp.settings.rebellion.force || 0; - if (jsDef(V.forceRebellion)) { - V.SecExp.settings.rebellion.force = V.forceRebellion; - delete V.forceRebellion; - } - V.SecExp.settings.rebellion.gameOver = V.SecExp.settings.rebellion.gameOver || 1; - if (jsDef(V.rebellionGameOver)) { - V.SecExp.settings.rebellion.gameOver = V.rebellionGameOver; - delete V.rebellionGameOver; - } + V.SecExp.settings.rebellion.force = V.SecExp.settings.rebellion.force || 0; + if (jsDef(V.forceRebellion)) { + V.SecExp.settings.rebellion.force = V.forceRebellion; + delete V.forceRebellion; + } + V.SecExp.settings.rebellion.gameOver = V.SecExp.settings.rebellion.gameOver || 1; + if (jsDef(V.rebellionGameOver)) { + V.SecExp.settings.rebellion.gameOver = V.rebellionGameOver; + delete V.rebellionGameOver; + } - V.SecExp.settings.rebellion.speed = V.SecExp.settings.rebellion.speed || 1; - if (jsDef(V.rebellionSpeed)) { - V.SecExp.settings.rebellion.speed = V.rebellionSpeed; - delete V.rebellionSpeed; - } + V.SecExp.settings.rebellion.speed = V.SecExp.settings.rebellion.speed || 1; + if (jsDef(V.rebellionSpeed)) { + V.SecExp.settings.rebellion.speed = V.rebellionSpeed; + delete V.rebellionSpeed; + } if (V.SecExp.settings.battle.enabled + V.SecExp.settings.rebellion.enabled > 0) { V.SecExp.settings.showStats = V.SecExp.settings.showStats || 0; diff --git a/src/SecExp/securityHQ.tw b/src/SecExp/securityHQ.tw index c223b268dfb8984839b2967706791bc1193599d6..02dffc50f5cf2f38a5d8ece5d941d75e5ed47a64 100644 --- a/src/SecExp/securityHQ.tw +++ b/src/SecExp/securityHQ.tw @@ -44,7 +44,7 @@ You have <span id="secHel"> <<print num($secMenials)>> </span> slaves working in <<set _finalMaxCost = Math.trunc(_maxMenials*(_menialPrice+_menialBulkPremium))>> [[(max)|securityHQ][$menials += Math.trunc(_maxMenials), $menialSupplyFactor -= Math.trunc(_maxMenials), cashX(-_finalMaxCost, "menialTransfer")]] <</if>> - //Bulk transactions may require offering a premium. The remaining slaves will be more efficient in dealling with crime.// + //Bulk transactions may require offering a premium. The remaining slaves will be more efficient in dealing with crime.// <</if>> <</if>> <<if $menials > 0>> @@ -223,14 +223,14 @@ Considering the current upgrades the resting level for security is <<print App.S <<if $secUpgrades.nanoCams == 0>> [[Install a nano-camera system |securityHQ][cashX(-Math.trunc(5000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier), "capEx"), $secUpgrades.nanoCams = 1]] - <br>//Costs <<print cashFormat(Math.trunc(5000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will raise rest point of security by 10 points, but will require 5 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealling with crime.// + <br>//Costs <<print cashFormat(Math.trunc(5000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will raise rest point of security by 10 points, but will require 5 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealing with crime.// <<else>> You have installed all across the arcology closed circuit nano-cameras to keep the arcology under your watchful eye. <</if>> <br> <<if $secUpgrades.cyberBots == 0>> [[Buy cybersecurity algorithms|securityHQ][cashX(-Math.trunc(7500*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier), "capEx"), $secUpgrades.cyberBots = 1]] - <br>//Costs <<print cashFormat(Math.trunc(7500*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will raise rest point of security by 10 points, but will require 5 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealling with crime.// + <br>//Costs <<print cashFormat(Math.trunc(7500*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will raise rest point of security by 10 points, but will require 5 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealing with crime.// <<else>> You have bought advanced cybersecurity algorithms that will defend your arcology against hack attempts or cyber frauds. <</if>> @@ -238,14 +238,14 @@ Considering the current upgrades the resting level for security is <<print App.S <<if $SecExp.core.authority > 10000>> <<if $secUpgrades.eyeScan == 0>> [[Install invisible eye scanners|securityHQ][cashX(-Math.trunc(10000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier), "capEx"), $secUpgrades.eyeScan = 1]] - <br>//Costs <<print cashFormat(Math.trunc(10000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will raise rest point of security by 15 points, but will require 10 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealling with crime.// + <br>//Costs <<print cashFormat(Math.trunc(10000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will raise rest point of security by 15 points, but will require 10 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealing with crime.// <<else>> You have installed numerous hidden eye scanners that accurately register the movements of everyone inside the arcology. <</if>> <br> <<if $secUpgrades.cryptoAnalyzer == 0>> [[Buy and install crypto analyzers|securityHQ][cashX(-Math.trunc(15000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier), "capEx"), $secUpgrades.cryptoAnalyzer = 1]] - <br>//Costs <<print cashFormat(Math.trunc(15000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will raise rest point of security by 15 points, but will require 10 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealling with crime.// + <br>//Costs <<print cashFormat(Math.trunc(15000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will raise rest point of security by 15 points, but will require 10 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealing with crime.// <<else>> You have bought and employed sophisticated crypto analyzing software to accurately track and archive every financial movement or transaction made inside the walls of your arcology. <</if>> @@ -276,14 +276,14 @@ Considering the current upgrades the maximum level of crime is <<print App.SecEx <<if $crimeUpgrades.advForensic == 0>> [[Install advanced forensic equipment|securityHQ][cashX(-Math.trunc(5000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier), "capEx"), $crimeUpgrades.advForensic = 1, $PC.skill.hacking += 1]] - <br>//Costs <<print cashFormat(Math.trunc(5000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will bring down the crime level cap by 10 points, but will require 5 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealling with crime.// + <br>//Costs <<print cashFormat(Math.trunc(5000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will bring down the crime level cap by 10 points, but will require 5 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealing with crime.// <<else>> You have installed advanced forensic equipment, able to extract every bit of precious information from any clue. <</if>> <br> <<if $crimeUpgrades.autoArchive == 0>> [[Install auto-curating archiver|securityHQ][cashX(-Math.trunc(7500*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier), "capEx"), $crimeUpgrades.autoArchive = 1, $PC.skill.hacking += 1]] - <br>//Costs <<print cashFormat(Math.trunc(7500*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will bring down the crime level cap by 10 points, but will require 5 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealling with crime.// + <br>//Costs <<print cashFormat(Math.trunc(7500*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will bring down the crime level cap by 10 points, but will require 5 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealing with crime.// <<else>> You have installed auto-curating archiver software, which will update in real time your data archives with any new relevant information on criminals residing in your arcology. <</if>> @@ -291,14 +291,14 @@ Considering the current upgrades the maximum level of crime is <<print App.SecEx <<if $SecExp.core.authority > 10000>> <<if $crimeUpgrades.autoTrial == 0>> [[Install automated trials software|securityHQ][cashX(-Math.trunc(10000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier), "capEx"), $crimeUpgrades.autoTrial = 1, $PC.skill.hacking += 1]] - <br>//Costs <<print cashFormat(Math.trunc(10000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will bring down the crime level cap by 15 points, but will require 10 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealling with crime.// + <br>//Costs <<print cashFormat(Math.trunc(10000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will bring down the crime level cap by 15 points, but will require 10 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealing with crime.// <<else>> You have installed advanced legal algorithms that allows the handling of legal matters much quicker and much more accurately. <</if>> <br> <<if $crimeUpgrades.worldProfiler == 0>> [[Install worldwide profilers|securityHQ][cashX(-Math.trunc(15000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier), "capEx"), $crimeUpgrades.worldProfiler = 1, $PC.skill.hacking += 1]] - <br>//Costs <<print cashFormat(Math.trunc(15000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will bring down the crime level cap by 15 points, but will require 10 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealling with crime.// + <br>//Costs <<print cashFormat(Math.trunc(15000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will bring down the crime level cap by 15 points, but will require 10 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealing with crime.// <<else>> You have installed advanced profiler software, which will constantly scour every known data archive on the globe (legally or not) to gather as much information as possible on dangerous criminals. <</if>> @@ -326,14 +326,14 @@ Considering the current upgrades the maximum level of crime is <<print App.SecEx <<if $intelUpgrades.sensors == 0>> [[Install perimeter sensors|securityHQ][cashX(-Math.trunc(5000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier), "capEx"), $intelUpgrades.sensors = 1, $PC.skill.hacking += 1]] - <br>//Costs <<print cashFormat(Math.trunc(5000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will increase recon capabilities, but will require 5 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealling with crime.// + <br>//Costs <<print cashFormat(Math.trunc(5000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will increase recon capabilities, but will require 5 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealing with crime.// <<else>> You have installed perimeter seismic sensors able to detect movement with high accuracy. <</if>> <br> <<if $intelUpgrades.signalIntercept == 0>> [[Create signal interception hub|securityHQ][cashX(-Math.trunc(10000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier), "capEx"), $intelUpgrades.signalIntercept = 1, $PC.skill.hacking += 1]] - <br>//Costs <<print cashFormat(Math.trunc(10000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will increase recon capabilities, but will require 5 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealling with crime.// + <br>//Costs <<print cashFormat(Math.trunc(10000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will increase recon capabilities, but will require 5 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealing with crime.// <<else>> You have installed advanced signal interception equipment. <</if>> @@ -341,7 +341,7 @@ Considering the current upgrades the maximum level of crime is <<print App.SecEx <<if $SecExp.core.authority > 10000>> <<if $intelUpgrades.radar == 0>> [[Install advanced radar equipment|securityHQ][cashX(-Math.trunc(15000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier), "capEx"), $intelUpgrades.radar = 1, $PC.skill.hacking += 1]] - <br>//Costs <<print cashFormat(Math.trunc(15000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will increase recon capabilities, but will require 10 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealling with crime.// + <br>//Costs <<print cashFormat(Math.trunc(15000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will increase recon capabilities, but will require 10 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealing with crime.// <<else>> You have installed sophisticated radar equipment. <</if>> @@ -369,14 +369,14 @@ Considering the current upgrades the maximum level of crime is <<print App.SecEx <<if $readinessUpgrades.pathways == 0>> [[Build specialized pathways in the arcology|securityHQ][cashX(-Math.trunc(5000*$upgradeMultiplierArcology*_HistoryDiscount), "capEx"), $readinessUpgrades.pathways = 1]] - <br>//Costs <<print cashFormat(Math.trunc(5000*$upgradeMultiplierArcology*_HistoryDiscount))>>. Will increase readiness by 1, but will increase upkeep. The remaining slaves will be more efficient in dealling with crime.// + <br>//Costs <<print cashFormat(Math.trunc(5000*$upgradeMultiplierArcology*_HistoryDiscount))>>. Will increase readiness by 1, but will increase upkeep. The remaining slaves will be more efficient in dealing with crime.// <<else>> You have built specialized pathways inside the arcology to quickly move troops around the structure. <</if>> <br> <<if $readinessUpgrades.rapidVehicles == 0>> [[Buy rapid armored transport vehicles|securityHQ][cashX(-Math.trunc(7500*$upgradeMultiplierArcology*_HistoryDiscount), "capEx"), $readinessUpgrades.rapidVehicles = 1]] - <br>//Costs <<print cashFormat(Math.trunc(7500*$upgradeMultiplierArcology*_HistoryDiscount))>>. Will increase readiness by 2, but will require 5 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealling with crime.// + <br>//Costs <<print cashFormat(Math.trunc(7500*$upgradeMultiplierArcology*_HistoryDiscount))>>. Will increase readiness by 2, but will require 5 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealing with crime.// <<else>> You have bought rapid armored transport vehicles able to bring your troops to battle much quicker than before. <</if>> @@ -384,14 +384,14 @@ Considering the current upgrades the maximum level of crime is <<print App.SecEx <<if $SecExp.core.authority > 10000>> <<if $readinessUpgrades.rapidPlatforms == 0>> [[Build rapid deployment platforms|securityHQ][cashX(-Math.trunc(10000*$upgradeMultiplierArcology*_HistoryDiscount), "capEx"), $readinessUpgrades.rapidPlatforms = 1]] - <br>//Costs <<print cashFormat(Math.trunc(10000*$upgradeMultiplierArcology*_HistoryDiscount))>>. Will increase readiness by 2, but will require 5 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealling with crime.// + <br>//Costs <<print cashFormat(Math.trunc(10000*$upgradeMultiplierArcology*_HistoryDiscount))>>. Will increase readiness by 2, but will require 5 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealing with crime.// <<else>> You have built rapid deployment platforms able to equip and deploy units within very limited time windows. <</if>> <br> <<if $readinessUpgrades.earlyWarn == 0>> [[Institute early warning systems|securityHQ][cashX(-Math.trunc(15000*$upgradeMultiplierArcology*_HistoryDiscount), "capEx"), $readinessUpgrades.earlyWarn = 1]] - <br>//Costs <<print cashFormat(Math.trunc(15000*$upgradeMultiplierArcology*_HistoryDiscount))>>. Will increase readiness by 2, but will require 10 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealling with crime.// + <br>//Costs <<print cashFormat(Math.trunc(15000*$upgradeMultiplierArcology*_HistoryDiscount))>>. Will increase readiness by 2, but will require 10 extra slaves in the headquarters and increases upkeep. The remaining slaves will be more efficient in dealing with crime.// <<else>> You have created early warning systems that constantly analyze in real time data to determine the likeness of an attack. <</if>> @@ -411,35 +411,35 @@ Considering the current upgrades the maximum level of crime is <<print App.SecEx <br>You have installed a cold storage facility for the Security HQ's archives with a data retention capability of two years. <br> [[Expand the cold storage facility to increase data retention to three years|securityHQ][cashX(-Math.trunc(2400000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier), "capEx"), $secUpgrades.coldstorage++, $PC.skill.hacking += 1]] - <br>//Costs <<print cashFormat(Math.trunc(2400000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will lower the amount of required slaves by a further 10, but will increase upkeep. The remaining slaves will be more efficient in dealling with crime.// + <br>//Costs <<print cashFormat(Math.trunc(2400000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will lower the amount of required slaves by a further 10, but will increase upkeep. The remaining slaves will be more efficient in dealing with crime.// <<elseif $secUpgrades.coldstorage == 5 && $SecExp.core.authority >= 19500 && App.SecExp.Check.reqMenials() > 10>> <br>You have installed a cold storage facility for the Security HQ's archives with a data retention capability of one year. <br> [[Expand the cold storage facility to increase data retention to two years|securityHQ][cashX(-Math.trunc(1200000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier), "capEx"), $secUpgrades.coldstorage++, $PC.skill.hacking += 1]] - <br>//Costs <<print cashFormat(Math.trunc(1200000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will lower the amount of required slaves by a further 10, but will increase upkeep. The remaining slaves will be more efficient in dealling with crime.// + <br>//Costs <<print cashFormat(Math.trunc(1200000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will lower the amount of required slaves by a further 10, but will increase upkeep. The remaining slaves will be more efficient in dealing with crime.// <<elseif $secUpgrades.coldstorage == 4 && $SecExp.core.authority >= 19500 && App.SecExp.Check.reqMenials() > 10>> <br>You have installed a cold storage facility for the Security HQ's archives with a data retention capability of nine months. <br> [[Expand the cold storage facility to increase data retention to one year|securityHQ][cashX(-Math.trunc(900000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier), "capEx"), $secUpgrades.coldstorage++, $PC.skill.hacking += 1]] - <br>//Costs <<print cashFormat(Math.trunc(900000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will lower the amount of required slaves by a further 10, but will increase upkeep. The remaining slaves will be more efficient in dealling with crime.// + <br>//Costs <<print cashFormat(Math.trunc(900000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will lower the amount of required slaves by a further 10, but will increase upkeep. The remaining slaves will be more efficient in dealing with crime.// <<elseif $secUpgrades.coldstorage == 3 && $SecExp.core.authority > 18000 && App.SecExp.Check.reqMenials() > 10>> <br>You have installed a cold storage facility for the Security HQ's archives with a data retention capability of six months. <br> [[Expand the cold storage facility to increase data retention to nine months|securityHQ][cashX(-Math.trunc(600000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier), "capEx"), $secUpgrades.coldstorage++, $PC.skill.hacking += 1]] - <br>//Costs <<print cashFormat(Math.trunc(600000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will lower the amount of required slaves by a further 10, but will increase upkeep. The remaining slaves will be more efficient in dealling with crime.// + <br>//Costs <<print cashFormat(Math.trunc(600000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will lower the amount of required slaves by a further 10, but will increase upkeep. The remaining slaves will be more efficient in dealing with crime.// <<elseif $secUpgrades.coldstorage == 2 && $SecExp.core.authority > 16000 && App.SecExp.Check.reqMenials() > 10>> <br>You have installed a cold storage facility for the Security HQ's archives with a data retention capability of three months. <br> [[Expand the cold storage facility to increase data retention to six months|securityHQ][cashX(-Math.trunc(300000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier), "capEx"), $secUpgrades.coldstorage++, $PC.skill.hacking += 1]] - <br>//Costs <<print cashFormat(Math.trunc(300000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will lower the amount of required slaves by a further 10, but will increase upkeep. The remaining slaves will be more efficient in dealling with crime.// + <br>//Costs <<print cashFormat(Math.trunc(300000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will lower the amount of required slaves by a further 10, but will increase upkeep. The remaining slaves will be more efficient in dealing with crime.// <<elseif $secUpgrades.coldstorage == 1 && $SecExp.core.authority > 14000 && App.SecExp.Check.reqMenials() > 10>> <br>You have installed a cold storage facility for the Security HQ's archives with a data retention capability of one month. <br> [[Expand the cold storage facility to increase data retention to three months|securityHQ][cashX(-Math.trunc(100000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier), "capEx"), $secUpgrades.coldstorage++, $PC.skill.hacking += 1]] - <br>//Costs <<print cashFormat(Math.trunc(100000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will lower the amount of required slaves by a further 10, but will increase upkeep. The remaining slaves will be more efficient in dealling with crime.// + <br>//Costs <<print cashFormat(Math.trunc(100000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will lower the amount of required slaves by a further 10, but will increase upkeep. The remaining slaves will be more efficient in dealing with crime.// <<elseif $secUpgrades.coldstorage == 0 && $SecExp.core.authority > 12000 && App.SecExp.Check.reqMenials() > 10>> [[Install a cold storage facility|securityHQ][cashX(-Math.trunc(50000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier), "capEx"), $secUpgrades.coldstorage++, $PC.skill.hacking += 1]] - <br>//Costs <<print cashFormat(Math.trunc(50000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will lower the amount of required slaves by 10, but will increase upkeep. The remaining slaves will be more efficient in dealling with crime.// + <br>//Costs <<print cashFormat(Math.trunc(50000*$upgradeMultiplierArcology*_HistoryDiscount*$HackingSkillMultiplier))>>. Will lower the amount of required slaves by 10, but will increase upkeep. The remaining slaves will be more efficient in dealing with crime.// <</if>> <<else>> <br>You lack the authority to access more advanced upgrades. diff --git a/src/SecExp/securityReport.tw b/src/SecExp/securityReport.tw index 86e8193996460efc4e79b02d8cd378b4edd1e7ff..4e1c0441e46c7dcf6c388698213de7c478c23777 100644 --- a/src/SecExp/securityReport.tw +++ b/src/SecExp/securityReport.tw @@ -336,9 +336,9 @@ Due to the deterioration of the old world countries, organized crime focuses mor <</if>> <<if $SecExp.core.authority > 12000>> <<if $secUpgrades.coldstorage < 6>> - <<if $secUpgrades.coldstorage === 0>>Adding a facility<<else>>Improving the cold storage facility attached<</if>> to the SecurityHQ should allow the staff to be more efficient in dealling with crime. + <<if $secUpgrades.coldstorage === 0>>Adding a facility<<else>>Improving the cold storage facility attached<</if>> to the SecurityHQ should allow the staff to be more efficient in dealing with crime. <<else>> - The cold storage facility attached to SecurityHQ allows the staff to be more efficient in dealling with crime. + The cold storage facility attached to SecurityHQ allows the staff to be more efficient in dealing with crime. <</if>> <</if>> <<set _newCrime = Math.trunc(Math.clamp($SecExp.core.crimeLow + _crimeGrowth,0,_crimeCap))>> diff --git a/src/SecExp/widgets/miscSecExpWidgets.tw b/src/SecExp/widgets/miscSecExpWidgets.tw index 35f83a4f6fb4811af7392ddaa41023c5587cb21d..d48b05e8be2b2717cbe820b57717de754260615c 100644 --- a/src/SecExp/widgets/miscSecExpWidgets.tw +++ b/src/SecExp/widgets/miscSecExpWidgets.tw @@ -251,9 +251,13 @@ <</widget>> <<widget "replenishAllUnits">> - <<set _hasLossesM = 0>> - <<set _hasLossesS = 0>> - <<set _hasLossesMe = 0>> + <<set _hasLossesBots = 0, _hasLossesM = 0>> + <<set _hasLossesS = 0, _hasLossesMe = 0>> + + <<if $secBots.troops < $secBots.maxTroops && $cash >= 500>> + <<set _hasLossesBots = 1>> + <<break>> + <</if>> <<for _i = 0; _i < $militiaUnits.length; _i++>> <<if $militiaUnits[_i].troops < $militiaUnits[_i].maxTroops && $militiaFreeManpower > 0>> @@ -276,9 +280,12 @@ <</if>> <</for>> - <<if _hasLossesM == 1 && $militiaFreeManpower > 0 || _hasLossesS == 1 && $menials > 0 || _hasLossesMe == 1 && $mercFreeManpower > 0>> - + <<if _hasLossesBots == 1 || _hasLossesM == 1 || _hasLossesS == 1 || _hasLossesMe == 1>> <br><br><<link "Replenish all units">> + <<if _hasLossesBots == 1>> + <<run cashX(-((_$secBots.maxTroops - $secBots.troops) * 500), "securityExpansion")>> + <<set $secBots.troops = $secBots.maxTroops>> + <</if>> <<if _hasLossesM == 1>> <<for _i = 0; _i < $militiaUnits.length; _i++>> @@ -349,7 +356,7 @@ <</if>> <</link>> - //Will replenish units as long as manpower is available + //Will replenish units as long as requirements are met.//<br> <</if>> -<</widget>> \ No newline at end of file +<</widget>> diff --git a/src/art/vector/VectorArtJS.js b/src/art/vector/VectorArtJS.js index 903f98a3192c532d6f7a41a349bbf864d0114d40..5419aee0eb611645209edb88784e622076290c55 100644 --- a/src/art/vector/VectorArtJS.js +++ b/src/art/vector/VectorArtJS.js @@ -1680,7 +1680,6 @@ App.Art.vectorArtElement = (function() { T.eyebrowHairColour = extractColor(slave.eyebrowHColor); if (hasAnyEyes(slave)) { T.sclerae = extractColor(hasLeftEye(slave) ? slave.eye.left.sclera : slave.eye.right.sclera); - } else { T.sclerae = extractColor("white"); } diff --git a/src/data/backwardsCompatibility/updateCustomSlaveOrder.js b/src/data/backwardsCompatibility/updateCustomSlaveOrder.js new file mode 100644 index 0000000000000000000000000000000000000000..79bd6a4bf60318eb4caf1243a127062fe9dd1b56 --- /dev/null +++ b/src/data/backwardsCompatibility/updateCustomSlaveOrder.js @@ -0,0 +1,43 @@ +/** Update custom slave orders (customSlave/huskSlave). + * @param {App.Entity.CustomSlaveOrder} customSlaveOrder + */ +App.Update.CustomSlaveOrder = function(customSlaveOrder) { + if (!customSlaveOrder.hasOwnProperty("leg")) { + if (jsDef(customSlaveOrder.amp) && customSlaveOrder.amp === 1) { + customSlaveOrder.leg = {left: null, right: null}; + } else { + customSlaveOrder.leg = {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()}; + } + } + + if (!customSlaveOrder.hasOwnProperty("arm")) { + if (jsDef(customSlaveOrder.amp) && customSlaveOrder.amp === 1) { + customSlaveOrder.arm = {left: null, right: null}; + } else { + customSlaveOrder.arm = {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()}; + } + } + + if (customSlaveOrder.hasOwnProperty("amp")) { + delete customSlaveOrder.amp; + } + + if (!customSlaveOrder.hasOwnProperty("skill")) { + customSlaveOrder.skill = {whore: 15, combat: 0}; + } + + if (customSlaveOrder.hasOwnProperty("whoreSkills")) { + customSlaveOrder.skill.whore = customSlaveOrder.whoreSkills; + delete customSlaveOrder.whoreSkills; + } + + if (customSlaveOrder.hasOwnProperty("combatSkills")) { + customSlaveOrder.skill.combat = customSlaveOrder.combatSkills; + delete customSlaveOrder.combatSkills; + } + + if (V.releaseID < 1059) { + customSlaveOrder.eye = new App.Entity.EyeState(); + delete customSlaveOrder.eyes; + } +}; diff --git a/src/data/backwardsCompatibility/updateSlaveObject.js b/src/data/backwardsCompatibility/updateSlaveObject.js new file mode 100644 index 0000000000000000000000000000000000000000..020a52e8b04690a79f104c393ccfc57fdb9c7820 --- /dev/null +++ b/src/data/backwardsCompatibility/updateSlaveObject.js @@ -0,0 +1,1308 @@ +App.Update.Slave = function(slave) { + + slave.geneticQuirks = Object.assign({macromastia: 0, gigantomastia: 0, fertility: 0, hyperFertility: 0, superfetation: 0, gigantism: 0, dwarfism: 0, pFace: 0, uFace: 0, albinism: 0, heterochromia: 0, rearLipedema: 0, wellHung: 0, wGain: 0, wLoss: 0, mGain: 0, mLoss: 0, androgyny: 0, girlsOnly: 0}, slave.geneticQuirks); + + WombInit(slave); + + if (slave.earShape === undefined) { slave.earShape = "normal"; } + if (slave.earT === undefined) { slave.earT = "none"; } + if (slave.earTColor === undefined) { slave.earTColor = "hairless"; } + if (slave.horn === undefined) { slave.horn = "none"; } + if (slave.hornColor === undefined) { slave.hornColor = "none"; } + if (slave.tail === undefined) { slave.tail = "none"; } + if (slave.tailShape === undefined) { slave.tailShape = "none"; } + if (slave.tailColor === undefined) { slave.tailColor = "none"; } + if (slave.prostateImplant !== undefined) { + if (slave.prostateImplant === 1) { + slave.prostate = 3; + } + delete slave.prostateImplant; + } + if (slave.daughters === undefined) { slave.daughters = 0; } + if (slave.sisters === undefined) { slave.sisters = 0; } + if (slave.pregGenerator !== undefined) { delete slave.pregGenerator; } + if (slave.pregAdaptation === undefined) { + if (slave.physicalAge <= 3) { + slave.pregAdaptation = 10; + } else if (slave.physicalAge <= 12 || slave.genes === "XY") { + slave.pregAdaptation = 20; + } else if (slave.physicalAge <= 17) { + slave.pregAdaptation = 30; + } else { + slave.pregAdaptation = 50; + } + } + if (slave.pregKnown === undefined) { + if (slave.preg > 0) { + slave.pregKnown = 1; + } else { + slave.pregKnown = 0; + } + } + if (slave.pregWeek === undefined) { + if (slave.preg > 0) { + slave.pregWeek = slave.preg; + } else { + slave.pregWeek = 0; + } + } + if (slave.pubertyXX === undefined) { + if (slave.physicalAge >= slave.pubertyAgeXX) { + slave.pubertyXX = 1; + slave.fertKnown = 1; + } else { + slave.pubertyXX = 0; + slave.fertKnown = 0; + } + } + if (slave.pubertyXY === undefined) { + if (slave.physicalAge >= slave.pubertyAgeXY) { + slave.pubertyXY = 1; + } else { + slave.pubertyXY = 0; + } + } + if (slave.genetics === undefined) { slave.genetics = {}; } + if (slave.geneMods === undefined) { geneMods = {NCS: 0, rapidCellGrowth: 0}; } + if (slave.inducedNCS !== undefined) { + slave.geneMods.NCS = slave.inducedNCS; + delete slave.inducedNCS; + } + if (slave.PCSlutContacts !== undefined) { delete slave.PCSlutContacts; } + if (slave.wombImplant === undefined) { slave.wombImplant = "none"; } + if (slave.superfetation !== undefined) { delete slave.superfetation; } + if (slave.lactationDuration === undefined) { + if (slave.lactation === 0) { + slave.lactationDuration = 0; + } else { + slave.lactationDuration = 2; + } + } + if (slave.induceLactation === undefined) { slave.induceLactation = 0; } + if (slave.weightDirection === undefined) { slave.weightDirection = 0; } + if (V.releaseID < 1036) { + for (let pmw = 0; pmw < slave.womb.length; pmw++) { + if (slave.womb[pmw].genetics.mother !== slave.womb[pmw].motherID || slave.womb[pmw].genetics.father !== slave.womb[pmw].fatherID) { + slave.womb[pmw].genetics = generateGenetics(slave, slave.womb[pmw].fatherID, pmw); + } + } + } + if (slave.clone === undefined) { slave.clone = 0; } + if (slave.abortionTat === undefined) { slave.abortionTat = -1; } + if (slave.birthsTat === undefined) { slave.birthsTat = -1; } + if (slave.reservedChildren !== undefined) { delete slave.reservedChildren; } + if (slave.origin !== undefined && slave.origin !== 0) { slave.origin = pronounReplacer(slave.origin); } + if (slave.custom !== undefined) { + if (slave.custom.desc !== undefined && slave.custom.desc !== "") { + slave.custom.desc = pronounReplacer(slave.custom.desc); + } + if (slave.custom.tattoo !== undefined && slave.custom.tattoo !== "") { + slave.custom.tattoo = pronounReplacer(slave.custom.tattoo); + } + } + if (slave.prestigeDesc !== undefined && slave.prestigeDesc !== 0) { slave.prestigeDesc = pronounReplacer(slave.prestigeDesc); } + if (slave.pornPrestigeDesc !== undefined && slave.pornPrestigeDesc !== 0) { // This must be defined first, hence the previous line. + if (V.releaseID < 1050 && slave.prestigeDesc !== undefined && slave.prestigeDesc !== 0) { /* BC absolutely FUCKED this */ + switch (slave.porn.fameType) { + case "generic": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the sight of $him being used."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $him being used."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $him mid-coitus."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "fuckdoll": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. $His fans relish the sight of $him being used."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $him being used."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $him being used."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "rape": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the sight of $him being raped."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $him being raped."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $him being raped."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "preggo": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed watching $him swell with child."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $him swollen with child."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $him swollen with child."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "BBW": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the sight of $his thick and soft body."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his thick, soft body."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his thick, soft body."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "underage": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the sight of $his childish body."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his immature body."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his immature body."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "weight gain": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the sight of $him eating and gaining weight."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish how curvy $he's gotten."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with how with how much weight $he has gained."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "big dick": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the sight of $his throbbing erection."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $his heavy dick."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $his erect dick."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "deepthroat": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the sounds $he makes when being throatfucked."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sounds $he makes when being throatfucked."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sounds $he makes when being throatfucked."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "unwilling": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed how $he struggles during sex."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish how perfectly $he struggles during sex."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with how perfectly $he struggles during sex."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "hardcore anal": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed watching $his asshole pushed to its limit."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish watching $his asshole pushed to its limit."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with seeing $his asshole pushed to its limit."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "softcore": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed $his lewd striptease."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his lewd striptease."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his lewd striptease."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "romantic": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the deep bond $he shares with $his partners."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the deep bond $he shares with $his partners."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the deep bond $he shares with $his partners."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "really perverted": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed $his most perverted tendencies."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the depths of $his perversions."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the depths of $his perversions."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "voyeur": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed watching $him devote $himself to $his partners' pleasure."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his devotion to $his partners' pleasure."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his devotion to $his partners' pleasure."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "unspeakable": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed $his willingness to do things not repeated in polite company."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his willingness to do anything and everything."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his willingness to do things not repeated in polite company."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "huge insertion": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the sight of $his holes filled to their limits."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $his holes filled to their limits."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $his holes filled to their limits."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "orgasm denial": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the sight of $him ignoring $his own pleasure."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $him denying $himself pleasure."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $him denying $himself pleasure."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "cum addiction": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed watching $him do anything and everything for cum."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $him doing anything for cum."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $him doing anything for cum."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "anal addiction": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed watching $him do anything for a dick in $his ass."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $him doing anything for a dick up $his ass."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $his well-versed anus."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "exhibition": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed watching $him do anything for attention."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $him doing anything for attention."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $him doing anything for attention."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "breast expansion": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed charting the growth of $his breasts."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $his expanding bust."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the history of $his growing bust."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "abuse": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed watching $him abuse others."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $him abusing others."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his abusive tendencies."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "sexual torture": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed $him getting off from the suffering $he caused."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $him getting off from the suffering $he caused."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his hunger for making others suffer."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "self hating": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed watching $him happily suffer."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his suffering."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $him suffering."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "breeder": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed watching $him obsess over pumping out babies."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his obsession with having children."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his obsession with being pregnant."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "submissive": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed $his submission."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his submissiveness."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his submissiveness."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "cum": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed $his taste for cum."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his desire for cum."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his taste for cum."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "buttslut": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the sight of $his rear."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $his rear."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $his rear."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "humiliating": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed $him humiliating $himself."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his frequent humiliation."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his frequent humiliation."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "breast": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the sight of $his breasts."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $his breasts."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his breasts."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "dominant": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed $his dominance."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his dominance."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his dominant streak."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "sadistic": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed $his sadism."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his sadism."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his sadistic streak."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "masochistic": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed $his masochism."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his masochism."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his masochistic streak."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + case "pregnancy fetish": + if (slave.pornPrestige === 1) { + slave.pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed $his fondness for pregnancy."; + } else if (slave.pornPrestige === 2) { + slave.pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his fondness for pregnancy."; + } else if (slave.pornPrestige === 3) { + slave.pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his pregnancy kink."; + } else { + slave.pornPrestigeDesc = 0; + } + break; + default: + slave.pornPrestigeDesc = 0; + } + } else { + slave.pornPrestigeDesc = pronounReplacer(slave.pornPrestigeDesc); + } + } + + if (slave.amp !== undefined) { + if (slave.amp === 1) { + slave.arm = {left: null, right: null}; + slave.leg = {left: null, right: null}; + } else { + const newID = ((slave.amp * -1) + 1); + slave.arm = { + left: new App.Entity.LimbState(), + right: new App.Entity.LimbState() + }; + slave.leg = { + left: new App.Entity.LimbState(), + right: new App.Entity.LimbState() + }; + slave.arm.left.type = newID; + slave.arm.right.type = newID; + slave.leg.left.type = newID; + slave.leg.right.type = newID; + /* no need to check partial amputation, since it is not possible to create prior to this */ + } + delete slave.amp; + delete slave.missingLegs; + delete slave.missingArms; + } else if (slave.arm === undefined) { + slave.arm = { + left: new App.Entity.LimbState(), + right: new App.Entity.LimbState() + }; + slave.leg = { + left: new App.Entity.LimbState(), + right: new App.Entity.LimbState() + }; + } + + if (hasAnyProstheticLimbs(slave)) { + slave.PLimb = 1; + if (getLimbCount(slave, 6) > 0) { + slave.PLimb = 2; + } + } + + if (slave.eyeball !== undefined) { delete slave.eyeball; } + + if (slave.auricle !== undefined) { delete slave.auricle; } + + if (slave.readyProsthetics === undefined) { slave.readyProsthetics = []; } + if (slave.readyLimbs !== undefined) { + for (let k = 0; k < slave.readyLimbs.length; k++) { + switch (slave.readyLimbs[k].type) { + case -1: + addProsthetic(slave, "basicL"); + break; + case -2: + addProsthetic(slave, "sexL"); + break; + case -3: + addProsthetic(slave, "beautyL"); + break; + case -4: + addProsthetic(slave, "combatL"); + break; + case -5: + addProsthetic(slave, "cyberneticL"); + break; + } + } + } + + if (V.releaseID < 1052) { + const prosthetics = slave.readyProsthetics; + slave.readyProsthetics = []; + for (const p of prosthetics) { + addProsthetic(slave, p.id); + } + } + + if (V.releaseID < 1058) { + if (slave.albinism === 2) { + let temp; + temp = slave.origSkin; + slave.origSkin = slave.albinismOverride.skin; + slave.albinismOverride.skin = temp; + temp = slave.origEye; + slave.origEye = slave.albinismOverride.eyeColor; + slave.albinismOverride.eyeColor = temp; + temp = slave.origHColor; + slave.origHColor = slave.albinismOverride.hColor; + slave.albinismOverride.hColor = temp; + } + } + + if (V.releaseID < 1059) { + slave.eye = new App.Entity.EyeState(); + setGeneticEyeColor(slave, slave.origEye); + if (slave.eyes === -4) { + eyeSurgery(slave, "both", "remove"); + } else { + if (slave.eyesImplant === 1) { + eyeSurgery(slave, "both", "cybernetic"); + } + if (slave.eyes === -3) { + eyeSurgery(slave, "both", "glass"); + } else if (slave.eyes === -2) { + eyeSurgery(slave, "both", "blind"); + } else if (slave.eyes === -1) { + eyeSurgery(slave, "both", "blur"); + } + setEyeColorFull(slave, slave.eyeColor, slave.pupil, slave.sclerae, "both"); + if (typeof slave.geneticQuirks.heterochromia === "string") { + setEyeColor(slave.geneticQuirks.heterochromia, "left"); + } + } + delete slave.eyes; + delete slave.eyesImplant; + delete slave.eyeColor; + delete slave.origEye; + delete slave.pupil; + delete slave.sclerae; + } + + if (slave.eyes !== undefined) {delete slave.eyes;} + if (slave.eyeColor !== undefined) {delete slave.eyeColor;} + if (slave.eyesImplant !== undefined) {delete slave.eyesImplant;} + if (slave.origEye !== undefined) {delete slave.origEye;} + if (slave.pupil !== undefined) {delete slave.pupil;} + if (slave.sclerae !== undefined) {delete slave.sclerae;} + + if (slave.origin === "Shortly after birth, $he was sealed in an aging tank until $he was of age. $He knows only of the terror that awaits $him should $he not obey $his master.") { + slave.tankBaby = 2; + } else if (slave.origin === "Shortly after birth, $he was sealed in an aging tank until $he was of age. $He knows nothing of the world outside of what the tank imprinted $him with.") { + slave.tankBaby = 1; + } else if (slave.tankBaby === undefined) { + slave.tankBaby = 0; + } + + if (slave.origin === "$He sold $himself into slavery to feed $himself and $his growing brood.") { + if (slave.pregAdaptation < 750) { + slave.pregAdaptation = 750; + } + } + + let backwardsCompatibility; + if (slave.rivalry !== 0) { + backwardsCompatibility = V.slaveIndices[slave.rivalryTarget]; + if (backwardsCompatibility !== undefined) { + slave.rivalry = 0; + slave.rivalryTarget = 0; + } + } + if (slave.relationship > 0) { + backwardsCompatibility = V.slaveIndices[slave.relationshipTarget]; + if (backwardsCompatibility !== undefined) { + slave.relationship = 0; + slave.relationshipTarget = 0; + } + } + if (V.familyTesting === 0 && slave.relation !== 0) { + backwardsCompatibility = V.slaveIndices[slave.relationTarget]; + if (backwardsCompatibility !== undefined) { + slave.relation = 0; + slave.relationTarget = 0; + } + } + + if (slave.race === "surgically altered to look amerindian") { + slave.race = "amerindian"; + } else if (slave.race === "surgically altered to look asian") { + slave.race = "asian"; + } else if (slave.race === "surgically altered to look black") { + slave.race = "black"; + } else if (slave.race === "surgically altered to look indo-aryan") { + slave.race = "indo-aryan"; + } else if (slave.race === "surgically altered to look latina") { + slave.race = "latina"; + } else if (slave.race === "surgically altered to look malay") { + slave.race = "malay"; + } else if (slave.race === "surgically altered to look middle eastern") { + slave.race = "middle eastern"; + } else if (slave.race === "surgically altered to look mixed race" || slave.race === "surgically altered to look mixed") { + slave.race = "mixed race"; + } else if (slave.race === "surgically altered to look pacific islander" || slave.race === "surgically altered to look like a pacific islander") { + slave.race = "pacific islander"; + } else if (slave.race === "surgically altered to look southern european" || slave.race === "southern European") { + slave.race = "southern european"; + } else if (slave.race === "surgically altered to look semitic") { + slave.race = "semitic"; + } else if (slave.race === "surgically altered to look white") { + slave.race = "white"; + } + + /* eslint-disable camelcase */ + if (slave.override_Race === undefined) { slave.override_Race = 0; } + if (slave.override_Skin === undefined) { slave.override_Skin = 0; } + if (slave.override_Eye_Color === undefined) { slave.override_Eye_Color = 0; } + if (slave.override_H_Color === undefined) { slave.override_H_Color = 0; } + if (slave.override_Pubic_H_Color === undefined) { slave.override_Pubic_H_Color = 0; } + if (slave.override_Arm_H_Color === undefined) { slave.override_Arm_H_Color = 0; } + /* eslint-enable camelcase */ + + switch (slave.skin) { + case "red dyed": + slave.skin = "dyed red"; + break; + case "green dyed": + slave.skin = "dyed green"; + break; + case "blue dyed": + slave.skin = "dyed blue"; + break; + case "tanned": + slave.skin = "tan"; + break; + case "lightened": + slave.skin = "light"; + break; + case "bronzed": + slave.skin = "bronze"; + break; + case "darkened": + slave.skin = "dark"; + break; + } + + switch (slave.origSkin) { + case "blue dyed": + case "dyed blue": + case "dyed green": + case "dyed red": + case "green dyed": + case "red dyed": + slave.origSkin = randomRaceSkin(slave.origRace); + break; + case "tanned": + slave.origSkin = "tan"; + break; + case "lightened": + slave.origSkin = "light"; + break; + case "bronzed": + slave.origSkin = "bronze"; + break; + case "darkened": + slave.origSkin = "dark"; + break; + } + + if (slave.markings === "heavily") { + slave.markings = "heavily freckled"; + } else if (slave.markings === "beauty") { + slave.markings = "beauty mark"; + } + + if (slave.genes === undefined) { + if (slave.ovaries === 1) { + slave.genes = "XX"; + } else { + slave.genes = "XY"; + } + } + + if (V.releaseID < 1000) { + if (slave.face === -3) { + slave.face = -100; + } else if (slave.face === -2) { + slave.face = -50; + } else if (slave.face === -1) { + slave.face = -20; + } else if (slave.face === 0) { + slave.face = 0; + } else if (slave.face === 1) { + slave.face = 20; + } else if (slave.face === 2) { + slave.face = 50; + } else { + slave.face = 100; + } + } + if (V.releaseID < 1031) { + if (slave.intelligence === -3) { + slave.intelligence = -100; + } else if (slave.intelligence === -2) { + slave.intelligence = -60; + } else if (slave.intelligence === -1) { + slave.intelligence = -30; + } else if (slave.intelligence === 0) { + slave.intelligence = 0; + } else if (slave.intelligence === 1) { + slave.intelligence = 30; + } else if (slave.intelligence === 2) { + slave.intelligence = 60; + } else { + slave.intelligence = 99; + } + if (slave.intelligenceImplant === 1) { + slave.intelligenceImplant = 30; + } + } + + if (slave.teeth === 0) { + slave.teeth = "normal"; + } else if (slave.teeth === "straightening") { + slave.teeth = "straightening braces"; + } else if (slave.teeth === "cosmetic") { + slave.teeth = "cosmetic braces"; + } + + if (slave.areolaeShape === undefined) { + if (slave.areolae === 4) { + slave.areolaeShape = "heart"; + slave.areolae = 3; + } else if (slave.areolae === 5) { + slave.areolaeShape = "star"; + slave.areolae = 3; + } else { + slave.areolaeShape = "circle"; + } + } + + if (V.releaseID < 1059) { + if (slave.eyeColor === undefined) { + slave.eyeColor = slave.eyes; + slave.eyes = 1; + if (slave.eyeColor === undefined) { + slave.eyeColor = "brown"; + } + } + + if (slave.pupil === undefined) { + if (slave.eyeColor === "catlike") { + slave.pupil = "catlike"; + slave.eyeColor = "brown"; + } else if (slave.eyeColor === "serpent-like") { + slave.pupil = "serpent-like"; + slave.eyeColor = "brown"; + } else if (slave.eyeColor === "devilish") { + slave.pupil = "devilish"; + slave.eyeColor = "brown"; + } else if (slave.eyeColor === "demonic") { + slave.pupil = "demonic"; + slave.eyeColor = "brown"; + } else if (slave.eyeColor === "hypnotic") { + slave.pupil = "hypnotic"; + slave.eyeColor = "brown"; + } else if (slave.eyeColor === "heart-shaped") { + slave.pupil = "heart-shaped"; + slave.eyeColor = "brown"; + } else if (slave.eyeColor === "wide-eyed") { + slave.pupil = "wide-eyed"; + slave.eyeColor = "brown"; + } else if (slave.eyeColor === "almond-shaped") { + slave.pupil = "almond-shaped"; + slave.eyeColor = "brown"; + } else if (slave.eyeColor === "bright") { + slave.pupil = "bright"; + slave.eyeColor = "brown"; + } else if (slave.eyeColor === "teary") { + slave.pupil = "teary"; + slave.eyeColor = "brown"; + } else if (slave.eyeColor === "vacant") { + slave.pupil = "vacant"; + slave.eyeColor = "brown"; + } else { + slave.pupil = "circular"; + } + } + } + + if (slave.pitkills !== undefined) { delete slave.pitkills; } + if (slave.penetrationCount !== undefined) { delete slave.penetrationCount; } + if (slave.oralTotal !== undefined) { delete slave.oralTotal; } + if (slave.vaginaCount !== undefined) { delete slave.vaginaCount; } + + if (((V.ver.startsWith("0.6") && !V.ver.startsWith("10.6")) || (V.ver.startsWith("0.7")) || (V.ver.startsWith("0.8"))) && (!V.ver.startsWith("0.8.9")) && (!V.ver.startsWith("0.8.10")) && (!V.ver.startsWith("0.8.11")) && (!V.ver.startsWith("0.8.12"))) { + if (slave.attrXX === 2) { + slave.attrXX = 90; + } else if (slave.attrXX === 1) { + slave.attrXX = 70; + } else if (slave.attrXX === 0) { + slave.attrXX = 50; + } else if (slave.attrXX === -1) { + slave.attrXX = 30; + } else { + slave.attrXX = 10; + } + if (slave.attrXY === 2) { + slave.attrXY = 90; + } else if (slave.attrXY === 1) { + slave.attrXY = 70; + } else if (slave.attrXY === 0) { + slave.attrXY = 50; + } else if (slave.attrXY === -1) { + slave.attrXY = 30; + } else { + slave.attrXY = 10; + } + } + + if ((V.ver.startsWith("0.6") && !V.ver.startsWith("10.6")) || (V.ver.startsWith("0.7")) || (V.ver.startsWith("0.8"))) { + if (slave.health <= -9) { + slave.health = -90; + } else if (slave.health <= -7) { + slave.health = jsRandom(-89, -70); + } else if (slave.health <= -5) { + slave.health = jsRandom(-69, -50); + } else if (slave.health <= -3) { + slave.health = jsRandom(-49, -30); + } else if (slave.health <= -1) { + slave.health = jsRandom(-29, -10); + } else if (slave.health <= 1) { + slave.health = jsRandom(-9, 10); + } else if (slave.health <= 3) { + slave.health = jsRandom(11, 30); + } else if (slave.health <= 5) { + slave.health = jsRandom(31, 50); + } else if (slave.health <= 7) { + slave.health = jsRandom(51, 70); + } else if (slave.health <= 8) { + slave.health = jsRandom(71, 80); + } else if (slave.health <= 9) { + slave.health = jsRandom(81, 90); + } else if (slave.health <= 10) { + slave.health = jsRandom(91, 100); + } else if (slave.health <= 15) { + slave.health = jsRandom(101, 150); + } else if (slave.health <= 20) { + slave.health = jsRandom(151, 200); + } else if (slave.health >= 50) { + slave.health = 500; + } else if (slave.health > 20) { + slave.health = 205; + } + + slave.devotion = (slave.devotion * 5); + slave.oldDevotion = (slave.oldDevotion * 5); + slave.trust = (slave.trust * 5); + slave.oldTrust = (slave.oldTrust * 5); + + if (slave.fetishStrength === 0) { + slave.fetishStrength = jsRandom(0, 60); + } else if (slave.fetishStrength === 1) { + slave.fetishStrength = jsRandom(61, 80); + } else if (slave.fetishStrength === 2) { + slave.fetishStrength = jsRandom(96, 100); + } + + if (slave.weight === -3) { + slave.weight = jsRandom(-110, -96); + } else if (slave.weight === -2) { + slave.weight = jsRandom(-95, -31); + } else if (slave.weight === -1) { + slave.weight = jsRandom(-30, -11); + } else if (slave.weight === 0) { + slave.weight = jsRandom(-11, 10); + } else if (slave.weight === 1) { + slave.weight = jsRandom(11, 30); + } else if (slave.weight === 2) { + slave.weight = jsRandom(31, 95); + } else if (slave.weight === 3) { + slave.weight = jsRandom(96, 110); + } + + if (slave.lips !== 0) { + if (slave.lips === 3) { + slave.lips = 85; + } else if (slave.lips === 2) { + slave.lips = 55; + } else if (slave.lips === 1) { + slave.lips = 35; + } + } + } + + if (((V.ver.startsWith("0.6") && !V.ver.startsWith("10.6")) || (V.ver.startsWith("0.7")) || (V.ver.startsWith("0.8")) || (V.ver.startsWith("0.9"))) && (!V.ver.startsWith("0.9.5")) && (!V.ver.startsWith("0.9.6")) && (!V.ver.startsWith("0.9.7")) && (!V.ver.startsWith("0.9.8")) && (!V.ver.startsWith("0.9.9")) && (!V.ver.startsWith("0.9.10"))) { + if (slave.skill === undefined) { + if (slave.oralSkill > 0) { + if (slave.oralSkill === 3) { + slave.oralSkill = 100; + } else if (slave.oralSkill === 2) { + slave.oralSkill = 65; + } else { + slave.oralSkill = 35; + } + } + if (slave.vaginalSkill > 0) { + if (slave.vaginalSkill === 3) { + slave.vaginalSkill = 100; + } else if (slave.vaginalSkill === 2) { + slave.vaginalSkill = 65; + } else { + slave.vaginalSkill = 35; + } + } + if (slave.analSkill > 0) { + if (slave.analSkill === 3) { + slave.analSkill = 100; + } else if (slave.analSkill === 2) { + slave.analSkill = 65; + } else { + slave.analSkill = 35; + } + } + if (slave.whoreSkill > 0) { + if (slave.whoreSkill === 3) { + slave.whoreSkill = 100; + } else if (slave.whoreSkill === 2) { + slave.whoreSkill = 65; + } else { + slave.whoreSkill = 35; + } + } + if (slave.entertainSkill > 0) { + if (slave.entertainSkill === 3) { + slave.entertainSkill = 100; + } else if (slave.entertainSkill === 2) { + slave.entertainSkill = 65; + } else { + slave.entertainSkill = 35; + } + } + } + + if (V.ver !== "0.9.4") { + slave.aphrodisiacs = 0; + if (slave.drugs === "curatives") { + slave.curatives = 2; + slave.drugs = "no drugs"; + } else if (slave.drugs === "preventatives") { + slave.curatives = 1; + slave.drugs = "no drugs"; + } else if (slave.drugs === "aphrodisiacs") { + slave.aphrodisiacs = 1; + slave.drugs = "no drugs"; + } else if (slave.drugs === "extreme aphrodisiacs") { + slave.aphrodisiacs = 2; + slave.drugs = "no drugs"; + } + if (slave.muscles >= 3) { + slave.muscles = 100; + } else if (slave.muscles >= 2) { + slave.muscles = 50; + } else if (slave.muscles >= 1) { + slave.muscles = 20; + } else { + slave.muscles = 0; + } + } + } + + switch (slave.boobsTat) { + case "floral designs": + slave.boobsTat = "flowers"; + break; + case "demeaning inscriptions": + slave.boobsTat = "rude words"; + break; + case "lewd scenes": + slave.boobsTat = "scenes"; + break; + case "degrading language": + slave.boobsTat = "degradation"; + break; + case "slutty advertisements": + slave.boobsTat = "advertisements"; + break; + } + + switch (slave.buttTat) { + case "floral designs": + slave.buttTat = "flowers"; + break; + case "demeaning inscriptions": + slave.buttTat = "rude words"; + break; + case "lewd scenes": + slave.buttTat = "scenes"; + break; + case "degrading language": + slave.buttTat = "degradation"; + break; + case "slutty advertisements": + slave.buttTat = "advertisements"; + break; + } + + switch (slave.vaginaTat) { + case "floral designs": + slave.vaginaTat = "flowers"; + break; + case "demeaning inscriptions": + slave.vaginaTat = "rude words"; + break; + case "lewd scenes": + slave.vaginaTat = "scenes"; + break; + case "degrading language": + slave.vaginaTat = "degradation"; + break; + case "slutty advertisements": + slave.vaginaTat = "advertisements"; + break; + } + + switch (slave.dickTat) { + case "floral designs": + slave.dickTat = "flowers"; + break; + case "demeaning inscriptions": + slave.dickTat = "rude words"; + break; + case "lewd scenes": + slave.dickTat = "scenes"; + break; + case "degrading language": + slave.dickTat = "degradation"; + break; + case "slutty advertisements": + slave.dickTat = "advertisements"; + break; + } + + switch (slave.anusTat) { + case "floral designs": + slave.anusTat = "flowers"; + break; + case "demeaning inscriptions": + slave.anusTat = "rude words"; + break; + case "lewd scenes": + slave.anusTat = "scenes"; + break; + case "degrading language": + slave.anusTat = "degradation"; + break; + case "slutty advertisements": + slave.anusTat = "advertisements"; + break; + } + + switch (slave.backTat) { + case "floral designs": + slave.backTat = "flowers"; + break; + case "demeaning inscriptions": + slave.backTat = "rude words"; + break; + case "lewd scenes": + slave.backTat = "scenes"; + break; + case "degrading language": + slave.backTat = "degradation"; + break; + case "slutty advertisements": + slave.backTat = "advertisements"; + break; + } + + switch (slave.shouldersTat) { + case "floral designs": + slave.shouldersTat = "flowers"; + break; + case "demeaning inscriptions": + slave.shouldersTat = "rude words"; + break; + case "lewd scenes": + slave.shouldersTat = "scenes"; + break; + case "degrading language": + slave.shouldersTat = "degradation"; + break; + case "slutty advertisements": + slave.shouldersTat = "advertisements"; + break; + } + + switch (slave.armsTat) { + case "floral designs": + slave.armsTat = "flowers"; + break; + case "demeaning inscriptions": + slave.armsTat = "rude words"; + break; + case "lewd scenes": + slave.armsTat = "scenes"; + break; + case "degrading language": + slave.armsTat = "degradation"; + break; + case "slutty advertisements": + slave.armsTat = "advertisements"; + break; + } + + switch (slave.legsTat) { + case "floral designs": + slave.legsTat = "flowers"; + break; + case "demeaning inscriptions": + slave.legsTat = "rude words"; + break; + case "lewd scenes": + slave.legsTat = "scenes"; + break; + case "degrading language": + slave.legsTat = "degradation"; + break; + case "slutty advertisements": + slave.legsTat = "advertisements"; + break; + } + + switch (slave.stampTat) { + case "floral designs": + slave.stampTat = "flowers"; + break; + case "demeaning inscriptions": + slave.stampTat = "rude words"; + break; + case "lewd scenes": + slave.stampTat = "scenes"; + break; + case "degrading language": + slave.stampTat = "degradation"; + break; + case "slutty advertisements": + slave.stampTat = "advertisements"; + break; + } + + switch (slave.lipsTat) { + case "floral designs": + slave.lipsTat = "flowers"; + break; + case "demeaning inscriptions": + slave.lipsTat = "rude words"; + break; + case "lewd scenes": + slave.lipsTat = "scenes"; + break; + case "degrading language": + slave.lipsTat = "degradation"; + break; + case "slutty advertisements": + slave.lipsTat = "advertisements"; + break; + } + + if (slave.currentRules === undefined || slave.currentRules.length < 1) { + slave.currentRules = []; + } + + if (slave.height < -1) { + slave.height = jsRandom(140, 149); + } else if (slave.height < 0) { + slave.height = jsRandom(150, 159); + } else if (slave.height < 1) { + slave.height = jsRandom(160, 169); + } else if (slave.height < 2) { + slave.height = jsRandom(170, 184); + } else if (slave.height <= 3) { + slave.height = jsRandom(185, 200); + } + + if (V.releaseID < 1059) { + if (slave.eyeColor === "no default value") { + slave.eyeColor = slave.origEye; + } + } + + if (slave.birthSurname === undefined) { slave.birthSurname = 0; } + if (slave.slaveSurname === undefined) { slave.slaveSurname = 0; } + + if (slave.faceImplant === 1) { + slave.faceImplant = 15; + } else if (slave.faceImplant === 2) { + slave.faceImplant = 65; + } + + if (slave.areoleaPiercing !== undefined) { delete slave.areoleaPiercing; } + if (slave.pregControl === undefined) { slave.pregControl = "none"; } + if (slave.pregControl === "labor supressors") { + slave.pregControl = "labor suppressors"; + } + + if (slave.chastityAnus === undefined || slave.chastityPenis === undefined || slave.chastityVagina === undefined) { + if (slave.dickAccessory === "combined chastity") { + slave.chastityAnus = 1; + slave.chastityPenis = 1; + slave.dickAccessory = "none"; + } else if (slave.vaginalAccessory === "combined chastity") { + slave.chastityAnus = 1; + slave.chastityVagina = 1; + slave.vaginalAccessory = "none"; + } else if (slave.dickAccessory === "anal chastity" || slave.vaginalAccessory === "anal chastity") { + slave.chastityAnus = 1; + slave.dickAccessory = "none"; + slave.vaginalAccessory = "none"; + } else if (slave.dickAccessory === "chastity") { + slave.chastityPenis = 1; + slave.dickAccessory = "none"; + } else if (slave.vaginalAccessory === "chastity belt") { + slave.chastityVagina = 1; + slave.vaginalAccessory = "none"; + } else { + slave.chastityAnus = 0; + slave.chastityPenis = 0; + slave.chastityVagina = 0; + } + } +}; diff --git a/src/endWeek/healthFunctions.js b/src/endWeek/healthFunctions.js index 2afdff8ba366a1202419f64c00d797890db12bec..aa2eff36c5009baf38434271619345eca503b7eb 100644 --- a/src/endWeek/healthFunctions.js +++ b/src/endWeek/healthFunctions.js @@ -33,7 +33,7 @@ Illness Tiredness Depending on various factors (living conditions, assignment, rewards, muscles, health) a slave may become more or less tired. - Once tiredness reached 50 there will be negative effects for productivity and at 80 they become even more extreme. + Once tiredness reached 60 there will be negative effects for productivity and at 90 they become even more extreme. Being tired or exhausted also reduces a slave's ability to resist the player, increasing devotion and fear. Health @@ -136,18 +136,18 @@ window.getIll = function getIll(slave) { * @returns {number} */ window.nurseEffectiveness = function nurseEffectiveness(slave) { - const V = State.variables; const H = slave.health; const clinicUpgrade = 1; // Creating a purchasable upgrade to increase the amount of slaves the nurse can handle -- TODO const clinicScreening = 1; // Assumes the clinic is set to screening all slaves to improve their chances of staying healthy. Turning it off would allow the nurse to focus on just her patients in the clinic -- TODO if (V.Nurse !== 0) { - let nurseEffectiveness = Math.trunc((V.Nurse.skill.nurse * clinicUpgrade / Math.max((V.CliniciIDs.length * 10 + (V.slaves.length * 2) * clinicScreening), 1)) * 20); + const nurseSkill = setup.nurseCareers.includes(V.Nurse.career) ? 200 : V.Nurse.skill.nurse; + let nurseEffectiveness = Math.trunc((nurseSkill * clinicUpgrade / Math.max((V.CliniciIDs.length * 10 + (V.slaves.length * 2) * clinicScreening), 1)) * 20); if (H.illness > 1 && slave.assignment === "get treatment in the clinic") { if (nurseEffectiveness < 20) { return nurseEffectiveness; - } else if (V.Nurse.skill.nurse > 80) { + } else if (nurseSkill > 80) { return Math.min(nurseEffectiveness, 40); - } else if (V.Nurse.skill.nurse > 40) { + } else if (nurseSkill > 40) { return Math.min(nurseEffectiveness, 30); } else { return 20; @@ -198,11 +198,12 @@ window.endWeekHealthDamage = function endWeekHealthDamage(slave) { } // Reducing condition for tired slaves - if (H.tired > 100) { - tiredToCondition += Math.max(Math.trunc((H.tired - 100) * 0.1 + Math.max(normalRandInt(0), 0)), 1); - H.tired = 100; - } else { - H.tired = Math.max(H.tired, 0); + if (H.tired > 90) { + tiredToCondition += Math.round((H.tired * 0.1) + 5); + } else if (H.condition >= -20) { + if (H.tired > 60) { + tiredToCondition += Math.round((H.tired * 0.1) + 2); + } } if (tiredToCondition > 0) { H.condition -= tiredToCondition; @@ -227,6 +228,9 @@ window.endWeekHealthDamage = function endWeekHealthDamage(slave) { shortToLong += Math.trunc(shortToCondition * 0.25); // 25% of transferred damage gets added to long term damage, minimum of 16 short term damage before any long term damage is accumulated H.longDamage += shortToLong; } + if (V.disableLongDamage) { + H.longDamage = 0; + } // Making sure condition doesn't get too high if (H.condition > 150) { @@ -236,91 +240,186 @@ window.endWeekHealthDamage = function endWeekHealthDamage(slave) { H.health = H.condition - H.longDamage - H.shortDamage; }; +/** + * Tells if a slave will try to work to death due to mental hangups + * @param {App.Entity.SlaveState} slave + * @returns {boolean} + */ +window.willWorkToDeath = function willWorkToDeath(slave) { + // More to come in the future + if (slave.trust < -50) { // Maybe lower + return true; + } else if (slave.sexualFlaw === "self hating") { + return true; + } + return false; +}; + /** * Run at the end of the week to take care of tiredness changes * @param {App.Entity.SlaveState} slave * @returns {void} */ window.tired = function tired(slave) { - const V = State.variables; const H = slave.health; let livingRules = 0; let assignment = 0; let reward = 0; - let muscles; - let health; + let punishment = 0; + // let muscles; + // let health; let tiredChange; + let spaFlag = 0; - if (!slave.fuckdoll || slave.fetish !== "mindbroken") { + if (!slave.fuckdoll) { // Assignment - if (slave.assignment === "rest" || slave.assignment === "get treatment in the clinic") { - assignment -= normalRandInt(15, 2); // Reduces tired by an average of 15 points while on a relaxing assignment - } else if (slave.assignment === "serve in the master suite" || slave.assignment === "please you" || slave.assignment === "guard you" || slave.assignment === "be the Attendant" || slave.assignment === "be the Matron" || slave.assignment === "be the Stewardess" || slave.assignment === "be the Milkmaid" || slave.assignment === "be the Farmer" || slave.assignment === "be the DJ" || slave.assignment === "be your Concubine" || slave.assignment === "be the Madam" || slave.assignment === "be the Schoolteacher" || slave.assignment === "be the Wardeness" || slave.assignment === "be the Nurse" || slave.assignment === "be your Head Girl" || slave.assignment === "recruit girls" || slave.assignment === "learn in the schoolroom" || slave.assignment === "take classes" || slave.assignment === "live with your Head Girl") { - assignment -= normalRandInt(5); // Reduces tired by an average of 5 points while on a relatively easy assignment/in a leadership position - } else if (slave.assignment === "rest in the spa") { - assignment -= normalRandInt(20, 1.5) * (V.spaUpgrade + 1); // Reduces tired by an average of 20 points while in the spa, 40 points with the upgraded spa + if (["rest in the spa"].includes(slave.assignment)) { + assignment -= 40 * (V.spaUpgrade + 1); // Reduces tired by an average of 40 points while in the spa, double with the upgraded spa if (V.Attendant !== 0) { - assignment -= Math.trunc(V.Attendant.skill.attendant / 10); // Maximum of 10 extra points of negative tiredness due to attendant skill + let skillBonus; + if (setup.attendantCareers.includes(V.Attendant.career)) { + skillBonus = 200; + } else { + skillBonus = V.Attendant.skill.attendant; + } + assignment -= Math.trunc(skillBonus / 10); // Maximum of 20 extra points of negative tiredness due to attendant skill + } + } else if (["rest", "get treatment in the clinic"].includes(slave.assignment)) { + assignment -= 40; // Major tired reduction due to a solid week of rest + } else if (["guard you", "be the Attendant", "be the Matron", "be the Stewardess", "be the Milkmaid", "be the Farmer", "be the DJ", "be the Madam", "be the Schoolteacher", "be the Wardeness", "be the Nurse", "be your Head Girl"].includes(slave.assignment)) { // Heads are very busy, but always have luxurious conditions, so it balances out, save for the two exceptions + assignment += 15; + } else if (["get milked"].includes(slave.assignment)) { + if (slave.devotion > 20) { + assignment += 2; + } else { + assignment += 5; } - } else if (slave.assignment === "whore" || slave.assignment === "work in the brothel" || slave.assignment === "work a glory hole" || slave.assignment === "be confined in the arcade" || slave.assignment === "serve the public" || slave.assignment === "serve in the club") { - assignment += 0; // These assignments get their tiredness increase from tiredFucks() - } else if (slave.assignment === "be confined in the arcade") { - assignment += normalRandInt(5); // Arcade is a terrible place - } else if (slave.assignment === "work as a farmhand") { - assignment += normalRandInt(10, 2); // Increases tired by an average of 10 points while on a very demanding assignment - } else if (slave.assignment === "be a servant") { - assignment += normalRandInt(5); // Increases tired by an average of 5 points while on a demanding assignment - } else if (slave.assignment === "be your agent" || slave.assignment === "live with your agent") { - assignment -= normalRandInt(15, 2); // Making sure agents don't get exhausted, surely they can afford to do some relaxing - } else if (slave.assignment === "work in the dairy") { + } else if (["work in the dairy"].includes(slave.assignment)) { if (V.dairyRestraintsSetting > 1) { - assignment += normalRandInt(15, 2); // Full industrial Dairy is exhausting + // assignment += 100; // Full industrial Dairy is exhausting } else if (V.dairyRestraintsSetting > 0) { - assignment += normalRandInt(5); // Restraining while milking is a little stressful + assignment += 10; // Restraining while milking is a little stressful + } else { // Being a free range cow is relatively relaxing + if (slave.devotion > 20) { + assignment += 2; + } else { + assignment += 5; + } + } + } else if (["be confined in the arcade"].includes(slave.assignment)) { // Brutal assignments + // assignment += 50; // We should have a safeguard in place to prevent slave health meltdown while contained in the machine + } else if (["work a glory hole", "work as a farmhand"].includes(slave.assignment)) { // Hard assignments + if (!willWorkToDeath(slave)) { + if (slave.tired > 90) { + assignment += 1; + } else if (slave.tired > 60) { + assignment += 10; + } + } else { + if (slave.devotion > 20) { + assignment += 15; + } else { + assignment += 20; + } + } + } else if (["serve in the club", "serve the public", "whore", "work in the brothel"].includes(slave.assignment)) { // Moderate assignments + if (!willWorkToDeath(slave)) { + if (slave.tired > 90) { + assignment += 1; + } else if (slave.tired > 70) { + assignment += 7; + } + } else { + if (slave.devotion > 20) { + assignment += 10; + } else { + assignment += 15; + } + } + } else if (["serve in the master suite", "please you", "live with your Head Girl", "be a servant"].includes(slave.assignment)) { // Easy assignments + if (slave.tired > 75) { + assignment += 2; + } else if (slave.devotion > 20) { + assignment += 5; } else { - assignment -= normalRandInt(5); // Being a free range cow is relatively relaxing + assignment += 10; + } + } else if (["learn in the schoolroom", "take classes"].includes(slave.assignment)) { // Trivial assignments + if (slave.tired > 80) { + assignment += 2; + } else if (slave.devotion > 20) { + assignment += 2; + } else { + assignment += 5; } - } else if (slave.assignment === "get milked") { - assignment -= normalRandInt(2); // Feels good to lighten the load } // Living Conditions - // PM - What they return to after a day of work. Do this after the assignment to allow kinder facility decorations. if (slave.rules.living === "spare") { - livingRules -= 1; // Barely reduce tiredness while sleeping in spare conditions + livingRules -= 2; // Barely reduce tiredness while sleeping in spare conditions if (V.dormitory < V.dormitoryPopulation) { - livingRules += 5; // Overcrowding penalty + livingRules += 7; // Overcrowding penalty } } else if (slave.rules.living === "luxurious") { - livingRules -= normalRandInt(10); // Reduces tired by an average of 10 points while sleeping under luxurious conditions - // PM - Luxury rooms are rooms and not subject to overcrowding penalties. + livingRules -= 15; } else { - livingRules -= normalRandInt(5); // Reduces tired by an average of 5 points while sleeping under normal conditions + livingRules -= 10; if (V.dormitory < V.dormitoryPopulation) { - livingRules += 5; // Overcrowding penalty + livingRules += 17; // Overcrowding penalty } } // Rewards - if (V.spaSpots > 0 && (slave.rules.reward === "relaxation" || slave.rules.reward === "situational")) { - if (slave.rules.reward === "relaxation") { // Considering the strength of the reward - reward += 2; + if (slave.rules.reward === "drugs") { + reward -= 4; + } else if (slave.rules.reward === "relaxation") { + if (V.spaSpots > 0) { + reward -= 7; + spaFlag = 1; } else { - reward += 1; + reward -= 5; } - if (slave.devotion > 50) { // Considering how often the slave gets rewarded - reward *= 3; - } else if (slave.devotion > 20) { - reward *= 2; - } else if (slave.devotion < -20 || slave.trust >= -20) { - reward = 0; + } else if (slave.rules.reward === "situational") { + if (V.spaSpots > 0) { + reward -= 4; + spaFlag = 1; + } else { + reward -= 3; } - V.spaSpots -= reward; // Reducing the available space in the spa depending on how often the slave can be found there - if (reward > 0) { - reward = -(Math.max(normalRandInt(reward), 0) * (V.spaUpgrade + 1)); + } + if (slave.devotion > 50) { // Considering how often the slave gets rewarded + reward *= 3; + } else if (slave.devotion > 20) { + reward *= 2; + } else if (slave.devotion < -20 || slave.trust >= -20) { + reward = 0; + } + if (spaFlag) { + V.spaSpots -= Math.abs(reward); // Reducing the available space in the spa depending on how often the slave can be found there + } + if (reward > 0) { + if (spaFlag) { + reward *= V.spaUpgrade + 1; } } + // Punishments + if (slave.rules.reward === "confinement" && V.cellblock !== 0) { + punishment -= 2; + } + if (slave.devotion > 50) { // Considering how often the slave gets punished + punishment = 0; + } else if (slave.devotion >= -20) { + if (slave.trust >= -20) { + punishment *= 2; + } + } else { + if (slave.trust >= -50) { + punishment *= 3; + } + } + + /* Disabled for balancing // Muscles if (slave.muscles < 0) { muscles = -Math.trunc((slave.muscles / 10) * (1 + normalRandInt(0, 5) / 100)); // Being weak increases tiredness, building muscles eventually reduces tiredness @@ -330,14 +429,25 @@ window.tired = function tired(slave) { // Health health = Math.trunc((H.shortDamage / 2 - H.condition / 10) * (1 + normalRandInt(0, 5) / 100)); // Current condition reduces tiredness, health damage increases tiredness + if (slave.assignment === "rest" || slave.assignment === "get treatment in the clinic" || slave.assignment === "rest in the spa") { + health = Math.max(0, health); // break vicious cycle - no additional tiredness accumulates from bad health for slaves assigned to rest + } + */ - tiredChange = livingRules + assignment + reward + muscles + health; + tiredChange = livingRules + assignment + reward + punishment; // + muscles + health H.tired += tiredChange; - if (H.tired < 0) { + // H.tired = Math.clamp(H.tired, 0, 100); Disabled until hacky disabler is removed. + if (H.tired < 0 || V.disableTiredness) { H.tired = 0; + } else if (H.tired > 100) { + H.tired = 100; } } else { - H.tired = 49; + // fuckdolls get a static tiredness drop due to drugs and suit control + H.tired -= 30; + if (H.tired <= 0 || V.disableTiredness) { + H.tired = 1; + } } }; @@ -346,6 +456,7 @@ window.tired = function tired(slave) { * @returns {void} */ window.tiredFucks = function tiredFucks(slave) { + /* temp disable if (!slave.fuckdoll && slave.fetish !== "mindbroken") { if (slave.assignment === "work a glory hole" || slave.assignment === "be confined in the arcade") { let acceptance = 0; @@ -363,4 +474,5 @@ window.tiredFucks = function tiredFucks(slave) { slave.health.tired += Math.trunc(slave.sexAmount * (1 + normalRandInt(0, 5) / 100) / 25); } } + */ }; diff --git a/src/endWeek/saGetMilked.js b/src/endWeek/saGetMilked.js index 7c39a5350ab681a7f9e6777fc49ab70d8cdfda63..c7cabdb48d1b776afec97b9ca42897e5257b0c62 100644 --- a/src/endWeek/saGetMilked.js +++ b/src/endWeek/saGetMilked.js @@ -559,7 +559,7 @@ window.saGetMilked = (function saGetMilked() { r += ` ${His} poor health impedes semen production.`; } - if (slave.health.illness > 0 || slave.health.tired > 50) { + if (slave.health.illness > 0 || slave.health.tired > 60) { r += ` ${He} performed worse this week due to<span class="red">`; if (slave.health.illness === 1) { r += ` feeling under the weather`; @@ -572,12 +572,12 @@ window.saGetMilked = (function saGetMilked() { } else if (slave.health.illness === 5) { r += ` a terrible illness`; } - if (slave.health.illness > 0 && slave.health.tired > 50) { + if (slave.health.illness > 0 && slave.health.tired > 60) { r += ` and`; } - if (slave.health.tired > 80) { + if (slave.health.tired > 90) { r += ` exhaustion`; - } else if (slave.health.tired > 50) { + } else if (slave.health.tired > 60) { r += ` being tired`; } r += `.</span>`; diff --git a/src/endWeek/saRest.js b/src/endWeek/saRest.js index 15a8066a29270355c33194a45f25b7caeadbd098..efb18a52696a15c3cbc58a687501e8550582fd6f 100644 --- a/src/endWeek/saRest.js +++ b/src/endWeek/saRest.js @@ -56,7 +56,7 @@ window.saRest = function saRest(slave) { } } - if (slave.health.illness > 0 || slave.health.tired > 50) { + if (slave.health.illness > 0 || slave.health.tired > 60) { t += ` Since ${he} is<span class="red">`; if (slave.health.illness === 1) { t += ` feeling under the weather`; @@ -69,12 +69,12 @@ window.saRest = function saRest(slave) { } else if (slave.health.illness === 5) { t += ` terribly ill`; } - if (slave.health.illness > 0 && slave.health.tired > 50) { + if (slave.health.illness > 0 && slave.health.tired > 60) { t += ` and`; } - if (slave.health.tired > 80) { + if (slave.health.tired > 90) { t += ` exhausted`; - } else if (slave.health.tired > 50) { + } else if (slave.health.tired > 60) { t += ` tired`; } t += `,</span> ${he} greatly appreciates being allowed to rest.`; diff --git a/src/endWeek/saRules_old.js b/src/endWeek/saRules_old.js index 491d9382acfc594875cebe9dbc130b6d591fcdef..a03f811802e6569b4f5821149f5ce2fbf87ee526 100644 --- a/src/endWeek/saRules_old.js +++ b/src/endWeek/saRules_old.js @@ -1,4 +1,4 @@ -(function() { +(function () { "use strict"; const @@ -13,7 +13,7 @@ function saRules(slave) { const { - // eslint-disable-next-line no-unused-vars + // eslint-disable-next-line no-unused-vars he, him, his, hers, himself, boy, He, His } = getPronouns(slave); @@ -544,7 +544,7 @@ function playerFetishPlay(slave) { const { - // eslint-disable-next-line no-unused-vars + // eslint-disable-next-line no-unused-vars he, him, his, hers, himself, boy, He, His } = getPronouns(slave); @@ -607,7 +607,7 @@ function playerEnergy(slave) { const { - // eslint-disable-next-line no-unused-vars + // eslint-disable-next-line no-unused-vars he, him, his, hers, himself, boy, He, His } = getPronouns(slave); @@ -651,7 +651,7 @@ function playerDiscoversFetish(slave) { const { - // eslint-disable-next-line no-unused-vars + // eslint-disable-next-line no-unused-vars he, him, his, hers, himself, boy, He, His } = getPronouns(slave); @@ -716,7 +716,7 @@ function playerDrugEffects(slave) { const { - // eslint-disable-next-line no-unused-vars + // eslint-disable-next-line no-unused-vars he, him, his, hers, himself, boy, He, His } = getPronouns(slave); @@ -797,7 +797,7 @@ function masturbationFetishPlay(slave) { const { - // eslint-disable-next-line no-unused-vars + // eslint-disable-next-line no-unused-vars he, him, his, hers, himself, boy, He, His } = getPronouns(slave); @@ -881,7 +881,7 @@ function masturbationDiscoversFetish(slave) { const { - // eslint-disable-next-line no-unused-vars + // eslint-disable-next-line no-unused-vars he, him, his, hers, himself, boy, He, His } = getPronouns(slave); @@ -944,7 +944,7 @@ function masturbationDrugEffects(slave) { const { - // eslint-disable-next-line no-unused-vars + // eslint-disable-next-line no-unused-vars he, him, his, hers, himself, boy, He, His } = getPronouns(slave); @@ -1024,7 +1024,7 @@ function rapeFetish(slave) { const { - // eslint-disable-next-line no-unused-vars + // eslint-disable-next-line no-unused-vars he, him, his, hers, himself, boy, He, His } = getPronouns(slave); @@ -1318,7 +1318,7 @@ function rapeDiscoversFetish(slave) { const { - // eslint-disable-next-line no-unused-vars + // eslint-disable-next-line no-unused-vars he, him, his, hers, himself, boy, He, His } = getPronouns(slave); @@ -1385,7 +1385,7 @@ function consentFetish(slave) { const { - // eslint-disable-next-line no-unused-vars + // eslint-disable-next-line no-unused-vars he, him, his, hers, himself, boy, He, His } = getPronouns(slave); @@ -1562,7 +1562,7 @@ function consentDiscoversFetish(slave) { const { - // eslint-disable-next-line no-unused-vars + // eslint-disable-next-line no-unused-vars he, him, his, hers, himself, boy, He, His } = getPronouns(slave); @@ -1628,7 +1628,7 @@ function permissiveDrugEffects(slave) { const { - // eslint-disable-next-line no-unused-vars + // eslint-disable-next-line no-unused-vars he, him, his, hers, himself, boy, He, His } = getPronouns(slave); diff --git a/src/endWeek/saServant.js b/src/endWeek/saServant.js index e78fd73f4d123a6430869e4593a150ff9b49bb20..213d877a50e549cb0faadab46f6fa895e79e30a6 100644 --- a/src/endWeek/saServant.js +++ b/src/endWeek/saServant.js @@ -63,7 +63,7 @@ window.saServant = function saServant(slave) { t += `so happy to serve your other slaves that ${he} often sees to their needs before they know they have them, and greatly <span class="yellowgreen">reduces the upkeep</span> of your slaves.`; } - if (slave.health.illness > 0 || slave.health.tired > 50) { + if (slave.health.illness > 0 || slave.health.tired > 60) { t += ` ${He} performed worse this week due to<span class="red">`; if (slave.health.illness === 1) { t += ` feeling under the weather`; @@ -76,12 +76,12 @@ window.saServant = function saServant(slave) { } else if (slave.health.illness === 5) { t += ` a terrible illness`; } - if (slave.health.illness > 0 && slave.health.tired > 50) { + if (slave.health.illness > 0 && slave.health.tired > 60) { t += ` and`; } - if (slave.health.tired > 80) { + if (slave.health.tired > 90) { t += ` exhaustion`; - } else if (slave.health.tired > 50) { + } else if (slave.health.tired > 60) { t += ` being tired`; } t += `.</span>`; diff --git a/src/endWeek/saServeThePublic.js b/src/endWeek/saServeThePublic.js index 40870d8afcfe47ae984a43154bb0482352e63671..42ff739024048a69d8ad4b2e851de34db9d3ba94 100644 --- a/src/endWeek/saServeThePublic.js +++ b/src/endWeek/saServeThePublic.js @@ -364,7 +364,7 @@ window.saServeThePublic = (function saServeThePublic() { } } - if (slave.health.illness > 0 || slave.health.tired > 50) { + if (slave.health.illness > 0 || slave.health.tired > 60) { r += ` ${He} performed worse this week due to<span class="red">`; if (slave.health.illness === 1) { r += ` feeling under the weather`; @@ -377,12 +377,12 @@ window.saServeThePublic = (function saServeThePublic() { } else if (slave.health.illness === 5) { r += ` a terrible illness`; } - if (slave.health.illness > 0 && slave.health.tired > 50) { + if (slave.health.illness > 0 && slave.health.tired > 60) { r += ` and`; } - if (slave.health.tired > 80) { + if (slave.health.tired > 90) { r += ` exhaustion`; - } else if (slave.health.tired > 50) { + } else if (slave.health.tired > 60) { r += ` being tired`; } r += `.</span>`; diff --git a/src/endWeek/saStayConfined.js b/src/endWeek/saStayConfined.js index ac5e7ef92978e2f2e9df61dd048cb35bbbfb8583..2259c017701c90cf7972dabd99baf9eb60c6a2cd 100644 --- a/src/endWeek/saStayConfined.js +++ b/src/endWeek/saStayConfined.js @@ -48,7 +48,7 @@ window.saStayConfined = function saStayConfined(slave) { t += ` The stress of confinement <span class="red">damages ${his} health.</span>`; healthDamage(slave, 10); - if (slave.health.illness > 0 || slave.health.tired > 50) { + if (slave.health.illness > 0 || slave.health.tired > 60) { t += ` ${He} is<span class="red">`; if (slave.health.illness === 1) { t += ` feeling under the weather`; @@ -61,12 +61,12 @@ window.saStayConfined = function saStayConfined(slave) { } else if (slave.health.illness === 5) { t += ` terribly ill`; } - if (slave.health.illness > 0 && slave.health.tired > 50) { + if (slave.health.illness > 0 && slave.health.tired > 60) { t += ` and`; } - if (slave.health.tired > 80) { + if (slave.health.tired > 90) { t += ` exhausted`; - } else if (slave.health.tired > 50) { + } else if (slave.health.tired > 60) { t += ` tired`; } t += `,</span> so ${his} misery only grows.`; diff --git a/src/endWeek/saTakeClasses.js b/src/endWeek/saTakeClasses.js index 77a9c4080d389a48405e73537066de2dac73e64d..bab08437462921d9e6b3a58307b70ea5f2deaefc 100644 --- a/src/endWeek/saTakeClasses.js +++ b/src/endWeek/saTakeClasses.js @@ -96,7 +96,7 @@ window.saTakeClasses = (function saServeThePublic() { } } - if (slave.health.illness > 0 || slave.health.tired > 50) { + if (slave.health.illness > 0 || slave.health.tired > 60) { r += ` ${He} performed worse this week due to<span class="red">`; if (slave.health.illness === 1) { r += ` feeling under the weather`; @@ -109,12 +109,12 @@ window.saTakeClasses = (function saServeThePublic() { } else if (slave.health.illness === 5) { r += ` a terrible illness`; } - if (slave.health.illness > 0 && slave.health.tired > 50) { + if (slave.health.illness > 0 && slave.health.tired > 60) { r += ` and`; } - if (slave.health.tired > 80) { + if (slave.health.tired > 90) { r += ` exhaustion`; - } else if (slave.health.tired > 50) { + } else if (slave.health.tired > 60) { r += ` being tired`; } r += `.</span>`; diff --git a/src/endWeek/saWhore.js b/src/endWeek/saWhore.js index 86f2552a27e44e3543e7d02c95b9c3c398aa4138..5610dd838aefd0b81ca4e544f275e1cf094b46c6 100644 --- a/src/endWeek/saWhore.js +++ b/src/endWeek/saWhore.js @@ -426,7 +426,7 @@ window.saWhore = (function saWhore() { } } - if (slave.health.illness > 0 || slave.health.tired > 50) { + if (slave.health.illness > 0 || slave.health.tired > 60) { r += ` ${He} performed worse this week due to<span class="red">`; if (slave.health.illness === 1) { r += ` feeling under the weather`; @@ -439,12 +439,12 @@ window.saWhore = (function saWhore() { } else if (slave.health.illness === 5) { r += ` a terrible illness`; } - if (slave.health.illness > 0 && slave.health.tired > 50) { + if (slave.health.illness > 0 && slave.health.tired > 60) { r += ` and`; } - if (slave.health.tired > 80) { + if (slave.health.tired > 90) { r += ` exhaustion`; - } else if (slave.health.tired > 50) { + } else if (slave.health.tired > 60) { r += ` being tired`; } r += `.</span>`; diff --git a/src/endWeek/saWorkAGloryHole.js b/src/endWeek/saWorkAGloryHole.js index 066f8ff1761cb289e556cf1032739587fefc0941..f0bbfbc3b6d600ec6d5eb668172955aff702b2e3 100644 --- a/src/endWeek/saWorkAGloryHole.js +++ b/src/endWeek/saWorkAGloryHole.js @@ -128,7 +128,7 @@ window.saWorkAGloryHole = (function saWorkAGloryHole() { healthDamage(slave, Math.max(Math.trunc((slave.sexAmount - 400) / 25) + jsRandom(-2, 2), 1)); } - if (slave.health.illness > 0 || slave.health.tired > 50) { + if (slave.health.illness > 0 || slave.health.tired > 60) { r += ` ${He} is<span class="red">`; if (slave.health.illness === 1) { r += ` feeling under the weather`; @@ -141,12 +141,12 @@ window.saWorkAGloryHole = (function saWorkAGloryHole() { } else if (slave.health.illness === 5) { r += ` terribly ill`; } - if (slave.health.illness > 0 && slave.health.tired > 50) { + if (slave.health.illness > 0 && slave.health.tired > 90) { r += ` and`; } - if (slave.health.tired > 80) { + if (slave.health.tired > 90) { r += ` exhausted`; - } else if (slave.health.tired > 50) { + } else if (slave.health.tired > 60) { r += ` tired`; } r += `,</span> but no one cared.`; diff --git a/src/endWeek/saWorkTheFarm.js b/src/endWeek/saWorkTheFarm.js index 7c48f7cab7d8b44f8b61db49c869e928ae5d57e1..d6d94657d269a8f4922ec48ac2baf1aad69a3e16 100644 --- a/src/endWeek/saWorkTheFarm.js +++ b/src/endWeek/saWorkTheFarm.js @@ -86,7 +86,7 @@ window.saWorkTheFarm = function saWorkTheFarm(slave) { t += `. `; } - if (slave.health.illness > 0 || slave.health.tired > 50) { + if (slave.health.illness > 0 || slave.health.tired > 60) { t += ` ${He} performed worse this week due to<span class="red">`; if (slave.health.illness === 1) { t += ` feeling under the weather`; @@ -99,12 +99,12 @@ window.saWorkTheFarm = function saWorkTheFarm(slave) { } else if (slave.health.illness === 5) { t += ` a terrible illness`; } - if (slave.health.illness > 0 && slave.health.tired > 50) { + if (slave.health.illness > 0 && slave.health.tired > 60) { t += ` and`; } - if (slave.health.tired > 80) { + if (slave.health.tired > 90) { t += ` exhaustion`; - } else if (slave.health.tired > 50) { + } else if (slave.health.tired > 60) { t += ` being tired`; } t += `.</span> `; @@ -392,7 +392,7 @@ window.saWorkTheFarm = function saWorkTheFarm(slave) { if (slave.preg > 10) { // TODO: write this } - if (slave.health.tired > 50) { + if (slave.health.tired > 60) { t += `${He} is so tired that the energy in ${his} shows is basically nonexistent, affecting ${his} profits. `; } if (slave.chem > 10) { diff --git a/src/facilities/clinic/clinicFramework.js b/src/facilities/clinic/clinicFramework.js index f8b15403f97d616347f2c5e5adf5c34200ae8157..d62ddc09219d6fa049640cf12dd75234977c5d1a 100644 --- a/src/facilities/clinic/clinicFramework.js +++ b/src/facilities/clinic/clinicFramework.js @@ -41,7 +41,7 @@ App.Entity.Facilities.ClinicPatientJob = class extends App.Entity.Facilities.Fac checkRequirements(slave) { let r = super.checkRequirements(slave); - if ((slave.health.illness < 2) && + if ((slave.health.condition >= 20 && slave.health.illness < 2 && slave.health.shortDamage < 10) && (V.Nurse === 0 || ((slave.chem <= 15 || this.facility.upgrade("Filters") !== 1) && (V.bellyImplants !== 1 || slave.bellyImplant <= -1) && (slave.pregKnown !== 1 || (this.facility.option("SpeedGestation") <= 0 && slave.pregControl !== "speed up")) && (slave.pregAdaptation * 1000 >= slave.bellyPreg && slave.preg <= slave.pregData.normalBirth / 1.33)))) { diff --git a/src/facilities/nursery/nurseryWidgets.js b/src/facilities/nursery/nurseryWidgets.js index b28a3c88b448165511fd257d7c36c784ce082be1..1bfb5db7c7ec796f6907809ca6fda73c1c006f09 100644 --- a/src/facilities/nursery/nurseryWidgets.js +++ b/src/facilities/nursery/nurseryWidgets.js @@ -1129,9 +1129,9 @@ App.Facilities.Nursery.InfantSummary = function(child) { * @param {App.Entity.SlaveState} child */ function longEyes(child) { - if (!canSee(slave)) { + if (!canSee(child)) { r += `<span class="red">Blind.</span> `; - } else if (!canSeePerfectly(slave)) { + } else if (!canSeePerfectly(child)) { r += `<span class="yellow">Nearsighted.</span> `; } } diff --git a/src/facilities/spa/spaFramework.js b/src/facilities/spa/spaFramework.js index 68006d7800821a143ec87af0d3795c74b43458cd..c1e5f8eccc1147af18818ecef7b49b26469fc25a 100644 --- a/src/facilities/spa/spaFramework.js +++ b/src/facilities/spa/spaFramework.js @@ -41,7 +41,20 @@ App.Entity.Facilities.SpaAssigneeJob = class extends App.Entity.Facilities.Facil checkRequirements(slave) { let r = super.checkRequirements(slave); - if (((slave.devotion < -20 && slave.fetish !== "mindbroken" && slave.health.tired < 20 && slave.health.condition >= 50) || (slave.health.condition >= 50 && slave.trust > 60 && slave.devotion > 60 && slave.fetish !== "mindbroken" && slave.sexualFlaw === "none" && slave.behavioralFlaw === "none" && slave.health.tired < 20))) { + if ( + slave.fetish !== "mindbroken" && + ( + slave.devotion < -20 || + ( + slave.health.condition >= 50 && + slave.health.tired < 20 && + slave.trust > 60 && + slave.devotion > 60 && + slave.sexualFlaw === "none" && + slave.behavioralFlaw === "none" + ) + ) + ) { r.push(`${slave.slaveName} will not benefit from time at ${this.facility.name}.`); } diff --git a/src/gui/Encyclopedia/encyclopedia.tw b/src/gui/Encyclopedia/encyclopedia.tw index d484f38e68bea9a02cf5d0dcec5127845e817c43..e476ced8b2fa3b800da4449b5afaf43d004700ac 100644 --- a/src/gui/Encyclopedia/encyclopedia.tw +++ b/src/gui/Encyclopedia/encyclopedia.tw @@ -2664,6 +2664,7 @@ LORE: INTERVIEWS <br>''Jones'' for major overhauling of the economy/population systems. <br>''PandemoniumPenguin'' for giving players a choice in FS names. <br>''torbjornhub'' for adding pit rules to the RA. + <br>''CheatMode'' for additional cheatmode options. <br>''git contributors lost to time'' for their submissions and work through pregmod's git. <br>''Bane70'' optimized huge swaths of code with notable professionalism. <br>''Circle Tritagonist'' provided several new collars and outfits. diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw index 8939b0ec0de00385b08937ddca1ab3cff5d368e5..6c547f1b0a9aced2f971c88b54bb5d3344575ef9 100644 --- a/src/init/storyInit.tw +++ b/src/init/storyInit.tw @@ -33,7 +33,6 @@ You should have received a copy of the GNU General Public License along with thi <<set $slaves[_i].assignment = "rest">> <<set $slaves[_i].weekAcquired = 0>> <<set $slaves[_i].newGamePlus = 1>> - <<PMODinit $slaves[_i]>> <<if $slaves[_i].mother > 0>> <<set $slaves[_i].mother += _NGPOffset>> <<elseif $freshPC == 1 && $slaves[_i].mother == -1>> @@ -1366,10 +1365,10 @@ You should have received a copy of the GNU General Public License along with thi <<set $customSlaveOrdered = 0>> /* I am not a slave object! Do not treat me like one! */ -<<set $customSlave = {age: 19, health: 1, muscles: 0, lips: 15, heightMod: "normal", weight: 0, face: 0, race: "white", skin: "left natural", boobs: 500, butt: 3, sex: 1, virgin: 0, dick: 2, balls: 2, clit: 0, labia: 0, vaginaLube: 1, analVirgin: 0, skills: 15, skill: {whore: 15, combat: 0}, intelligence: 0, intelligenceImplant: 0, nationality: "Stateless", leg: {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()}, arm: {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()}, eye: new App.Entity.EyeState(), hears: 0}>> +<<set $customSlave = new App.Entity.CustomSlaveOrder()>> <<set $huskSlaveOrdered = 0>> -<<set $huskSlave = {age: 18, nationality: "Stateless", race: "white", sex: 1, virgin: 0}>> +<<set $huskSlave = new App.Entity.CustomSlaveOrder()>> /*non-vanilla shit*/ diff --git a/src/js/CustomSlave.js b/src/js/CustomSlave.js new file mode 100644 index 0000000000000000000000000000000000000000..3bcca823e97f263579a19ddffceab174a675aca5 --- /dev/null +++ b/src/js/CustomSlave.js @@ -0,0 +1,209 @@ +/** + * Contains the parameters for the player's custom slave order. + * Some members are ignored by huskSlave (particularly mental properties). + * NOTE: $customSlave/$huskSlave IS NOT A SLAVE. Do not treat them like you would treat an instance of SlaveState. + */ +App.Entity.CustomSlaveOrder = class CustomSlaveOrder { + constructor() { + /** desired age, approximately + * Only certain values are valid; check seCustomSlaveDelivery.tw. + * @type {number} + */ + this.age = 19; + + /** desired health + * 0 = healthy, 1 = extremely healthy + * @type {number} + */ + this.health = 1; + + /** desired musculature + * Values as in SlaveState. + * @type {number} + */ + this.muscles = 0; + + /** desired lips + * Values as in SlaveState. + * @type {number} + */ + this.lips = 15; + + /** desired voice + * -1 = unimportant; other values as in SlaveState. + * @type {number} + */ + this.voice = -1; + + /** desired height category + * "greatly below average", "below average", "normal", "above average", or "greatly above average" + * @type {string} + */ + this.heightMod = "normal"; + + /** desired weight + * Values as in SlaveState. + * @type {number} + */ + this.weight = 0; + + /** desired facial attractiveness + * Values as in SlaveState. + * @type {number} + */ + this.face = 0; + + /** desired race + * "ethnicity is unimportant" or other values as in SlaveState + * @type {string} + */ + this.race = "white"; + + /** desired skin color + * "left natural" or other values as in SlaveState + * @type {string} + */ + this.skin = "left natural"; + + /** desired boob size + * Values as in SlaveState. + * @type {number} + */ + this.boobs = 500; + + /** desired butt size + * Values as in SlaveState. + * @type {number} + */ + this.butt = 3; + + /** desired genetic sex and genitalia + * 1 = female (XX), 2 = male (XY), 3 = futanari (XX) + * @type {number} + */ + this.sex = 1; + + /** virginity required + * 0 = yes, 1 = no (and yes, you are reading that correctly) + * @type {number} + */ + this.virgin = 0; + + /** desired dick and foreskin size, male and futa only + * Values as in SlaveState. + * @type {number} + */ + this.dick = 2; + + /** desired balls and scrotum size, male and futa only + * Values as in SlaveState. + * @type {number} + */ + this.balls = 2; + + /** desired clit size, female and futa only + * Values as in SlaveState. + * @type {number} + */ + this.clit = 0; + + /** desired labia size, female and futa only + * Values as in SlaveState. + * @type {number} + */ + this.labia = 0; + + /** desired vaginal lubrication, female and futa only + * Values as in SlaveState. + * @type {number} + */ + this.vaginaLube = 1; + + /** anal virginity required + * 0 = yes, 1 = no (and yes, you are reading that correctly) + * @type {number} + */ + this.analVirgin = 0; + + /** desired sex skill rating (anal, oral, and vaginal) + * Values as in SlaveState. + * @type {number} + */ + this.skills = 15; + + /** desired skills rating (.whore controls both whoring and entertainment, .combat controls combat) + * Values as in SlaveState. + * @type {Object.<number, number>} + */ + this.skill = {whore: 15, combat: 0}; + + /** desired intelligence level + * Range -3 to +3 (NOT the same range as SlaveState!) + * @type {number} + */ + this.intelligence = 0; + + /** desired education + * Values as in SlaveState. + * @type {number} + */ + this.intelligenceImplant = 0; + + /** desired nationality + * "Nationality is unimportant" or other values as in SlaveState. + * @type {string} + */ + this.nationality = "Stateless"; + + /** desired left and right leg state + * @type {Object.<App.Entity.LimbState, App.Entity.LimbState>} + */ + this.leg = {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()}; + + /** desired left and right arm state + * @type {Object.<App.Entity.LimbState, App.Entity.LimbState>} + */ + this.arm = {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()}; + + /** desired eye state + * Only the "vision" property is used, all others are ignored + * @type {App.Entity.EyeState} + */ + this.eye = new App.Entity.EyeState(); + + /** hearing + * Values as in SlaveState. + * @type {number} + */ + this.hears = 0; + + /** sense of smell + * Values as in SlaveState. + * @type {number} + */ + this.smells = 0; + + /** sense of taste + * Values as in SlaveState. + * @type {number} + */ + this.tastes = 0; + } +}; + +/** + * Checks to see if the custom slave has accidentally been turned into an actual slave object. + * IF THIS FUNCTION RETURNS TRUE, YOU HAVE PROBABLY FUCKED UP A BACKCOMPAT. CHANGE YOUR BACKCOMPAT, NOT THIS FUNCTION! + * @param {App.Entity.CustomSlaveOrder} slaveOrder + * @returns {boolean} + */ +App.Utils.IsCustomSlaveMutated = function(slaveOrder) { + /* ensure the absence of a few properties that slave orders definitely should not have, but every real slave has */ + if (slaveOrder.hasOwnProperty("rules") || slaveOrder.hasOwnProperty("pronoun")) { + return true; + /* ensure the presence of a few properties that slave orders definitely should have, but no real slave should */ + } else if (!slaveOrder.hasOwnProperty("age") || !slaveOrder.hasOwnProperty("sex")) { + return true; + } + return false; +}; diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js index f4ed47570a9be9fd38ef7068d8080bd4ba1f51b9..c4a1f9af801c806f0edef532249d8b3c863c7d9c 100644 --- a/src/js/DefaultRules.js +++ b/src/js/DefaultRules.js @@ -1514,6 +1514,10 @@ window.DefaultRules = (function() { } } + /** + * @param {App.Entity.SlaveState} slave + * @param {App.RA.RuleSetters} rule + */ function ProcessDiet(slave, rule) { // Diet Setting if ((rule.diet !== undefined && rule.diet !== null) || rule.weight !== null) { @@ -1537,9 +1541,27 @@ window.DefaultRules = (function() { r += `<br>${slave.slaveName} is on drugs designed to expand major body parts, so ${he}'s been put on a fattening diet to provide ${his} body as much fuel for growth as possible.`; } } else { - if (rule.weight !== null) { + // priority to growing/loosing muscles, then general body mass, then rest of the diets + if (!isAmputee(slave) && (App.RA.shallShrink(slave.muscles, rule.muscles, 8) || App.RA.shallGrow(slave.muscles, rule.muscles, 2))) { + if (App.RA.shallShrink(slave.muscles, rule.muscles, 8)) { + if ((slave.diet !== "slimming")) { + slave.diet = "slimming"; + r += `<br>${slave.slaveName} has been put on a slimming exercise regime.`; + } + } else if (App.RA.shallGrow(slave.muscles, rule.muscles, 2)) { + if ((slave.diet !== "muscle building")) { + slave.diet = "muscle building"; + r += `<br>${slave.slaveName} has been put on a muscle building exercise regime.`; + } + } else { + if ((slave.diet !== "healthy")) { + slave.diet = "healthy"; + r += `<br>${slave.slaveName} is at the target weight, so ${his} diet has been normalized.`; + } + } + } else if (rule.weight !== null && (slave.weight > rule.weight.max || slave.weight < rule.weight.min)) { if (slave.weight > rule.weight.max) { - if (slave.diet !== "restricted" ) { + if (slave.diet !== "restricted") { slave.diet = "restricted"; r += `<br>${slave.slaveName} is too fat so ${his} diet has been set to restricted.`; } @@ -1548,23 +1570,6 @@ window.DefaultRules = (function() { slave.diet = "fattening"; r += `<br>${slave.slaveName} is too skinny so ${his} diet has been set to fattening.`; } - } else if ((rule.muscles !== undefined) && (rule.muscles !== null) && !isAmputee(slave)) { - if (App.RA.shallShrink(slave.muscles, rule.muscles, 8)) { - if ((slave.diet !== "slimming")) { - slave.diet = "slimming"; - r += `<br>${slave.slaveName} has been put on a slimming exercise regime.`; - } - } else if (App.RA.shallGrow(slave.muscles, rule.muscles, 2)) { - if ((slave.diet !== "muscle building")) { - slave.diet = "muscle building"; - r += `<br>${slave.slaveName} has been put on a muscle building exercise regime.`; - } - } else { - if ((slave.diet !== "healthy")) { - slave.diet = "healthy"; - r += `<br>${slave.slaveName} is at the target weight, so ${his} diet has been normalized.`; - } - } } else { if ((slave.diet !== "healthy")) { slave.diet = "healthy"; @@ -1582,23 +1587,6 @@ window.DefaultRules = (function() { slave.diet = "fattening"; r += `<br>${slave.slaveName} is too skinny so ${his} diet has been set to fattening.`; } - } else if ((rule.muscles !== undefined) && (rule.muscles !== null) && !isAmputee(slave)) { - if (App.RA.shallShrink(slave.muscles, rule.muscles, 8)) { - if ((slave.diet !== "slimming")) { - slave.diet = "slimming"; - r += `<br>${slave.slaveName} has been put on a slimming exercise regime.`; - } - } else if (App.RA.shallGrow(slave.muscles, rule.muscles, 2)) { - if ((slave.diet !== "muscle building")) { - slave.diet = "muscle building"; - r += `<br>${slave.slaveName} has been put on a muscle building exercise regime.`; - } - } else { - if ((slave.diet !== "healthy")) { - slave.diet = "healthy"; - r += `<br>${slave.slaveName} is at the target weight, so ${his} diet has been normalized.`; - } - } } else { if ((slave.diet !== "healthy")) { slave.diet = "healthy"; @@ -1663,23 +1651,6 @@ window.DefaultRules = (function() { } } } - } else if ((rule.muscles !== undefined) && (rule.muscles !== null) && !isAmputee(slave)) { // no diet rule, muscles only - if (App.RA.shallShrink(slave.muscles, rule.muscles, 8)) { - if ((slave.diet !== "slimming")) { - slave.diet = "slimming"; - r += `<br>${slave.slaveName} has been put on a slimming exercise regime.`; - } - } else if (App.RA.shallGrow(slave.muscles, rule.muscles, 2)) { - if ((slave.diet !== "muscle building")) { - slave.diet = "muscle building"; - r += `<br>${slave.slaveName} has been put on a muscle building exercise regime.`; - } - } else { - if ((slave.diet !== "healthy")) { - slave.diet = "healthy"; - r += `<br>${slave.slaveName} has achieved the target musculature, so ${his} exercise regime has been normalized.`; - } - } } if (slave.drugs === "appetite suppressors" && slave.diet !== "restricted") { diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js index 5554f8c35aff861c16f2ccd8b9da8732faf25dcb..bff88f5de3edf223a401d51e07409e6b83244e6f 100644 --- a/src/js/SlaveState.js +++ b/src/js/SlaveState.js @@ -635,9 +635,10 @@ App.Entity.SlaveState = class SlaveState { illness: 0, /** * slave 's current level of exhaustion - * * 0 - 50 : Perfectly fine - * * 50 - 80 : tired - * * 80 - 100 : exhausted + * * 0 - 30 : Perfectly fine + * * 31 - 60 : tired + * * 61 - 90 : fatigued + * * 91 - 100 : exhausted */ tired: 0, /** slave 's combined health (condition - short - long) */ diff --git a/src/js/assayJS.js b/src/js/assayJS.js index 8410cb3c551c2fc4cddad937577a32b003ff732b..514f84e69ca5ebe9a600ddae2d7aa9d9f35e9381 100644 --- a/src/js/assayJS.js +++ b/src/js/assayJS.js @@ -337,13 +337,12 @@ App.Utils.Pronouns = class { get wives() { return this.noun === "girl" ? "wives" : "wives"; } get Wives() { return capFirstChar(this.wives); } - /* more accurately */ - /** - get wife() { return this.noun === "girl" ? "wife" : "husband"; } - get Wife() { return capFirstChar(this.wife); } - get wives() { return this.noun === "girl" ? "wives" : "husbands"; } - get Wives() { return capFirstChar(this.wives); } - */ + get mother() { return this.noun === "girl" ? "mother" : "father"; } + get Mother() { return capFirstChar(this.mother); } + + get father() { return this.noun === "girl" ? "mother" : "father"; } + get Father() { return capFirstChar(this.father); } + /** * @param {string} suffix * @returns {Object.<string, string>} diff --git a/src/js/assignJS.js b/src/js/assignJS.js index 71178130adfa5f7026ebd986cb135a1ea702605f..8085b53a79744001f9a4890ccd75eeedb76b45a5 100644 --- a/src/js/assignJS.js +++ b/src/js/assignJS.js @@ -14,7 +14,9 @@ window.assignJob = function assignJob(slave, job) { case "arcade": slave.assignment = "be confined in the arcade"; V.ArcadeiIDs.push(slave.ID); - slave.clothes = "no clothing"; + if (slave.clothes !== "a fuckdoll suit") { + slave.clothes = "no clothing"; + } slave.shoes = "none"; slave.collar = "none"; slave.rules.living = "spare"; diff --git a/src/js/datatypeCleanupJS.js b/src/js/datatypeCleanupJS.js index 732756bb4ff9330acf60181067cf48acfb58ba5d..d5a218fd570c3b6f868b34c0f03f1ef29af8fdad 100644 --- a/src/js/datatypeCleanupJS.js +++ b/src/js/datatypeCleanupJS.js @@ -75,8 +75,7 @@ App.Entity.Utils.SlaveDataSchemeCleanup = (function() { * Must be run AFTER migrateRules * @param {App.Entity.RuleState} rules */ - function migrateReleaseRules(rulestate) - { + function migrateReleaseRules(rulestate) { if (typeof rulestate.release === "string") { let newRule = new App.Entity.ReleaseRulesState(); switch (rulestate.release) { diff --git a/src/js/descriptionWidgets.js b/src/js/descriptionWidgets.js index 4710b6b3cf67c4de5155f4172454bc03dd69f56c..c53c83ca3ac57e82ad34620100282323796f3b8d 100644 --- a/src/js/descriptionWidgets.js +++ b/src/js/descriptionWidgets.js @@ -341,7 +341,7 @@ App.Desc.ageAndHealth = function(slave) { r += `${He} almost gleams; ${he}'s in the absolute <span class="green">best of health.</span>`; } - if (H.shortDamage !== 0 || H.longDamage !== 0) { + if (H.shortDamage !== 0 || H.longDamage !== 0) { r += ` Upon closer inspection you note that ${he}`; if (H.shortDamage >= 100) { @@ -390,7 +390,7 @@ App.Desc.ageAndHealth = function(slave) { } if (H.illness > 0 || H.tired > 50) { - r += ` Additionaly ${he} is currently `; + r += ` Additionally, ${he} is currently `; if (slave.health.illness === 1) { r += ` <span class="yellow">feeling under the weather.</span>`; } else if (H.illness === 2) { @@ -458,13 +458,10 @@ App.Desc.ageAndHealth = function(slave) { } else if (slave.actualAge < 17) { r += `young and fresh at ${num(slave.actualAge)}${birthday}. `; } else if (slave.actualAge < 18) { - r += `young, fresh, and nearly 18`; + r += `young, fresh, and nearly 18${birthday}`; if (V.showAgeDetail && V.seeAge !== 0) { - if (slave.birthWeek === 51) { - r += `; ${his} birthday is next week`; - if (V.seeAge) { - r += ` and people are already beginning to eye ${him}`; - } + if (V.seeAge) { + r += ` and people are already beginning to eye ${him}`; } } r += `. `; @@ -972,7 +969,7 @@ App.Desc.scar = function(slave, surface) { } } } - } else { /* describes all scared body parts */ + } else { /* describes all scarred body parts */ for (let [key, value] of Object.entries(slave.scar)) { if (r === ``) { r += `${He} has `; diff --git a/src/js/eventSelectionJS.js b/src/js/eventSelectionJS.js index 81898f9964094dced2218c0b558fe5a889b3f9e3..438f3079333effb9f84912244f5fda99d23b0733 100644 --- a/src/js/eventSelectionJS.js +++ b/src/js/eventSelectionJS.js @@ -1810,7 +1810,7 @@ window.generateRandomEventPoolStandard = function(eventSlave) { } } } - if (eventSlave.career === "a breeding bull" && eventSlave.assignment === "serve in the master suite" && canPenetrate(eventSlave) && eventSlave.dick >= 5 && hasAllLimbs(eventSlave) && State.variables.PC.vagina > -1 && State.variables.PC.preg === 0 && (eventSlave.muscles > 30 || eventSlave.weight > 30)) { + if (eventSlave.career === "a breeding bull" && canImpreg($PC, $activeSlave) && eventSlave.assignment === "serve in the master suite" && canPenetrate(eventSlave) && eventSlave.dick >= 5 && hasAllLimbs(eventSlave) && State.variables.PC.vagina > -1 && State.variables.PC.preg === 0 && (eventSlave.muscles > 30 || eventSlave.weight > 30)) { State.variables.RESSevent.push("breeding bull"); if (State.variables.PC.fertDrugs > 0) { State.variables.RESSevent.push("breeding bull"); diff --git a/src/js/generateNewSlaveJS.js b/src/js/generateNewSlaveJS.js index a671e25ab2f0be4a3894419f64672cbb65438d5b..506dcbbe85b8bec844fa85595e531396127ce26f 100644 --- a/src/js/generateNewSlaveJS.js +++ b/src/js/generateNewSlaveJS.js @@ -70,7 +70,6 @@ window.GenerateNewSlave = (function() { slave.hColor = getGeneticHairColor(slave); slave.skin = getGeneticSkinColor(slave); resetEyeColor(slave, "both"); - } function GenerateXXSlave() { @@ -1435,21 +1434,21 @@ window.GenerateNewSlave = (function() { eyeColor(["blue", "brown", "brown", "brown", "brown", "brown", "brown", "brown", "brown", "brown", "green"]); break; case "indo-aryan": - slave.lips = jsRandom(5, 25); - if (["Iranian", "Pakistani", "Tajik", "Kazakh", "Kurdish", "Azerbaijani", "Syrian", "Kyrgyz", "Afghan", "Mongolian", "Turkmen", "Turkish", "Uzbek"].includes(slave.nationality) || (jsRandom(1, 8) === 1)) { - slave.origSkin = jsEither(["olive", "bronze", "tan", "light olive", "light olive", "light", "light", "fair"]); - if (jsRandom(1, 10) === 1){ - slave.origHColor = jsEither(["black", "dark brown", "brown", "chestnut", "blonde", "red"]); - eyeColor(["light grey", "blue", "blue", "brown", "green", "green"]); - } else { - slave.origHColor = jsEither(["jet black", "black", "black", "dark brown", "dark brown", "brown", "brown"]); - eyeColor(["brown", "brown", "brown", "brown", "brown", "brown", "green"]); - } - } else { - slave.origSkin = jsEither(["ebony", "dark brown", "dark brown", "dark olive", "olive", "light olive", "tan", "light"]); - slave.origHColor = jsEither(["jet black", "black", "black", "black", "dark brown"]); - eyeColor(["brown"], true); - } + slave.lips = jsRandom(5, 25); + if (["Iranian", "Pakistani", "Tajik", "Kazakh", "Kurdish", "Azerbaijani", "Syrian", "Kyrgyz", "Afghan", "Mongolian", "Turkmen", "Turkish", "Uzbek"].includes(slave.nationality) || (jsRandom(1, 8) === 1)) { + slave.origSkin = jsEither(["olive", "bronze", "tan", "light olive", "light olive", "light", "light", "fair"]); + if (jsRandom(1, 10) === 1){ + slave.origHColor = jsEither(["black", "dark brown", "brown", "chestnut", "blonde", "red"]); + eyeColor(["light grey", "blue", "blue", "brown", "green", "green"]); + } else { + slave.origHColor = jsEither(["jet black", "black", "black", "dark brown", "dark brown", "brown", "brown"]); + eyeColor(["brown", "brown", "brown", "brown", "brown", "brown", "green"]); + } + } else { + slave.origSkin = jsEither(["ebony", "dark brown", "dark brown", "dark olive", "olive", "light olive", "tan", "light"]); + slave.origHColor = jsEither(["jet black", "black", "black", "black", "dark brown"]); + eyeColor(["brown"], true); + } slave.hStyle = "neat"; break; case "malay": @@ -1503,7 +1502,7 @@ window.GenerateNewSlave = (function() { eyeColor(["blue", "brown", "green"], true); } if (slave.origHColor === "red"){ - slave.origHColor = jsEither(["chestnut", "auburn", "auburn", "auburn", "auburn", "ginger", "ginger", "copper", "copper"]); + slave.origHColor = jsEither(["chestnut", "auburn", "auburn", "auburn", "auburn", "ginger", "ginger", "copper", "copper"]); } if ((skinToneLevel(slave.origSkin) > 5) && (skinToneLevel(slave.origSkin) < 10)) { if (jsRandom(1, 4) === 1) { diff --git a/src/js/health.js b/src/js/health.js index 54882fff772ede3d8a363a29e0dfa7b84d9b5d31..ee41adbf032d1a89ca94c9ce93b6315d6716554b 100644 --- a/src/js/health.js +++ b/src/js/health.js @@ -31,6 +31,20 @@ window.healthDamage = function healthDamage(slave, damage) { H.health = H.condition - H.longDamage - H.shortDamage; }; +/** + * All things directly curing wounds on a slave go through this to update short term damage and slave health. + * Use sparingly and for direct medical treatment by qualified professionals only; improveCondition should be used instead for drugs, natural healing, etc. + * @param {App.Entity.SlaveState} slave + * @param {number} cure + * @returns {void} + */ +window.healthCure = function healthCure(slave, cure) { + const H = slave.health; + H.shortDamage -= Math.max(Math.trunc(cure), 0); + H.shortDamage = Math.max(H.shortDamage, 0); + H.health = H.condition - H.longDamage - H.shortDamage; +}; + /** * Surgical procedures also depend on the PC's medicine skill * @param {App.Entity.SlaveState} slave diff --git a/src/js/heroCreator.js b/src/js/heroCreator.js index 2f78670c4df783498796bac7561bf6d7b93bd5ae..e60b531b66860c5e3ed61f64876722cd758819b2 100644 --- a/src/js/heroCreator.js +++ b/src/js/heroCreator.js @@ -43,7 +43,7 @@ App.Utils.getHeroSlave = function(heroSlave, baseHeroSlave) { } const newSlave = clone(baseHeroSlave); - let albinismOverride = null + let albinismOverride = null; if (heroSlave.albinismOverride !== null) { albinismOverride = heroSlave.albinismOverride; delete heroSlave.albinismOverride; diff --git a/src/js/modification.js b/src/js/modification.js index bfb2d44b8d6d3134647c47df7294d999ed461d5d..fb296a7a184436bbe1b3f9a58e7a4c472145736d 100644 --- a/src/js/modification.js +++ b/src/js/modification.js @@ -103,3 +103,59 @@ App.Medicine.Modification.addScourged = function(slave, weight) { App.Medicine.Modification.addScar(slave, scarArray[i], "chain", weight); } }; + +/** + * Scars a slave over a large section of their body. + * @param {App.Entity.SlaveState} slave + * @param {string} location full, upper, lower, left or right + * @param {string} type whip, burn, surgical, generic + * @param {number} weight + */ +App.Medicine.Modification.addBulkScars = function(slave, location, type, weight) { + let scarArray = []; + + /* Divide slave into quarters, and add each quarter as needed. */ + + /* Top left */ + if (["left", "upper", "full"].includes(location)) { + scarArray.push("left breast"); + if (getLeftArmID(slave) === 1) { + scarArray.push("left upper arm", "left lower arm", "left hand"); + } + } + + /* Top right */ + if (["right", "upper", "full"].includes(location)) { + scarArray.push("right breast"); + if (getRightArmID(slave) === 1) { + scarArray.push("right upper arm", "right lower arm", "right hand"); + } + } + + /* Lower left */ + if (["left", "lower", "full"].includes(location)) { + scarArray.push("left buttock"); + if (getLeftLegID(slave) === 1) { + scarArray.push("left thigh", "left calf", "left foot"); + } + } + + /* Lower Right */ + if (["right", "lower", "full"].includes(location)) { + scarArray.push("right buttock"); + if (getRightLegID(slave) === 1) { + scarArray.push("right thigh", "right calf", "right foot"); + } + } + + /* Extra */ + if (["upper", "full"].includes(location)) { + scarArray.push("back", "lower back"); + } + + let i = 0; + for (i = 0; i < scarArray.length; i++) { + App.Medicine.Modification.addScar(slave, scarArray[i], type, weight); + } +}; + diff --git a/src/js/rulesAssistant.js b/src/js/rulesAssistant.js index 7364ebddbcb653755d169fb2e2a9410b81b4d1e1..855c872d11ccae5328f3620951666c7f5d0b3324 100644 --- a/src/js/rulesAssistant.js +++ b/src/js/rulesAssistant.js @@ -209,7 +209,7 @@ window.ruleAppliesP = function ruleAppliesP(cond, slave) { flag = cond.data.value.includes(slave[cond.data.attribute]); break; case "custom": // user provided JS function - //TODO: This should use a cached Function instead of 'eval'ing + // TODO: This should use a cached Function instead of 'eval'ing flag = eval(cond.data)(slave); break; } @@ -344,6 +344,7 @@ App.RA.newRule = function() { preg: null, abortion: null, growth: emptyGrowth(), + // eslint-disable-next-line camelcase hyper_drugs: 0, aphrodisiacs: null, autoSurgery: 0, @@ -498,8 +499,7 @@ window.RASummaryCell = function() { } function ruleSetValueToString(v) { - if (typeof v === 'object') - { + if (typeof v === 'object') { if(v.hasOwnProperty('cond') && v.hasOwnProperty('val')) { return `<nowiki>${v.cond}</nowiki> ${v.val}`; } else if(v.hasOwnProperty('min') && v.hasOwnProperty('max')) { diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js index 7f1508991ae3620bf6f88b26f9bd73f7a6670cff..1af018ebdafa0fd2c380d901e30e824ea78b137f 100644 --- a/src/js/rulesAssistantOptions.js +++ b/src/js/rulesAssistantOptions.js @@ -2810,7 +2810,7 @@ window.rulesAssistantOptions = (function() { const pairs = [ ["Allowed", 1], ["Forbidden", 0], - ]; + ]; super("Sex with family", pairs); this.setValue(current_rule.set.releaseRules.family); this.onchange = (value) => current_rule.set.releaseRules.family = value; @@ -2822,7 +2822,7 @@ window.rulesAssistantOptions = (function() { const pairs = [ ["Allowed", 1], ["Forbidden", 0], - ]; + ]; super("Sex with other slaves", pairs); this.setValue(current_rule.set.releaseRules.slaves); this.onchange = (value) => current_rule.set.releaseRules.slaves = value; @@ -2834,7 +2834,7 @@ window.rulesAssistantOptions = (function() { const pairs = [ ["Granted", 1], ["Denied", 0], - ]; + ]; super(`Routine sex with ${properMaster()}`, pairs); this.setValue(current_rule.set.releaseRules.master); this.onchange = (value) => current_rule.set.releaseRules.master = value; diff --git a/src/js/slaveListing.js b/src/js/slaveListing.js index 492638ff9c833c4c70e49318360a77dbc71efcb0..a8f024ea6073f39699edea1ef1cccfe954afe63c 100644 --- a/src/js/slaveListing.js +++ b/src/js/slaveListing.js @@ -317,7 +317,10 @@ App.UI.SlaveList.render = function() { if (postNote !== undefined) { const pn = postNote(slave, index); if (pn) { - res.appendChild(pn); + let r = document.createElement("p"); + r.classList.add("si"); + r.appendChild(pn); + res.appendChild(r); } } diff --git a/src/js/slaveSummaryWidgets.js b/src/js/slaveSummaryWidgets.js index 8d032ea8aa3401740ca7fd5c95cba3f1aa79dea7..ea9d144efaf56176c8acbba7e9a1eb32a02d6b89 100644 --- a/src/js/slaveSummaryWidgets.js +++ b/src/js/slaveSummaryWidgets.js @@ -753,7 +753,7 @@ window.SlaveSummaryUncached = (function() { makeSpan(c, `Ill${slave.health.illness}`, ["red", "strong"], true, slave.health.illness); } else if (slave.health.illness > 1) { makeSpan(c, `Ill${slave.health.illness}`, ["yellow", "strong"], true, slave.health.illness); - } + } } function long_illness(slave, c) { @@ -769,18 +769,26 @@ window.SlaveSummaryUncached = (function() { } function short_tired(slave, c) { - if (slave.health.tired > 80) { - makeSpan(c, "Ti", ["red", "strong"], true, slave.health.tired); - } else if (slave.health.tired > 50) { - makeSpan(c, "Ti", "yellow", true, slave.health.tired); + if (slave.health.tired > 90) { + makeSpan(c, "Exh", ["red", "strong"], true, slave.health.tired); + } else if (slave.health.tired > 60) { + makeSpan(c, "Tir+", "yellow", true, slave.health.tired); + } else if (slave.health.tired > 30) { + makeSpan(c, "Tir", "yellow", true, slave.health.tired); + } else if (slave.health.tired < 0) { + makeSpan(c, "Ene", "green", true, slave.health.tired); } } function long_tired(slave, c) { - if (slave.health.tired > 80) { + if (slave.health.tired > 90) { makeSpan(c, "Exhausted", ["red", "strong"], true, slave.health.tired); - } else if (slave.health.tired > 50) { + } else if (slave.health.tired > 60) { + makeSpan(c, "Fatigued", "yellow", true, slave.health.tired); + } else if (slave.health.tired > 30) { makeSpan(c, "Tired", "yellow", true, slave.health.tired); + } else if (slave.health.tired < 0) { + makeSpan(c, "Energetic", "green", true, slave.health.tired); } } diff --git a/src/js/storyJS.js b/src/js/storyJS.js index 891e8029ae91ada6695c023a251db7829e6124c0..0452e0e2bb549cd55cbca8db5cc8ff040e8165b5 100644 --- a/src/js/storyJS.js +++ b/src/js/storyJS.js @@ -111,6 +111,35 @@ window.canImpreg = function(slave1, slave2) { } }; +/** assuming slave1 is fertile, could slave2 impregnate slave1? + * slave2 must have balls with compatible sperm; + * a special function intended for tribbing scenes; + * @param {App.Entity.SlaveState} slave1 + * @param {App.Entity.SlaveState} slave2 + * @returns {boolean} + */ +window.canFemImpreg = function(slave1, slave2) { + if (!slave1 || !slave2) { + return null; + } else if (slave2.balls < 1) { + return false; + } else if (slave2.chastityVagina === 1) { + return false; + } else if (slave2.pubertyXY === 0) { + /* pregmod start */ + return false; + } else if (slave2.vasectomy === 1) { + return false; + } else if (!canBreed(slave1, slave2)) { + return false; /* pregmod end */ + } else if (!canGetPregnant(slave1)) { + /* includes chastity checks */ + return false; + } else { + return true; + } +}; + /** * @param {App.Entity.SlaveState} slave * @returns {string|number} diff --git a/src/js/surgery.js b/src/js/surgery.js index c06a812f3ce54dc7c03fc827f7bd9201d021f105..66ab1e64a132a3a7467186e3f42361e8e07ed672 100644 --- a/src/js/surgery.js +++ b/src/js/surgery.js @@ -169,9 +169,10 @@ App.Medicine.Surgery.ListHelpers = class { * @param {string} name * @param {number} implantType * @param {number} size + * @param {number} [implantPrice=0] * @returns {App.Medicine.Surgery.Procedure} */ - replaceImplants(name, implantType, size) { + replaceImplants(name, implantType, size, implantPrice = 0) { return App.Medicine.Surgery.makeOption(this._keys.changeImplant, `${capFirstChar(name)} implants`, size - this._slave.boobsImplant, `replace ${this._pronouns.his} ${this._bodyPart} implants with ${name}${this._showCCs ? ` (${size}cc)` : ''} ones`, @@ -179,7 +180,7 @@ App.Medicine.Surgery.ListHelpers = class { slave[this._bodyPart] += size - slave[`${this._bodyPart}Implant`]; slave[`${this._bodyPart}Implant`] = size; slave[`${this._bodyPart}ImplantType`] = implantType; - }, this._V.surgeryCost, 10, this._bodyPart + }, this._V.surgeryCost + implantPrice, 10, this._bodyPart ); } @@ -248,6 +249,19 @@ App.Medicine.Surgery.sizingProcedures = function() { butt: buttSizingProcedures }; + /** + * for implants that we potentially order abroad :) + * @param {App.Medicine.Surgery.Procedure} op + */ + function _advFillablePriceModifier(op) { + if (V.ImplantProductionUpgrade !== 1) { + op.costs += 10000; + op.label += " (special order)"; + op.description += " (special order)"; + } + return op; + } + /** * Returns list of available surgeries targeted at changing size of the given body part * @param {string} bodyPart @@ -286,17 +300,20 @@ App.Medicine.Surgery.sizingProcedures = function() { const types = App.Medicine.Keys.Surgery.Target.breast; // shortcuts const helper = new App.Medicine.Surgery.ListHelpers(slave, "boobs", types, pronouns, V.showBoobCCs); + const areStringsInstalled = slave.boobsImplantType === 1; + const curSize = slave.boobsImplant; + let r = []; if (options.augmentation) { if (slave.boobs > 50000) { r.push(App.Medicine.Surgery.makeImpossibleOption(types.fillUp, "Increase boobs", `<em>${His} breasts are as large as ${he} can physically support</em>`)); - } else if (slave.boobsImplant > 10000 && !largeImplantsAvailable && slave.boobsImplantType !== 1) { + } else if (curSize > 10000 && !largeImplantsAvailable && !areStringsInstalled) { r.push(App.Medicine.Surgery.makeImpossibleOption(types.fillUp, "Increase boobs", `<em>${His} implants are filled to capacity</em>`)); } else if (slave.indentureRestrictions >= 2) { r.push(App.Medicine.Surgery.makeImpossibleOption(types.installImplant, "Change boob size", `<em>${His} indenture forbids elective surgery</em>`)); } else if (slave.breastMesh === 1) { r.push(App.Medicine.Surgery.makeImpossibleOption(types.installImplant, "Put implants", `<em>${His} supportive mesh implant blocks implantation</em>`)); - } else if (slave.boobsImplant === 0) { + } else if (curSize === 0) { if (options.strings) { r.push(helper.installImplants("string", 1, 400)); } @@ -305,58 +322,72 @@ App.Medicine.Surgery.sizingProcedures = function() { } r.push(helper.installImplants("standard", 0, 400)); r.push(helper.installImplants("small", 0, 200)); - } else if (slave.boobsImplant > 10000 && slave.boobsImplantType !== 1 && advancedFillableImplantsAvailable) { + } else if (curSize > 10000 && !areStringsInstalled && advancedFillableImplantsAvailable) { r.push(helper.fillUp(1000)); - } else if (slave.boobsImplant > 9800 && slave.boobsImplantType !== 1 && advancedFillableImplantsAvailable) { + } else if (curSize > 9800 && !areStringsInstalled && advancedFillableImplantsAvailable) { r.push(helper.replaceImplants("hyper fillable", 0, 11000)); - } else if (slave.boobsImplant > 2000 && slave.boobsImplantType !== 1) { + } else if (curSize > 2000 && !areStringsInstalled) { r.push(helper.fillUp(400)); - } else if (slave.boobsImplant > 1800 && slave.boobsImplantType !== 1) { + } else if (curSize > 1800 && !areStringsInstalled) { r.push(App.Medicine.Surgery.makeImpossibleOption(types.fillUp, "Add inert filler", `<em>${His} implants are filled to capacity</em>`)); - - const advancedFillable = helper.replaceImplants("advanced fillable", 0, 2200); - if (!advancedFillableImplantsAvailable) { - advancedFillable.costs += 10000; - advancedFillable.label += " (special order)"; - advancedFillable.description += " (special order)"; - } - r.push(advancedFillable); - } else if (slave.boobsImplant > 600 && slave.boobsImplantType !== 1) { + r.push(_advFillablePriceModifier(helper.replaceImplants("advanced fillable", 0, 2200))); + } else if (curSize > 600 && !areStringsInstalled) { r.push(helper.fillUp(200)); - } else if (slave.boobsImplant > 400 && slave.boobsImplantType !== 1) { + } else if (curSize > 400 && !areStringsInstalled) { r.push(helper.replaceImplants("fillable", 0, 800)); - } else if (slave.boobsImplant > 200 && slave.boobsImplantType !== 1) { + } else if (curSize > 200 && !areStringsInstalled) { r.push(helper.replaceImplants("large", 0, 600)); - } else if (slave.boobsImplant > 0 && slave.boobsImplantType !== 1) { + } else if (curSize > 0 && !areStringsInstalled) { r.push(helper.replaceImplants("standard", 0, 400)); r.push(helper.replaceImplants("large", 0, 600)); } } - if (options.reduction && (slave.boobs > 300 || slave.boobsImplant > 0)) { - if (slave.boobsImplant > 0) { - if (slave.boobsImplantType === 1 && slave.boobsImplant > 400) { - if (slave.boobsImplant > 8000) { + if (options.replace && slave.indentureRestrictions < 2 && curSize > 0) { + if (!areStringsInstalled && curSize < 600) { + r.push(helper.replaceImplants("string", 1, 400)); + } else if (areStringsInstalled){ + // we have engorged string implants, suggest replacing with normal implants of similar size + if (curSize > 10000) { + if (largeImplantsAvailable) { + if (slave.boobs < 50000) { + r.push(helper.replaceImplants("hyper fillable", 0, Math.round(curSize / 1000) * 1000)); + } + } + } else if (curSize > 2200) { + r.push(_advFillablePriceModifier(helper.replaceImplants("advanced fillable", 0, Math.round(curSize / 400) * 400))); + } else if (curSize > 400) { + r.push(helper.replaceImplants("fillable", 0, Math.round(curSize / 200) * 200)); + } else { + r.push(helper.replaceImplants("standard", 0, 400)); + } + } + } + + if (options.reduction && (slave.boobs > 300 || curSize > 0)) { + if (curSize > 0) { + if (areStringsInstalled && curSize > 400) { + if (curSize > 8000) { r.push(helper.drain(1000)); - } else if (slave.boobsImplant > 5000) { + } else if (curSize > 5000) { r.push(helper.drain(750)); - } else if (slave.boobsImplant > 2000) { + } else if (curSize > 2000) { r.push(helper.drain(500)); - } else if (slave.boobsImplant > 1000) { + } else if (curSize > 1000) { r.push(helper.drain(250)); - } else if (slave.boobsImplant > 500) { + } else if (curSize > 500) { r.push(helper.drain(100)); } } r.push(helper.removeImplants()); } - if ((slave.boobs > 300) && (slave.boobsImplant === 0) && slave.indentureRestrictions < 2) { + if ((slave.boobs > 300) && (curSize === 0) && slave.indentureRestrictions < 2) { r.push(helper.reduce("reduce", 200)); if (slave.boobs < 675) { r.push(helper.reduce("slightly reduce", 25)); } } - if ((slave.boobsImplant === 0) && slave.indentureRestrictions < 2 && (slave.breedingMark !== 1 || V.propOutcome !== 1 || V.eugenicsFullControl === 1 || V.arcologies[0].FSRestart === "unset")) { + if ((curSize === 0) && slave.indentureRestrictions < 2 && (slave.breedingMark !== 1 || V.propOutcome !== 1 || V.eugenicsFullControl === 1 || V.arcologies[0].FSRestart === "unset")) { if (slave.boobs >= 7000) { r.push(App.Medicine.Surgery.makeOption(types.reduction, "Mastectomy", 300 - slave.boobs, "perform mastectomy", @@ -394,6 +425,9 @@ App.Medicine.Surgery.sizingProcedures = function() { const types = App.Medicine.Keys.Surgery.Target.butt; // shortcuts const helper = new App.Medicine.Surgery.ListHelpers(slave, "butt", types, pronouns, false); + const areStringsInstalled = slave.buttImplantType === 1; + const curSize = slave.buttImplant; + let r = []; if (options.augmentation) { @@ -401,20 +435,20 @@ App.Medicine.Surgery.sizingProcedures = function() { r.push(App.Medicine.Surgery.makeImpossibleOption(types.installImplant, "Change butt size", `<em>${His} indenture forbids elective surgery</em>`)); } else if (slave.butt > 19) { r.push(App.Medicine.Surgery.makeImpossibleOption(types.fillUp, "Increase butt", `<em>${His} butt is as large as it can possibly get</em>`)); - } else if (slave.butt > 7 && !largeImplantsAvailable && thisArcology.FSAssetExpansionist === "unset" && slave.buttImplantType !== 1) { + } else if (slave.butt > 7 && !largeImplantsAvailable && thisArcology.FSAssetExpansionist === "unset" && !areStringsInstalled) { r.push(App.Medicine.Surgery.makeImpossibleOption(types.installImplant, "Increase butt", `<em>${His} butt is as large as ${he} can physically support</em>`)); - } else if (slave.buttImplant > 7 && !largeImplantsAvailable && slave.buttImplantType !== 1) { + } else if (curSize > 7 && !largeImplantsAvailable && !areStringsInstalled) { r.push(App.Medicine.Surgery.makeImpossibleOption(types.installImplant, "Increase butt", `<em>${His} butt implants are filled to capacity</em>`)); - } else if (slave.buttImplant === 0) { + } else if (curSize === 0) { r.push(helper.installImplants("standard", 0, 1)); if (options.strings) { r.push(helper.installImplants("string", 1, 1)); } - } else if (slave.buttImplant === 1 && slave.buttImplantType !== 1) { + } else if (curSize === 1 && !areStringsInstalled) { r.push(helper.replaceImplants("bigger", 0, 2)); - } else if (slave.buttImplant === 2 && slave.buttImplantType !== 1) { + } else if (curSize === 2 && !areStringsInstalled) { r.push(helper.replaceImplants("fillable", 0, 3)); - } else if (slave.buttImplant === 4 && slave.buttImplantType !== 1) { + } else if (curSize === 4 && !areStringsInstalled) { r.push(App.Medicine.Surgery.makeImpossibleOption(types.fillUp, "Increase size", `<em>${His} implants are filled to capacity</em>`)); const advancedFillable = helper.replaceImplants("advanced fillable", 0, 5); if (!advancedFillableImplantsAvailable) { @@ -423,23 +457,44 @@ App.Medicine.Surgery.sizingProcedures = function() { advancedFillable.description += " (special order)"; } r.push(advancedFillable); - } else if (slave.buttImplant === 8 && slave.buttImplantType !== 1 && advancedFillableImplantsAvailable) { + } else if (curSize === 8 && !areStringsInstalled && largeImplantsAvailable) { r.push(helper.replaceImplants("hyper fillable", 0, 9)); - } else if (slave.buttImplant > 2 && slave.buttImplantType !== 1) { + } else if (curSize > 2 && !areStringsInstalled) { r.push(helper.fillUp(1)); } } + if (options.replace && slave.indentureRestrictions < 2 && curSize > 0) { + if (!areStringsInstalled && curSize === 1) { + r.push(helper.replaceImplants("string", 1, 1)); + } else if (areStringsInstalled) { + // we have engorged string implants, suggest replacing with normal implants of similar size + if (curSize >= 9) { + if (largeImplantsAvailable) { + r.push(helper.replaceImplants("hyper fillable", 0, curSize)); + } + } else if (curSize >= 5) { + r.push(_advFillablePriceModifier(helper.replaceImplants("advanced fillable", 0, curSize))); + } else if (curSize >= 3) { + r.push(helper.replaceImplants("fillable", 0, curSize)); + } else if (curSize === 2) { + r.push(helper.replaceImplants("big", 0, curSize)); + } else { + r.push(helper.replaceImplants("standard", 0, curSize)); + } + } + } + if (options.reduction) { - if (slave.buttImplant > 0) { + if (curSize > 0) { if (slave.indentureRestrictions < 2) { - if (slave.buttImplantType === 1 && slave.buttImplant > 1) { + if (areStringsInstalled && curSize > 1) { r.push(helper.drain(1)); } r.push(helper.removeImplants()); } } - if ((slave.butt > 1) && (slave.buttImplant === 0)) { + if ((slave.butt > 1) && (curSize === 0)) { if (slave.indentureRestrictions < 2) { r.push(helper.reduce("reduce", 1)); } diff --git a/src/js/utils.js b/src/js/utils.js index eca740c543cbcfbf5729fa9fbd766671d7152e05..2885e290d0761c5f6b1eb9c9931eab8e8409c562 100644 --- a/src/js/utils.js +++ b/src/js/utils.js @@ -297,3 +297,30 @@ App.Utils.topologicalSort = function(keys, edges) { return sorted; }; + +window.getBestSlaves = function({part, count=3, smallest=false, filter=null}={}){ + if(!_.isFunction(part)) { + const partName = part; + part = (slave)=>slave[partName]; + } + const sortMethod = smallest ? (left, right) => left.value - right.value : (left, right) => right.value - left.value; + if(filter == null) { + filter = ()=>true; + } + return V.slaves.map((slave, index)=>({slave, index})) + .filter(slaveInfo=>filter(slaveInfo.slave)) + .map(slaveInfo=>{ slaveInfo.value = part(slaveInfo.slave); return slaveInfo; }) + .sort(sortMethod) + .slice(0, count); +}; +window.getBestSlavesIndices= function(info) { + return getBestSlaves(info).map(slaveInfo => slaveInfo.index); +}; + +/* +//Example +getBestSlaves({part:"butt", count: 5}); +getBestSlaves({part:"boobs"});//defaults to top 3 +getBestSlaves({part:"dick", smallest:true, filter:(slave)=>slave.dick > 0});//defaults to top 3 +getBestSlaves({part:slave=>slave.intelligence+slave.intelligenceImplant}); +*/ diff --git a/src/js/utilsFC.js b/src/js/utilsFC.js index d9d63199da3037394276f648e6fe66346171deb0..990cb66bfef0d4e4907a0c7726959715cd9fc743 100644 --- a/src/js/utilsFC.js +++ b/src/js/utilsFC.js @@ -1084,7 +1084,7 @@ window.asSingular = function(single) { } return single; }; -//When 1, shows "a (slave)" +// When 1, shows "a (slave)" window.numberWithPlural = function(number, single, plural) { if (number === 0) { return "no " + asPlural(single, plural); @@ -1097,7 +1097,7 @@ window.numberWithPlural = function(number, single, plural) { } }; -//when 1, shows "one (slave)" +// when 1, shows "one (slave)" window.numberWithPluralOne = function(number, single, plural) { if (number === 0) { return "no " + asPlural(single, plural); @@ -1109,7 +1109,7 @@ window.numberWithPluralOne = function(number, single, plural) { return number + " " + asPlural(single, plural); } }; -//shows "less than one (slave)" instead of "no (slaves)" when number is 0. +// shows "less than one (slave)" instead of "no (slaves)" when number is 0. window.numberWithPluralNonZero = function(number, single, plural) { if (number === 0) { number = 0.1; } return numberWithPlural(number, single, plural); @@ -1217,7 +1217,7 @@ window.cashFormat = function(s) { return `¤${commaNum(s)}`; }; window.cashFormatColor = function(s, invert = false) { - //Display red if the value is negative, unless invert is true + // Display red if the value is negative, unless invert is true if ((s > 0) === invert) { return `<span class='red'>${cashFormat(s)}</span>`; } @@ -2732,13 +2732,13 @@ App.Utils.setLocalPronouns = function(slave, suffix, pronouns) { pronouns = pronouns || [ // Object.getOwnPropertyNames(ps) ? 'he', 'him', 'his', 'himself', 'boy', 'He', 'Him', 'His', 'Himself', 'Boy', - 'man', 'men', 'shota', 'son', 'brother', 'husband', 'husbands', - 'Man', 'Men', 'Shota', 'Son', 'Brother', 'Husband', 'Husbands', + 'man', 'men', 'shota', 'son', 'brother', 'husband', 'husbands', 'father', 'fathers', + 'Man', 'Men', 'Shota', 'Son', 'Brother', 'Husband', 'Husbands', 'Father', 'Fathers', 'she', 'her', 'hers', 'herself', 'girl', 'She', 'Her', 'Hers', 'Herself', 'Girl', - 'woman', 'women', 'loli', 'daughter', 'sister', 'wife', 'wives', - 'Woman', 'Women', 'Loli', 'Daughter', 'Sister', 'Wife', 'Wives' - ]; + 'woman', 'women', 'loli', 'daughter', 'sister', 'wife', 'wives', 'mother', 'mothers', + 'Woman', 'Women', 'Loli', 'Daughter', 'Sister', 'Wife', 'Wives', 'Mother', 'Mothers' + ]; // Pronouns always refer to the slave in question, never any relation of theirs. It is "mother" as in "she is a mother of many" not "you are her mother". Plural pronouns would refer to "wives like her," not "her wives." const scope = pSuffix.length === 0 ? State.variables : State.temporary; pronouns.forEach(p => { diff --git a/src/npc/databases/dSlavesDatabase.tw b/src/npc/databases/dSlavesDatabase.tw index 9e4d448b7f0e993d67470dcabff688184035264e..ef9a7808118b5f1f603bdbbc63493fbd82e86840 100644 --- a/src/npc/databases/dSlavesDatabase.tw +++ b/src/npc/databases/dSlavesDatabase.tw @@ -530,7 +530,7 @@ /*Increased nipples and areolae, changed eye color, added mute -BoneyM*/ <<set _HS = App.Entity.SlaveState.makeSkeleton()>> -<<set _HS.slaveName = "Box", _HS.birthName = "Box", _HS.origin = "When you took $him from $his previous owner, $he was locked into a beautiful rosewood box lined with red velvet, crying.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.devotion = -75, _HS.weight = 20, _HS.eyes = -2, _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.eyebrowHColor = "blonde", _HS.pubicHColor = "blonde", _HS.underArmHColor = "blonde", _HS.origSkin = "pale", _HS.origHColor = "golden blonde", _HS.hStyle = "long", _HS.boobs = 400, _HS.butt = 2, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.intelligence = -50, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.desc = "$His amputation sites have titanium rings that go through to the bone. $He has been chemically blinded.">> +<<set _HS.slaveName = "Box", _HS.birthName = "Box", _HS.origin = "When you took $him from $his previous owner, $he was locked into a beautiful rosewood box lined with red velvet, crying.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.devotion = -75, _HS.weight = 20, _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.eyebrowHColor = "blonde", _HS.pubicHColor = "blonde", _HS.underArmHColor = "blonde", _HS.origSkin = "pale", _HS.origHColor = "golden blonde", _HS.hStyle = "long", _HS.boobs = 400, _HS.butt = 2, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.intelligence = -50, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.desc = "$His amputation sites have titanium rings that go through to the bone. $He has been chemically blinded.">> <<run App.Utils.removeHeroLimbs(_HS, "all"), eyeSurgery(_HS, "both", "blind")>> <<set $heroSlaves.push(_HS)>> /* put some of $his custom description in $his origin (box stuff), tagged as amp, lowered obedience, increased weight but lowered health, changed skin color from white to pale */ diff --git a/src/npc/fDance.tw b/src/npc/fDance.tw index 8d747a34c558f629f2c883e2d8bce26b15ebe5bc..3d6fb5ae673444712437a748d5bf54f39367df9f 100644 --- a/src/npc/fDance.tw +++ b/src/npc/fDance.tw @@ -315,7 +315,7 @@ You look up once more at your slave and take some time to review $his dancing pe if $he doesn't shape up. <</if>> -But it's not over yet. You tell your slave that it's time to incorporate some stripping into $his dance. +It's not over yet, though. You tell your slave that it's time to incorporate some stripping into $his dance. <<if ($activeSlave.sexualFlaw == "shamefast")>> <<if ($activeSlave.devotion <= 40)>> diff --git a/src/npc/fFeelings.tw b/src/npc/fFeelings.tw index fd5dd83f8acbf86204290c56f8d60c2a9f1cbc77..e83225609917198eb55e5338998c5b88a8c9a73a 100644 --- a/src/npc/fFeelings.tw +++ b/src/npc/fFeelings.tw @@ -180,27 +180,27 @@ My favorite part of my body i<<s>> <<if $activeSlave.pregSource == -1>> Thank you for breeding u<<s>>, <<Master>>! Our womb i<<s>> your<<s>> to impregnate. <</if>> - What? Oh, I'm thinking of my<<s>>elf and my <<if ($activeSlave.fetus_count >=2) || ($activeSlave.broodmother >=1)>>babie<<s>><<else>>baby<</if>> a<<s>> one per<<s>>on again, aren't I? I'm <<s>>orry, <<Master>>. It'<<s>> ju<<s>>t <<s>>o hard to remember when my womb i<<s>> <<s>>o much more than I am in every way. + What? Oh, I'm thinking of my<<s>>elf and my <<if ($activeSlave.fetus_count >= 2) || ($activeSlave.broodmother >= 1)>>babie<<s>><<else>>baby<</if>> a<<s>> one per<<s>>on again, aren't I? I'm <<s>>orry, <<Master>>. It'<<s>> ju<<s>>t <<s>>o hard to remember when my womb i<<s>> <<s>>o much more than I am in every way. <<elseif ($activeSlave.bellyPreg >= 300000)>> ... Um... our ma<<ss>>ive pregnant belly, of cour<<s>>e. We love feeling our womb <<s>>well with life. It'<<s>> <<s>>o hard to move now! We're <<s>>o hot ju<<s>>t thinking about it. <<if $activeSlave.pregSource == -1>> Thank you for breeding u<<s>>, <<Master>>! Our womb i<<s>> your<<s>> to impregnate. <</if>> - What? Oh, I'm thinking of my<<s>>elf and my <<if ($activeSlave.fetus_count >=2) || ($activeSlave.broodmother >=1)>>babie<<s>><<else>>baby<</if>> a<<s>> one per<<s>>on again, aren't I? I'm <<s>>orry, <<Master>>. It'<<s>> ju<<s>>t <<s>>o hard to remember when my womb i<<s>> <<s>>o much more than I am in every way. + What? Oh, I'm thinking of my<<s>>elf and my <<if ($activeSlave.fetus_count >= 2) || ($activeSlave.broodmother >= 1)>>babie<<s>><<else>>baby<</if>> a<<s>> one per<<s>>on again, aren't I? I'm <<s>>orry, <<Master>>. It'<<s>> ju<<s>>t <<s>>o hard to remember when my womb i<<s>> <<s>>o much more than I am in every way. <<elseif ($activeSlave.bellyPreg >= 15000)>> ... Um... our bulging pregnant belly, of cour<<s>>e. We love feeling our womb <<s>>well with life. <<if $activeSlave.pregSource == -1>> Thank you for breeding u<<s>>, <<Master>>! Our womb i<<s>> your<<s>> to impregnate. <</if>> - What? Oh, I'm thinking of my<<s>>elf and my <<if ($activeSlave.fetus_count >=2) || ($activeSlave.broodmother >=1)>>babie<<s>><<else>>baby<</if>> a<<s>> one per<<s>>on again, aren't I? I'm <<s>>orry, <<Master>>. It'<<s>> ju<<s>>t <<s>>o hard to remember when my womb i<<s>> <<s>>o much more than I am in every way. + What? Oh, I'm thinking of my<<s>>elf and my <<if ($activeSlave.fetus_count >= 2) || ($activeSlave.broodmother >= 1)>>babie<<s>><<else>>baby<</if>> a<<s>> one per<<s>>on again, aren't I? I'm <<s>>orry, <<Master>>. It'<<s>> ju<<s>>t <<s>>o hard to remember when my womb i<<s>> <<s>>o much more than I am in every way. <<elseif ($activeSlave.bellyPreg >= 100)>> ... Um... our pregnant belly, of cour<<s>>e. <<if $activeSlave.pregSource == -1>> Thank you for breeding u<<s>>, <<Master>>! Our womb i<<s>> your<<s>> to impregnate. <</if>> - What? Oh, I'm thinking of my<<s>>elf and my <<if ($activeSlave.fetus_count >=2)>>babie<<s>><<else>>baby<</if>> a<<s>> one per<<s>>on again, aren't I? I'm <<s>>orry, <<Master>>. It'<<s>> ju<<s>>t <<s>>o hard to remember when my womb i<<s>> <<s>>o much more than I am in every way. + What? Oh, I'm thinking of my<<s>>elf and my <<if ($activeSlave.fetus_count >= 2)>>babie<<s>><<else>>baby<</if>> a<<s>> one per<<s>>on again, aren't I? I'm <<s>>orry, <<Master>>. It'<<s>> ju<<s>>t <<s>>o hard to remember when my womb i<<s>> <<s>>o much more than I am in every way. <<elseif ($activeSlave.pregKnown == 1)>> - my belly, now that it ha<<s>> <<if ($activeSlave.fetus_count >=2)>>the babie<<s>><<else>>a baby<</if>> growing in it. Ju<<s>>t thinking about <<s>>welling up bigger and bigger ha<<s>> me quivering. I wi<<sh>> we could keep filling me with babie<<s>> forever. + my belly, now that it ha<<s>> <<if ($activeSlave.fetus_count >= 2)>>the babie<<s>><<else>>a baby<</if>> growing in it. Ju<<s>>t thinking about <<s>>welling up bigger and bigger ha<<s>> me quivering. I wi<<sh>> we could keep filling me with babie<<s>> forever. <<if $activeSlave.pregSource == -1>> Thank you for impregnating me, <<Master>>! <</if>> @@ -1545,7 +1545,11 @@ My favorite part of my body i<<s>> <<if $activeSlave.pregKnown == 1>> "Can I have <<s>>ome more cum in my pregnant pu<<ss>>y?" <<else>> - "Can I be bred?" + <<if $PC.dick>> + "Can you breed me now?" + <<else>> + "Can I be bred?" + <</if>> <</if>> <<else>> "Are there any pregnant <<s>>lave<<s>> I could, you know, <<s>>pend time with?" diff --git a/src/npc/slaveStats.tw b/src/npc/slaveStats.tw index 63725a368253c8636019e6da1c9750d715dcd84d..3dca1aae144a9f395d5797d3cfa80014c213bbbf 100644 --- a/src/npc/slaveStats.tw +++ b/src/npc/slaveStats.tw @@ -206,7 +206,7 @@ Income: <<= num($activeSlave.lastWeeksRepIncome)>> Override: $activeSlave.override_Pubic_H_Color <br><br>Eyes: - <br>Eyes: <<print JSON.stringify($activeSlave.eyes)>> + <br>Eyes: <<print JSON.stringify($activeSlave.eye)>> <br>Override: $activeSlave.override_Eye_Color <br>eyewear: $activeSlave.eyewear diff --git a/src/npc/startingGirls/startingGirls.tw b/src/npc/startingGirls/startingGirls.tw index c3f3b730197525693d74550fdadbe041ab7d598e..314c928f1b1755eadd96029551d25419bfd96ddc 100644 --- a/src/npc/startingGirls/startingGirls.tw +++ b/src/npc/startingGirls/startingGirls.tw @@ -587,18 +587,18 @@ __You are customizing this slave:__ /* TODO rewrite this so it looks like the rest (if possible expand options macro) */ Left arm: <span id = "ampLA"> - <<if hasLeftArm($customSlave)>>Yes + <<if hasLeftArm($activeSlave)>>Yes <<else>>No <</if>> </span> <<link "Remove">> - <<set $customSlave.arm.left = null>> + <<set $activeSlave.arm.left = null>> <<replace #ampLA>> No <</replace>> <</link>> <<link "Add">> - <<set $customSlave.arm.left = new App.Entity.LimbState()>> + <<set $activeSlave.arm.left = new App.Entity.LimbState()>> <<replace #ampLA>> Yes <</replace>> @@ -606,18 +606,18 @@ __You are customizing this slave:__ <br> Right arm: <span id = "ampRA"> - <<if hasRightArm($customSlave)>>Yes + <<if hasRightArm($activeSlave)>>Yes <<else>>No <</if>> </span> <<link "Remove">> - <<set $customSlave.arm.right = null>> + <<set $activeSlave.arm.right = null>> <<replace #ampRA>> No <</replace>> <</link>> <<link "Add">> - <<set $customSlave.arm.right = new App.Entity.LimbState()>> + <<set $activeSlave.arm.right = new App.Entity.LimbState()>> <<replace #ampRA>> Yes <</replace>> @@ -625,18 +625,18 @@ __You are customizing this slave:__ <br> Left leg: <span id = "ampLL"> - <<if hasLeftLeg($customSlave)>>Yes + <<if hasLeftLeg($activeSlave)>>Yes <<else>>No <</if>> </span> <<link "Remove">> - <<set $customSlave.leg.left = null>> + <<set $activeSlave.leg.left = null>> <<replace #ampLL>> No <</replace>> <</link>> <<link "Add">> - <<set $customSlave.leg.left = new App.Entity.LimbState()>> + <<set $activeSlave.leg.left = new App.Entity.LimbState()>> <<replace #ampLL>> Yes <</replace>> @@ -644,18 +644,18 @@ __You are customizing this slave:__ <br> Right leg: <span id = "ampRL"> - <<if hasRightLeg($customSlave)>>Yes + <<if hasRightLeg($activeSlave)>>Yes <<else>>No <</if>> </span> <<link "Remove">> - <<set $customSlave.leg.right = null>> + <<set $activeSlave.leg.right = null>> <<replace #ampRL>> No <</replace>> <</link>> <<link "Add">> - <<set $customSlave.leg.right = new App.Entity.LimbState()>> + <<set $activeSlave.leg.right = new App.Entity.LimbState()>> <<replace #ampRL>> Yes <</replace>> diff --git a/src/pregmod/analyzePregnancy.tw b/src/pregmod/analyzePregnancy.tw index 23fd2077b5a0b7c7643cab46fa628390acdb7d82..13a94733548db32483058b5e10989168fe08ab01 100644 --- a/src/pregmod/analyzePregnancy.tw +++ b/src/pregmod/analyzePregnancy.tw @@ -14,301 +14,348 @@ <<goto "Slave Interact">> <<else>> - //$activeSlave.slaveName is <<if $activeSlave.devotion < 20>>restrained<<else>>comfortably reclined<</if>> with $his stomach prepped for examination. $He shudders slightly at the cold touch of the sensor against $his skin.// - - <br><br> + <p style="font-style:italic"> + $activeSlave.slaveName is <<if $activeSlave.devotion < 20>>restrained<<else>>comfortably reclined<</if>> with $his stomach prepped for examination. $He shudders slightly at the cold touch of the sensor against $his skin. + </p> <<set $saleDescription = 1>><<pregnancyDescription>><<set $saleDescription = 0>> - <br><br> - Overall statistics: - <<set _cc = Math.round($activeSlave.bellyPreg)>> - <<set _safecc = Math.round($activeSlave.pregAdaptation*2000)>> - <<if $geneticMappingUpgrade > 0>> - <br> Estimated pregnancy adaptation rating: <<print num(Math.round($activeSlave.pregAdaptation))>> - <br> Estimated safe womb volume: <<= num(_safecc)>> cc - <</if>> - <br> Current fetal count: $activeSlave.womb.length - <br> Estimated womb volume: <<if _safecc < _cc && $geneticMappingUpgrade > 0>>@@.red;<<= num(_cc)>>@@<<else>><<= num(_cc)>><</if>> cc - <br><br> - Furthest developed pregnancy: - <br> Fetal development week: $activeSlave.preg - - <<if $incubator + $nursery > 0>> - <br><br> - <<if $incubator > 0>> - <<if _incubatorReservations > 0>> - <<link "Remove all of $his children from $incubatorName" "Analyze Pregnancy">> - <<run WombChangeReserveType($activeSlave, "incubator", "")>> - <<set $reservedChildren -= _incubatorReservations>> - <</link>> | - <</if>> - <<if _incubatorReservations < _WL && ($reservedChildren + _WL - _incubatorReservations <= $freeTanks)>> - <<link "Keep all of $his children in $incubatorName" "Analyze Pregnancy">> - <<run WombChangeReserveType($activeSlave, "nursery", "incubator")>> - <<run WombChangeReserveType($activeSlave, "", "incubator")>> - <<set $reservedChildrenNursery -= _nurseryReservations>> - <<set $reservedChildren += _WL - _incubatorReservations>> - <</link>> - <<elseif _incubatorReservations < _WL>> - There is not enough free space in $incubatorName for the rest of $his children. - <</if>> - <</if>> - <br> - <<if $nursery > 0>> - <<if _nurseryReservations > 0>> - <<link "Remove all of $his children from $nurseryName" "Analyze Pregnancy">> - <<run WombChangeReserveType($activeSlave, "nursery", "")>> - <<set $reservedChildrenNursery -= _nurseryReservations>> - <</link>> | - <</if>> - <<if _nurseryReservations < _WL && ($reservedChildrenNursery + _WL - _nurseryReservations <= $freeCribs)>> - <<link "Keep all of $his children in $nurseryName" "Analyze Pregnancy">> - <<run WombChangeReserveType($activeSlave, "incubator", "nursery")>> - <<run WombChangeReserveType($activeSlave, "", "nursery")>> - <<set $reservedChildren -= _incubatorReservations>> - <<set $reservedChildrenNursery += _WL - _nurseryReservations>> - <</link>> - <<elseif _nurseryReservations < _WL>> - There is not enough free space in $nurseryName for the rest of $his children. + <p> + <h2>Overall statistics</h2> + <div class="indent"> + <<set _cc = Math.round($activeSlave.bellyPreg)>> + <<set _safecc = Math.round($activeSlave.pregAdaptation*2000)>> + <<if $geneticMappingUpgrade > 0>> + <div> + Estimated pregnancy adaptation rating: <<print num(Math.round($activeSlave.pregAdaptation))>> + </div> + <div> + Estimated safe womb volume: <<= num(_safecc)>> cc + </div> <</if>> - <</if>> - <</if>> - - <br><br> - Deep scan: + <div> + Current fetal count: $activeSlave.womb.length + </div> + <div> + Estimated womb volume: <<if _safecc < _cc && $geneticMappingUpgrade > 0>>@@.red;<<= num(_cc)>>@@<<else>><<= num(_cc)>><</if>> cc + </div> + </div> + </p> - <br> - <<for _ap = 0; _ap < _WL; _ap++>> - <<capture _ap>> - <<if $activeSlave.womb[_ap].age >=2 >> - <br> - Ova: $activeSlave.womb[_ap].genetics.name - <br> - Age: $activeSlave.womb[_ap].age + <p> + <h2>Furthest developed pregnancy</h2> + <div class="indent"> + Fetal development week: $activeSlave.preg + </div> + </p> - <<if $geneticMappingUpgrade >= 1>> - <br> - Gender: $activeSlave.womb[_ap].genetics.gender - <br> - Father ID: $activeSlave.womb[_ap].genetics.father - <br> - Father Name: - <<if ndef $activeSlave.womb[_ap].genetics.fatherName>> - name not registered - <<else>> - $activeSlave.womb[_ap].genetics.fatherName - <</if>> - <br> - Mother ID: $activeSlave.womb[_ap].genetics.mother - <br> - Mother Name: - <<if ndef $activeSlave.womb[_ap].genetics.motherName>> - name not registered - <<else>> - $activeSlave.womb[_ap].genetics.motherName - <</if>> - <br> - Nationality: $activeSlave.womb[_ap].genetics.nationality - <br> - Race: $activeSlave.womb[_ap].genetics.race - <br> - Skin tone: $activeSlave.womb[_ap].genetics.skin - <br> - Intelligence index: $activeSlave.womb[_ap].genetics.intelligence out of 100 - <br> - Face index: $activeSlave.womb[_ap].genetics.face out of 100 - <br> - Eye Color: $activeSlave.womb[_ap].genetics.eyeColor - <br> - Hair Color: $activeSlave.womb[_ap].genetics.hColor - <<if $activeSlave.womb[_ap].genetics.underArmHStyle == "hairless" && $activeSlave.womb[_ap].genetics.pubicHStyle == "hairless">> - <br> - Body hair: none - <<elseif $activeSlave.womb[_ap].genetics.underArmHStyle == "hairless">> - <br> - Body hair: lacks underarm hair - <<elseif $activeSlave.womb[_ap].genetics.pubicHStyle == "hairless">> - <br> - Body hair: lacks pubic hair - <</if>> - <<if $activeSlave.womb[_ap].genetics.markings == "freckles" || $activeSlave.womb[_ap].genetics.markings == "heavily freckled">> - <br> - Markings: $activeSlave.womb[_ap].genetics.markings - <</if>> - <br> - Detected abnormalities: - <<if $activeSlave.womb[_ap].genetics.geneticQuirks.albinism == 2>> - @@.green;alb@@ - <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.albinism == 1 && $geneticMappingUpgrade >= 2>> - @@.yellow;alb@@ - <</if>> - <<if $activeSlave.womb[_ap].genetics.geneticQuirks.gigantism == 2>> - @@.red;gnt@@ - <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.gigantism == 1 && $geneticMappingUpgrade >= 2>> - @@.yellow;gnt@@ - <</if>> - <<if $activeSlave.womb[_ap].genetics.geneticQuirks.dwarfism == 2>> - @@.red;dwrf@@ - <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.dwarfism == 1 && $geneticMappingUpgrade >= 2>> - @@.yellow;dwrf@@ - <</if>> - <<if $activeSlave.womb[_ap].genetics.geneticQuirks.heterochromia == 2>> - @@.green;hetchrom@@ - <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.heterochromia == 1 && $geneticMappingUpgrade >= 2>> - @@.yellow;hetchrom@@ - <</if>> - <<if $activeSlave.womb[_ap].genetics.geneticQuirks.androgyny == 2>> - @@.red;andr@@ - <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.androgyny == 1 && $geneticMappingUpgrade >= 2>> - @@.yellow;andr@@ - <</if>> - <<if $activeSlave.womb[_ap].genetics.geneticQuirks.pFace == 2>> - @@.green;pfce@@ - <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.pFace == 1 && $geneticMappingUpgrade >= 2>> - @@.yellow;pfce@@ - <</if>> - <<if $activeSlave.womb[_ap].genetics.geneticQuirks.uFace == 2>> - @@.red;ufce@@ - <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.uFace == 1 && $geneticMappingUpgrade >= 2>> - @@.yellow;ufce@@ - <</if>> - <<if $activeSlave.womb[_ap].genetics.geneticQuirks.fertility == 2>> - @@.green;fert@@ - <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.fertility == 1 && $geneticMappingUpgrade >= 2>> - @@.yellow;fert@@ - <</if>> - <<if $activeSlave.womb[_ap].genetics.geneticQuirks.hyperFertility == 2>> - @@.green;hfert@@ - <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.hyperFertility == 1 && $geneticMappingUpgrade >= 2>> - @@.yellow;hfert@@ - <</if>> - <<if $activeSlave.womb[_ap].genetics.geneticQuirks.superfetation == 2>> - @@.green;supfet@@ - <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.superfetation == 1 && $geneticMappingUpgrade >= 2>> - @@.yellow;supfet@@ - <</if>> - <<if $activeSlave.womb[_ap].genetics.geneticQuirks.macromastia >= 2>> - @@.red;mmast@@ - <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.macromastia == 1 && $geneticMappingUpgrade >= 2>> - @@.yellow;mast@@ - <</if>> - <<if $activeSlave.womb[_ap].genetics.geneticQuirks.gigantomastia >= 2>> - @@.red;gmast@@ - <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.gigantomastia == 1 && $geneticMappingUpgrade >= 2>> - @@.yellow;gmast@@ - <</if>> - <<if $activeSlave.womb[_ap].genetics.geneticQuirks.wellHung == 2>> - @@.green;bigd@@ - <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.wellHung == 1 && $geneticMappingUpgrade >= 2>> - @@.yellow;bigd@@ - <</if>> - <<if $activeSlave.womb[_ap].genetics.geneticQuirks.rearLipedema == 2>> - @@.red;lipe@@ - <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.rearLipedema == 1 && $geneticMappingUpgrade >= 2>> - @@.yellow;lipe@@ - <</if>> - <<if $activeSlave.womb[_ap].genetics.geneticQuirks.wGain == 2>> - @@.red;lepti+@@ - <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.wGain == 1 && $geneticMappingUpgrade >= 2>> - @@.yellow;lepti+@@ - <</if>> - <<if $activeSlave.womb[_ap].genetics.geneticQuirks.wLoss == 2>> - @@.red;lepti-@@ - <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.wLoss == 1 && $geneticMappingUpgrade >= 2>> - @@.yellow;lepti-@@ - <</if>> - <<if $activeSlave.womb[_ap].genetics.geneticQuirks.mGain == 2>> - @@.red;myot+@@ - <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.mGain == 1 && $geneticMappingUpgrade >= 2>> - @@.yellow;myot+@@ - <</if>> - <<if $activeSlave.womb[_ap].genetics.geneticQuirks.mLoss == 2>> - @@.red;myot-@@ - <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.mLoss == 1 && $geneticMappingUpgrade >= 2>> - @@.yellow;myot-@@ - <</if>> - <<else>> - <<if $activeSlave.womb[_ap].age > 13>> - <br> - Gender: $activeSlave.womb[_ap].genetics.gender + <p> + <<if $incubator + $nursery > 0>> + <div> + <<if $incubator > 0>> + <<if _incubatorReservations > 0>> + <<link "Remove all of $his children from $incubatorName" "Analyze Pregnancy">> + <<run WombChangeReserveType($activeSlave, "incubator", "")>> + <<set $reservedChildren -= _incubatorReservations>> + <</link>> | <</if>> - <<if $activeSlave.womb[_ap].age > 5>> - <br> - Father ID: $activeSlave.womb[_ap].genetics.father - <br> - Father Name: $activeSlave.womb[_ap].genetics.fatherName - <br> - Mother ID: $activeSlave.womb[_ap].genetics.mother - <br> - Mother Name: $activeSlave.womb[_ap].genetics.motherName + <<if _incubatorReservations < _WL && ($reservedChildren + _WL - _incubatorReservations <= $freeTanks)>> + <<link "Keep all of $his children in $incubatorName" "Analyze Pregnancy">> + <<run WombChangeReserveType($activeSlave, "nursery", "incubator")>> + <<run WombChangeReserveType($activeSlave, "", "incubator")>> + <<set $reservedChildrenNursery -= _nurseryReservations>> + <<set $reservedChildren += _WL - _incubatorReservations>> + <</link>> + <<elseif _incubatorReservations < _WL>> + There is not enough free space in $incubatorName for the rest of $his children. <</if>> <</if>> - <<if $incubator > 0 || $nursery > 0>> - <br> - Reserved: $activeSlave.womb[_ap].reserve - <</if>> - - <br><br> + </div> - Rename: <<textbox "_tempName" _tempName >> [[Apply | Analyze Pregnancy][$activeSlave.womb[_ap].genetics.name = _tempName]] - <<if $activeSlave.womb[_ap].age < 4 && ($arcologies[0].FSRestart == "unset" || $eugenicsFullControl == 1 || $activeSlave.breedingMark == 0 || $propOutcome == 0 || ($activeSlave.womb[_ap].fatherID != -1 && $activeSlave.womb[_ap].fatherID != -6))>> - <br> - <<link "Terminate ovum" "Analyze Pregnancy">><<run WombRemoveFetus($activeSlave, _ap)>><<if $activeSlave.preg == 0>><<set $activeSlave.pregWeek = -1>><</if>><</link>> - <<if $surgeryUpgrade == 1>> - | [[Transplant ovum|Ova Transplant Workaround][$donatrix = $activeSlave, $wombIndex = _ap, $nextLink = "Analyze Pregnancy"]] + <div> + <<if $nursery > 0>> + <<if _nurseryReservations > 0>> + <<link "Remove all of $his children from $nurseryName" "Analyze Pregnancy">> + <<run WombChangeReserveType($activeSlave, "nursery", "")>> + <<set $reservedChildrenNursery -= _nurseryReservations>> + <</link>> | <</if>> - <</if>> - <<if $incubator > 0>> - <br> - <<if $activeSlave.womb[_ap].reserve === "incubator">> - <<link "Don't keep this child in $incubatorName" "Analyze Pregnancy">> - <<set $activeSlave.womb[_ap].reserve = "">> - <<set $reservedChildren-->> - <</link>> - <<elseif $freeTanks - $reservedChildren > 0>> - <<link "Keep this child in $incubatorName" "Analyze Pregnancy">> - <<if $activeSlave.womb[_ap].reserve === "nursery">> - <<set $reservedChildrenNursery-->> - <</if>> - <<set $activeSlave.womb[_ap].reserve = "incubator">> - <<set $reservedChildren++>> + <<if _nurseryReservations < _WL && ($reservedChildrenNursery + _WL - _nurseryReservations <= $freeCribs)>> + <<link "Keep all of $his children in $nurseryName" "Analyze Pregnancy">> + <<run WombChangeReserveType($activeSlave, "incubator", "nursery")>> + <<run WombChangeReserveType($activeSlave, "", "nursery")>> + <<set $reservedChildren -= _incubatorReservations>> + <<set $reservedChildrenNursery += _WL - _nurseryReservations>> <</link>> - <<else>> - There is not enough free space to keep this child in $incubatorName. + <<elseif _nurseryReservations < _WL>> + There is not enough free space in $nurseryName for the rest of $his children. <</if>> <</if>> - <<if $nursery > 0>> - <br> - <<if $activeSlave.womb[_ap].reserve === "nursery">> - <<link "Don't keep this child in $nurseryName" "Analyze Pregnancy">> - <<set $activeSlave.womb[_ap].reserve = "">> - <<set $reservedChildrenNursery-->> - <</link>> - <<elseif $freeCribs - $reservedChildrenNursery > 0>> - <<link "Keep this child in $nurseryName" "Analyze Pregnancy">> - <<if $activeSlave.womb[_ap].reserve === "incubator">> - <<set $reservedChildren-->> + </div> + <</if>> + </p> + + <p> + <h2>Deep scan</h2> + <<for _ap = 0; _ap < _WL; _ap++>> + <hr style="margin:0"> + <p> + <<capture _ap>> + <<if $activeSlave.womb[_ap].age >=2 >> + <div class="indent"> + Ova: $activeSlave.womb[_ap].genetics.name + </div> + <div class="indent"> + Age: $activeSlave.womb[_ap].age + </div> + <<if $geneticMappingUpgrade >= 1>> + <div class="indent"> + Gender: $activeSlave.womb[_ap].genetics.gender + </div> + <div class="indent"> + Father ID: $activeSlave.womb[_ap].genetics.father + </div> + <div class="indent"> + Father Name: + <<if ndef $activeSlave.womb[_ap].genetics.fatherName>> + name not registered + <<else>> + $activeSlave.womb[_ap].genetics.fatherName + <</if>> + </div> + <div class="indent"> + Mother ID: $activeSlave.womb[_ap].genetics.mother + </div> + <div class="indent"> + Mother Name: + <<if ndef $activeSlave.womb[_ap].genetics.motherName>> + name not registered + <<else>> + $activeSlave.womb[_ap].genetics.motherName + <</if>> + </div> + <div class="indent"> + Nationality: $activeSlave.womb[_ap].genetics.nationality + </div> + <div class="indent"> + Race: $activeSlave.womb[_ap].genetics.race + </div> + <div class="indent"> + Skin tone: $activeSlave.womb[_ap].genetics.skin + </div> + <div class="indent"> + Intelligence index: $activeSlave.womb[_ap].genetics.intelligence out of 100 + </div> + <div class="indent"> + Face index: $activeSlave.womb[_ap].genetics.face out of 100 + </div> + <div class="indent"> + Eye Color: $activeSlave.womb[_ap].genetics.eyeColor + </div> + <div class="indent"> + Hair Color: $activeSlave.womb[_ap].genetics.hColor + </div> + <div class="indent"> + <<if $activeSlave.womb[_ap].genetics.underArmHStyle == "hairless" && $activeSlave.womb[_ap].genetics.pubicHStyle == "hairless">> + Body hair: none + <<elseif $activeSlave.womb[_ap].genetics.underArmHStyle == "hairless">> + Body hair: lacks underarm hair + <<elseif $activeSlave.womb[_ap].genetics.pubicHStyle == "hairless">> + Body hair: lacks pubic hair + <</if>> + </div> + <<if $activeSlave.womb[_ap].genetics.markings == "freckles" || $activeSlave.womb[_ap].genetics.markings == "heavily freckled">> + <div class="indent"> + Markings: $activeSlave.womb[_ap].genetics.markings + </div> + <</if>> + <div class="indent"> + Detected abnormalities: + <<if $activeSlave.womb[_ap].genetics.geneticQuirks.albinism == 2>> + @@.green;alb@@ + <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.albinism == 1 && $geneticMappingUpgrade >= 2>> + @@.yellow;alb@@ + <</if>> + <<if $activeSlave.womb[_ap].genetics.geneticQuirks.gigantism == 2>> + @@.red;gnt@@ + <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.gigantism == 1 && $geneticMappingUpgrade >= 2>> + @@.yellow;gnt@@ + <</if>> + <<if $activeSlave.womb[_ap].genetics.geneticQuirks.dwarfism == 2>> + @@.red;dwrf@@ + <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.dwarfism == 1 && $geneticMappingUpgrade >= 2>> + @@.yellow;dwrf@@ + <</if>> + <<if $activeSlave.womb[_ap].genetics.geneticQuirks.heterochromia == 2>> + @@.green;hetchrom@@ + <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.heterochromia == 1 && $geneticMappingUpgrade >= 2>> + @@.yellow;hetchrom@@ + <</if>> + <<if $activeSlave.womb[_ap].genetics.geneticQuirks.androgyny == 2>> + @@.red;andr@@ + <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.androgyny == 1 && $geneticMappingUpgrade >= 2>> + @@.yellow;andr@@ + <</if>> + <<if $activeSlave.womb[_ap].genetics.geneticQuirks.pFace == 2>> + @@.green;pfce@@ + <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.pFace == 1 && $geneticMappingUpgrade >= 2>> + @@.yellow;pfce@@ + <</if>> + <<if $activeSlave.womb[_ap].genetics.geneticQuirks.uFace == 2>> + @@.red;ufce@@ + <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.uFace == 1 && $geneticMappingUpgrade >= 2>> + @@.yellow;ufce@@ + <</if>> + <<if $activeSlave.womb[_ap].genetics.geneticQuirks.fertility == 2>> + @@.green;fert@@ + <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.fertility == 1 && $geneticMappingUpgrade >= 2>> + @@.yellow;fert@@ + <</if>> + <<if $activeSlave.womb[_ap].genetics.geneticQuirks.hyperFertility == 2>> + @@.green;hfert@@ + <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.hyperFertility == 1 && $geneticMappingUpgrade >= 2>> + @@.yellow;hfert@@ + <</if>> + <<if $activeSlave.womb[_ap].genetics.geneticQuirks.superfetation == 2>> + @@.green;supfet@@ + <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.superfetation == 1 && $geneticMappingUpgrade >= 2>> + @@.yellow;supfet@@ + <</if>> + <<if $activeSlave.womb[_ap].genetics.geneticQuirks.macromastia >= 2>> + @@.red;mmast@@ + <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.macromastia == 1 && $geneticMappingUpgrade >= 2>> + @@.yellow;mast@@ + <</if>> + <<if $activeSlave.womb[_ap].genetics.geneticQuirks.gigantomastia >= 2>> + @@.red;gmast@@ + <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.gigantomastia == 1 && $geneticMappingUpgrade >= 2>> + @@.yellow;gmast@@ + <</if>> + <<if $activeSlave.womb[_ap].genetics.geneticQuirks.wellHung == 2>> + @@.green;bigd@@ + <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.wellHung == 1 && $geneticMappingUpgrade >= 2>> + @@.yellow;bigd@@ + <</if>> + <<if $activeSlave.womb[_ap].genetics.geneticQuirks.rearLipedema == 2>> + @@.red;lipe@@ + <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.rearLipedema == 1 && $geneticMappingUpgrade >= 2>> + @@.yellow;lipe@@ + <</if>> + <<if $activeSlave.womb[_ap].genetics.geneticQuirks.wGain == 2>> + @@.red;lepti+@@ + <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.wGain == 1 && $geneticMappingUpgrade >= 2>> + @@.yellow;lepti+@@ + <</if>> + <<if $activeSlave.womb[_ap].genetics.geneticQuirks.wLoss == 2>> + @@.red;lepti-@@ + <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.wLoss == 1 && $geneticMappingUpgrade >= 2>> + @@.yellow;lepti-@@ + <</if>> + <<if $activeSlave.womb[_ap].genetics.geneticQuirks.mGain == 2>> + @@.red;myot+@@ + <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.mGain == 1 && $geneticMappingUpgrade >= 2>> + @@.yellow;myot+@@ + <</if>> + <<if $activeSlave.womb[_ap].genetics.geneticQuirks.mLoss == 2>> + @@.red;myot-@@ + <<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.mLoss == 1 && $geneticMappingUpgrade >= 2>> + @@.yellow;myot-@@ + <</if>> + </div> + <<else>> + <<if $activeSlave.womb[_ap].age > 13>> + <div class="indent"> + Gender: $activeSlave.womb[_ap].genetics.gender + </div> + <</if>> + <<if $activeSlave.womb[_ap].age > 5>> + <div class="indent"> + Father ID: $activeSlave.womb[_ap].genetics.father + </div> + <div class="indent"> + Father Name: $activeSlave.womb[_ap].genetics.fatherName + </div> + <div class="indent"> + Mother ID: $activeSlave.womb[_ap].genetics.mother + </div> + <div class="indent"> + Mother Name: $activeSlave.womb[_ap].genetics.motherName + </div> + <</if>> + <</if>> + <<if $incubator > 0 || $nursery > 0>> + <div class="indent"> + Reserved: $activeSlave.womb[_ap].reserve + </div> <</if>> - <<set $activeSlave.womb[_ap].reserve = "nursery">> - <<set $reservedChildrenNursery++>> - <</link>> - <<else>> - There is not enough free space to keep this child in $nurseryName. - <</if>> - <</if>> - <<else>> - <br> - Unidentified ova found, no detailed data available.<br> - Age: too early for scan. - <br> - <<link "Terminate ovum" "Analyze Pregnancy">><<run WombRemoveFetus($activeSlave, _ap)>><<if $activeSlave.preg == 0>><<set $activeSlave.pregWeek = -1>><</if>><</link>> - <<if $surgeryUpgrade == 1>> - | [[Transplant ovum|Ova Transplant Workaround][$donatrix = $activeSlave, $wombIndex = _ap, $nextLink = "Analyze Pregnancy"]] - <</if>> - <</if>> - <br><br><hr style="margin:0"><br> - <</capture>> - <</for>> + <div class="indent"> + Rename: <<textbox "_tempName" _tempName >> [[Apply | Analyze Pregnancy][$activeSlave.womb[_ap].genetics.name = _tempName]] + </div> + <<if $activeSlave.womb[_ap].age < 4 && ($arcologies[0].FSRestart == "unset" || $eugenicsFullControl == 1 || $activeSlave.breedingMark == 0 || $propOutcome == 0 || ($activeSlave.womb[_ap].fatherID != -1 && $activeSlave.womb[_ap].fatherID != -6))>> + <div class="indent"> + <<link "Terminate ovum" "Analyze Pregnancy">><<run WombRemoveFetus($activeSlave, _ap)>><<if $activeSlave.preg == 0>><<set $activeSlave.pregWeek = -1>><</if>><</link>> + <<if $surgeryUpgrade == 1>> + | [[Transplant ovum|Ova Transplant Workaround][$donatrix = $activeSlave, $wombIndex = _ap, $nextLink = "Analyze Pregnancy"]] + <</if>> + </div> + <</if>> + <<if $incubator > 0>> + <div class="indent"> + <<if $activeSlave.womb[_ap].reserve === "incubator">> + <<link "Don't keep this child in $incubatorName" "Analyze Pregnancy">> + <<set $activeSlave.womb[_ap].reserve = "">> + <<set $reservedChildren-->> + <</link>> + <<elseif $freeTanks - $reservedChildren > 0>> + <<link "Keep this child in $incubatorName" "Analyze Pregnancy">> + <<if $activeSlave.womb[_ap].reserve === "nursery">> + <<set $reservedChildrenNursery-->> + <</if>> + <<set $activeSlave.womb[_ap].reserve = "incubator">> + <<set $reservedChildren++>> + <</link>> + <<else>> + There is not enough free space to keep this child in $incubatorName. + <</if>> + </div> + <</if>> + <<if $nursery > 0>> + <div class="indent"> + <<if $activeSlave.womb[_ap].reserve === "nursery">> + <<link "Don't keep this child in $nurseryName" "Analyze Pregnancy">> + <<set $activeSlave.womb[_ap].reserve = "">> + <<set $reservedChildrenNursery-->> + <</link>> + <<elseif $freeCribs - $reservedChildrenNursery > 0>> + <<link "Keep this child in $nurseryName" "Analyze Pregnancy">> + <<if $activeSlave.womb[_ap].reserve === "incubator">> + <<set $reservedChildren-->> + <</if>> + <<set $activeSlave.womb[_ap].reserve = "nursery">> + <<set $reservedChildrenNursery++>> + <</link>> + <<else>> + There is not enough free space to keep this child in $nurseryName. + <</if>> + </div> + <</if>> + <<else>> + <div class="indent"> + Unidentified ova found, no detailed data available. + </div> + <div class="indent"> + Age: too early for scan. + </div> + <div class="indent"> + <<link "Terminate ovum" "Analyze Pregnancy">><<run WombRemoveFetus($activeSlave, _ap)>><<if $activeSlave.preg == 0>><<set $activeSlave.pregWeek = -1>><</if>><</link>> + <<if $surgeryUpgrade == 1>> + | [[Transplant ovum|Ova Transplant Workaround][$donatrix = $activeSlave, $wombIndex = _ap, $nextLink = "Analyze Pregnancy"]] + <</if>> + </div> + <</if>> + <</capture>> + </p> + <</for>> + </p> <</if>> diff --git a/src/pregmod/pRaped.tw b/src/pregmod/pRaped.tw index 3017fd8c2965f09008e8efd2ae9919d032088a78..a2eb6ef30adfc942c18af2daf9d3798793eee94e 100644 --- a/src/pregmod/pRaped.tw +++ b/src/pregmod/pRaped.tw @@ -153,7 +153,7 @@ While returning from a meeting with a prospective investor, an unfortunate wrong <br><br> You can feel the head of his cock teasing your <<if $PC.vagina == 0>> - virgin pussy; you grit your teeth knowing what will come next. Without mercy, he @@.red;tears through your hymen@@ and forces himself as deep as your tight pussy lets him. You choke back a sob as he struggles to hilt himself in you. He must have undergone surgery or something because there is no way your body can handle such a monster. Your in agony already, you can't fathom what will happen when he looses his patience. + virgin pussy; you grit your teeth knowing what will come next. Without mercy, he @@.red;tears through your hymen@@ and forces himself as deep as your tight pussy lets him. You choke back a sob as he struggles to hilt himself in you. He must have undergone surgery or something because there is no way your body can handle such a monster. You're in agony already - you can't fathom what will happen when he loses his patience. <<else>> pussy lips; you hope it feels bigger than it really is. As he struggles to force it into you, you regret thinking about it. He must have undergone surgery or something because he fills you completely. You feel weak just from him sticking it in, you can't fathom what will happen once he starts thrusting. <</if>> diff --git a/src/pregmod/widgets/pregmodWidgets.tw b/src/pregmod/widgets/pregmodWidgets.tw index c03143a04e2d9b42f5fb35358cfc6460564d9f89..d3a91b69792873710d575190f82966680f451384 100644 --- a/src/pregmod/widgets/pregmodWidgets.tw +++ b/src/pregmod/widgets/pregmodWidgets.tw @@ -1,624 +1,5 @@ :: pregmod widgets [nobr widget] -<<widget "PMODinit">> - -<<set $args[0].geneticQuirks = Object.assign({macromastia: 0, gigantomastia: 0, fertility: 0, hyperFertility: 0, superfetation: 0, gigantism: 0, dwarfism: 0, pFace: 0, uFace: 0, albinism: 0, heterochromia: 0, rearLipedema: 0, wellHung: 0, wGain: 0, wLoss: 0, mGain: 0, mLoss: 0, androgyny: 0, girlsOnly: 0}, $args[0].geneticQuirks)>> - -<<set WombInit($args[0])>> - - -<<if ndef $args[0].earShape>> - <<set $args[0].earShape = "normal">> -<</if>> -<<if ndef $args[0].earT>> - <<set $args[0].earT = "none">> -<</if>> -<<if ndef $args[0].earTColor>> - <<set $args[0].earTColor = "hairless">> -<</if>> -<<if ndef $args[0].horn>> - <<set $args[0].horn = "none">> -<</if>> -<<if ndef $args[0].hornColor>> - <<set $args[0].hornColor = "none">> -<</if>> -<<if ndef $args[0].tail>> - <<set $args[0].tail = "none">> -<</if>> -<<if ndef $args[0].tailShape>> - <<set $args[0].tailShape = "none">> -<</if>> -<<if ndef $args[0].tailColor>> - <<set $args[0].tailColor = "none">> -<</if>> -<<if def $args[0].prostateImplant>> - <<if ($args[0].prostateImplant == 1)>> - <<set $args[0].prostate = 3>> - <</if>> - <<run delete $args[0].prostateImplant>> -<</if>> -<<if ndef $args[0].daughters>> - <<set $args[0].daughters = 0>> -<</if>> -<<if ndef $args[0].sisters>> - <<set $args[0].sisters = 0>> -<</if>> -<<if def $args[0].pregGenerator>> - <<run delete $args[0].pregGenerator>> -<</if>> -<<if ndef $args[0].pregAdaptation>> - <<if $args[0].physicalAge <= 3>> - <<set $args[0].pregAdaptation = 10>> - <<elseif $args[0].physicalAge <= 12 || $args[0].genes == "XY">> - <<set $args[0].pregAdaptation = 20>> - <<elseif $args[0].physicalAge <= 17>> - <<set $args[0].pregAdaptation = 30>> - <<else>> - <<set $args[0].pregAdaptation = 50>> - <</if>> -<</if>> - -<<if ndef $args[0].pregKnown>> - <<if $args[0].preg > 0>> - <<set $args[0].pregKnown = 1>> - <<else>> - <<set $args[0].pregKnown = 0>> - <</if>> -<</if>> -<<if ndef $args[0].pregWeek>> - <<if $args[0].preg > 0>> - <<set $args[0].pregWeek = $args[0].preg>> - <<else>> - <<set $args[0].pregWeek = 0>> - <</if>> -<</if>> - -<<if ndef $args[0].pubertyXX>> - <<if $args[0].physicalAge >= $args[0].pubertyAgeXX>> - <<set $args[0].pubertyXX = 1>> - <<set $args[0].fertKnown = 1>> - <<else>> - <<set $args[0].pubertyXX = 0>> - <<set $args[0].fertKnown = 0>> - <</if>> -<</if>> -<<if ndef $args[0].pubertyAgeXY>> - <<if $args[0].physicalAge >= $args[0].pubertyAgeXY>> - <<set $args[0].pubertyXY = 1>> - <<else>> - <<set $args[0].pubertyXY = 0>> - <</if>> -<</if>> -<<if ndef $args[0].genetics>> - <<set $args[0].genetics = {}>> -<</if>> -<<if ndef $args[0].geneMods>> - <<set $args[0].geneMods = {NCS: 0, rapidCellGrowth: 0}>> -<</if>> -<<if def $args[0].inducedNCS>> - <<set $args[0].geneMods.NCS = $args[0].inducedNCS>> - <<run delete $args[0].inducedNCS>> -<</if>> -<<if ndef $args[0].wombImplant>> - <<set $args[0].wombImplant = "none">> -<</if>> -<<if def $args[0].superfetation>> - <<run delete $args[0].superfetation>> -<</if>> -<<if ndef $args[0].lactationDuration>> - <<if $args[0].lactation == 0>> - <<set $args[0].lactationDuration = 0>> - <<else>> - <<set $args[0].lactationDuration = 2>> - <</if>> -<</if>> -<<if ndef $args[0].induceLactation>> - <<set $args[0].induceLactation = 0>> -<</if>> -<<if ndef $args[0].weightDirection>> - <<set $args[0].weightDirection = 0>> -<</if>> -<<if $releaseID < 1036>> - <<for _pmw = 0; _pmw < $args[0].womb.length; _pmw++>> - <<if $args[0].womb[_pmw].genetics.mother !== $args[0].womb[_pmw].motherID || $args[0].womb[_pmw].genetics.father !== $args[0].womb[_pmw].fatherID>> - <<set $args[0].womb[_pmw].genetics = generateGenetics($args[0], $args[0].womb[_pmw].fatherID, _pmw)>> - <</if>> - <</for>> -<</if>> -<<if ndef $args[0].clone>> - <<set $args[0].clone = 0>> -<</if>> -<<if ndef $args[0].abortionTat>> - <<set $args[0].abortionTat = -1>> -<</if>> -<<if ndef $args[0].birthsTat>> - <<set $args[0].birthsTat = -1>> -<</if>> -<<if def $args[0].reservedChildren>> - <<run delete $args[0].reservedChildren>> -<</if>> -<<if def $args[0].reservedChildrenNursery>> - <<run delete $args[0].reservedChildrenNursery>> -<</if>> -<<if (def $args[0].origin) && ($args[0].origin != 0)>> - <<set $args[0].origin = pronounReplacer($args[0].origin)>> -<</if>> -<<if (def $args[0].custom)>> - <<if (def $args[0].custom.desc) && ($args[0].custom.desc != "")>> - <<set $args[0].custom.desc = pronounReplacer($args[0].custom.desc)>> - <</if>> - <<if (def $args[0].custom.tattoo) && ($args[0].custom.tattoo != "")>> - <<set $args[0].custom.tattoo = pronounReplacer($args[0].custom.tattoo)>> - <</if>> -<</if>> -<<if (def $args[0].prestigeDesc) && ($args[0].prestigeDesc != 0)>> - <<set $args[0].prestigeDesc = pronounReplacer($args[0].prestigeDesc)>> -<</if>> -<<if (def $args[0].pornPrestigeDesc) && ($args[0].pornPrestigeDesc != 0)>> - <<if $releaseID < 1050 && (def $args[0].prestigeDesc) && ($args[0].prestigeDesc != 0)>> /* BC absolutely FUCKED this */ - <<switch $args[0].porn.fameType>> - <<case "generic">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the sight of $him being used.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $him being used.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $him mid-coitus.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "fuckdoll">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. $His fans relish the sight of $him being used.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $him being used.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $him being used.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "rape">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the sight of $him being raped.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $him being raped.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $him being raped.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "preggo">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed watching $him swell with child.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $him swollen with child.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $him swollen with child.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "BBW">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the sight of $his thick and soft body.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his thick, soft body.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his thick, soft body.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "underage">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the sight of $his childish body.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his immature body.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his immature body.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "weight gain">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the sight of $him eating and gaining weight.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish how curvy $he's gotten.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with how with how much weight $he has gained.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "big dick">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the sight of $his throbbing erection.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $his heavy dick.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $his erect dick.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "deepthroat">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the sounds $he makes when being throatfucked.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sounds $he makes when being throatfucked.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sounds $he makes when being throatfucked.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "unwilling">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed how $he struggles during sex.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish how perfectly $he struggles during sex.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with how perfectly $he struggles during sex.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "hardcore anal">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed watching $his asshole pushed to its limit.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish watching $his asshole pushed to its limit.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with seeing $his asshole pushed to its limit.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "softcore">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed $his lewd striptease.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his lewd striptease.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his lewd striptease.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "romantic">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the deep bond $he shares with $his partners.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the deep bond $he shares with $his partners.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the deep bond $he shares with $his partners.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "really perverted">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed $his most perverted tendencies.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the depths of $his perversions.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the depths of $his perversions.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "voyeur">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed watching $him devote $himself to $his partners' pleasure.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his devotion to $his partners' pleasure.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his devotion to $his partners' pleasure.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "unspeakable">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed $his willingness to do things not repeated in polite company.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his willingness to do anything and everything.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his willingness to do things not repeated in polite company.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "huge insertion">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the sight of $his holes filled to their limits.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $his holes filled to their limits.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $his holes filled to their limits.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "orgasm denial">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the sight of $him ignoring $his own pleasure.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $him denying $himself pleasure.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $him denying $himself pleasure.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "cum addiction">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed watching $him do anything and everything for cum.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $him doing anything for cum.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $him doing anything for cum.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "anal addiction">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed watching $him do anything for a dick in $his ass.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $him doing anything for a dick up $his ass.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $his well-versed anus.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "exhibition">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed watching $him do anything for attention.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $him doing anything for attention.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $him doing anything for attention.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "breast expansion">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed charting the growth of $his breasts.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $his expanding bust.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the history of $his growing bust.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "abuse">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed watching $him abuse others.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $him abusing others.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his abusive tendencies.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "sexual torture">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed $him getting off from the suffering $he caused.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $him getting off from the suffering $he caused.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his hunger for making others suffer.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "self hating">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed watching $him happily suffer.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his suffering.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $him suffering.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "breeder">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed watching $him obsess over pumping out babies.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his obsession with having children.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his obsession with being pregnant.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "submissive">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed $his submission.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his submissiveness.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his submissiveness.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "cum">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed $his taste for cum.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his desire for cum.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his taste for cum.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "buttslut">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the sight of $his rear.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $his rear.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with the sight of $his rear.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "humiliating">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed $him humiliating $himself.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his frequent humiliation.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his frequent humiliation.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "breast">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed the sight of $his breasts.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish the sight of $his breasts.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his breasts.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "dominant">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed $his dominance.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his dominance.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his dominant streak.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "sadistic">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed $his sadism.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his sadism.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his sadistic streak.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "masochistic">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed $his masochism.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his masochism.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his masochistic streak.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<case "pregnancy fetish">> - <<if $args[0].pornPrestige == 1>> - <<set $args[0].pornPrestigeDesc = "$He has a following in slave pornography. Thousands have enjoyed $his fondness for pregnancy.">> - <<elseif $args[0].pornPrestige == 2>> - <<set $args[0].pornPrestigeDesc = "$He is well known from $his career in slave pornography. $His many fans relish $his fondness for pregnancy.">> - <<elseif $args[0].pornPrestige == 3>> - <<set $args[0].pornPrestigeDesc = "$He is world famous for $his career in slave pornography. Millions are intimately familiar with $his pregnancy kink.">> - <<else>> - <<set $args[0].pornPrestigeDesc = 0>> - <</if>> - <<default>> - <<set $args[0].pornPrestigeDesc = 0>> - <</switch>> - <<else>> - <<set $args[0].pornPrestigeDesc = pronounReplacer($args[0].pornPrestigeDesc)>> - <</if>> -<</if>> - -<<if def $args[0].amp>> - <<if $args[0].amp === 1>> - <<set $args[0].arm = {left: null, right: null}>> - <<set $args[0].leg = {left: null, right: null}>> - <<else>> - <<set _newID = ($args[0].amp * -1) + 1>> - <<set $args[0].arm = { - left: new App.Entity.LimbState(), - right: new App.Entity.LimbState() - }>> - <<set $args[0].leg = { - left: new App.Entity.LimbState(), - right: new App.Entity.LimbState() - }>> - <<set $args[0].arm.left.type = _newID, $args[0].arm.right.type = _newID, $args[0].leg.left.type = _newID, $args[0].leg.right.type = _newID>> - /* no need to check partial amputation, since it is not possible to create prior to this */ - <</if>> - <<run delete $args[0].amp>> - <<run delete $args[0].missingLegs>> - <<run delete $args[0].missingArms>> -<<elseif ndef $args[0].arm>> - <<set $args[0].arm = { - left: new App.Entity.LimbState(), - right: new App.Entity.LimbState() - }>> - <<set $args[0].leg = { - left: new App.Entity.LimbState(), - right: new App.Entity.LimbState() - }>> -<</if>> - -<<if hasAnyProstheticLimbs($args[0])>> - <<set $args[0].PLimb = 1>> - <<if getLimbCount($args[0], 6) > 0>> - <<set $args[0].PLimb = 2>> - <</if>> -<</if>> - -<<if def $args[0].eyeball>> - <<run delete $args[0].eyeball>> -<</if>> - -<<if def $args[0].auricle>> - <<run delete $args[0].auricle>> -<</if>> - -<<if ndef $args[0].readyProsthetics>> - <<set $args[0].readyProsthetics = []>> -<</if>> -<<if def $args[0].readyLimbs>> - <<for _k = 0; _k < $args[0].readyLimbs.length; _k++>> - <<switch $args[0].readyLimbs[_k].type>> - <<case -1>> - <<run addProsthetic($args[0], "basicL")>> - <<case -2>> - <<run addProsthetic($args[0], "sexL")>> - <<case -3>> - <<run addProsthetic($args[0], "beautyL")>> - <<case -4>> - <<run addProsthetic($args[0], "combatL")>> - <<case -5>> - <<run addProsthetic($args[0], "cyberneticL")>> - <</switch>> - <</for>> -<</if>> - -<<if ($releaseID < 1052)>> - <<set _prosthetics = $args[0].readyProsthetics, $args[0].readyProsthetics = []>> - <<for _p range _prosthetics>> - <<run addProsthetic($args[0], _p.id)>> - <</for>> -<</if>> - -<<if $releaseID < 1058>> - <<if $args[0].albinism === 2>> - <<set _temp = $args[0].origSkin, $args[0].origSkin = $args[0].albinismOverride.skin, $args[0].albinismOverride.skin = _temp>> - <<set _temp = $args[0].origEye, $args[0].origEye = $args[0].albinismOverride.eyeColor, $args[0].albinismOverride.eyeColor = _temp>> - <<set _temp = $args[0].origHColor, $args[0].origHColor = $args[0].albinismOverride.hColor, $args[0].albinismOverride.hColor = _temp>> - <</if>> -<</if>> - -<<if $releaseID < 1059>> - <<set $args[0].eye = new App.Entity.EyeState()>> - <<run setGeneticEyeColor($args[0], $args[0].origEye)>> - <<if $args[0].eyes === -4>> - <<run eyeSurgery($args[0], "both", "remove")>> - <<else>> - <<if $args[0].eyesImplant === 1>> - <<run eyeSurgery($args[0], "both", "cybernetic")>> - <</if>> - <<if $args[0].eyes === -3>><<run eyeSurgery($args[0], "both", "glass")>> - <<elseif $args[0].eyes === -2>><<run eyeSurgery($args[0], "both", "blind")>> - <<elseif $args[0].eyes === -1>><<run eyeSurgery($args[0], "both", "blur")>> - <</if>> - <<run setEyeColorFull($args[0], $args[0].eyeColor, $args[0].pupil, $args[0].sclerae, "both")>> - <<if typeof $args[0].geneticQuirks.heterochromia === "string">> - <<run setEyeColor($args[0].geneticQuirks.heterochromia, "left")>> - <</if>> - <</if>> - <<run delete $args[0].eyes, delete $args[0].eyesImplant, delete $args[0].eyeColor, delete $args[0].origEye, delete $args[0].pupil, delete $args[0].sclerae>> -<</if>> - -<</widget>> - <<widget "setLocalPronouns">> /* "He has a camera. The camera belongs to him. It is his camera. The camera is his." @@ -841,10 +222,10 @@ <</if>> <<if $arcologies[0].FSPaternalist > 20>> <<set $activeStandard.intelligenceImplant = 15>> - <<set $activeStandard.health.condition = 60>> + <<set $activeStandard.health = 60>> <<elseif $arcologies[0].FSDegradationist > 20>> <<set $activeStandard.intelligenceImplant = 15>> - <<set $activeStandard.health.condition = 0>> + <<set $activeStandard.health = 0>> <</if>> <<if $arcologies[0].FSSlaveProfessionalism > 20>> <<set $activeStandard.intelligenceImplant = 30>> @@ -1081,7 +462,7 @@ $activeSlave.slaveName is up for review: <br>$He @@.red;FAILED@@ educational trials. <<set _passing-->> <</if>> - <<if $activeSlave.health.condition >= $activeStandard.health.condition>> + <<if $activeSlave.health.condition >= $activeStandard.health>> <br>$He @@.lime;PASSED@@ health examinations. <<else>> <br>$He @@.red;FAILED@@ health examinations. diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw index c177c5a47dc9fdbfb27aab67c682af6772ee7618..2efb59b9f0b5d3eddf411622099adfeb6b0024ed 100644 --- a/src/uncategorized/BackwardsCompatibility.tw +++ b/src/uncategorized/BackwardsCompatibility.tw @@ -113,45 +113,6 @@ <<set $scarDesign = {primary: "generic", local: "generic"}>> <</if>> -<<if !$customSlave.hasOwnProperty("leg")>> - <<if (def $customSlave.amp) && ($customSlave.amp === 1)>> - <<set $customSlave.leg = {left: null, right: null}>> - <<else>> - <<set $customSlave.leg = {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()}>> - <</if>> -<</if>> - -<<if !$customSlave.hasOwnProperty("arm")>> - <<if (def $customSlave.amp) && ($customSlave.amp === 1)>> - <<set $customSlave.arm = {left: null, right: null}>> - <<else>> - <<set $customSlave.arm = {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()}>> - <</if>> -<</if>> - -<<if $customSlave.hasOwnProperty("amp")>> - <<run delete $customSlave.amp>> -<</if>> - -<<if !$customSlave.hasOwnProperty("skill")>> - <<set $customSlave.skill = {whore: 15, combat: 0}>> -<</if>> - -<<if $customSlave.hasOwnProperty("whoreSkills")>> - <<set $customSlave.skill.whore = $customSlave.whoreSkills>> - <<run delete $customSlave.whoreSkills>> -<</if>> - -<<if $customSlave.hasOwnProperty("combatSkills")>> - <<set $customSlave.skill.combat = $customSlave.combatSkills>> - <<run delete $customSlave.combatSkills>> -<</if>> - -<<if $releaseID < 1059>> - <<set $customSlave.eye = new App.Entity.EyeState()>> - <<run delete $customSlave.eyes>> -<</if>> - <<if def $servantMilkersJobs>> <<unset $servantMilkersJobs>> <</if>> @@ -1364,8 +1325,11 @@ <<set $huskSlaveOrdered = 0>> <</if>> <<if ndef $huskSlave>> - <<set $huskSlave = {age: 18, nationality: "slave", race: "white", sex: 1, virgin: 0}>> + <<set $huskSlave = new App.Entity.CustomSlaveOrder()>> <</if>> +<<run App.Update.CustomSlaveOrder($huskSlave)>> +<<run App.Update.CustomSlaveOrder($customSlave)>> + <<if ndef $pedo_mode>> <<set $pedo_mode = 0>> <</if>> @@ -2783,48 +2747,6 @@ Setting missing global variables: <<set $PC.refreshmentType = 1>> <</if>> <</if>> -<<if $releaseID < 1031>> - <<if $traitor != 0>> - <<if $traitor.intelligence == -3>> - <<set $traitor.intelligence = -100>> - <<elseif $traitor.intelligence == -2>> - <<set $traitor.intelligence = -60>> - <<elseif $traitor.intelligence == -1>> - <<set $traitor.intelligence = -30>> - <<elseif $traitor.intelligence == 0>> - <<set $traitor.intelligence = 0>> - <<elseif $traitor.intelligence == 1>> - <<set $traitor.intelligence = 30>> - <<elseif $traitor.intelligence == 2>> - <<set $traitor.intelligence = 60>> - <<else>> - <<set $traitor.intelligence = 99>> - <</if>> - <<if $traitor.intelligenceImplant == 1>> - <<set $traitor.intelligenceImplant = 30>> - <</if>> - <</if>> - <<if $boomerangSlave != 0>> - <<if $boomerangSlave.intelligence == -3>> - <<set $boomerangSlave.intelligence = -100>> - <<elseif $boomerangSlave.intelligence == -2>> - <<set $boomerangSlave.intelligence = -60>> - <<elseif $boomerangSlave.intelligence == -1>> - <<set $boomerangSlave.intelligence = -30>> - <<elseif $boomerangSlave.intelligence == 0>> - <<set $boomerangSlave.intelligence = 0>> - <<elseif $boomerangSlave.intelligence == 1>> - <<set $boomerangSlave.intelligence = 30>> - <<elseif $boomerangSlave.intelligence == 2>> - <<set $boomerangSlave.intelligence = 60>> - <<else>> - <<set $boomerangSlave.intelligence = 99>> - <</if>> - <<if $boomerangSlave.intelligenceImplant == 1>> - <<set $boomerangSlave.intelligenceImplant = 30>> - <</if>> - <</if>> -<</if>> <<set WombInit($PC)>> <<if ndef $pornStarID>> @@ -3165,671 +3087,16 @@ Done! Setting missing slave variables: /* Adding a new variable? Consider putting it in datatypeCleanupJS.tw instead of here */ <<for _bci = 0; _bci < $slaves.length; _bci++>> -<<set _Slave = $slaves[_bci]>> - -<<if typeof _Slave != "object">> - <<set $slaves.deleteAt(_bci), _bci-->> - <<continue>> -<</if>> - -<<PMODinit _Slave>> - -<<if _Slave.origin == "Shortly after birth, $he was sealed in an aging tank until $he was of age. $He knows only of the terror that awaits $him should $he not obey $his master.">> - <<set _Slave.tankBaby = 2>> -<<elseif _Slave.origin == "Shortly after birth, $he was sealed in an aging tank until $he was of age. $He knows nothing of the world outside of what the tank imprinted $him with.">> - <<set _Slave.tankBaby = 1>> -<<elseif ndef _Slave.tankBaby>> - <<set _Slave.tankBaby = 0>> -<</if>> - -<<if _Slave.origin == "$He sold $himself into slavery to feed $himself and $his growing brood.">> - <<if _Slave.pregAdaptation < 750>> - <<set _Slave.pregAdaptation = 750>> - <</if>> -<</if>> - -<<if def _Slave.PCSlutContacts>> - <<unset _Slave.PCSlutContacts>> -<</if>> - -<<if ndef _Slave.sisters>> - <<set _Slave.sisters = 0>> -<</if>> -<<if ndef _Slave.daughters>> - <<set _Slave.daughters = 0>> -<</if>> -<<if _Slave.rivalry != 0>> - <<set _backwardsCompatibility = $slaveIndices[_Slave.rivalryTarget]>> - <<if ndef _backwardsCompatibility>><<set _Slave.rivalry = 0, _Slave.rivalryTarget = 0>><</if>> -<</if>> -<<if _Slave.relationship > 0>> - <<set _backwardsCompatibility = $slaveIndices[_Slave.relationshipTarget]>> - <<if ndef _backwardsCompatibility>><<set _Slave.relationship = 0, _Slave.relationshipTarget = 0>><</if>> -<</if>> -<<if $familyTesting == 0 && _Slave.relation != 0>> - <<set _backwardsCompatibility = $slaveIndices[_Slave.relationTarget]>> - <<if ndef _backwardsCompatibility>><<set _Slave.relation = 0, _Slave.relationTarget = 0>><</if>> -<</if>> - -<<if _Slave.race == "surgically altered to look amerindian">> - <<set _Slave.race = "amerindian">> -<</if>> -<<if _Slave.race == "surgically altered to look asian">> - <<set _Slave.race = "asian">> -<</if>> -<<if _Slave.race == "surgically altered to look black">> - <<set _Slave.race = "black">> -<</if>> -<<if _Slave.race == "surgically altered to look indo-aryan">> - <<set _Slave.race = "indo-aryan">> -<</if>> -<<if _Slave.race == "surgically altered to look latina">> - <<set _Slave.race = "latina">> -<</if>> -<<if _Slave.race == "surgically altered to look malay">> - <<set _Slave.race = "malay">> -<</if>> -<<if _Slave.race == "surgically altered to look middle eastern">> - <<set _Slave.race = "middle eastern">> -<</if>> -<<if (_Slave.race == "surgically altered to look mixed race") || (_Slave.race == "surgically altered to look mixed")>> - <<set _Slave.race = "mixed race">> -<</if>> -<<if (_Slave.race == "surgically altered to look pacific islander") || (_Slave.race == "surgically altered to look like a pacific islander")>> - <<set _Slave.race = "pacific islander">> -<</if>> -<<if (_Slave.race == "surgically altered to look southern european") || (_Slave.race == "southern European")>> - <<set _Slave.race = "southern european">> -<</if>> -<<if _Slave.race == "surgically altered to look semitic">> - <<set _Slave.race = "semitic">> -<</if>> -<<if _Slave.race == "surgically altered to look white">> - <<set _Slave.race = "white">> -<</if>> - -<<if ndef _Slave.override_Race>> - <<set _Slave.override_Race = 0>> -<</if>> -<<if ndef _Slave.override_Skin>> - <<set _Slave.override_Skin = 0>> -<</if>> -<<if ndef _Slave.override_Eye_Color>> - <<set _Slave.override_Eye_Color = 0>> -<</if>> -<<if ndef _Slave.override_H_Color>> - <<set _Slave.override_H_Color = 0>> -<</if>> -<<if ndef _Slave.override_Pubic_H_Color>> - <<set _Slave.override_Pubic_H_Color = 0>> -<</if>> -<<if ndef _Slave.override_Arm_H_Color>> - <<set _Slave.override_Arm_H_Color = 0>> -<</if>> - -<<switch _Slave.skin>> -<<case "red dyed">> - <<set _Slave.skin = "dyed red">> -<<case "green dyed">> - <<set _Slave.skin = "dyed green">> -<<case "blue dyed">> - <<set _Slave.skin = "dyed blue">> -<<case "tanned">> - <<set _Slave.skin = "tan">> -<<case "lightened">> - <<set _Slave.skin = "light">> -<<case "bronzed">> - <<set _Slave.skin = "bronze">> -<<case "darkened">> - <<set _Slave.skin = "dark">> -<<case "natural">> -<</switch>> - -<<switch _Slave.origSkin>> -<<case "blue dyed" "dyed blue" "dyed green" "dyed red" "green dyed" "red dyed">> - <<set _Slave.origSkin = randomRaceSkin(_Slave.origRace)>> -<<case "tanned">> - <<set _Slave.origSkin = "tan">> -<<case "lightened">> - <<set _Slave.origSkin = "light">> -<<case "bronzed">> - <<set _Slave.origSkin = "bronze">> -<<case "darkened">> - <<set _Slave.origSkin = "dark">> -<<case "natural">> -<</switch>> - -<<if _Slave.markings == "heavily">> - <<set _Slave.markings = "heavily freckled">> -<<elseif _Slave.markings == "beauty">> - <<set _Slave.markings = "beauty mark">> -<</if>> - -<<if ndef _Slave.genes>> - <<if _Slave.ovaries == 1>> - <<set _Slave.genes = "XX">> - <<else>> - <<set _Slave.genes = "XY">> - <</if>> -<</if>> - -<<if $releaseID < 1000>> - <<if _Slave.face == -3>> - <<set _Slave.face = -100>> - <<elseif _Slave.face == -2>> - <<set _Slave.face = -50>> - <<elseif _Slave.face == -1>> - <<set _Slave.face = -20>> - <<elseif _Slave.face == 0>> - <<set _Slave.face = 0>> - <<elseif _Slave.face == 1>> - <<set _Slave.face = 20>> - <<elseif _Slave.face == 2>> - <<set _Slave.face = 50>> - <<else>> - <<set _Slave.face = 100>> - <</if>> -<</if>> -<<if $releaseID < 1031>> - <<if _Slave.intelligence == -3>> - <<set _Slave.intelligence = -100>> - <<elseif _Slave.intelligence == -2>> - <<set _Slave.intelligence = -60>> - <<elseif _Slave.intelligence == -1>> - <<set _Slave.intelligence = -30>> - <<elseif _Slave.intelligence == 0>> - <<set _Slave.intelligence = 0>> - <<elseif _Slave.intelligence == 1>> - <<set _Slave.intelligence = 30>> - <<elseif _Slave.intelligence == 2>> - <<set _Slave.intelligence = 60>> - <<else>> - <<set _Slave.intelligence = 99>> - <</if>> - <<if _Slave.intelligenceImplant == 1>> - <<set _Slave.intelligenceImplant = 30>> - <</if>> -<</if>> - -<<if _Slave.teeth == 0>> - <<set _Slave.teeth = "normal">> -<<elseif _Slave.teeth == "straightening">> - <<set _Slave.teeth = "straightening braces">> -<<elseif _Slave.teeth == "cosmetic">> - <<set _Slave.teeth = "cosmetic braces">> -<</if>> - -<<if ndef _Slave.areolaeShape>> - <<if _Slave.areolae == 4>> - <<set _Slave.areolaeShape = "heart">> - <<set _Slave.areolae = 3>> - <<elseif _Slave.areolae == 5>> - <<set _Slave.areolaeShape = "star">> - <<set _Slave.areolae = 3>> - <<else>> - <<set _Slave.areolaeShape = "circle">> - <</if>> -<</if>> - -<<if $releaseID < 1059>> - <<if ndef _Slave.eyeColor>> - <<set _Slave.eyeColor = _Slave.eyes>> - <<set _Slave.eyes = 1>> - <<if ndef _Slave.eyeColor>> - <<set _Slave.eyeColor = "brown">> - <</if>> - <</if>> - - <<if ndef _Slave.pupil>> - <<if _Slave.eyeColor == "catlike">> - <<set _Slave.pupil = "catlike">> - <<set _Slave.eyeColor = "brown">> - <<elseif _Slave.eyeColor == "serpent-like">> - <<set _Slave.pupil = "serpent-like">> - <<set _Slave.eyeColor = "brown">> - <<elseif _Slave.eyeColor == "devilish">> - <<set _Slave.pupil = "devilish">> - <<set _Slave.eyeColor = "brown">> - <<elseif _Slave.eyeColor == "demonic">> - <<set _Slave.pupil = "demonic">> - <<set _Slave.eyeColor = "brown">> - <<elseif _Slave.eyeColor == "hypnotic">> - <<set _Slave.pupil = "hypnotic">> - <<set _Slave.eyeColor = "brown">> - <<elseif _Slave.eyeColor == "heart-shaped">> - <<set _Slave.pupil = "heart-shaped">> - <<set _Slave.eyeColor = "brown">> - <<elseif _Slave.eyeColor == "wide-eyed">> - <<set _Slave.pupil = "wide-eyed">> - <<set _Slave.eyeColor = "brown">> - <<elseif _Slave.eyeColor == "almond-shaped">> - <<set _Slave.pupil = "almond-shaped">> - <<set _Slave.eyeColor = "brown">> - <<elseif _Slave.eyeColor == "bright">> - <<set _Slave.pupil = "bright">> - <<set _Slave.eyeColor = "brown">> - <<elseif _Slave.eyeColor == "teary">> - <<set _Slave.pupil = "teary">> - <<set _Slave.eyeColor = "brown">> - <<elseif _Slave.eyeColor == "vacant">> - <<set _Slave.pupil = "vacant">> - <<set _Slave.eyeColor = "brown">> - <<else>> - <<set _Slave.pupil = "circular">> - <</if>> - <</if>> -<</if>> - -<<if def _Slave.pitkills>> - <<run delete _Slave.pitkills>> -<</if>> -<<if def _Slave.penetrationCount>> - <<run delete _Slave.penetrationCount>> -<</if>> -<<if def _Slave.oralTotal>> - <<run delete _Slave.oralTotal>> -<</if>> -<<if def _Slave.vaginaCount>> - <<run delete _Slave.vaginaCount>> -<</if>> - -<<if (($ver.startsWith("0.6") && !$ver.startsWith("10.6")) || ($ver.startsWith("0.7")) || ($ver.startsWith("0.8"))) && (!$ver.startsWith("0.8.9")) && (!$ver.startsWith("0.8.10")) && (!$ver.startsWith("0.8.11")) && (!$ver.startsWith("0.8.12"))>> - <<if _Slave.attrXX == 2>> - <<set _Slave.attrXX = 90>> - <<elseif _Slave.attrXX == 1>> - <<set _Slave.attrXX = 70>> - <<elseif _Slave.attrXX == 0>> - <<set _Slave.attrXX = 50>> - <<elseif _Slave.attrXX == -1>> - <<set _Slave.attrXX = 30>> - <<else>> - <<set _Slave.attrXX = 10>> - <</if>> - <<if _Slave.attrXY == 2>> - <<set _Slave.attrXY = 90>> - <<elseif _Slave.attrXY == 1>> - <<set _Slave.attrXY = 70>> - <<elseif _Slave.attrXY == 0>> - <<set _Slave.attrXY = 50>> - <<elseif _Slave.attrXY == -1>> - <<set _Slave.attrXY = 30>> - <<else>> - <<set _Slave.attrXY = 10>> - <</if>> -<</if>> + <<set _Slave = $slaves[_bci]>> -<<if (($ver.startsWith("0.6") && !$ver.startsWith("10.6")) || ($ver.startsWith("0.7")) || ($ver.startsWith("0.8")))>> - <<if _Slave.health <= -9>> - <<set _Slave.health = -90>> - <<elseif _Slave.health <= -7>> - <<set _Slave.health = random(-89,-70)>> - <<elseif _Slave.health <= -5>> - <<set _Slave.health = random(-69,-50)>> - <<elseif _Slave.health <= -3>> - <<set _Slave.health = random(-49,-30)>> - <<elseif _Slave.health <= -1>> - <<set _Slave.health = random(-29,-10)>> - <<elseif _Slave.health <= 1>> - <<set _Slave.health = random(-9,10)>> - <<elseif _Slave.health <= 3>> - <<set _Slave.health = random(11,30)>> - <<elseif _Slave.health <= 5>> - <<set _Slave.health = random(31,50)>> - <<elseif _Slave.health <= 7>> - <<set _Slave.health = random(51,70)>> - <<elseif _Slave.health <= 8>> - <<set _Slave.health = random(71,80)>> - <<elseif _Slave.health <= 9>> - <<set _Slave.health = random(81,90)>> - <<elseif _Slave.health <= 10>> - <<set _Slave.health = random(91,100)>> - <<elseif _Slave.health <= 15>> - <<set _Slave.health = random(101,150)>> - <<elseif _Slave.health <= 20>> - <<set _Slave.health = random(151,200)>> - <<elseif _Slave.health >= 50>> - <<set _Slave.health = 500>> - <<elseif _Slave.health > 20>> - <<set _Slave.health = 205>> - <</if>> - - <<set _Slave.devotion = (_Slave.devotion*5)>> - <<set _Slave.oldDevotion = (_Slave.oldDevotion*5)>> - <<set _Slave.trust = (_Slave.trust*5)>> - <<set _Slave.oldTrust = (_Slave.oldTrust*5)>> - - <<if _Slave.fetishStrength == 0>> - <<set _Slave.fetishStrength = random(0, 60)>> - <<elseif _Slave.fetishStrength == 1>> - <<set _Slave.fetishStrength = random(61,80)>> - <<elseif _Slave.fetishStrength == 2>> - <<set _Slave.fetishStrength = random(96, 100)>> - <</if>> - - <<if _Slave.weight == -3>> - <<set _Slave.weight = random(-110,-96)>> - <<elseif _Slave.weight == -3>> - <<set _Slave.weight = random(-95,-31)>> - <<elseif _Slave.weight == -1>> - <<set _Slave.weight = random(-30, -11)>> - <<elseif _Slave.weight == 0>> - <<set _Slave.weight = random(-11, 10)>> - <<elseif _Slave.weight == 1>> - <<set _Slave.weight = random(11, 30)>> - <<elseif _Slave.weight == 2>> - <<set _Slave.weight = random(31, 95)>> - <<elseif _Slave.weight == 3>> - <<set _Slave.weight = random(96, 110)>> - <</if>> - - <<if _Slave.lips != 0>> - <<if _Slave.lips == 3>> - <<set _Slave.lips = 85>> - <<elseif _Slave.lips == 2>> - <<set _Slave.lips = 55>> - <<elseif _Slave.lips == 1>> - <<set _Slave.lips = 35>> - <</if>> - <</if>> -<</if>> - -<<if (($ver.startsWith("0.6") && !$ver.startsWith("10.6")) || ($ver.startsWith("0.7")) || ($ver.startsWith("0.8")) || ($ver.startsWith("0.9"))) && (!$ver.startsWith("0.9.5")) && (!$ver.startsWith("0.9.6")) && (!$ver.startsWith("0.9.7")) && (!$ver.startsWith("0.9.8")) && (!$ver.startsWith("0.9.9")) && (!$ver.startsWith("0.9.10"))>> - <<if ndef _Slave.skill>> - <<if _Slave.oralSkill > 0>> - <<if _Slave.oralSkill == 3>> - <<set _Slave.oralSkill = 100>> - <<elseif _Slave.oralSkill == 2>> - <<set _Slave.oralSkill = 65>> - <<else>> - <<set _Slave.oralSkill = 35>> - <</if>> - <</if>> - <<if _Slave.vaginalSkill > 0>> - <<if _Slave.vaginalSkill == 3>> - <<set _Slave.vaginalSkill = 100>> - <<elseif _Slave.vaginalSkill == 2>> - <<set _Slave.vaginalSkill = 65>> - <<else>> - <<set _Slave.vaginalSkill = 35>> - <</if>> - <</if>> - <<if _Slave.analSkill > 0>> - <<if _Slave.analSkill == 3>> - <<set _Slave.analSkill = 100>> - <<elseif _Slave.analSkill == 2>> - <<set _Slave.analSkill = 65>> - <<else>> - <<set _Slave.analSkill = 35>> - <</if>> - <</if>> - <<if _Slave.whoreSkill > 0>> - <<if _Slave.whoreSkill == 3>> - <<set _Slave.whoreSkill = 100>> - <<elseif _Slave.whoreSkill == 2>> - <<set _Slave.whoreSkill = 65>> - <<else>> - <<set _Slave.whoreSkill = 35>> - <</if>> - <</if>> - <<if _Slave.entertainSkill > 0>> - <<if _Slave.entertainSkill == 3>> - <<set _Slave.entertainSkill = 100>> - <<elseif _Slave.entertainSkill == 2>> - <<set _Slave.entertainSkill = 65>> - <<else>> - <<set _Slave.entertainSkill = 35>> - <</if>> - <</if>> - <</if>> - <<if ($ver != "0.9.4")>> - <<set _Slave.aphrodisiacs = 0>> - <<if _Slave.drugs == "curatives">> - <<set _Slave.curatives = 2>> - <<set _Slave.drugs = "no drugs">> - <<elseif _Slave.drugs == "preventatives">> - <<set _Slave.curatives = 1>> - <<set _Slave.drugs = "no drugs">> - <<elseif _Slave.drugs == "aphrodisiacs">> - <<set _Slave.aphrodisiacs = 1>> - <<set _Slave.drugs = "no drugs">> - <<elseif _Slave.drugs == "extreme aphrodisiacs">> - <<set _Slave.aphrodisiacs = 2>> - <<set _Slave.drugs = "no drugs">> - <</if>> - <<if _Slave.muscles >= 3>> - <<set _Slave.muscles = 100>> - <<elseif _Slave.muscles >= 2>> - <<set _Slave.muscles = 50>> - <<elseif _Slave.muscles >= 1>> - <<set _Slave.muscles = 20>> - <<else>> - <<set _Slave.muscles = 0>> - <</if>> - <</if>> -<</if>> - -<<switch _Slave.boobsTat>> -<<case "floral designs">> - <<set _Slave.boobsTat = "flowers">> -<<case "demeaning inscriptions">> - <<set _Slave.boobsTat = "rude words">> -<<case "lewd scenes">> - <<set _Slave.boobsTat = "scenes">> -<<case "degrading language">> - <<set _Slave.boobsTat = "degradation">> -<<case "slutty advertisements">> - <<set _Slave.boobsTat = "advertisements">> -<</switch>> - -<<switch _Slave.buttTat>> -<<case "floral designs">> - <<set _Slave.buttTat = "flowers">> -<<case "demeaning inscriptions">> - <<set _Slave.buttTat = "rude words">> -<<case "lewd scenes">> - <<set _Slave.buttTat = "scenes">> -<<case "degrading language">> - <<set _Slave.buttTat = "degradation">> -<<case "slutty advertisements">> - <<set _Slave.buttTat = "advertisements">> -<</switch>> - -<<switch _Slave.vaginaTat>> -<<case "floral designs">> - <<set _Slave.vaginaTat = "flowers">> -<<case "demeaning inscriptions">> - <<set _Slave.vaginaTat = "rude words">> -<<case "lewd scenes">> - <<set _Slave.vaginaTat = "scenes">> -<<case "degrading language">> - <<set _Slave.vaginaTat = "degradation">> -<<case "slutty advertisements">> - <<set _Slave.vaginaTat = "advertisements">> -<</switch>> - -<<switch _Slave.dickTat>> -<<case "floral designs">> - <<set _Slave.dickTat = "flowers">> -<<case "demeaning inscriptions">> - <<set _Slave.dickTat = "rude words">> -<<case "lewd scenes">> - <<set _Slave.dickTat = "scenes">> -<<case "degrading language">> - <<set _Slave.dickTat = "degradation">> -<<case "slutty advertisements">> - <<set _Slave.dickTat = "advertisements">> -<</switch>> - -<<switch _Slave.anusTat>> -<<case "floral designs">> - <<set _Slave.anusTat = "flowers">> -<<case "demeaning inscriptions">> - <<set _Slave.anusTat = "rude words">> -<<case "lewd scenes">> - <<set _Slave.anusTat = "scenes">> -<<case "degrading language">> - <<set _Slave.anusTat = "degradation">> -<<case "slutty advertisements">> - <<set _Slave.anusTat = "advertisements">> -<</switch>> - -<<switch _Slave.backTat>> -<<case "floral designs">> - <<set _Slave.backTat = "flowers">> -<<case "demeaning inscriptions">> - <<set _Slave.backTat = "rude words">> -<<case "lewd scenes">> - <<set _Slave.backTat = "scenes">> -<<case "degrading language">> - <<set _Slave.backTat = "degradation">> -<<case "slutty advertisements">> - <<set _Slave.backTat = "advertisements">> -<</switch>> - -<<switch _Slave.shouldersTat>> -<<case "floral designs">> - <<set _Slave.shouldersTat = "flowers">> -<<case "demeaning inscriptions">> - <<set _Slave.shouldersTat = "rude words">> -<<case "lewd scenes">> - <<set _Slave.shouldersTat = "scenes">> -<<case "degrading language">> - <<set _Slave.shouldersTat = "degradation">> -<<case "slutty advertisements">> - <<set _Slave.shouldersTat = "advertisements">> -<</switch>> - -<<switch _Slave.armsTat>> -<<case "floral designs">> - <<set _Slave.armsTat = "flowers">> -<<case "demeaning inscriptions">> - <<set _Slave.armsTat = "rude words">> -<<case "lewd scenes">> - <<set _Slave.armsTat = "scenes">> -<<case "degrading language">> - <<set _Slave.armsTat = "degradation">> -<<case "slutty advertisements">> - <<set _Slave.armsTat = "advertisements">> -<</switch>> - -<<switch _Slave.legsTat>> -<<case "floral designs">> - <<set _Slave.legsTat = "flowers">> -<<case "demeaning inscriptions">> - <<set _Slave.legsTat = "rude words">> -<<case "lewd scenes">> - <<set _Slave.legsTat = "scenes">> -<<case "degrading language">> - <<set _Slave.legsTat = "degradation">> -<<case "slutty advertisements">> - <<set _Slave.legsTat = "advertisements">> -<</switch>> - -<<switch _Slave.stampTat>> -<<case "floral designs">> - <<set _Slave.stampTat = "flowers">> -<<case "demeaning inscriptions">> - <<set _Slave.stampTat = "rude words">> -<<case "lewd scenes">> - <<set _Slave.stampTat = "scenes">> -<<case "degrading language">> - <<set _Slave.stampTat = "degradation">> -<<case "slutty advertisements">> - <<set _Slave.stampTat = "advertisements">> -<</switch>> - -<<switch _Slave.lipsTat>> -<<case "floral designs">> - <<set _Slave.lipsTat = "flowers">> -<<case "demeaning inscriptions">> - <<set _Slave.lipsTat = "rude words">> -<<case "lewd scenes">> - <<set _Slave.lipsTat = "scenes">> -<<case "degrading language">> - <<set _Slave.lipsTat = "degradation">> -<<case "slutty advertisements">> - <<set _Slave.lipsTat = "advertisements">> -<</switch>> - -<<if (ndef _Slave.currentRules) || (_Slave.currentRules.length < 1)>> - <<set _Slave.currentRules = []>> -<</if>> - -<<if _Slave.height < -1>> - <<set _Slave.height = random(140,149)>> -<<elseif _Slave.height < 0>> - <<set _Slave.height = random(150,159)>> -<<elseif _Slave.height < 1>> - <<set _Slave.height = random(160,169)>> -<<elseif _Slave.height < 2>> - <<set _Slave.height = random(170,184)>> -<<elseif _Slave.height <= 3>> - <<set _Slave.height = random(185,200)>> -<</if>> - -<<if $releaseID < 1059>> - <<if _Slave.eyeColor == "no default value">> - <<set _Slave.eyeColor = _Slave.origEye>> - <</if>> -<</if>> - -<<if ndef _Slave.birthSurname>> - <<set _Slave.birthSurname = 0>> -<</if>> -<<if ndef _Slave.slaveSurname>> - <<set _Slave.slaveSurname = 0>> -<</if>> - -<<if _Slave.faceImplant == 1>> - <<set _Slave.faceImplant = 15>> -<<elseif _Slave.faceImplant == 2>> - <<set _Slave.faceImplant = 65>> -<</if>> - -<<if def _Slave.areoleaPiercing>> - <<run delete _Slave.areoleaPiercing>> -<</if>> - -<<if ndef _Slave.pregControl>> - <<set _Slave.pregControl = "none">> -<</if>> -<<if _Slave.pregControl == "labor supressors">> - <<set _Slave.pregControl = "labor suppressors">> -<</if>> - -<<if ndef _Slave.chastityAnus || ndef _Slave.chastityPenis || ndef _Slave.chastityVagina>> - <<if _Slave.dickAccessory == "combined chastity">> - <<set _Slave.chastityAnus = 1>> - <<set _Slave.chastityPenis = 1>> - <<set _Slave.dickAccessory = "none">> - <<elseif _Slave.vaginalAccessory == "combined chastity">> - <<set _Slave.chastityAnus = 1>> - <<set _Slave.chastityVagina = 1>> - <<set _Slave.vaginalAccessory = "none">> - <<elseif _Slave.dickAccessory == "anal chastity" || _Slave.vaginalAccessory == "anal chastity">> - <<set _Slave.chastityAnus = 1>> - <<set _Slave.dickAccessory = "none">> - <<set _Slave.vaginalAccessory = "none">> - <<elseif _Slave.dickAccessory == "chastity">> - <<set _Slave.chastityPenis = 1>> - <<set _Slave.dickAccessory = "none">> - <<elseif _Slave.vaginalAccessory == "chastity belt">> - <<set _Slave.chastityVagina = 1>> - <<set _Slave.vaginalAccessory = "none">> - <<else>> - <<set _Slave.chastityAnus = 0>> - <<set _Slave.chastityPenis = 0>> - <<set _Slave.chastityVagina = 0>> + <<if typeof _Slave != "object">> + <<set $slaves.deleteAt(_bci), _bci-->> + <<continue>> <</if>> -<</if>> -<<if $releaseID < 1057>> - <<if _Slave.relatioship == -3>> - <<set $PC.relationships.wives.push(_Slave.ID)>> - <</if>> -<</if>> + <<run App.Update.Slave(_Slave)>> -<<set $slaves[_bci] = _Slave>> + <<set $slaves[_bci] = _Slave>> <</for>> <br> Checking and fixing slave records... @@ -3842,18 +3109,33 @@ Setting missing slave variables: <</if>> <</for>> <<if $hostage !== 0>> + <<run App.Update.Slave($hostage)>> <<run App.Entity.Utils.SlaveDataSchemeCleanup($hostage)>> <<run SlaveDatatypeCleanup($hostage)>> <</if>> <<if def $slaveAfterRA>> + <<run App.Update.Slave($slaveAfterRA)>> <<run App.Entity.Utils.SlaveDataSchemeCleanup($slaveAfterRA)>> <<run SlaveDatatypeCleanup($slaveAfterRA)>> <</if>> +<<if $boomerangSlave !== 0>> + <<run App.Update.Slave($boomerangSlave)>> + <<run App.Entity.Utils.SlaveDataSchemeCleanup($boomerangSlave)>> + <<run SlaveDatatypeCleanup($boomerangSlave)>> +<</if>> +<<if $traitor !== 0>> + <<run App.Update.Slave($traitor)>> + <<run App.Entity.Utils.SlaveDataSchemeCleanup($traitor)>> + <<run SlaveDatatypeCleanup($traitor)>> +<</if>> + + Done<br> <<if $tanks.length > 0>> Checking and fixing records for incubator tanks... <<for _Slave range $tanks>> + <<run App.Update.Slave(_Slave)>> <<run App.Entity.Utils.SlaveDataSchemeCleanup(_Slave)>> <<run SlaveDatatypeCleanup(_Slave, true)>> /* pass second argument as true so that slaveAgeDatatypeCleanup is not run */ <</for>> @@ -3902,7 +3184,7 @@ Updating gene pool records: <<for _bci = 0; _bci < $genePool.length; _bci++>> <<set _Slave = $genePool[_bci]>> - <<PMODinit _Slave>> + <<run App.Update.Slave(_Slave)>> <<if $genePool.map(function(s) { return s.ID; }).count(_Slave.ID) > 1>> /* first check for duplicate IDs, keep the first entry and delete the others */ <<for _bci2 = _bci + 1; _bci2 < $genePool.length; _bci2++>> @@ -3943,26 +3225,6 @@ Updating gene pool records: <<if ndef _Slave.origSkin>><<set _Slave.origSkin = _Slave.skin>><</if>> <<if ndef _Slave.origRace>><<set _Slave.origRace = _Slave.race>><</if>> - <<if $releaseID < 1031>> - <<if _Slave.intelligence == -3>> - <<set _Slave.intelligence = -100>> - <<elseif _Slave.intelligence == -2>> - <<set _Slave.intelligence = -60>> - <<elseif _Slave.intelligence == -1>> - <<set _Slave.intelligence = -30>> - <<elseif _Slave.intelligence == 0>> - <<set _Slave.intelligence = 0>> - <<elseif _Slave.intelligence == 1>> - <<set _Slave.intelligence = 30>> - <<elseif _Slave.intelligence == 2>> - <<set _Slave.intelligence = 60>> - <<else>> - <<set _Slave.intelligence = 99>> - <</if>> - <<if _Slave.intelligenceImplant == 1>> - <<set _Slave.intelligenceImplant = 30>> - <</if>> - <</if>> <<if $releaseID < 1059>> <<if ndef _Slave.eyesImplant>> @@ -3998,34 +3260,10 @@ Updating gene pool records: <</for>> -<<if $incubator > 0>> - <<for _bci = 0; _bci < $tanks.length; _bci++>> - <<set _incubatedSlave = $tanks[_bci]>> - <<PMODinit _incubatedSlave>> - <<if $releaseID < 1031>> - <<if _incubatedSlave.intelligence == -3>> - <<set _incubatedSlave.intelligence = -100>> - <<elseif _incubatedSlave.intelligence == -2>> - <<set _incubatedSlave.intelligence = -60>> - <<elseif _incubatedSlave.intelligence == -1>> - <<set _incubatedSlave.intelligence = -30>> - <<elseif _incubatedSlave.intelligence == 0>> - <<set _incubatedSlave.intelligence = 0>> - <<elseif _incubatedSlave.intelligence == 1>> - <<set _incubatedSlave.intelligence = 30>> - <<elseif _incubatedSlave.intelligence == 2>> - <<set _incubatedSlave.intelligence = 60>> - <<else>> - <<set _incubatedSlave.intelligence = 99>> - <</if>> - <</if>> - <</for>> -<</if>> - <<if $nurseryNannies > 0>> <<for _bci = 0; _bci < $cribs.length; _bci++>> + <<run App.Update.Slave($cribs[_bci])>> <<set _nurseryChild = $cribs[_bci]>> - <<PMODinit _nurseryChild>> <</for>> <</if>> diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw index 7544da39d132362c57615ccc35907a135b429d1a..3d2e1274955f53ef31aa5040eceb8616a630c1c7 100644 --- a/src/uncategorized/RESS.tw +++ b/src/uncategorized/RESS.tw @@ -13512,13 +13512,13 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He <</replace>> <</link>> <<if canImpreg($activeSlave, $PC)>> - <<if $activeSlave.mpreg == 1 && canDoAnal($activeSlave) || $activeSlave.ovaries == 1 && canDoVaginal($activeSlave)>> + <<if ($activeSlave.mpreg == 1 && canDoAnal($activeSlave)) || ($activeSlave.ovaries == 1 && canDoVaginal($activeSlave))>> <br><<link "Put a baby in $him while $he prays">> <<EventNameDelink $activeSlave>> <<replace "#result">> $activeSlave.slaveName finds $himself standing in front of you, feeling you roughly using two fingers to finger $his <<if $activeSlave.mpreg == 1>>asspussy<<else>>pussy<</if>>. $He gasps out: "Oh <<Master>>, owner, protector, and father of my children, forgive my <<s>>in<<s>>, ju<<s>>t a<<s>> you forgave my <<s>>i<<s>>ter<<s>> in <<s>>lavery before me. Count not my tran<<s>>gre<<ss>>ion<<s>> again<<s>>t your rule<<s>>, but, rather, the tear<<s>> of my womb. Remember not my iniquitie<<s>> but my willingne<<ss>> to be bred by you. I long to <<s>>erve your <<if $PC.vagina != -1>>futa <</if>>dick, and beg that you will u<<s>>e me and ble<<ss>> my body with your off<<s>>pring. I promi<<s>>e to <<s>>ubmit to you a<<s>> your breeding <<s>>lut all the day<<s>> of my <<s>>ervitude, and to grow heavy with child, again and again." - $He moans with relief when $he feels you withdraw your penetrating digits partway through $his recitation, but by the time $he's finished, you've shoved your dick up $his waiting <<if $activeSlave.mpreg == 1>>asshole<<else>>pussy<</if>> and are close so blessing $him with a load of cum. $He @@.hotpink;does $his best@@ to relax and resumes, "Oh <<Master>>..." + $He moans with relief when $he feels you withdraw your penetrating digits partway through $his recitation, but by the time $he's finished, you've shoved your dick up $his waiting <<if $activeSlave.mpreg == 1>>asshole<<else>>pussy<</if>> and are close to blessing $him with a load of cum. $He @@.hotpink;does $his best@@ to relax and resumes, "Oh <<Master>>..." <<if $activeSlave.mpreg == 1>><<= VCheck.Anal()>><<else>><<= VCheck.Vaginal()>><</if>> <<= knockMeUp($activeSlave, 100, 2, -1, 1)>> <<if ($activeSlave.fetish != "humiliation") && (random(1,100) > 50)>> @@ -13625,7 +13625,7 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He <<else>> $his pussylips for you. <</if>> - You callously ram a dildo into $his fresh hole and tell $him to keep working $himself with it or suffer another whipping. After $he's fucked $himself for a good while, $he has no trouble taking a <<if $PC.dick == 0>>strap-on<<else>>real dick<</if>> for the first time, and is by this point too exhausted to do anything but lie there and take it a good little slave. @@.gold;$He fears you@@ but @@.hotpink;looses $himself to your rule.@@ + You callously ram a dildo into $his fresh hole and tell $him to keep working $himself with it or suffer another whipping. After $he's fucked $himself for a good while, $he has no trouble taking a <<if $PC.dick == 0>>strap-on<<else>>real dick<</if>> for the first time, and is by this point too exhausted to do anything but lie there and take it a good little slave. @@.gold;$He fears you@@ but @@.hotpink;loses $himself to your rule.@@ <<if $activeSlave.trust < 20>> @@.lime;$His butthole has been broken in.@@ <<set $activeSlave.anus = 1>> @@ -16751,6 +16751,9 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He <<elseif $activeSlave.fetish == "pregnancy">> Being on the bottom for some missionary lovemaking is very much to $his tastes, even though the encounter isn't particularly likely to get $him pregnant. $He builds to orgasm slowly, reveling in the feeling of being your $woman. <</if>> + <<if canFemImpreg($PC, $activeSlave)>> + <<= knockMeUp($PC, 5, 0, $activeSlave.ID)>> + <</if>> As you made love to $him, the gentle motions, feminine sighs, and delicate aroma of pleasure woke the other slaves in bed with you, and they began their own intimacy with each other. As you go back to sleep, you're surrounded with something very like Sapphic paradise. $activeSlave.slaveName nestles up to you once more, embracing you with @@.mediumaquamarine;trust born of love.@@ <<set $activeSlave.trust += 4, $activeSlave.counter.vaginal++, $vaginalTotal++>> <</replace>> @@ -16768,6 +16771,9 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He <</if>> to cup $his pussy possessively. $He finds that @@.hotpink;$he doesn't mind.@@ $He's your $girl. <<set $activeSlave.devotion += 4, $activeSlave.counter.vaginal++, $vaginalTotal++>> + <<if canFemImpreg($PC, $activeSlave)>> + <<= knockMeUp($PC, 5, 0, $activeSlave.ID)>> + <</if>> <</replace>> <</link>> diff --git a/src/uncategorized/REresistantmotherdaughter.tw b/src/uncategorized/REresistantmotherdaughter.tw index f305752906de1c2f397de00e657cf760d1520204..cae57cad2d7501879b15a6f6c01e9ba2f58ed21d 100644 --- a/src/uncategorized/REresistantmotherdaughter.tw +++ b/src/uncategorized/REresistantmotherdaughter.tw @@ -26,13 +26,13 @@ <<set $slaves[$i].clothes = _clothesTemp>> <<set $slaves[$j].clothes = _clothesTemp2>> -$slaves[$i].slaveName and $his _daughter2 are both having trouble getting acclimated to your ownership, with their obedience suffering as a result. Though neither of them have done anything particular egregious lately, their combined list of minor transgressions is reaching a point where rendering punishment on the two would not be seen as unfair. By happenstance they come before you for inspection one after the other. Though they certainly <<if canSee($slaves[$i]) && canSee($slaves[$j])>>see each other naked frequently around<<else>>are frequently naked around each other in<</if>> the penthouse, neither seems particularly comfortable around the other when nudity is involved. While you finish $slaves[$i].slaveName's inspection, $his _daughter2 fidgets uneasily even while trying to mimic the posture and appearance of an obedient slave. It occurs to you that the current situation presents an opportunity to do //something// about this resistant mother _daughter2 pair. +$slaves[$i].slaveName and $his _daughter2 are both having trouble getting acclimated to your ownership, with their obedience suffering as a result. Though neither of them have done anything particular egregious lately, their combined list of minor transgressions is reaching a point where rendering punishment on the two would not be seen as unfair. By happenstance they come before you for inspection one after the other. Though they certainly <<if canSee($slaves[$i]) && canSee($slaves[$j])>>see each other naked frequently around<<else>>are frequently naked around each other in<</if>> the penthouse, neither seems particularly comfortable around the other when nudity is involved. While you finish $slaves[$i].slaveName's inspection, $his _daughter2 fidgets uneasily even while trying to mimic the posture and appearance of an obedient slave. It occurs to you that the current situation presents an opportunity to do //something// about this resistant $mother-_daughter2 pair. <br><br> <span id="result"> <br><<link "Spend the evening gently acclimating them to your ownership">> <<replace "#result">> - Though neither of the two vehemently protests your decision to have them both join you in bed, furtive uneasy glances are exchanged between the two. Since they're already naked, they clamber onto your bed before you and reluctantly kneel facing each other, leaving enough space between them for you<<if canSee($slaves[$i]) && canSee($slaves[$j])>> and for them to avert their eyes to avoid the other's nakedness<</if>>. They clearly assume you would start by using one of them, so they're quite taken aback when you remain standing at the edge of the bed and suggest that $slaves[$i].slaveName play with $his _daughter2. $slaves[$j].slaveName awkwardly flounders a little as _his2 mother's <<if hasBothArms($slaves[$i])>>hands roam<<elseif hasAnyArms($slaves[$i])>>hand roams<</if>> about _his2 body, but does not reel back from the intimate touching. In time you instruct $slaves[$j].slaveName to pleasure _his2 mother, but still decline to join the incestuous union unfolding on your sheets. You extend the foreplay for hours, bringing both mother and _daughter2 to such a state of naked arousal that they begin grinding against each other uninhibitedly. They are both so desperate for release that they do not object when you finally decide to join them, instead eagerly moving to include you in their coupling. What started with $slaves[$j].slaveName awkwardly kneeling unmoving while _his2 mother sucked _his2 nipples ends with $slaves[$j].slaveName <<if hasAllLimbs($slaves[$j])>>on all fours<<else>>bent over<</if>> getting fucked by you while orally pleasuring $slaves[$i].slaveName. You gaze over at $slaves[$i].slaveName and $he moans and licks $his lips enticingly back at you as $slaves[$j].slaveName moans into $his fuckhole. + Though neither of the two vehemently protests your decision to have them both join you in bed, furtive uneasy glances are exchanged between the two. Since they're already naked, they clamber onto your bed before you and reluctantly kneel facing each other, leaving enough space between them for you<<if canSee($slaves[$i]) && canSee($slaves[$j])>> and for them to avert their eyes to avoid the other's nakedness<</if>>. They clearly assume you would start by using one of them, so they're quite taken aback when you remain standing at the edge of the bed and suggest that $slaves[$i].slaveName play with $his _daughter2. $slaves[$j].slaveName awkwardly flounders a little as _his2 $mother's <<if hasBothArms($slaves[$i])>>hands roam<<elseif hasAnyArms($slaves[$i])>>hand roams<</if>> about _his2 body, but does not reel back from the intimate touching. In time you instruct $slaves[$j].slaveName to pleasure _his2 $mother, but still decline to join the incestuous union unfolding on your sheets. You extend the foreplay for hours, bringing both $mother and _daughter2 to such a state of naked arousal that they begin grinding against each other uninhibitedly. They are both so desperate for release that they do not object when you finally decide to join them, instead eagerly moving to include you in their coupling. What started with $slaves[$j].slaveName awkwardly kneeling unmoving while _his2 $mother sucked _his2 nipples ends with $slaves[$j].slaveName <<if hasAllLimbs($slaves[$j])>>on all fours<<else>>bent over<</if>> getting fucked by you while orally pleasuring $slaves[$i].slaveName. You gaze over at $slaves[$i].slaveName and $he moans and licks $his lips enticingly back at you as $slaves[$j].slaveName moans into $his fuckhole. @@.mediumaquamarine;They have both become more trusting of you.@@ <<set $slaves[$i].trust += 4, $slaves[$j].trust += 4, $slaves[$i].counter.oral += 1, $slaves[$j].counter.oral += 1, $oralTotal += 2>> @@ -55,12 +55,12 @@ $slaves[$i].slaveName and $his _daughter2 are both having trouble getting acclim <</replace>> <</link>> -<br><<link "Make an example of the mother">> +<br><<link "Make an example of the $mother">> <<replace "#result">> - You give them orders of devastating simplicity: You are going to assrape $slaves[$i].slaveName and if $his _daughter2 offers even the most token of resistance, you'll punish $slaves[$i].slaveName. They're stunned, but you shake them out of their shock by grabbing $slaves[$i].slaveName by the arm<<if $PC.dick == 0>>,donning a strap-on<</if>> and shoving $him over your desk. $slaves[$j].slaveName flinches visibly as you enter _his2 mother's ass in one brutal stroke, for which you stain _his2 mother's asscheeks a rosy red with a torrent of harsh spanks. $slaves[$i].slaveName takes the rough anal pounding with only quiet sobbing and the occasional whimper of pain, but $his _daughter2 can't bear to <<if canSee($slaves[$j])>>see<<elseif canHear($slaves[$j])>>hear<<else>>have<</if>> $slaves[$i].slaveName in such duress and breaks _his2 short-lived silence to beg for mercy. When you step away from $slaves[$i].slaveName, $slaves[$j].slaveName lets out a sigh of relief, but _his2 expression soon turns to horror and revulsion when you return to mount _his2 mother with a lash in hand. + You give them orders of devastating simplicity: You are going to assrape $slaves[$i].slaveName and if $his _daughter2 offers even the most token of resistance, you'll punish $slaves[$i].slaveName. They're stunned, but you shake them out of their shock by grabbing $slaves[$i].slaveName by the arm<<if $PC.dick == 0>>,donning a strap-on<</if>> and shoving $him over your desk. $slaves[$j].slaveName flinches visibly as you enter _his2 $mother's ass in one brutal stroke, for which you stain _his2 $mother's asscheeks a rosy red with a torrent of harsh spanks. $slaves[$i].slaveName takes the rough anal pounding with only quiet sobbing and the occasional whimper of pain, but $his _daughter2 can't bear to <<if canSee($slaves[$j])>>see<<elseif canHear($slaves[$j])>>hear<<else>>have<</if>> $slaves[$i].slaveName in such duress and breaks _his2 short-lived silence to beg for mercy. When you step away from $slaves[$i].slaveName, $slaves[$j].slaveName lets out a sigh of relief, but _his2 expression soon turns to horror and revulsion when you return to mount _his2 $mother with a lash in hand. <br><br> - When you eventually finish your merciless assrape of $slaves[$i].slaveName, $his body is covered in bruises, marks, and handprints. A testament to $slaves[$j].slaveName's inability to keep _his2 silence as you brutalized _his2 mother. You leave your office wordlessly to attend to other matters, while behind you $slaves[$j].slaveName gazes <<if canSee($slaves[$j])>>forlornly<<else>>blindly<</if>> at the gibbering mess you have reduced _his2 mother to. - Your severe punishment of _his2 mother has encouraged $slaves[$j].slaveName to @@.gold;fear you.@@ $slaves[$i].slaveName has been fucked into @@.hotpink;submission@@ but your savage treatment has caused $him to @@.red;hate buttsex.@@ + When you eventually finish your merciless assrape of $slaves[$i].slaveName, $his body is covered in bruises, marks, and handprints. A testament to $slaves[$j].slaveName's inability to keep _his2 silence as you brutalized _his2 $mother. You leave your office wordlessly to attend to other matters, while behind you $slaves[$j].slaveName gazes <<if canSee($slaves[$j])>>forlornly<<else>>blindly<</if>> at the gibbering mess you have reduced _his2 $mother to. + Your severe punishment of _his2 $mother has encouraged $slaves[$j].slaveName to @@.gold;fear you.@@ $slaves[$i].slaveName has been fucked into @@.hotpink;submission@@ but your savage treatment has caused $him to @@.red;hate buttsex.@@ <<set $slaves[$j].trust -= 10>> <<set $slaves[$i].devotion += 4, $slaves[$i].counter.anal += 1, $analTotal += 1, $slaves[$i].sexualFlaw = "hates anal">> diff --git a/src/uncategorized/buySlaves.tw b/src/uncategorized/buySlaves.tw index ca877f6acc363d06b8bf0f2dda91a78de71f1156..79e38b6e93267fe94115015edfc2bf4591cf4eaf 100644 --- a/src/uncategorized/buySlaves.tw +++ b/src/uncategorized/buySlaves.tw @@ -5,540 +5,610 @@ <<set _minimumFive = $minimumSlaveCost * 5>> <<set _minimumTen = $minimumSlaveCost * 10>> -__Sex Slave Purchase Options__ -<br> -//There are many different organizations to purchase slaves from, but many of them are selective about their customers and will only sell to you if you are reputable.// - - -<br><br> - -__Market status__<br> -<<if ($slaveCostFactor > 1.1)>> - @@.yellow;There is a bull market for slaves; the price of slaves is very high.@@ -<<elseif ($slaveCostFactor > 1)>> - @@.yellow;The slave market is bullish; the price of slaves is high.@@ -<<elseif ($slaveCostFactor < 0.9)>> - @@.yellow;There is a bear market for slaves; the price of slaves is very low.@@ -<<elseif ($slaveCostFactor < 1)>> - @@.yellow;The slave market is bearish; the price of slaves is low.@@ -<<else>> - The slave market is stable; the price of slaves is average. -<</if>> -<br> -Slave demand is -<<if $menialDemandFactor <= -35000>> - @@.red;''extremely low''@@ -<<elseif $menialDemandFactor <= -20000>> - @@.red;''very low''@@ -<<elseif $menialDemandFactor <= 0>> - @@.yellow;''weak''@@ -<<elseif $menialDemandFactor >= 35000>> - @@.green;''extremely high''@@ -<<elseif $menialDemandFactor >= 20000>> - @@.green;''very high''@@ -<<else>> - @@.yellow;''strong''@@ -<</if>> -<<if $deltaDemand > 0>> - and @@.green;''improving''@@ -<<elseif $deltaDemand < 0>> - and @@.red;''decreasing''@@ -<</if>> -<<if $deltaDemand != 0>> - <<if $demandTimer - $elapsedDemandTimer < 3>> - but it might change soon - <</if>> -<</if>> -<<if ($cheatMode) && ($cheatModeM)>> - <span id="menialDemandFactor"> - @@.yellowgreen;Slave Demand@@ - | <<print $menialDemandFactor>> - </span> - <<set _TmenialDemandFactor = $menialDemandFactor>> - <<textbox "_TmenialDemandFactor" _TmenialDemandFactor>> - <<link "Apply">> - <<set $menialDemandFactor = Math.clamp(Math.trunc(Number(_TmenialDemandFactor)),-50000,50000) || $menialDemandFactor, $cheater = 1>> - <<replace "#menialDemandFactor">> - @@.yellowgreen; Slave Demand@@ - | <<print $menialDemandFactor>> - <</replace>> - <</link>> -<</if>> -<br> -Slave supply is -<<if $menialSupplyFactor <= -35000>> - @@.green;''extremely low''@@ -<<elseif $menialSupplyFactor <= -20000>> - @@.green;''very low''@@ -<<elseif $menialSupplyFactor <= 0>> - @@.yellow;''weak''@@ -<<elseif $menialSupplyFactor >= 35000>> - @@.red;''extremely high''@@ -<<elseif $menialSupplyFactor >= 20000>> - @@.red;''very high''@@ -<<else>> - @@.yellow;''strong''@@ -<</if>> -<<if $deltaSupply > 0>> - and @@.red;''improving''@@ -<<elseif $deltaSupply < 0>> - and @@.green;''decreasing''@@ -<</if>> -<<if $deltaSupply != 0>> - <<if $supplyTimer - $elapsedDemandTimer < 3>> - but it might change soon - <</if>> -<</if>> -<<if ($cheatMode) && ($cheatModeM)>> - <span id="menialSupplyFactor"> - @@.yellowgreen;Slave Supply@@ - | <<print $menialSupplyFactor>> - </span> - <<set _TmenialSupplyFactor = $menialSupplyFactor>> - <<textbox "_TmenialSupplyFactor" _TmenialSupplyFactor>> - <<link "Apply">> - <<set $menialSupplyFactor = Math.clamp(Math.trunc(Number(_TmenialSupplyFactor)),-50000,50000) || $menialSupplyFactor, $cheater = 1>> - <<replace "#menialSupplyFactor">> - @@.yellowgreen; Slave Supply@@ - | <<print $menialSupplyFactor>> - <</replace>> - <</link>> -<</if>> - -<br> - -<<if $corpIncorporated != 0>> - <br>[[Corporate Market][$slavesSeen += 1]] | <<if $corpMarket == 1>>//Slaves from your corporation purchased at a discounted rate.//<<else>>//Slaves from your corporation//<</if>> - <<if $cash > _minimumFive>> - [[(x5)|Bulk Slave Generate][$slaveMarket = "corporate", $introType = "bulk", $numSlaves = 5]] | - <</if>> - <<if $cash > _minimumTen>> - [[(x10)|Bulk Slave Generate][$slaveMarket = "corporate", $introType = "bulk", $numSlaves = 10]] | - <</if>> -<</if>> - -<br>[[The Flesh Heap|Slave Markets][$slaveMarket = "heap", $slavesSeen += 1]] | //Broken and discarded slaves. Near useless, but cheap. No longer does bulk orders after complaints.// - -<<if $bodyswapAnnounced == 1>> - <br>[[Order a custom husk slave from the Flesh Heap|Husk Slave]] | //Will need to be used on arrival.// -<</if>> - -<<if ($rep > 500)>> - <br>[[Kidnappers' Market|Slave Markets][$slaveMarket = "kidnappers", $slavesSeen += 1]] | - <<if $cash > _minimumFive>> - [[(x5)|Bulk Slave Generate][$slaveMarket = "kidnappers", $introType = "bulk", $numSlaves = 5]] | - <</if>> - <<if $cash > _minimumTen>> - [[(x10)|Bulk Slave Generate][$slaveMarket = "kidnappers", $introType = "bulk", $numSlaves = 10]] | +<h2>The Market</h2> +<div> + //There are many different organizations to purchase slaves from, but many of them are selective about their customers and will only sell to you if you are reputable.// +</div> + +<h3>Market status</h3> +<div> + <<if ($slaveCostFactor > 1.1)>> + @@.yellow;There is a bull market for slaves; the price of slaves is very high.@@ + <<elseif ($slaveCostFactor > 1)>> + @@.yellow;The slave market is bullish; the price of slaves is high.@@ + <<elseif ($slaveCostFactor < 0.9)>> + @@.yellow;There is a bear market for slaves; the price of slaves is very low.@@ + <<elseif ($slaveCostFactor < 1)>> + @@.yellow;The slave market is bearish; the price of slaves is low.@@ + <<else>> + The slave market is stable; the price of slaves is average. <</if>> - //Slaves will tend to be low quality and resistant.// -<</if>> +</div> -<br>''Neighboring Arcologies:'' //The arcology's prosperity and culture will affect slaves who have lived there.// -<<for _i = 0; _i < $arcologies.length; _i++>> - <<if $arcologies[_i].direction != 0>> - <br> <<print '[[Slaves from|Slave Markets][$slaveMarket = "neighbor", $numArcology = ' + _i + ']]'>> - '' $arcologies[_i].name'' +<h2>Sex Slave Purchase Options</h2> +<div> + <<if $corpIncorporated != 0>> + [[Corporate Market][$slavesSeen += 1]] | <<if $cash > _minimumFive>> - | <<print '[[(x5)|Bulk Slave Generate][$slaveMarket = "neighbor", $introType = "bulk", $numSlaves = 5, $numArcology = '+_i+']]'>> + [[(x5)|Bulk Slave Generate][$slaveMarket = "corporate", $introType = "bulk", $numSlaves = 5]] | <</if>> <<if $cash > _minimumTen>> - | <<print '[[(x10)|Bulk Slave Generate][$slaveMarket = "neighbor", $introType = "bulk", $numSlaves = 10, $numArcology = '+_i+']]'>> + [[(x10)|Bulk Slave Generate][$slaveMarket = "corporate", $introType = "bulk", $numSlaves = 10]] | <</if>> + <<if $corpMarket == 1>>//Slaves from your corporation purchased at a discounted rate.//<<else>>//Slaves from your corporation//<</if>> <</if>> -<</for>> - -<<if ($rep > 1000)>> - <br>[[Runaway Hunters' Market|Slave Markets][$slaveMarket = "hunters", $slavesSeen += 1]] | - <<if $cash > _minimumFive>> - [[(x5)|Bulk Slave Generate][$slaveMarket = "hunters", $introType = "bulk", $numSlaves = 5]] | - <</if>> - <<if $cash > _minimumTen>> - [[(x10)|Bulk Slave Generate][$slaveMarket = "hunters", $introType = "bulk", $numSlaves = 10]] | - <</if>> - //Slaves will tend to be skilled but rebellious.// -<</if>> - -<<if ($rep > 1500)>> - <br>[[Indentures Market|Slave Markets][$slaveMarket = "indentures", $slavesSeen += 1]] | - <<if $cash > _minimumFive>> - [[(x5)|Bulk Slave Generate][$slaveMarket = "indentures", $introType = "bulk", $numSlaves = 5]] | - <</if>> - <<if $cash > _minimumTen>> - [[(x10)|Bulk Slave Generate][$slaveMarket = "indentures", $introType = "bulk", $numSlaves = 10]] | - <</if>> - //Temporary enslavement and restrictions on treatment.// -<</if>> - -<<if ($rep > 2000)>> - <br>[[Raiders' Market|Slave Markets][$slaveMarket = "raiders", $slavesSeen += 1]] | - <<if $cash > _minimumFive>> - [[(x5)|Bulk Slave Generate][$slaveMarket = "raiders", $introType = "bulk", $numSlaves = 5]] | - <</if>> - <<if $cash > _minimumTen>> - [[(x10)|Bulk Slave Generate][$slaveMarket = "raiders", $introType = "bulk", $numSlaves = 10]] | - <</if>> - //Slaves will always be sold immediately upon reaching majority.// -<</if>> +</div> -<<if ($pedo_mode == 1 || ($minimumSlaveAge <= 13 && $minimumSlaveAge <= $fertilityAge)) && ($rep > 3000)>> - <br>[[Raiders' Black Market|Slave Markets][$slaveMarket = "underage raiders", $slavesSeen += 1]] | - <<if $cash > _minimumFive>> - [[(x5)|Bulk Slave Generate][$slaveMarket = "underage raiders", $introType = "bulk", $numSlaves = 5]] | - <</if>> - <<if $cash > _minimumTen>> - [[(x10)|Bulk Slave Generate][$slaveMarket = "underage raiders", $introType = "bulk", $numSlaves = 10]] | - <</if>> - //Very young slaves.// -<</if>> +<div> + [[The Flesh Heap|Slave Markets][$slaveMarket = "heap", $slavesSeen += 1]] | //Broken and discarded slaves. Near useless, but cheap. No longer does bulk orders after complaints.// +</div> -<<if ($rep > 4000)>> - <br>[[Trainers' Market|Slave Markets][$slaveMarket = "trainers", $slavesSeen += 1]] | - <<if $cash > _minimumFive>> - [[(x5)|Bulk Slave Generate][$slaveMarket = "trainers", $introType = "bulk", $numSlaves = 5]] | +<div> + <<if $bodyswapAnnounced == 1>> + [[Order a custom husk slave from the Flesh Heap|Husk Slave]] | //Will need to be used on arrival.// <</if>> - <<if $cash > _minimumTen>> - [[(x10)|Bulk Slave Generate][$slaveMarket = "trainers", $introType = "bulk", $numSlaves = 10]] | - <</if>> - //Slaves will tend to be good quality and obedient.// +</div> - <<if $arcologies[0].FSPaternalist == "unset">> - <br>[[Wetware CPUs|Slave Markets][$slaveMarket = "wetware", $slavesSeen += 1]] | +<div> + <<if ($rep > 500)>> + [[Kidnappers' Market|Slave Markets][$slaveMarket = "kidnappers", $slavesSeen += 1]] | <<if $cash > _minimumFive>> - [[(x5)|Bulk Slave Generate][$slaveMarket = "wetware", $introType = "bulk", $numSlaves = 5]] | + [[(x5)|Bulk Slave Generate][$slaveMarket = "kidnappers", $introType = "bulk", $numSlaves = 5]] | <</if>> <<if $cash > _minimumTen>> - [[(x10)|Bulk Slave Generate][$slaveMarket = "wetware", $introType = "bulk", $numSlaves = 10]] | + [[(x10)|Bulk Slave Generate][$slaveMarket = "kidnappers", $introType = "bulk", $numSlaves = 10]] | <</if>> - //Ruined bodies but keen minds. Requires some TLC, but offers outstanding training at a discount.// - <<else>> - <br>//The paternalistic nature of your society blocks the abusive Wetware CPU manufactures from operating within your arcology.// + //Slaves will tend to be low quality and resistant.// <</if>> -<</if>> +</div> -<<if ($rep > 5000)>> - <<set $weeklyMarket = $prisonCircuit[$prisonCircuitIndex]>> - <br>[[Prisoner Sale|Criminal Market][$slavesSeen += 1]] | - <<if $cash > _minimumFive>> - [[(x5)|Bulk Slave Generate][$slaveMarket = $weeklyMarket, $introType = "bulk", $numSlaves = 5]] | - <</if>> - <<if $cash > _minimumTen>> - [[(x10)|Bulk Slave Generate][$slaveMarket = $weeklyMarket, $introType = "bulk", $numSlaves = 10]] | +<div> + ''Neighboring Arcologies:'' //The arcology's prosperity and culture will affect slaves who have lived there.// +</div> +<<for _i = 0; _i < $arcologies.length; _i++>> + <<if $arcologies[_i].direction != 0>> + <div class="indent"> + <<capture _i>>[[Slaves from|Slave Markets][$slaveMarket = "neighbor", $numArcology = ' + _i + ']]<</capture>> + '' $arcologies[_i].name'' + <<if $cash > _minimumFive>> + | <<capture _i>>[[(x5)|Bulk Slave Generate][$slaveMarket = "neighbor", $introType = "bulk", $numSlaves = 5, $numArcology = '+_i+']]<</capture>> + <</if>> + <<if $cash > _minimumTen>> + | <<capture _i>>[[(x10)|Bulk Slave Generate][$slaveMarket = "neighbor", $introType = "bulk", $numSlaves = 10, $numArcology = '+_i+']]<</capture>> + <</if>> + </div> <</if>> - This week - <<switch $weeklyMarket>> - <<case "low tier criminals">> - a minor prison is selling inmates. - //Slaves will tend to be low to mid quality with few redeeming factors.// - <<case "gangs and smugglers">> - a major prison is selling hardened criminals. - //Slaves will tend to be low quality and difficult but may prove useful once broken.// - <<case "white collar">> - a white collar prison is selling inmates. - //Slaves will tend to be medium to high quality with a variety of useful backgrounds.// - <<case "military prison">> - a military prison is selling inmates. - //Slaves will tend to be high quality but defiant.// - <</switch>> -<</if>> +<</for>> -<<if ($rep > 6000)>> - <br>''Slave Schools:'' //High prices; will be young and healthy.// - <<if ($seeDicks != 100)>> - <br> [[The Slavegirl School][$slavesSeen += 1]] | +<div> + <<if ($rep > 1000)>> + [[Runaway Hunters' Market|Slave Markets][$slaveMarket = "hunters", $slavesSeen += 1]] | <<if $cash > _minimumFive>> - [[(x5)|Bulk Slave Generate][$slaveMarket = "TSS", $introType = "bulk", $numSlaves = 5]] | + [[(x5)|Bulk Slave Generate][$slaveMarket = "hunters", $introType = "bulk", $numSlaves = 5]] | <</if>> <<if $cash > _minimumTen>> - [[(x10)|Bulk Slave Generate][$slaveMarket = "TSS", $introType = "bulk", $numSlaves = 10]] | + [[(x10)|Bulk Slave Generate][$slaveMarket = "hunters", $introType = "bulk", $numSlaves = 10]] | <</if>> - //Straightforward slaves with good training.//<<if $TSS.schoolSale == 1>> //@@.yellow;Offering your first purchase at half price this week.@@//<</if>> + //Slaves will tend to be skilled but rebellious.// + <</if>> +</div> - <br> [[Growth Research Institute][$slavesSeen += 1]] | +<div> + <<if ($rep > 1500)>> + [[Indentures Market|Slave Markets][$slaveMarket = "indentures", $slavesSeen += 1]] | <<if $cash > _minimumFive>> - [[(x5)|Bulk Slave Generate][$slaveMarket = "GRI", $introType = "bulk", $numSlaves = 5]] | + [[(x5)|Bulk Slave Generate][$slaveMarket = "indentures", $introType = "bulk", $numSlaves = 5]] | <</if>> <<if $cash > _minimumTen>> - [[(x10)|Bulk Slave Generate][$slaveMarket = "GRI", $introType = "bulk", $numSlaves = 10]] | + [[(x10)|Bulk Slave Generate][$slaveMarket = "indentures", $introType = "bulk", $numSlaves = 10]] | <</if>> - //Poorly trained slaves with huge assets.//<<if $GRI.schoolSale == 1>> //@@.yellow;Offering your first purchase at half price this week.@@//<</if>> + //Temporary enslavement and restrictions on treatment.// + <</if>> +</div> - <br> [[St. Claver Preparatory][$slavesSeen += 1]] | +<div> + <<if ($rep > 2000)>> + [[Raiders' Market|Slave Markets][$slaveMarket = "raiders", $slavesSeen += 1]] | <<if $cash > _minimumFive>> - [[(x5)|Bulk Slave Generate][$slaveMarket = "SCP", $introType = "bulk", $numSlaves = 5]] | + [[(x5)|Bulk Slave Generate][$slaveMarket = "raiders", $introType = "bulk", $numSlaves = 5]] | <</if>> <<if $cash > _minimumTen>> - [[(x10)|Bulk Slave Generate][$slaveMarket = "SCP", $introType = "bulk", $numSlaves = 10]] | + [[(x10)|Bulk Slave Generate][$slaveMarket = "raiders", $introType = "bulk", $numSlaves = 10]] | <</if>> - //Slaves with basic training and solid implants.//<<if $SCP.schoolSale == 1>> //@@.yellow;Offering your first purchase at half price this week.@@//<</if>> + //Slaves will always be sold immediately upon reaching majority.// + <</if>> +</div> - <br> [[The Cattle Ranch][$slavesSeen += 1]] | +<div> + <<if ($pedo_mode == 1 || ($minimumSlaveAge <= 13 && $minimumSlaveAge <= $fertilityAge)) && ($rep > 3000)>> + [[Raiders' Black Market|Slave Markets][$slaveMarket = "underage raiders", $slavesSeen += 1]] | <<if $cash > _minimumFive>> - [[(x5)|Bulk Slave Generate][$slaveMarket = "TCR", $introType = "bulk", $numSlaves = 5]] | + [[(x5)|Bulk Slave Generate][$slaveMarket = "underage raiders", $introType = "bulk", $numSlaves = 5]] | <</if>> <<if $cash > _minimumTen>> - [[(x10)|Bulk Slave Generate][$slaveMarket = "TCR", $introType = "bulk", $numSlaves = 10]] | + [[(x10)|Bulk Slave Generate][$slaveMarket = "underage raiders", $introType = "bulk", $numSlaves = 10]] | <</if>> - //Mentally conditioned free-range cowgirls.//<<if $TCR.schoolSale == 1>> //@@.yellow;Offering your first purchase at half price this week.@@//<</if>> + //Very young slaves.// + <</if>> +</div> - <br> [[The Hippolyta Academy][$slavesSeen += 1]] | +<<if ($rep > 4000)>> + <div> + [[Trainers' Market|Slave Markets][$slaveMarket = "trainers", $slavesSeen += 1]] | <<if $cash > _minimumFive>> - [[(x5)|Bulk Slave Generate][$slaveMarket = "HA", $introType = "bulk", $numSlaves = 5]] | + [[(x5)|Bulk Slave Generate][$slaveMarket = "trainers", $introType = "bulk", $numSlaves = 5]] | <</if>> <<if $cash > _minimumTen>> - [[(x10)|Bulk Slave Generate][$slaveMarket = "HA", $introType = "bulk", $numSlaves = 10]] | - <</if>> - //High quality slaves of powerful physique and refined skills.//<<if $HA.schoolSale == 1>> //@@.yellow;Offering your first purchase at half price this week.@@//<</if>> - <</if>> - <<if ($seeDicks != 0)>> - <br> [[L'École des Enculées][$slavesSeen += 1]] | - <<if $cash > _minimumFive>> - [[(x5)|Bulk Slave Generate][$slaveMarket = "LDE", $introType = "bulk", $numSlaves = 5]] | + [[(x10)|Bulk Slave Generate][$slaveMarket = "trainers", $introType = "bulk", $numSlaves = 10]] | <</if>> - <<if $cash > _minimumTen>> - [[(x10)|Bulk Slave Generate][$slaveMarket = "LDE", $introType = "bulk", $numSlaves = 10]] | + //Slaves will tend to be good quality and obedient.// + </div> + + <div> + <<if $arcologies[0].FSPaternalist == "unset">> + [[Wetware CPUs|Slave Markets][$slaveMarket = "wetware", $slavesSeen += 1]] | + <<if $cash > _minimumFive>> + [[(x5)|Bulk Slave Generate][$slaveMarket = "wetware", $introType = "bulk", $numSlaves = 5]] | + <</if>> + <<if $cash > _minimumTen>> + [[(x10)|Bulk Slave Generate][$slaveMarket = "wetware", $introType = "bulk", $numSlaves = 10]] | + <</if>> + //Ruined bodies but keen minds. Requires some TLC, but offers outstanding training at a discount.// + <<else>> + //The paternalistic nature of your society blocks the abusive Wetware CPU manufactures from operating within your arcology.// <</if>> - //Slaves optimized and trained for anal.//<<if $LDE.schoolSale == 1>> //@@.yellow;Offering your first purchase at half price this week.@@//<</if>> + </div> +<</if>> - <br> [[The Gymnasium-Academy][$slavesSeen += 1]] | +<div> + <<if ($rep > 5000)>> + <<set $weeklyMarket = $prisonCircuit[$prisonCircuitIndex]>> + [[Prisoner Sale|Criminal Market][$slavesSeen += 1]] | <<if $cash > _minimumFive>> - [[(x5)|Bulk Slave Generate][$slaveMarket = "TGA", $introType = "bulk", $numSlaves = 5]] | + [[(x5)|Bulk Slave Generate][$slaveMarket = $weeklyMarket, $introType = "bulk", $numSlaves = 5]] | <</if>> <<if $cash > _minimumTen>> - [[(x10)|Bulk Slave Generate][$slaveMarket = "TGA", $introType = "bulk", $numSlaves = 10]] | + [[(x10)|Bulk Slave Generate][$slaveMarket = $weeklyMarket, $introType = "bulk", $numSlaves = 10]] | <</if>> - //Well trained slaves with dicks.//<<if $TGA.schoolSale == 1>> //@@.yellow;Offering your first purchase at half price this week.@@//<</if>> + This week + <<switch $weeklyMarket>> + <<case "low tier criminals">> + a minor prison is selling inmates. + //Slaves will tend to be low to mid quality with few redeeming factors.// + <<case "gangs and smugglers">> + a major prison is selling hardened criminals. + //Slaves will tend to be low quality and difficult but may prove useful once broken.// + <<case "white collar">> + a white collar prison is selling inmates. + //Slaves will tend to be medium to high quality with a variety of useful backgrounds.// + <<case "military prison">> + a military prison is selling inmates. + //Slaves will tend to be high quality but defiant.// + <</switch>> + <</if>> +<div> - <br> [[The Futanari Sisters][$slavesSeen += 1]] | +<<if ($rep > 6000)>> + <div> + ''Slave Schools:'' //High prices; will be young and healthy.// + </div> + <<if ($seeDicks != 100)>> + <div class="indent"> + [[The Slavegirl School][$slavesSeen += 1]] | + <<if $cash > _minimumFive>> + [[(x5)|Bulk Slave Generate][$slaveMarket = "TSS", $introType = "bulk", $numSlaves = 5]] | + <</if>> + <<if $cash > _minimumTen>> + [[(x10)|Bulk Slave Generate][$slaveMarket = "TSS", $introType = "bulk", $numSlaves = 10]] | + <</if>> + //Straightforward slaves with good training.//<<if $TSS.schoolSale == 1>> //@@.yellow;Offering your first purchase at half price this week.@@//<</if>> + </div> + + <div class="indent"> + [[Growth Research Institute][$slavesSeen += 1]] | + <<if $cash > _minimumFive>> + [[(x5)|Bulk Slave Generate][$slaveMarket = "GRI", $introType = "bulk", $numSlaves = 5]] | + <</if>> + <<if $cash > _minimumTen>> + [[(x10)|Bulk Slave Generate][$slaveMarket = "GRI", $introType = "bulk", $numSlaves = 10]] | + <</if>> + //Poorly trained slaves with huge assets.//<<if $GRI.schoolSale == 1>> //@@.yellow;Offering your first purchase at half price this week.@@//<</if>> + </div> + + <div class="indent"> + [[St. Claver Preparatory][$slavesSeen += 1]] | + <<if $cash > _minimumFive>> + [[(x5)|Bulk Slave Generate][$slaveMarket = "SCP", $introType = "bulk", $numSlaves = 5]] | + <</if>> + <<if $cash > _minimumTen>> + [[(x10)|Bulk Slave Generate][$slaveMarket = "SCP", $introType = "bulk", $numSlaves = 10]] | + <</if>> + //Slaves with basic training and solid implants.//<<if $SCP.schoolSale == 1>> //@@.yellow;Offering your first purchase at half price this week.@@//<</if>> + </div> + + <div class="indent"> + [[The Cattle Ranch][$slavesSeen += 1]] | + <<if $cash > _minimumFive>> + [[(x5)|Bulk Slave Generate][$slaveMarket = "TCR", $introType = "bulk", $numSlaves = 5]] | + <</if>> + <<if $cash > _minimumTen>> + [[(x10)|Bulk Slave Generate][$slaveMarket = "TCR", $introType = "bulk", $numSlaves = 10]] | + <</if>> + //Mentally conditioned free-range cowgirls.//<<if $TCR.schoolSale == 1>> //@@.yellow;Offering your first purchase at half price this week.@@//<</if>> + </div> + + <div class="indent"> + [[The Hippolyta Academy][$slavesSeen += 1]] | + <<if $cash > _minimumFive>> + [[(x5)|Bulk Slave Generate][$slaveMarket = "HA", $introType = "bulk", $numSlaves = 5]] | + <</if>> + <<if $cash > _minimumTen>> + [[(x10)|Bulk Slave Generate][$slaveMarket = "HA", $introType = "bulk", $numSlaves = 10]] | + <</if>> + //High quality slaves of powerful physique and refined skills.//<<if $HA.schoolSale == 1>> //@@.yellow;Offering your first purchase at half price this week.@@//<</if>> + </div> + <</if>> + <<if ($seeDicks != 0)>> + <div class="indent"> + [[L'École des Enculées][$slavesSeen += 1]] | + <<if $cash > _minimumFive>> + [[(x5)|Bulk Slave Generate][$slaveMarket = "LDE", $introType = "bulk", $numSlaves = 5]] | + <</if>> + <<if $cash > _minimumTen>> + [[(x10)|Bulk Slave Generate][$slaveMarket = "LDE", $introType = "bulk", $numSlaves = 10]] | + <</if>> + //Slaves optimized and trained for anal.//<<if $LDE.schoolSale == 1>> //@@.yellow;Offering your first purchase at half price this week.@@//<</if>> + </div> + + <div class="indent"> + [[The Gymnasium-Academy][$slavesSeen += 1]] | + <<if $cash > _minimumFive>> + [[(x5)|Bulk Slave Generate][$slaveMarket = "TGA", $introType = "bulk", $numSlaves = 5]] | + <</if>> + <<if $cash > _minimumTen>> + [[(x10)|Bulk Slave Generate][$slaveMarket = "TGA", $introType = "bulk", $numSlaves = 10]] | + <</if>> + //Well trained slaves with dicks.//<<if $TGA.schoolSale == 1>> //@@.yellow;Offering your first purchase at half price this week.@@//<</if>> + </div> + + <div class="indent"> + [[The Futanari Sisters][$slavesSeen += 1]] | + <<if $cash > _minimumFive>> + [[(x5)|Bulk Slave Generate][$slaveMarket = "TFS", $introType = "bulk", $numSlaves = 5]] | + <</if>> + <<if $cash > _minimumTen>> + [[(x10)|Bulk Slave Generate][$slaveMarket = "TFS", $introType = "bulk", $numSlaves = 10]] | + <</if>> + //Highly skilled, highly feminine hermaphrodites.//<<if $TFS.schoolSale == 1>> //@@.yellow;Offering your first purchase at half price this week.@@//<</if>> + </div> + <</if>> + <div class="indent"> + [[Nueva Universidad de Libertad][$slavesSeen += 1]] | <<if $cash > _minimumFive>> - [[(x5)|Bulk Slave Generate][$slaveMarket = "TFS", $introType = "bulk", $numSlaves = 5]] | + [[(x5)|Bulk Slave Generate][$slaveMarket = "NUL", $introType = "bulk", $numSlaves = 5]] | <</if>> <<if $cash > _minimumTen>> - [[(x10)|Bulk Slave Generate][$slaveMarket = "TFS", $introType = "bulk", $numSlaves = 10]] | + [[(x10)|Bulk Slave Generate][$slaveMarket = "NUL", $introType = "bulk", $numSlaves = 10]] | <</if>> - //Highly skilled, highly feminine hermaphrodites.//<<if $TFS.schoolSale == 1>> //@@.yellow;Offering your first purchase at half price this week.@@//<</if>> - <</if>> - <br> [[Nueva Universidad de Libertad][$slavesSeen += 1]] | - <<if $cash > _minimumFive>> - [[(x5)|Bulk Slave Generate][$slaveMarket = "NUL", $introType = "bulk", $numSlaves = 5]] | - <</if>> - <<if $cash > _minimumTen>> - [[(x10)|Bulk Slave Generate][$slaveMarket = "NUL", $introType = "bulk", $numSlaves = 10]] | - <</if>> - //Androgynous slaves lacking genitalia.//<<if $NUL.schoolSale == 1>> //@@.yellow;Offering your first purchase at half price this week.@@//<</if>> + //Androgynous slaves lacking genitalia.//<<if $NUL.schoolSale == 1>> //@@.yellow;Offering your first purchase at half price this week.@@//<</if>> + </div> <</if>> -<<if ($arcologies[0].FSDegradationist != "unset")>> - <br>//The Slave Shelter does not place slaves into Degradationist arcologies.// -<<elseif ($shelterAbuse > 10)>> - <br>//The Slave Shelter has banned you due to dark rumors about you.// -<<elseif ($shelterAbuse > 5)>> - <br>//The Slave Shelter has banned you due to rumors that you resell its slaves.// -<<elseif ($shelterSlaveBought == 1)>> - <br>//The Slave Shelter will not offer another slave for placement until next week.// -<<elseif ($rep > 7000)>> - <br>[[Take in a shelter slave|Slave Shelter]] | //Presents charity cases for a nominal fee.// -<</if>> +<div> + <<if ($arcologies[0].FSDegradationist != "unset")>> + //The Slave Shelter does not place slaves into Degradationist arcologies.// + <<elseif ($shelterAbuse > 10)>> + //The Slave Shelter has banned you due to dark rumors about you.// + <<elseif ($shelterAbuse > 5)>> + //The Slave Shelter has banned you due to rumors that you resell its slaves.// + <<elseif ($shelterSlaveBought == 1)>> + >//The Slave Shelter will not offer another slave for placement until next week.// + <<elseif ($rep > 7000)>> + [[Take in a shelter slave|Slave Shelter]] | //Presents charity cases for a nominal fee.// + <</if>> +</div> -<<if ($rep > 8000)>> - <br>[[Consult the household liquidator|Household Liquidator][$slavesSeen += 2]] | //Offers slaves close to one another at a very high price.// -<</if>> +<div> + <<if ($rep > 8000)>> + [[Consult the household liquidator|Household Liquidator][$slavesSeen += 2]] | //Offers slaves close to one another at a very high price.// + <</if>> +</div> <<if ($rep > 1000)>> - <br>[[Place a special order|Custom Slave]] | //Customizable but very expensive.// - <br>[[Place a fulfillment order|JobFulfillmentCenterOrder]] | //Fills leaderships roles for a price.// + <div>[[Place a special order|Custom Slave]] | //Customizable but very expensive.//</div> + <div>[[Place a fulfillment order|JobFulfillmentCenterOrder]] | //Fills leaderships roles for a price.//</div> <</if>> <<if ($rep > 12000)>> - <br>[[Attend an auction of a prestigious slave|Prestigious Slave]] | //Variable and expensive.// + <div>[[Attend an auction of a prestigious slave|Prestigious Slave]] | //Variable and expensive.//</div> <</if>> <<if ($propOutcome == 1)>> - <br>[[Attend an auction of other Elite's stock|Elite Slave]] | //Limited and very expensive.// + <div>[[Attend an auction of other Elite's stock|Elite Slave]] | //Limited and very expensive.//</div> <</if>> <<if ($rep > 14000)>> - <br>[[Acquire other slaveowners' stock|Special Slave]] | //Variable and expensive.// -<</if>> - -<<if ($rep <= 500)>> - <br>//You are not reputable enough to buy kidnapped slaves.// -<<elseif ($rep <= 1000)>> - <br>//You are not reputable enough to buy recaptured slaves.// -<<elseif ($rep <= 1500)>> - <br>//You are not reputable enough to buy indentured servants.// -<<elseif ($rep <= 2000)>> - <br>//You are not reputable enough to buy teenaged slaves.// -<<elseif ($pedo_mode == 1 || ($minimumSlaveAge <= 13 && $minimumSlaveAge <= $fertilityAge)) && ($rep <= 3000)>> - <br>//You are not reputable enough to buy underaged slaves.// -<<elseif ($rep <= 4000)>> - <br>//You are not reputable enough to buy trained slaves.// -<<elseif ($rep <= 5000)>> - <br>//You are not reputable enough to buy prison slaves.// -<<elseif ($rep <= 6000)>> - <br>//You are not reputable enough to acquire fresh school slaves.// -<<elseif ($rep <= 7000)>> - <br>//You are not reputable enough to take in Shelter slaves.// -<<elseif ($rep <= 8000)>> - <br>//You are not reputable enough to consult the household liquidator.// -<<elseif ($rep <= 1000)>> - <br>//You are not reputable enough to order custom slaves.// -<<elseif ($rep <= 12000)>> - <br>//You are not reputable enough to bid on prestigious slaves.// -<<elseif ($rep <= 14000)>> - <br>//You are not reputable enough to acquire other slaveowners' stock.// -<<else>> - <br>You are so reputable that you can access all of the Free Cities' slaving markets. -<</if>> - -<br><br> - -__Menial Slaves__ - -<br> -<<= MenialPopCap()>> -The parts of your arcology you own can house a total of <<= num($PopCap)>> menial slaves. + <div>[[Acquire other slaveowners' stock|Special Slave]] | //Variable and expensive.//</div> +<</if>> + +<div> + <<if ($rep <= 500)>> + //You are not reputable enough to buy kidnapped slaves.// + <<elseif ($rep <= 1000)>> + //You are not reputable enough to buy recaptured slaves.// + <<elseif ($rep <= 1500)>> + //You are not reputable enough to buy indentured servants.// + <<elseif ($rep <= 2000)>> + //You are not reputable enough to buy teenaged slaves.// + <<elseif ($pedo_mode == 1 || ($minimumSlaveAge <= 13 && $minimumSlaveAge <= $fertilityAge)) && ($rep <= 3000)>> + //You are not reputable enough to buy underaged slaves.// + <<elseif ($rep <= 4000)>> + //You are not reputable enough to buy trained slaves.// + <<elseif ($rep <= 5000)>> + //You are not reputable enough to buy prison slaves.// + <<elseif ($rep <= 6000)>> + //You are not reputable enough to acquire fresh school slaves.// + <<elseif ($rep <= 7000)>> + //You are not reputable enough to take in Shelter slaves.// + <<elseif ($rep <= 8000)>> + //You are not reputable enough to consult the household liquidator.// + <<elseif ($rep <= 1000)>> + //You are not reputable enough to order custom slaves.// + <<elseif ($rep <= 12000)>> + //You are not reputable enough to bid on prestigious slaves.// + <<elseif ($rep <= 14000)>> + //You are not reputable enough to acquire other slaveowners' stock.// + <<else>> + You are so reputable that you can access all of the Free Cities' slaving markets. + <</if>> +</div> + + + <h2>Selling slaves</h2> + <div> + While you are at the market, you may want to [[look at your own underperforming slaves|Underperforming Slaves]]. + </div> + +<h2>Menial Slaves</h2> + +<div> + Slave demand is + <<if $menialDemandFactor <= -35000>> + @@.red;''extremely low''@@ + <<elseif $menialDemandFactor <= -20000>> + @@.red;''very low''@@ + <<elseif $menialDemandFactor <= 0>> + @@.yellow;''weak''@@ + <<elseif $menialDemandFactor >= 35000>> + @@.green;''extremely high''@@ + <<elseif $menialDemandFactor >= 20000>> + @@.green;''very high''@@ + <<else>> + @@.yellow;''strong''@@ + <</if>> + <<if $deltaDemand > 0>> + and @@.green;''improving''@@ + <<elseif $deltaDemand < 0>> + and @@.red;''decreasing''@@ + <</if>> + <<if $deltaDemand != 0>> + <<if $demandTimer - $elapsedDemandTimer < 3>> + but it might change soon + <</if>> + <</if>> + <<if ($cheatMode) && ($cheatModeM)>> + <span id="menialDemandFactor"> + @@.yellowgreen;Slave Demand@@ + | <<print $menialDemandFactor>> + </span> + <<set _TmenialDemandFactor = $menialDemandFactor>> + <<textbox "_TmenialDemandFactor" _TmenialDemandFactor>> + <<link "Apply">> + <<set $menialDemandFactor = Math.clamp(Math.trunc(Number(_TmenialDemandFactor)),-50000,50000) || $menialDemandFactor, $cheater = 1>> + <<replace "#menialDemandFactor">> + @@.yellowgreen; Slave Demand@@ + | <<print $menialDemandFactor>> + <</replace>> + <</link>> + <</if>> +</div> + +<div> + Slave supply is + <<if $menialSupplyFactor <= -35000>> + @@.green;''extremely low''@@ + <<elseif $menialSupplyFactor <= -20000>> + @@.green;''very low''@@ + <<elseif $menialSupplyFactor <= 0>> + @@.yellow;''weak''@@ + <<elseif $menialSupplyFactor >= 35000>> + @@.red;''extremely high''@@ + <<elseif $menialSupplyFactor >= 20000>> + @@.red;''very high''@@ + <<else>> + @@.yellow;''strong''@@ + <</if>> + <<if $deltaSupply > 0>> + and @@.red;''improving''@@ + <<elseif $deltaSupply < 0>> + and @@.green;''decreasing''@@ + <</if>> + <<if $deltaSupply != 0>> + <<if $supplyTimer - $elapsedDemandTimer < 3>> + but it might change soon + <</if>> + <</if>> + <<if ($cheatMode) && ($cheatModeM)>> + <span id="menialSupplyFactor"> + @@.yellowgreen;Slave Supply@@ + | <<print $menialSupplyFactor>> + </span> + <<set _TmenialSupplyFactor = $menialSupplyFactor>> + <<textbox "_TmenialSupplyFactor" _TmenialSupplyFactor>> + <<link "Apply">> + <<set $menialSupplyFactor = Math.clamp(Math.trunc(Number(_TmenialSupplyFactor)),-50000,50000) || $menialSupplyFactor, $cheater = 1>> + <<replace "#menialSupplyFactor">> + @@.yellowgreen; Slave Supply@@ + | <<print $menialSupplyFactor>> + <</replace>> + <</link>> + <</if>> +</div> + +<div> + <<= MenialPopCap()>> + The parts of your arcology you own can house a total of <<= num($PopCap)>> menial slaves. +</div> <<set _menialPrice = menialSlaveCost()>> <<set _bulkMax = $PopCap-$menials-$fuckdolls-$menialBioreactors>> -<br> -<<if $menials > 1>> - You own <<print num(Math.trunc($menials))>> menial slaves. -<<elseif $menials > 0>> - You own one menial slave. -<<else>> - You do not own any menial slaves. -<</if>> -The market price of menials is <<print cashFormat(_menialPrice)>>. -<<set _optionsBreak = 0>> -<<if _bulkMax > 0 && $cash > _menialPrice>> - [[Buy|Buy Slaves][$menials+=1,$menialSupplyFactor-=1,cashX(forceNeg(_menialPrice), "menialTransfer")]] - <<if $cash > (menialSlaveCost(10))*10>> - [[(x10)|Buy Slaves][$menials+=10,$menialSupplyFactor-=10,cashX(forceNeg((menialSlaveCost(10))*10), "menialTransfer")]] - <</if>> - <<if $cash > (menialSlaveCost(100))*100>> - [[(x100)|Buy Slaves][$menials+=100,$menialSupplyFactor-=100,cashX(forceNeg((menialSlaveCost(100))*100), "menialTransfer")]] - <</if>> - <<if $cash > (_menialPrice+1)*2>> - <<set _menialBulkPremium = Math.trunc(1 + Math.clamp($cash/_menialPrice,0,_bulkMax)/400)>> - [[(max)|Buy Slaves][$menials+=Math.trunc(Math.clamp($cash/(_menialPrice+_menialBulkPremium),0,_bulkMax)),$menialSupplyFactor-=Math.trunc(Math.clamp($cash/(_menialPrice+_menialBulkPremium),0,_bulkMax)),cashX(forceNeg(Math.trunc(Math.clamp($cash/(_menialPrice+_menialBulkPremium),0,_bulkMax))*(_menialPrice+_menialBulkPremium)), "menialTransfer")]] +<div> + <<if $menials > 1>> + You own <<print num(Math.trunc($menials))>> menial slaves. + <<elseif $menials > 0>> + You own one menial slave. + <<else>> + You do not own any menial slaves. <</if>> - //Bulk transactions may require offering a premium.// - <<set _optionsBreak = 1>> -<</if>> -<<if $menials >= 1>> - <<if _optionsBreak>>|<</if>> - [[Sell|Buy Slaves][$menials-=1,$menialDemandFactor-=1,cashX(_menialPrice, "menialTransfer")]] - <<if $menials >= 10>> - [[(x10)|Buy Slaves][$menials-=10,$menialDemandFactor-=10,cashX(((menialSlaveCost(-10))*10), "menialTransfer")]] - <<if $menials >= 100>> - [[(x100)|Buy Slaves][$menials-=100,$menialDemandFactor-=100,cashX(((menialSlaveCost(-100))*100), "menialTransfer")]] + The market price of menials is <<print cashFormat(_menialPrice)>>. + <<set _optionsBreak = 0>> + <<if _bulkMax > 0 && $cash > _menialPrice>> + [[Buy|Buy Slaves][$menials+=1,$menialSupplyFactor-=1,cashX(forceNeg(_menialPrice), "menialTransfer")]] + <<if $cash > (menialSlaveCost(10))*10>> + [[(x10)|Buy Slaves][$menials+=10,$menialSupplyFactor-=10,cashX(forceNeg((menialSlaveCost(10))*10), "menialTransfer")]] + <</if>> + <<if $cash > (menialSlaveCost(100))*100>> + [[(x100)|Buy Slaves][$menials+=100,$menialSupplyFactor-=100,cashX(forceNeg((menialSlaveCost(100))*100), "menialTransfer")]] <</if>> + <<if $cash > (_menialPrice+1)*2>> + <<set _menialBulkPremium = Math.trunc(1 + Math.clamp($cash/_menialPrice,0,_bulkMax)/400)>> + [[(max)|Buy Slaves][$menials+=Math.trunc(Math.clamp($cash/(_menialPrice+_menialBulkPremium),0,_bulkMax)),$menialSupplyFactor-=Math.trunc(Math.clamp($cash/(_menialPrice+_menialBulkPremium),0,_bulkMax)),cashX(forceNeg(Math.trunc(Math.clamp($cash/(_menialPrice+_menialBulkPremium),0,_bulkMax))*(_menialPrice+_menialBulkPremium)), "menialTransfer")]] + <</if>> + //Bulk transactions may require offering a premium.// + <<set _optionsBreak = 1>> <</if>> - [[(all)|Buy Slaves][cashX(($menials*(menialSlaveCost(-$menials))), "menialTransfer"),$menialDemandFactor-=$menials,$menials = 0]] - <<if $arcologies[0].FSPaternalist == "unset">> - <<if $arcadeUpgradeFuckdolls > 0>> - <<set _fconvertCost = 100>> - <br> [[Convert to Fuckdoll|Buy Slaves][$menials-=1,$fuckdolls+=1,cashX(forceNeg(_fconvertCost), "menialTransfer")]] - <<if $menials >= 10>> - [[(x10)|Buy Slaves][$menials-=10,$fuckdolls+=10,cashX(forceNeg(10*(_fconvertCost)), "menialTransfer")]] - <<if $menials >= 100>> - [[(x100)|Buy Slaves][$menials-=100,$fuckdolls+=100,cashX(forceNeg(100*(_fconvertCost)), "menialTransfer")]] - <</if>> + <<if $menials >= 1>> + <<if _optionsBreak>>|<</if>> + [[Sell|Buy Slaves][$menials-=1,$menialDemandFactor-=1,cashX(_menialPrice, "menialTransfer")]] + <<if $menials >= 10>> + [[(x10)|Buy Slaves][$menials-=10,$menialDemandFactor-=10,cashX(((menialSlaveCost(-10))*10), "menialTransfer")]] + <<if $menials >= 100>> + [[(x100)|Buy Slaves][$menials-=100,$menialDemandFactor-=100,cashX(((menialSlaveCost(-100))*100), "menialTransfer")]] <</if>> - [[(all)|Buy Slaves][$fuckdolls+=$menials,cashX(forceNeg((_fconvertCost)*($menials)), "menialTransfer"),$menials=0]] - //Conversion costs <<print cashFormat(_fconvertCost)>> each// <</if>> - <<if $dairyFeedersUpgrade > 0>> - <br> [[Convert to Bioreactor|Buy Slaves][$menials-=1,$menialBioreactors+=1,cashX(-100, "menialTransfer")]] - <<if $menials >= 10>> - [[(x10)|Buy Slaves][$menials-=10,$menialBioreactors+=10,cashX(-1000, "menialTransfer")]] - <<if $menials >= 100>> - [[(x100)|Buy Slaves][$menials-=100,$menialBioreactors+=100,cashX(-10000, "menialTransfer")]] - <</if>> + [[(all)|Buy Slaves][cashX(($menials*(menialSlaveCost(-$menials))), "menialTransfer"),$menialDemandFactor-=$menials,$menials = 0]] + <<if $arcologies[0].FSPaternalist == "unset">> + <<if $arcadeUpgradeFuckdolls > 0>> + <<set _fconvertCost = 100>> + <div class="indent"> + [[Convert to Fuckdoll|Buy Slaves][$menials-=1,$fuckdolls+=1,cashX(forceNeg(_fconvertCost), "menialTransfer")]] + <<if $menials >= 10>> + [[(x10)|Buy Slaves][$menials-=10,$fuckdolls+=10,cashX(forceNeg(10*(_fconvertCost)), "menialTransfer")]] + <<if $menials >= 100>> + [[(x100)|Buy Slaves][$menials-=100,$fuckdolls+=100,cashX(forceNeg(100*(_fconvertCost)), "menialTransfer")]] + <</if>> + <</if>> + [[(all)|Buy Slaves][$fuckdolls+=$menials,cashX(forceNeg((_fconvertCost)*($menials)), "menialTransfer"),$menials=0]] + //Conversion costs <<print cashFormat(_fconvertCost)>> each// + </div> + <</if>> + <<if $dairyFeedersUpgrade > 0>> + <div class="indent"> + [[Convert to Bioreactor|Buy Slaves][$menials-=1,$menialBioreactors+=1,cashX(-100, "menialTransfer")]] + <<if $menials >= 10>> + [[(x10)|Buy Slaves][$menials-=10,$menialBioreactors+=10,cashX(-1000, "menialTransfer")]] + <<if $menials >= 100>> + [[(x100)|Buy Slaves][$menials-=100,$menialBioreactors+=100,cashX(-10000, "menialTransfer")]] + <</if>> + <</if>> + [[(all)|Buy Slaves][$menialBioreactors+=$menials,cashX(forceNeg(500*$menials), "menialTransfer"),$menials=0]] + //Conversion costs <<print cashFormat(500)>> each// + </div> <</if>> - [[(all)|Buy Slaves][$menialBioreactors+=$menials,cashX(forceNeg(500*$menials), "menialTransfer"),$menials=0]] - //Conversion costs <<print cashFormat(500)>> each// <</if>> <</if>> -<</if>> - -<<if $fuckdolls > 1>> - <br>You own <<print num(Math.trunc($fuckdolls))>> standard Fuckdolls. -<<elseif $fuckdolls > 0>> - <br>You own one standard Fuckdoll. -<<elseif $arcologies[0].FSPaternalist == "unset">> - <br>You do not own any standard Fuckdolls. -<</if>> -<<if ($fuckdolls > 0) || ($arcologies[0].FSPaternalist == "unset")>> - The market price of standard Fuckdolls is <<print cashFormat(_menialPrice)>>. - <<set _optionsBreak = 0>> - <<if _bulkMax > 0>> - <<if $arcologies[0].FSPaternalist == "unset" && $cash > _menialPrice>> - [[Buy|Buy Slaves][$fuckdolls+=1,$menialSupplyFactor-=1,cashX(forceNeg(_menialPrice), "fuckdollsTransfer")]] - <<if $cash > menialSlaveCost(10)*10>> - [[(x10)|Buy Slaves][$fuckdolls+=10,$menialSupplyFactor-=10,cashX(forceNeg(menialSlaveCost(10)*10), "fuckdollsTransfer")]] - <</if>> - <<if $cash > menialSlaveCost(100)*100>> - [[(x100)|Buy Slaves][$fuckdolls+=100,$menialSupplyFactor-=100,cashX(forceNeg(menialSlaveCost(100)*100), "fuckdollsTransfer")]] +</div> + +<div> + <<if $fuckdolls > 1>> + You own <<print num(Math.trunc($fuckdolls))>> standard Fuckdolls. + <<elseif $fuckdolls > 0>> + You own one standard Fuckdoll. + <<elseif $arcologies[0].FSPaternalist == "unset">> + You do not own any standard Fuckdolls. + <</if>> + <<if ($fuckdolls > 0) || ($arcologies[0].FSPaternalist == "unset")>> + The market price of standard Fuckdolls is <<print cashFormat(_menialPrice)>>. + <<set _optionsBreak = 0>> + <<if _bulkMax > 0>> + <<if $arcologies[0].FSPaternalist == "unset" && $cash > _menialPrice>> + [[Buy|Buy Slaves][$fuckdolls+=1,$menialSupplyFactor-=1,cashX(forceNeg(_menialPrice), "fuckdollsTransfer")]] + <<if $cash > menialSlaveCost(10)*10>> + [[(x10)|Buy Slaves][$fuckdolls+=10,$menialSupplyFactor-=10,cashX(forceNeg(menialSlaveCost(10)*10), "fuckdollsTransfer")]] + <</if>> + <<if $cash > menialSlaveCost(100)*100>> + [[(x100)|Buy Slaves][$fuckdolls+=100,$menialSupplyFactor-=100,cashX(forceNeg(menialSlaveCost(100)*100), "fuckdollsTransfer")]] + <</if>> + <<if $cash > ((_menialPrice+1)*2)>> + [[(max)|Buy Slaves][$fuckdolls+=Math.trunc(Math.clamp($cash/_menialPrice,0,_bulkMax)),$menialSupplyFactor-=Math.trunc(Math.clamp($cash/_menialPrice,0,_bulkMax)),cashX(forceNeg(Math.trunc(Math.clamp($cash/_menialPrice,0,_bulkMax))*_menialPrice), "fuckdollsTransfer")]] + <</if>> + //Bulk transactions may require offering a premium.// + <<set _optionsBreak = 1>> <</if>> - <<if $cash > ((_menialPrice+1)*2)>> - [[(max)|Buy Slaves][$fuckdolls+=Math.trunc(Math.clamp($cash/_menialPrice,0,_bulkMax)),$menialSupplyFactor-=Math.trunc(Math.clamp($cash/_menialPrice,0,_bulkMax)),cashX(forceNeg(Math.trunc(Math.clamp($cash/_menialPrice,0,_bulkMax))*_menialPrice), "fuckdollsTransfer")]] + <</if>> + <<if $fuckdolls >= 1>> + <<if _optionsBreak>>|<</if>> + [[Sell|Buy Slaves][$fuckdolls-=1,$menialDemandFactor-=1,cashX(_menialPrice, "fuckdollsTransfer")]] + <<if $fuckdolls >= 10>> + [[(x10)|Buy Slaves][$fuckdolls-=10,$menialDemandFactor-=10,cashX((menialSlaveCost(-10)*10), "fuckdollsTransfer")]] + <<if $fuckdolls >= 100>> + [[(x100)|Buy Slaves][$fuckdolls-=100,$menialDemandFactor-=100,cashX((menialSlaveCost(-100)*100), "fuckdollsTransfer")]] <</if>> - //Bulk transactions may require offering a premium.// - <<set _optionsBreak = 1>> <</if>> - <</if>> - <<if $fuckdolls >= 1>> - <<if _optionsBreak>>|<</if>> - [[Sell|Buy Slaves][$fuckdolls-=1,$menialDemandFactor-=1,cashX(_menialPrice, "fuckdollsTransfer")]] - <<if $fuckdolls >= 10>> - [[(x10)|Buy Slaves][$fuckdolls-=10,$menialDemandFactor-=10,cashX((menialSlaveCost(-10)*10), "fuckdollsTransfer")]] - <<if $fuckdolls >= 100>> - [[(x100)|Buy Slaves][$fuckdolls-=100,$menialDemandFactor-=100,cashX((menialSlaveCost(-100)*100), "fuckdollsTransfer")]] + [[(all)|Buy Slaves][cashX($fuckdolls*(menialSlaveCost(-$fuckdolls), "fuckdollsTransfer")),$menialDemandFactor-=$fuckdolls,$fuckdolls = 0]] <</if>> <</if>> - [[(all)|Buy Slaves][cashX($fuckdolls*(menialSlaveCost(-$fuckdolls), "fuckdollsTransfer")),$menialDemandFactor-=$fuckdolls,$fuckdolls = 0]] - <</if>> -<</if>> - -<<if $menialBioreactors > 1>> - <br>You own <<print num(Math.trunc($menialBioreactors))>> standard bioreactors. -<<elseif $menialBioreactors > 0>> - <br>You own one standard bioreactor. -<<elseif $arcologies[0].FSPaternalist == "unset">> - <br>You do not own any standard bioreactors. -<</if>> -<<if ($menialBioreactors > 0) || ($arcologies[0].FSPaternalist == "unset")>> - The market price of standard bioreactors is <<print cashFormat((_menialPrice-100))>>. - <<set _optionsBreak = 0>> - <<if _bulkMax > 0>> - <<if $arcologies[0].FSPaternalist == "unset" && $cash > _menialPrice+100>> - [[Buy|Buy Slaves][$menialBioreactors+=1,$menialSupplyFactor-=1,cashX(forceNeg(_menialPrice+100), "menialBioreactors")]] - <<if $cash > (menialSlaveCost(10)-100)*10>> - [[(x10)|Buy Slaves][$menialBioreactors+=10,$menialSupplyFactor-=10,cashX(forceNeg((menialSlaveCost(10)-100)*10), "menialBioreactors")]] - <</if>> - <<if $cash > (menialSlaveCost(100)-100)*100>> - [[(x100)|Buy Slaves][$menialBioreactors+=100,$menialSupplyFactor-=100,cashX(forceNeg((menialSlaveCost(100)-100)*100), "menialBioreactors")]] - <</if>> - <<if $cash > (_menialPrice-99)*2>> - <<set _bioreactorBulkPremium = Math.trunc(1+ Math.clamp($cash/(_menialPrice-99),0,_bulkMax)/400)>> - [[(max)|Buy Slaves][$menialBioreactors+=Math.trunc(Math.clamp($cash/(_menialPrice-99+_bioreactorBulkPremium),0,_bulkMax)),$menialSupplyFactor-=Math.trunc(Math.clamp($cash/(_menialPrice-99+_bioreactorBulkPremium),0,_bulkMax)),cashX(forceNeg(Math.trunc(Math.clamp($cash/(_menialPrice-99+_bioreactorBulkPremium),0,_bulkMax))*(_menialPrice-99+_bioreactorBulkPremium)), "menialBioreactors")]] +</div> + +<div> + <<if $menialBioreactors > 1>> + You own <<print num(Math.trunc($menialBioreactors))>> standard bioreactors. + <<elseif $menialBioreactors > 0>> + You own one standard bioreactor. + <<elseif $arcologies[0].FSPaternalist == "unset">> + You do not own any standard bioreactors. + <</if>> + <<if ($menialBioreactors > 0) || ($arcologies[0].FSPaternalist == "unset")>> + The market price of standard bioreactors is <<print cashFormat((_menialPrice-100))>>. + <<set _optionsBreak = 0>> + <<if _bulkMax > 0>> + <<if $arcologies[0].FSPaternalist == "unset" && $cash > _menialPrice+100>> + [[Buy|Buy Slaves][$menialBioreactors+=1,$menialSupplyFactor-=1,cashX(forceNeg(_menialPrice+100), "menialBioreactors")]] + <<if $cash > (menialSlaveCost(10)-100)*10>> + [[(x10)|Buy Slaves][$menialBioreactors+=10,$menialSupplyFactor-=10,cashX(forceNeg((menialSlaveCost(10)-100)*10), "menialBioreactors")]] + <</if>> + <<if $cash > (menialSlaveCost(100)-100)*100>> + [[(x100)|Buy Slaves][$menialBioreactors+=100,$menialSupplyFactor-=100,cashX(forceNeg((menialSlaveCost(100)-100)*100), "menialBioreactors")]] + <</if>> + <<if $cash > (_menialPrice-99)*2>> + <<set _bioreactorBulkPremium = Math.trunc(1+ Math.clamp($cash/(_menialPrice-99),0,_bulkMax)/400)>> + [[(max)|Buy Slaves][$menialBioreactors+=Math.trunc(Math.clamp($cash/(_menialPrice-99+_bioreactorBulkPremium),0,_bulkMax)),$menialSupplyFactor-=Math.trunc(Math.clamp($cash/(_menialPrice-99+_bioreactorBulkPremium),0,_bulkMax)),cashX(forceNeg(Math.trunc(Math.clamp($cash/(_menialPrice-99+_bioreactorBulkPremium),0,_bulkMax))*(_menialPrice-99+_bioreactorBulkPremium)), "menialBioreactors")]] + <</if>> + //Bulk transactions may require offering a premium.// + <<set _optionsBreak = 1>> <</if>> - //Bulk transactions may require offering a premium.// - <<set _optionsBreak = 1>> <</if>> - <</if>> - <<if $menialBioreactors >= 1>> - <<if _optionsBreak>>|<</if>> - [[Sell|Buy Slaves][$menialBioreactors-=1,$menialDemandFactor-=1,cashX((_menialPrice-100), "menialBioreactors")]] - <<if $menialBioreactors >= 10>> - [[(x10)|Buy Slaves][$menialBioreactors-=10,$menialDemandFactor-=10,cashX(((menialSlaveCost(-10)-100)*10), "menialBioreactors")]] - <<if $menialBioreactors >= 100>> - [[(x100)|Buy Slaves][$menialBioreactors-=100,$menialDemandFactor-=100,cashX(((menialSlaveCost(-100)-100)*100), "menialBioreactors")]] + <<if $menialBioreactors >= 1>> + <<if _optionsBreak>>|<</if>> + [[Sell|Buy Slaves][$menialBioreactors-=1,$menialDemandFactor-=1,cashX((_menialPrice-100), "menialBioreactors")]] + <<if $menialBioreactors >= 10>> + [[(x10)|Buy Slaves][$menialBioreactors-=10,$menialDemandFactor-=10,cashX(((menialSlaveCost(-10)-100)*10), "menialBioreactors")]] + <<if $menialBioreactors >= 100>> + [[(x100)|Buy Slaves][$menialBioreactors-=100,$menialDemandFactor-=100,cashX(((menialSlaveCost(-100)-100)*100), "menialBioreactors")]] + <</if>> <</if>> + [[(all)|Buy Slaves][cashX(($menialBioreactors*(menialSlaveCost(-$menialBioreactors)-100)), "menialBioreactors"),$menialDemandFactor-=$menialBioreactors,$menialBioreactors = 0]] <</if>> - [[(all)|Buy Slaves][cashX(($menialBioreactors*(menialSlaveCost(-$menialBioreactors)-100)), "menialBioreactors"),$menialDemandFactor-=$menialBioreactors,$menialBioreactors = 0]] <</if>> -<</if>> \ No newline at end of file +</div> \ No newline at end of file diff --git a/src/uncategorized/clinicReport.tw b/src/uncategorized/clinicReport.tw index 64e837b5a7286bbbb82a8650ba5237a0abee5536..f2ef7fdba68e773759cd767df8c5cf2a11ff6c6c 100644 --- a/src/uncategorized/clinicReport.tw +++ b/src/uncategorized/clinicReport.tw @@ -65,7 +65,7 @@ <</if>> <<if ($Nurse.muscles > 5)>> $He's strong enough to gently but firmly restrain resistant slaves, allowing $him to be sparing with the inescapable but less healthy restraints. - <<set _idleBonus++>> + <<set _idleBonus++, _healthBonus++>> <</if>> <<if ($Nurse.intelligence+$Nurse.intelligenceImplant > 50)>> The diagnostic equipment is state-of-the-art, but $he's smart and perceptive enough that on occasion, $he can add meaningfully to its medical scans. @@ -75,7 +75,7 @@ Patients rarely object to seeing $his gorgeous face hovering over them. <<set _idleBonus++, _devBonus++>> <</if>> - <<if ($Nurse.muscles > 5) || ($slaves[_FLs].devotion >= 60)>> + <<if ($slaves[_FLs].devotion >= 60)>> <<set _healthBonus++>> <</if>> <<for _dI = 0; _dI < _DL; _dI++>> @@ -246,11 +246,26 @@ <<if $slaves[$i].trust < 45>> <<set $slaves[$i].trust += 4>> <</if>> - /* improving condition is not the basic function of the clinic anymore - <<if $slaves[$i].health < 90>> - <<set $slaves[$i].health += 10 + ($curativeUpgrade * 10) + _healthBonus>> + + <<if ($slaves[$i].health.condition < -80)>> + <<run improveCondition($slaves[$i], 20)>> + <<elseif ($slaves[$i].health.condition < -40)>> + <<run improveCondition($slaves[$i], 10)>> + <<elseif ($slaves[$i].health.condition < 0)>> + <<run improveCondition($slaves[$i], 7)>> + <<elseif ($slaves[$i].health.condition < 90)>> + <<run improveCondition($slaves[$i], 3)>> + <</if>> + + /* the clinic is a well-equipped medical facility and can allow the Nurse or player to + * directly cure serious wounds caused by injury and surgery with minimal side effects */ + <<if $slaves[$i].health.shortDamage >= 10>> + <<if ($Nurse != 0)>> + <<run healthCure($slaves[$i], 5 + _healthBonus)>> + <<else>> + <<run healthCure($slaves[$i], $PC.skill.medicine / 15)>> /* maximum of 6...even a bad full-time nurse will be better than a player doctor */ + <</if>> <</if>> - */ <<switch $clinicDecoration>> <<case "Eugenics" "Gender Fundamentalist" "Gender Radicalist" "Hedonistic" "Intellectual Dependency" "Maturity Preferentialist" "Paternalist" "Petite Admiration" "Repopulation Focus" "Slimness Enthusiast" "Statuesque Glorification" "Youth Preferentialist">> @@ -265,10 +280,10 @@ <<if ($clinicSpeedGestation == 1) && ($slaves[$i].pregKnown == 1)>> <<set $slaves[$i].pregControl = "speed up">> <</if>> - <<if ($slaves[$i].chem > 150) && ($clinicUpgradeFilters >= 1)>> + <<if ($slaves[$i].chem > 10) && ($clinicUpgradeFilters >= 1)>> <<if $slaves[$i].health.health > -50 && ($clinicUpgradePurge > 0)>> - <<set $slaves[$i].chem -= 200 * $clinicUpgradePurge>> - <<run healthDamage($slaves[$i], 20)>> + <<set $slaves[$i].chem -= 100 * $clinicUpgradePurge>> + <<run healthDamage($slaves[$i], 15)>> <</if>> <<set $slaves[$i].chem = Math.max($slaves[$i].chem - 5, 0)>> <</if>> @@ -277,6 +292,7 @@ <</if>> <</if>> <<if ($slaves[$i].health.illness > 0)>> + <<elseif ($slaves[$i].health.shortDamage >= 10)>> <<elseif ($Nurse != 0) && ($slaves[$i].chem > 15) && ($clinicUpgradeFilters == 1)>> <<elseif ($Nurse != 0) && ($slaves[$i].pregKnown == 1) && ($clinicSpeedGestation > 0 || $slaves[$i].pregControl == "speed up")>> <<elseif ($Nurse != 0) && ($slaves[$i].pregAdaptation*1000 < $slaves[$i].bellyPreg || $slaves[$i].preg > $slaves[$i].pregData.normalBirth/1.33)>> diff --git a/src/uncategorized/club.tw b/src/uncategorized/club.tw index c5a6c5f3fdbe5347e52bea597c46a1157ad0fe3d..0c02a20107e39a5d657064fc68e87b34d175085f 100644 --- a/src/uncategorized/club.tw +++ b/src/uncategorized/club.tw @@ -153,10 +153,6 @@ $clubNameCaps <</link>> <</if>> -<<if _CL > 0>> - <<removeFacilityWorkers "club" "rest" "serve the public">> -<</if>> - <<if _CL > 2>> <<switch $clubDecoration>> <<case "Chattel Religionist">> @@ -220,6 +216,10 @@ $clubNameCaps <</switch>> <</if>> +<<if _CL > 0>> + <<removeFacilityWorkers "club" "rest" "serve the public">> +<</if>> + <<set _Tmult0 = Math.trunc($club*1000*$upgradeMultiplierArcology)>> <br>There are rooms off $clubName to support slaves as they work as club sluts. They can support $club slaves. There <<if _CL == 1>>is<<else>>are<</if>> currently _CL slave<<if _CL != 1>>s<</if>> serving in $clubName. [[Expand the club|Club][cashX(forceNeg(_Tmult0), "capEx"), $club += 5, $PC.skill.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>> and will increase upkeep costs// diff --git a/src/uncategorized/costsBudget.tw b/src/uncategorized/costsBudget.tw index 90a07edc109863477f8980587a85fc791c74fb8b..60974cf8ddd303f6959aa22aa37b04ebd372e820 100644 --- a/src/uncategorized/costsBudget.tw +++ b/src/uncategorized/costsBudget.tw @@ -241,6 +241,7 @@ for (var i = 0; i < State.variables.lastWeeksCashIncome.length; i++){ ")>> <<print budgetLine("PCtraining", " + Your training expenses <<if ($personalAttention == \"trading\")>> [[Trading trainer|Personal Attention Select][$nextButton = \"Back to Budget\", $nextLink = \"Costs Budget\"]] fees <<elseif ($personalAttention == \"warfare\")>> diff --git a/src/uncategorized/customSlave.tw b/src/uncategorized/customSlave.tw index f73087ac385bf526d9fe756d97166dc4021ff9a7..ee201053cdc6d9cb01276551ff0daca5f554c0b6 100644 --- a/src/uncategorized/customSlave.tw +++ b/src/uncategorized/customSlave.tw @@ -1345,7 +1345,7 @@ Nationality: $customSlave.nationality. <br><br> <<link "Reset custom order form">> - <<set $customSlave = {age: 19, health: 0, muscles: 0, lips: 15, heightMod: "normal", weight: 0, face: 0, race: "white", skin: "left natural", boobs: 500, butt: 3, sex: 1, virgin: 0, dick: 2, balls: 2, clit: 0, labia: 0, vaginaLube: 1, analVirgin: 0, skills: 15, skill: {whore: 15, combat: 0}, intelligence: 0, intelligenceImplant: 0, nationality: "Stateless", arm: {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()}, leg: {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()}, eye: new App.Entity.EyeState(), hears: 0}>> + <<set $customSlave = new App.Entity.CustomSlaveOrder()>> <<goto "Custom Slave">> <</link>> diff --git a/src/uncategorized/endWeek.tw b/src/uncategorized/endWeek.tw index 455133a9e1a457a1ca47f925f5c1772cee3b68af..d2889dcd828c33d74a7470d9cf0d9bb30b3154f8 100644 --- a/src/uncategorized/endWeek.tw +++ b/src/uncategorized/endWeek.tw @@ -141,7 +141,7 @@ <</if>> /% End section: ensure minimum age is set. %/ -<<set $TSS.schoolSale = 0, $GRI.schoolSale = 0, $SCP.schoolSale = 0, $LDE.schoolSale = 0, $TGA.schoolSale = 0, $HA.schoolSale = 0, $TFS.schoolSale = 0, $TCR.schoolSale = 0, $NUL.schoolSale = 0, $independenceDay = 0, $showEncyclopedia = 0, $racialVarieties = [], $shelterGirlsIDs = [], $oldWeek = $week, $cashLastWeek = $cash, $repLastWeek = $rep, $foodLastWeek = $food>> +<<set $TSS.schoolSale = 0, $GRI.schoolSale = 0, $SCP.schoolSale = 0, $LDE.schoolSale = 0, $TGA.schoolSale = 0, $HA.schoolSale = 0, $TFS.schoolSale = 0, $TCR.schoolSale = 0, $NUL.schoolSale = 0, $showEncyclopedia = 0, $racialVarieties = [], $shelterGirlsIDs = [], $cashLastWeek = $cash, $repLastWeek = $rep, $foodLastWeek = $food>> <<if $foodMarket > 0>> <<run $slaves.forEach(function(s) { diff --git a/src/uncategorized/fsDevelopments.tw b/src/uncategorized/fsDevelopments.tw index fab374e7ddd0526ea98c391e8fe39397d38dc644..ac1655b89527724e490521745b775a094202c9b4 100644 --- a/src/uncategorized/fsDevelopments.tw +++ b/src/uncategorized/fsDevelopments.tw @@ -1088,7 +1088,7 @@ <<elseif $arcologies[0].FSTransformationFetishist >= $FSLockinLevel*0.6>> $arcologies[0].name strongly fetishizes implants. <<elseif $arcologies[0].FSTransformationFetishist >= $FSLockinLevel*0.3>> - $arcologies[0].name beginning to fetishize implants. + $arcologies[0].name is beginning to fetishize implants. <<else>> $arcologies[0].name is unconvinced about the attractiveness of implants. <</if>> diff --git a/src/uncategorized/main.tw b/src/uncategorized/main.tw index d95b3d8505a0b18edfceeb76a2f44e30d731535e..192b5bd1ddab8d0a5857ac429d8f10a20e6fc696 100644 --- a/src/uncategorized/main.tw +++ b/src/uncategorized/main.tw @@ -38,6 +38,14 @@ <<link "Hide NaN variables until next week">><<replace #NaNArray>><<set $NaNArray = []>><</replace>><</link>><br> <</if>> </span> +<<if App.Utils.IsCustomSlaveMutated($customSlave)>> + <br><br>@@.red;ERROR: Your custom slave order has taken on a mutated life of its own and has been summarily shot. Refile your custom slave order, if necessary, and notify the appropriate authorities if you see this message again.@@<br><br> + <<set $customSlave = new App.Entity.CustomSlaveOrder()>> +<</if>> +<<if App.Utils.IsCustomSlaveMutated($huskSlave)>> + <br><br>@@.red;ERROR: Your husk slave order has taken on a mutated life of its own and has been summarily shot. Refile your husk slave order, if necessary, and notify the appropriate authorities if you see this message again.@@<br><br> + <<set $huskSlave = new App.Entity.CustomSlaveOrder()>> +<</if>> /* end extra sanity checks and repair */ <<set _duplicateSlaves = _($slaves).countBy(s => s.ID).pickBy(v => v > 1).keys().map(v => Number(v)).value()>> diff --git a/src/uncategorized/neighborInteract.tw b/src/uncategorized/neighborInteract.tw index 8f70bfea2d1bf510c6a2116262d8e6078e4c214a..a96da68807b2a649389996290a7a77e56e45b11a 100644 --- a/src/uncategorized/neighborInteract.tw +++ b/src/uncategorized/neighborInteract.tw @@ -839,7 +839,7 @@ You have <<print $arcologies.length-1>> neighbors. <br><br> <</replace>> <</link>> - with an estimated GSP of @@.yellowgreen;<<print cashFormat(Math.trunc((0.1*$arcologies[_currentNeighbor].prosperity*random(100-$economicUncertainty,100+$economicUncertainty))/100))>>m@@ and is ran by + which has an estimated GSP of @@.yellowgreen;<<print cashFormat(Math.trunc((0.1*$arcologies[_currentNeighbor].prosperity*random(100-$economicUncertainty,100+$economicUncertainty))/100))>>m@@ and is run by <<if $arcologies[_currentNeighbor].government !== "your agent">> $arcologies[_currentNeighbor].government who own $arcologies[_currentNeighbor].ownership%. <<else>> diff --git a/src/uncategorized/nextWeek.tw b/src/uncategorized/nextWeek.tw index a5b2ee808983d15c1be1de18612c5c56b81a28db..a396e5159419226423ea0290dbabeb6da1b7c95a 100644 --- a/src/uncategorized/nextWeek.tw +++ b/src/uncategorized/nextWeek.tw @@ -305,9 +305,7 @@ <</if>> <</if>> -<<if $week == $oldWeek>> - <<set $week += 1>> -<</if>> +<<set $week++>> <<if $playerSurgery > 0>> <<set $playerSurgery-->> diff --git a/src/uncategorized/options.tw b/src/uncategorized/options.tw index 538187b31077e888f3a093dd524c65299f477bff..8d46688a401d5d2be6960145f382a13b72ae17b7 100644 --- a/src/uncategorized/options.tw +++ b/src/uncategorized/options.tw @@ -483,6 +483,18 @@ This save was created using FC version $ver build $releaseID. <<option 0 "True">> <</options>> + <<options $disableTiredness>> + Disables the tiredness mechanic. //Temp option// + <<option 1 "Disabled">> + <<option 0 "Enabled">> + <</options>> + + <<options $disableLongDamage>> + Disables the long term damage mechanic. //Temp option// + <<option 1 "Disabled">> + <<option 0 "Enabled">> + <</options>> + <<options $diversePronouns>> Experimental male pronouns are currently <<option 1 "Enabled">> diff --git a/src/uncategorized/persBusiness.tw b/src/uncategorized/persBusiness.tw index 3d7098c7efddeebf877aef640da75f8626719f1f..5b130b952a51976988e761f63dc08b12f7f1d9cf 100644 --- a/src/uncategorized/persBusiness.tw +++ b/src/uncategorized/persBusiness.tw @@ -27,7 +27,8 @@ <<set $gameover = "debt">><<goto "Gameover">> <</if>> <</if>> -<<elseif $PC.health.shortDamage >= 30>> +<</if>> +<<if $PC.health.shortDamage >= 30>> <<if $PC.health.shortDamage >= 30>> <<run endWeekHealthDamage($PC)>> The injuries received in the recent battle prevents you from engaging in tiring endeavors. diff --git a/src/uncategorized/ptWorkaround.tw b/src/uncategorized/ptWorkaround.tw index 465cadfa838eaae55e4d76faf524536ff9639efc..1265095261a472599e11ddd91e3a3c634e050d14 100644 --- a/src/uncategorized/ptWorkaround.tw +++ b/src/uncategorized/ptWorkaround.tw @@ -21,7 +21,7 @@ <<case "build her devotion">> <<set $activeSlave.devotion += 6>> <<if ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetish == "submissive")>> - Since $activeSlave.slaveName is a submissive, you @@.hotpink;build $his devotion to you@@ by indulging $his need to be dominated. Already smiling to $himself, $he changes into bondage gear that <<if canSee($activeSlave)>>blinds $him<<else>>covers $his face<</if>><<if hasAnyArms($activeSlave)>>, forces $his arm<<if hasBothArms($activeSlave)>>s<</if>> behind $his back<</if>>, <<if $activeSlave.vagina <= 0 && $activeSlave.anus <= 0>>and <</if>>forces $him to present $his breasts uncomfortably<<if $activeSlave.vagina > 0 || $activeSlave.anus > 0>>, and forces a painfully large dildo up $his <<if $activeSlave.vagina > 0>>vagina<<if $activeSlave.anus > 0>> and anus<</if>><<elseif $activeSlave.anus > 0>>anus<</if>>. Thus attired, $he is forced to serve you in whatever petty ways occur to you. $He holds your tablet for you on $his upthrust ass as you work, holds a thin beverage glass for you in $his upturned mouth when you eat, and lies still so you can use $his tits as a pillow whenever you recline. $He loves it. + Since $activeSlave.slaveName is a submissive, you @@.hotpink;build $his devotion to you@@ by indulging $his need to be dominated. Already smiling to $himself, $he changes into bondage gear that <<if canSee($activeSlave)>>blinds $him<<else>>covers $his face<</if>><<if hasAnyArms($activeSlave)>>, forces $his arm<<if hasBothArms($activeSlave)>>s<</if>> behind $his back<</if>>, <<if $activeSlave.vagina <= 0 && $activeSlave.anus <= 0>>and <</if>>forces $him to present $his breasts uncomfortably<<if $activeSlave.vagina > 0 || $activeSlave.anus > 0>>, and forces a painfully large dildo up $his <<if $activeSlave.vagina > 0>>vagina<<if $activeSlave.anus > 0>> and anus<</if>><<elseif $activeSlave.anus > 0>>anus<</if>><</if>>. Thus attired, $he is forced to serve you in whatever petty ways occur to you. $He holds your tablet for you on $his upthrust ass as you work, holds a thin beverage glass for you in $his upturned mouth when you eat, and lies still so you can use $his tits as a pillow whenever you recline. $He loves it. <<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetish == "cumslut") && ($PC.dick != 0)>> Since $activeSlave.slaveName has an unusual taste for oral sex and cum, you @@.hotpink;build $his devotion to you@@ by indulging $him. You allow $him to spend $his free time following you around. $He is permitted to act as your private cum receptacle. If you use another slave, you usually pull out and give $his smiling face a facial. When you come inside another slave instead, $activeSlave.slaveName is allowed to get your cum anyway, regardless of whether that requires the other slave to spit it into $his mouth or $activeSlave.slaveName to suck it out of the other slave's vagina or rectum. Either way, $he rubs $his stomach happily after $he's swallowed it down. <<set $activeSlave.counter.oral += 20, $oralTotal += 20>> diff --git a/src/uncategorized/reDevotedMotherDaughter.tw b/src/uncategorized/reDevotedMotherDaughter.tw index 7b53e1ba409ebe9896114e185ac76b225a40dcc8..d06df4e1e72e6db6b4ba85df1154173a3d00116a 100644 --- a/src/uncategorized/reDevotedMotherDaughter.tw +++ b/src/uncategorized/reDevotedMotherDaughter.tw @@ -4,6 +4,8 @@ <<set $i = $slaveIndices[$devMother]>> <<set $j = $slaveIndices[$devDaughter]>> +<<setLocalPronouns $slaves[$i]>> +<<setLocalPronouns $slaves[$j] 2>> <<set _clothesTemp = $slaves[$i].clothes, $slaves[$i].clothes = "no clothing">> <<set _clothesTemp2 = $slaves[$j].clothes, $slaves[$j].clothes = "no clothing">> @@ -23,8 +25,6 @@ </span> <<set $slaves[$i].clothes = _clothesTemp>> <<set $slaves[$j].clothes = _clothesTemp2>> -<<setLocalPronouns $slaves[$i]>> -<<setLocalPronouns $slaves[$j] 2>> $slaves[$i].slaveName and $his _daughter2 $slaves[$j].slaveName are both good slaves, devoted and obedient. They'd probably do anything you order them to do. By happenstance they come before you for inspection one after the other. They certainly see each other stark naked frequently enough. As you finish $slaves[$i].slaveName's inspection, $his _daughter2 waits patiently for _his2 turn. It occurs to you that they probably would do //anything// you order them to do, and that they're so acclimated to sexual slavery that they might well enjoy it. @@ -33,7 +33,7 @@ $slaves[$i].slaveName and $his _daughter2 $slaves[$j].slaveName are both good sl <span id="result"> <br><<link "Spend the night sharing your bed with them, and each of them with the other">> <<replace "#result">> - Neither of them bat an eye when you announce you're turning in early and that they'll be joining you. Since they're already naked, they get into your big soft bed before you and lie facing each other, with enough room in between them for you to take a central position. They clearly assume you'll start with one of them on each side of you, so they're quite surprised when you slide in behind $slaves[$i].slaveName instead. $slaves[$j].slaveName snuggles up to _his2 mother happily enough, however. You extend the foreplay for hours, eventually bringing both of them to such a state of naked arousal that they begin grinding against each other as much as they do you. They get the idea, and things turn into a sort of unspoken mutual one-upmanship between them. What starts with $slaves[$j].slaveName clearly feeling very daring as _he2 sucks _his2 mother's nipple ends with $slaves[$i].slaveName lying on $his back getting fucked by you while $he orally pleasures $slaves[$j].slaveName. You're face to face with $slaves[$j].slaveName and _he2 groans happily into your mouth as $slaves[$i].slaveName moans into _his2 fuckhole. + Neither of them bat an eye when you announce you're turning in early and that they'll be joining you. Since they're already naked, they get into your big soft bed before you and lie facing each other, with enough room in between them for you to take a central position. They clearly assume you'll start with one of them on each side of you, so they're quite surprised when you slide in behind $slaves[$i].slaveName instead. $slaves[$j].slaveName snuggles up to _his2 $mother happily enough, however. You extend the foreplay for hours, eventually bringing both of them to such a state of naked arousal that they begin grinding against each other as much as they do you. They get the idea, and things turn into a sort of unspoken mutual one-upmanship between them. What starts with $slaves[$j].slaveName clearly feeling very daring as _he2 sucks _his2 $mother's nipple ends with $slaves[$i].slaveName lying on $his back getting fucked by you while $he orally pleasures $slaves[$j].slaveName. You're face to face with $slaves[$j].slaveName and _he2 groans happily into your mouth as $slaves[$i].slaveName moans into _his2 fuckhole. @@.mediumaquamarine;They have both become more trusting of you.@@ <<set $slaves[$i].trust += 4, $slaves[$j].trust += 4, $slaves[$i].counter.oral += 1, $slaves[$j].counter.oral += 1, $oralTotal += 2>> diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw index 45567a6a57e423db536e3b641b3681ea4f24069f..3a26be609097004d1b58c1bdc7cd762a3dc6278e 100644 --- a/src/uncategorized/remoteSurgery.tw +++ b/src/uncategorized/remoteSurgery.tw @@ -349,31 +349,30 @@ <<elseif $activeSlave.horn != "none">> <<if $activeSlave.horn != "one long oni horn">> [[Remove them|Surgery Degradation][surgeryAmp($activeSlave, "horn"), $surgeryType = "hornGone", cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]] + <<elseif $activeSlave.horn == "none">> + Give $him: + <<if $activeSlave.horn != "curved succubus horns">> + [[Succubus horns|Surgery Degradation][$activeSlave.horn = "curved succubus horns", $activeSlave.hornColor = "jet black", cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,10), $surgeryType = "horn"]] + <</if>> + <<if $activeSlave.horn != "backswept horns">> + | [[Backswept horns|Surgery Degradation][$activeSlave.horn = "backswept horns", $activeSlave.hornColor = "jet black", cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,10), $surgeryType = "horn"]] + <</if>> + <<if $activeSlave.horn != "cow horns">> + | [[Bovine horns|Surgery Degradation][$activeSlave.horn = "cow horns", $activeSlave.hornColor = "ivory", cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,10), $surgeryType = "horn"]] + <</if>> + <<if $activeSlave.horn != "one long oni horn">> + | [[One oni horn|Surgery Degradation][$activeSlave.horn = "one long oni horn", $activeSlave.hornColor = $activeSlave.skin, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,10), $surgeryType = "horn"]] + <</if>> + <<if $activeSlave.horn != "two long oni horns">> + | [[Two oni horns|Surgery Degradation][$activeSlave.horn = "two long oni horns", $activeSlave.hornColor = $activeSlave.skin, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,10), $surgeryType = "horn"]] + <</if>> + <<if $activeSlave.horn != "small horns">> + | [[Small horns|Surgery Degradation][$activeSlave.horn = "small horns", $activeSlave.hornColor = "ivory", cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,10), $surgeryType = "horn"]] + <</if>> <<else>> [[Remove it|Surgery Degradation][surgeryAmp($activeSlave, "horn"), $surgeryType = "hornGone", cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]] <</if>> <</if>> - <<if $activeSlave.horn == "none">> - Give $him: - <<if $activeSlave.horn != "curved succubus horns">> - [[Succubus horns|Surgery Degradation][$activeSlave.horn = "curved succubus horns", $activeSlave.hornColor = "jet black", cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,10), $surgeryType = "horn"]] - <</if>> - <<if $activeSlave.horn != "backswept horns">> - | [[Backswept horns|Surgery Degradation][$activeSlave.horn = "backswept horns", $activeSlave.hornColor = "jet black", cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,10), $surgeryType = "horn"]] - <</if>> - <<if $activeSlave.horn != "cow horns">> - | [[Bovine horns|Surgery Degradation][$activeSlave.horn = "cow horns", $activeSlave.hornColor = "ivory", cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,10), $surgeryType = "horn"]] - <</if>> - <<if $activeSlave.horn != "one long oni horn">> - | [[One oni horn|Surgery Degradation][$activeSlave.horn = "one long oni horn", $activeSlave.hornColor = $activeSlave.skin, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,10), $surgeryType = "horn"]] - <</if>> - <<if $activeSlave.horn != "two long oni horns">> - | [[Two oni horns|Surgery Degradation][$activeSlave.horn = "two long oni horns", $activeSlave.hornColor = $activeSlave.skin, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,10), $surgeryType = "horn"]] - <</if>> - <<if $activeSlave.horn != "small horns">> - | [[Small horns|Surgery Degradation][$activeSlave.horn = "small horns", $activeSlave.hornColor = "ivory", cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,10), $surgeryType = "horn"]] - <</if>> - <</if>> </div> /*Lips*/ @@ -1741,6 +1740,9 @@ <<elseif $geneticFlawLibrary == 1>> [[Induced albinism treatment|Surgery Degradation][$activeSlave.geneticQuirks.albinism = 2,cashX(forceNeg($surgeryCost*10), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,40), $activeSlave.chem += 40,$surgeryType = "gene treatment"]] //This will induce @@.orange;albinism@@ in $his genetic code// <</if>> + </div> + + <div class="indent"> <<if $activeSlave.geneticQuirks.androgyny == 2>> [[Androgyny correction treatment|Surgery Degradation][$activeSlave.geneticQuirks.androgyny = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,40), $activeSlave.chem += 100,$surgeryType = "gene treatment"]] <<elseif $activeSlave.geneticQuirks.androgyny == 1 && $geneticMappingUpgrade >= 2>> diff --git a/src/uncategorized/saDrugs.tw b/src/uncategorized/saDrugs.tw index 5b5006625b12047b44f39d86dbf0906cf192201e..f7e0f5a8b9a0d339d733d5bd3b9edf8c9a17bb2e 100644 --- a/src/uncategorized/saDrugs.tw +++ b/src/uncategorized/saDrugs.tw @@ -1321,7 +1321,7 @@ <<run healthDamage($slaves[$i], jsRandom(3, 5))>> <</if>> -<<if $slaves[$i].curatives < 2 && $slaves[$i].inflationType != "curative" && ($slaves[$i].assignment != "rest in the spa" || $slaves[$i].assignment != "rest")>> +<<if $slaves[$i].curatives < 2 && $slaves[$i].inflationType != "curative" && ($slaves[$i].assignment != "rest in the spa" && $slaves[$i].assignment != "rest" && $slaves[$i].assignment != "get treatment in the clinic")>> <<if $slaves[$i].health.condition < -50>> It's difficult being so in such poor condition, and $he @@.mediumorchid;resents you@@ for ignoring $his plight. <<set $slaves[$i].devotion -= 2>> @@ -1335,7 +1335,7 @@ <</if>> <</if>> -<<if $slaves[$i].health.tired > 80 && ($slaves[$i].assignment != "rest in the spa" || $slaves[$i].assignment != "rest")>> +<<if $slaves[$i].health.tired > 90 && ($slaves[$i].assignment != "rest in the spa" && $slaves[$i].assignment != "rest" && $slaves[$i].assignment != "get treatment in the clinic")>> $He has been worked to the bone <<if $slaves[$i].devotion < 20>> and @@.hotpink;bends a little more to your will,@@ while @@.gold;fearing she'll never earn a reprieve@@ from toiling. @@ -1346,7 +1346,7 @@ <<else>> but $he carries on without reservations. <</if>> -<<elseif $slaves[$i].health.tired > 50 && ($slaves[$i].assignment != "rest in the spa" || $slaves[$i].assignment != "rest")>> +<<elseif $slaves[$i].health.tired > 60 && ($slaves[$i].assignment != "rest in the spa" && $slaves[$i].assignment != "rest" && $slaves[$i].assignment != "get treatment in the clinic")>> $He is suffering from exhaustion <<if $slaves[$i].devotion < 20>> and it is @@.hotpink;wearing away at her resistance.@@ @@ -1356,7 +1356,7 @@ <</if>> <</if>> -<<if $slaves[$i].health.illness > 1 && ($slaves[$i].assignment != "get treatment in the clinic" || $slaves[$i].assignment != "rest")>> +<<if $slaves[$i].health.illness > 1 && ($slaves[$i].assignment != "rest in the spa" && $slaves[$i].assignment != "rest" && $slaves[$i].assignment != "get treatment in the clinic")>> $He is<<if $slaves[$i].health.illness > 4>> deathly<<elseif $slaves[$i].health.illness > 3>> seriously<</if>> ill <<if $slaves[$i].devotion < 20>> and @@.mediumorchid;hates@@ having $his health issues @@.gold;ignored.@@ diff --git a/src/uncategorized/schoolroomReport.tw b/src/uncategorized/schoolroomReport.tw index ff631199a2e16ff3cfa22317516e213614313dcc..0852e9b68eb892dceee96914b29dd8cccc52bc45 100644 --- a/src/uncategorized/schoolroomReport.tw +++ b/src/uncategorized/schoolroomReport.tw @@ -13,13 +13,13 @@ <<set _FLs = $slaveIndices[$Schoolteacher.ID]>> <<if ($slaves[_FLs].health.condition < -80)>> - <<run improveCondition($slaves[$i], 20)>> + <<run improveCondition($slaves[_FLs], 20)>> <<elseif ($slaves[_FLs].health.condition < -40)>> - <<run improveCondition($slaves[$i], 15)>> + <<run improveCondition($slaves[_FLs], 15)>> <<elseif ($slaves[_FLs].health.condition < 0)>> - <<run improveCondition($slaves[$i], 10)>> + <<run improveCondition($slaves[_FLs], 10)>> <<elseif ($slaves[_FLs].health.condition < 90)>> - <<run improveCondition($slaves[$i], 7)>> + <<run improveCondition($slaves[_FLs], 7)>> <</if>> <<if ($slaves[_FLs].devotion <= 60)>> <<set $slaves[_FLs].devotion++>> diff --git a/src/uncategorized/slaveAssignmentsReport.tw b/src/uncategorized/slaveAssignmentsReport.tw index 5d0a815b0536df2af970cc939e7d582c63be2f75..b030ad63aa5f1f06cd64aacaa903205ce65c9b45 100644 --- a/src/uncategorized/slaveAssignmentsReport.tw +++ b/src/uncategorized/slaveAssignmentsReport.tw @@ -14,7 +14,7 @@ /** silent pass for any reassignments before generating reports as well as getting tired and illness calculations out of the way */ <<for $i = 0; $i < _SL; $i++>> - <<run tired($slaves[$i], illness($slaves[$i]))>> + <<run tired($slaves[$i]), illness($slaves[$i])>> <<if $slaves[$i].choosesOwnAssignment == 1>> <<silently>> <<include "SA chooses own job">> diff --git a/src/uncategorized/spaReport.tw b/src/uncategorized/spaReport.tw index c2aca66026bc2024445078eb7a35e46bfc360b26..795fe70a1ef1bbf4ba59df7abfe06d2fb9bd892a 100644 --- a/src/uncategorized/spaReport.tw +++ b/src/uncategorized/spaReport.tw @@ -261,7 +261,17 @@ <<set $i = $slaveIndices[$SpaiIDs[_dI]]>> <<setLocalPronouns $slaves[$i]>> <<set $slaves[$i].devotion += _devBonus, $slaves[$i].trust += _trustBonus>> - <<run improveCondition($slaves[$i], _healthBonus)>> + <<run improveCondition($slaves[$i], 5 + _healthBonus)>> + <<if ($slaves[$i].health.condition < -80)>> + <<run improveCondition($slaves[$i], 15)>> + <<elseif $slaves[$i].health.condition < -40>> + <<run improveCondition($slaves[$i], 10)>> + <<elseif $slaves[$i].health.condition < 0>> + <<run improveCondition($slaves[$i], 5)>> + <</if>> + <<if ($spaUpgrade == 1) && ($slaves[$i].health.condition < 100)>> + <<run improveCondition($slaves[$i], normalRandInt(8))>> + <</if>> <<if ($slaves[$i].devotion < 60) && ($slaves[$i].trust < 60)>> <<set $slaves[$i].devotion++, $slaves[$i].trust++>> <<elseif ($slaves[$i].trust < 40)>> @@ -269,9 +279,6 @@ <<elseif ($slaves[$i].devotion < 40)>> <<set $slaves[$i].devotion += 10>> <</if>> - <<if ($spaUpgrade == 1) && ($slaves[$i].health.condition < 100)>> - <<run improveCondition($slaves[$i], normalRandInt(10))>> - <</if>> <<switch $spaDecoration>> <<case "Chattel Religionist" "Chinese Revivalist">> <<set $slaves[$i].rules.living = "normal">> diff --git a/src/uncategorized/storyCaption.tw b/src/uncategorized/storyCaption.tw index b34a7921d9c2fe36751e513574addc231ccb5e9b..e69e7e1890eca3e48de8d1736b732f9fdb1519e7 100644 --- a/src/uncategorized/storyCaption.tw +++ b/src/uncategorized/storyCaption.tw @@ -5,7 +5,6 @@ /* Must use link so spacebar shortcut will work. */ /* Don't remove these spans, it will break things. */ <<if _Pass != "End Week">> - <br> <<if _Pass == "Main">> <strong> <span id="endWeekButton"> <div><<link "$nextButton">> <<goto $nextLink>> <</link>> @@.cyan;[Ent]@@</div> @@ -20,8 +19,6 @@ <</if>> </span> </strong> <</if>> - <<else>> - <br><br> <</if>> <</widget>> @@ -60,69 +57,41 @@ <</if>> <</widget>> -<<if $ui != "start" || _Pass === "Encyclopedia">> - <<if _Pass != "Encyclopedia">> - <<if $cheatMode || $debugMode>> - <div>_Pass</div> - <</if>> - <div> - <span id="week">''Week $week''</span> - <<if $week > 52>> (<<= years($week)>>) <</if>> - </div> - <div> - Week of <<= asDateString($week) >> - </div> - <<if (_Pass == "Main") && ($cheatMode) && ($cheatModeM)>> - <<set _TWeek = $week>> - <<textbox "$week" $week>> - <<link "Apply">> - <<set $week = Math.trunc(Number($week) || _TWeek)>> - <<if $week < 1>><<set $week = 1>><</if>> - <<replace "#week">>''Week $week''<</replace>> - <</link>> - <</if>> - <div> - <<if $weatherToday.severity == 1>> - <i>@@.cyan; $weatherToday.name@@</i> - <<elseif $weatherToday.severity == 2>> - <i>@@.yellow; $weatherToday.name@@</i> - <<elseif $weatherToday.severity == 3>> - <i>@@.orange; $weatherToday.name@@</i> - <<else>> - <i>@@.red; $weatherToday.name@@</i> - <</if>> - </div> - <</if>> - <<userButton>> -<</if>> - -<<if _Pass == "Encyclopedia">> <br> - /* Intro, new players, PC/Gameplay focused */ - [[Playing Free Cities|Encyclopedia][$encyclopedia = "Playing Free Cities"]] - <br>[[Design your master|Encyclopedia][$encyclopedia = "Design Your Master"]] - <br>[[Being in charge|Encyclopedia][$encyclopedia = "Being in charge"]] - /* Section for slaves */ - <br>[[Slaves|Encyclopedia][$encyclopedia = "Slaves"]] - <br>[[Obtaining Slaves|Encyclopedia][$encyclopedia = "Obtaining Slaves"]] - <br>[[Slave Assignments|Encyclopedia][$encyclopedia = "Slave Assignments"]] - <br>[[Slave Body|Encyclopedia][$encyclopedia = "Body"]] / [[Skills|Encyclopedia][$encyclopedia = "Skills"]] - <br>[[Slave Fetishes|Encyclopedia][$encyclopedia = "Fetishes"]] / [[Quirks|Encyclopedia][$encyclopedia = "Quirks"]] / [[Flaws|Encyclopedia][$encyclopedia = "Flaws"]] - <br>[[Slave Relationships|Encyclopedia][$encyclopedia = "Relationships"]] - /* Section for arcology and Lore */ - <br>[[The X-Series Arcology|Encyclopedia][$encyclopedia = "What the Upgrades Do"]] - <br>[[Arcology Facilities|Encyclopedia][$encyclopedia = "Facilities"]] - <br>[[Terrain Types|Encyclopedia][$encyclopedia = "Terrain Types"]] - <br>[[Future Societies|Encyclopedia][$encyclopedia = "Future Societies"]] - <br>[[Lore|Encyclopedia][$encyclopedia = "Lore"]] - /* Mods and extras */ - <br>[[Game Mods|Encyclopedia][$encyclopedia = "Game Mods"]] - <br>[[Credits|Encyclopedia][$encyclopedia = "Credits"]] -<<elseif _Pass == "Starting Girls">> - <span id="cost"><<SlaveCostDescription>></span> <br><br> -<</if>> +<<if $ui != "start" || _Pass == "Encyclopedia">> <<userButton>> <br> <</if>> <<if $ui != "start" && _Pass != "Encyclopedia">> - <<if $sideBarOptions.Cash > 0>> + <<if $cheatMode || $debugMode>> + <div>_Pass</div> + <</if>> + <div> + <span id="week">''Week $week''</span> + <<if $week > 52>> (<<= years($week)>>) <</if>> + </div> + <div> + Week of <<= asDateString($week) >> + </div> + <<if (_Pass == "Main") && ($cheatMode) && ($cheatModeM)>> + <<set _TWeek = $week>> + <<textbox "$week" $week>> + <<link "Apply">> + <<set $week = Math.trunc(Number($week) || _TWeek)>> + <<if $week < 1>><<set $week = 1>><</if>> + <<replace "#week">>''Week $week''<</replace>> + <</link>> + <</if>> + <div> + <<if $weatherToday.severity == 1>> + <i>@@.cyan; $weatherToday.name@@</i> + <<elseif $weatherToday.severity == 2>> + <i>@@.yellow; $weatherToday.name@@</i> + <<elseif $weatherToday.severity == 3>> + <i>@@.orange; $weatherToday.name@@</i> + <<else>> + <i>@@.red; $weatherToday.name@@</i> + <</if>> + </div> + + <<if $sideBarOptions.Cash > 0>> <<set $cash = Math.trunc($cash)>> <span id="cash"> <<if $cash > 0>> @@ -276,11 +245,9 @@ <<if $sideBarOptions.Rep > 0>> <div> - <<if _Pass === "Main">> - [[Rep|Rep Budget]] | - <<else>> - @@.green;Rep@@ | - <</if>> + <<if _Pass === "Main">> [[Rep|Rep Budget]] | + <<else>> @@.green;Rep@@ | + <</if>> <span id="rep"> <<if $rep > 19000>> @@color:rgb(0,145,0);worshipped@@ @@ -720,8 +687,7 @@ <</if>> <br> <</if>> - - <</if>> + <</if>> /* closes _Pass === "Main" && $newModelUI === 0 */ <<if $sideBarOptions.compact === 0 && _Pass === "Main" || $sideBarOptions.compact === 1 && _Pass === "Manage Arcology">> <span id="policyButton"> <br> @@ -796,35 +762,57 @@ <<if _Pass != "Description Options">> [[Description Options]] <</if>> <</if>> + <<if $debugMode > 0>> + <br><br>Debugging Tools<br> <<link "Display Variables">><<checkvars>><</link>> + <br> <<link "Display Changed Variables">> + <<set Config.history.maxStates = 2>> /* makes sure we store the current state so we can return to it */ + <<goto "Variable Difference">> + <</link>> + + <br> <<link "Bug Report">><<bugreport>><</link>> + <<if $debugModeCustomFunction > 0>> + <br> <<textarea "_customEvalCode" "">> + <<link "Run Custom Function">> + <<if _customEvalCode>> + <<if _customEvalCode.charAt(0) != "(" || $nextLink == ")">> /* second condition is only there for sanityCheck */ + <<set _customEvalCode = "(" + _customEvalCode + ")">> + <</if>> + <<if typeof eval(_customEvalCode) === "function">> + <<run (eval(_customEvalCode))()>> + <</if>> + <</if>> + <<goto _Pass>> + <</link>> + <</if>> + <br> <<link "Dump Game State">><<run App.Debug.dumpGameState()>><</link>> + <</if>> <</if>> /* Closes nextButton != "Continue" && nextButton != " " */ + <br> +<<elseif _Pass == "Encyclopedia">> + /* Intro, new players, PC/Gameplay focused */ + [[Playing Free Cities|Encyclopedia][$encyclopedia = "Playing Free Cities"]] + <br>[[Design your master|Encyclopedia][$encyclopedia = "Design Your Master"]] + <br>[[Being in charge|Encyclopedia][$encyclopedia = "Being in charge"]] + /* Section for slaves */ + <br>[[Slaves|Encyclopedia][$encyclopedia = "Slaves"]] + <br>[[Obtaining Slaves|Encyclopedia][$encyclopedia = "Obtaining Slaves"]] + <br>[[Slave Assignments|Encyclopedia][$encyclopedia = "Slave Assignments"]] + <br>[[Slave Body|Encyclopedia][$encyclopedia = "Body"]] / [[Skills|Encyclopedia][$encyclopedia = "Skills"]] + <br>[[Slave Fetishes|Encyclopedia][$encyclopedia = "Fetishes"]] / [[Quirks|Encyclopedia][$encyclopedia = "Quirks"]] / [[Flaws|Encyclopedia][$encyclopedia = "Flaws"]] + <br>[[Slave Relationships|Encyclopedia][$encyclopedia = "Relationships"]] + /* Section for arcology and Lore */ + <br>[[The X-Series Arcology|Encyclopedia][$encyclopedia = "What the Upgrades Do"]] + <br>[[Arcology Facilities|Encyclopedia][$encyclopedia = "Facilities"]] + <br>[[Terrain Types|Encyclopedia][$encyclopedia = "Terrain Types"]] + <br>[[Future Societies|Encyclopedia][$encyclopedia = "Future Societies"]] + <br>[[Lore|Encyclopedia][$encyclopedia = "Lore"]] + /* Mods and extras */ + <br>[[Game Mods|Encyclopedia][$encyclopedia = "Game Mods"]] + <br>[[Credits|Encyclopedia][$encyclopedia = "Credits"]] +<<elseif _Pass == "Starting Girls">> + <span id="cost"> <<SlaveCostDescription>> </span> <br> <</if>> -<<if _Pass != "Encyclopedia" && $showEncyclopedia > 0 && $nextButton != "Continue">> - <<if $nextButton === " ">> <br> <</if>> <<if $ui != "start">> <br> <</if>> +<<if _Pass != "Encyclopedia" && ($showEncyclopedia > 0 || $ui != "start" && $nextButton != "Continue")>> //''FCE'':// [[$encyclopedia|Encyclopedia][$nextButton = "Back", $nextLink = _Pass]] <</if>> - -<<if $ui != "start" && _Pass != "Encyclopedia" && $debugMode > 0>> - <br><br>Debugging Tools<br> <<link "Display Variables">><<checkvars>><</link>> - <br> <<link "Display Changed Variables">> - <<set Config.history.maxStates = 2>> /* makes sure we store the current state so we can return to it */ - <<goto "Variable Difference">> - <</link>> - - <br> <<link "Bug Report">><<bugreport>><</link>> - <<if $debugModeCustomFunction > 0>> - <br> <<textarea "_customEvalCode" "">> - <<link "Run Custom Function">> - <<if _customEvalCode>> - <<if _customEvalCode.charAt(0) != "(" || $nextLink == ")">> /* second condition is only there for sanityCheck */ - <<set _customEvalCode = "(" + _customEvalCode + ")">> - <</if>> - <<if typeof eval(_customEvalCode) === "function">> - <<run (eval(_customEvalCode))()>> - <</if>> - <</if>> - <<goto _Pass>> - <</link>> - <</if>> - <br> <<link "Dump Game State">><<run App.Debug.dumpGameState()>><</link>> -<</if>> diff --git a/src/uncategorized/summaryOptions.tw b/src/uncategorized/summaryOptions.tw index 782bf645c95690eda9d14fe2937f0047cde13c73..8eb2b027a890cac2107754a2e4ce6dea420e8c44 100644 --- a/src/uncategorized/summaryOptions.tw +++ b/src/uncategorized/summaryOptions.tw @@ -43,6 +43,7 @@ <<option "visualAge" "How old they look">> <<option "physicalAge" "Age of their body">> <<option "assignment" "Assignment">> + <<option "weeklyIncome" "Weekly Income">> <</options>> <</if>> diff --git a/src/uncategorized/surgeryDegradation.tw b/src/uncategorized/surgeryDegradation.tw index 0c59f6b6fc7f2a04e5fd8291db2fbc27726f8b70..2fa63b12bf8d663c9eda9e3fff6e1982248ffa0e 100644 --- a/src/uncategorized/surgeryDegradation.tw +++ b/src/uncategorized/surgeryDegradation.tw @@ -101,7 +101,7 @@ <</if>> <</if>> <<set $activeSlave.boobs = 300, $activeSlave.breastMesh = 0, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>> - <<run surgeryDamage($activeSlave, 3)0>> + <<run surgeryDamage($activeSlave, 30)>> <<else>> <<switch $surgeryType>> diff --git a/src/uncategorized/underperformingSlaves.tw b/src/uncategorized/underperformingSlaves.tw new file mode 100644 index 0000000000000000000000000000000000000000..1f6f6ba4a600a625c6769b6dad7670991115048e --- /dev/null +++ b/src/uncategorized/underperformingSlaves.tw @@ -0,0 +1,79 @@ +:: Underperforming Slaves [nobr] + +<<set $nextButton = "Back", $nextLink = "Buy Slaves", $returnTo = "Buy Slaves", $showEncyclopedia = 1>> +<p> + <div> + <<= properMaster()>>, while many of your slaves work hard to earn ¤ each week, some succeed more than others. As a trader in slaves, you may appreciate the opportunity that comes when a particularly valuable slave didn't earn very much last week. Or perhaps you just want the chance to tweak these problem slaves and train them to be better? The choice is yours. + </div> + <div> + <<if ($slaveCostFactor > 1.1)>> + Since there is a bull market for slaves, @@.green;this is a great time to sell.@@ + <<elseif ($slaveCostFactor > 1)>> + Since the slave market is bullish; @@.green;this is a pretty good time to sell.@@ + <<elseif ($slaveCostFactor < 0.9)>> + Since there is a bear market for slaves, @@.red;this is a poor time to sell.@@ + <<elseif ($slaveCostFactor < 1)>> + Since the slave market is bearish; @@.red;this is a terrible time to sell.@@ + <<else>> + Since the slave market is stable; @@.yellow;prices are average.@@ + <</if>> + </div> +</p> +<<run App.UI.tabbar.handlePreSelectedTab($tabChoice.Options)>> + +<button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'highSale')" id="tab highSale">Worth much but earning little</button> +<button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'expensive')" id="tab expensive">Costing vs earning</button> + +<div id="highSale" class="tabcontent"> + <div class="content"> + <div style="font-style:italic"> + Take the rough value of a slave and divide it by how much they made overall last week. This will tell you how many weeks it might take them to earn the same amount you'd get for selling them right now. + </div> + <<print App.UI.SlaveList.render.listMarkup( + getBestSlavesIndices( + { + part:(slave)=>(slaveCost(slave) / (slave.lastWeeksCashIncome - getSlaveCost(slave))), + smallest:false, + count: 7, + filter:(slave)=>( + ["get milked", "work in the dairy", "whore", "work in the brothel", "work a glory hole", "be confined in the arcade"].includes(slave.assignment) + && ((slave.weekAcquired + 1) < V.week) + && slave.lastWeeksCashIncome + ) + } + ), + [], + App.UI.SlaveList.SlaveInteract.stdInteract, + (slave)=>$(document.createDocumentFragment()).append( + `Worth ${cashFormatColor(slaveCost(slave))} / Nets ${cashFormatColor(slave.lastWeeksCashIncome - getSlaveCost(slave))} a week = ${(Math.trunc(slaveCost(slave) / (slave.lastWeeksCashIncome - getSlaveCost(slave))))} weeks` + ).get(0) + )>> + </div> +</div> + +<div id="expensive" class="tabcontent"> + <div class="content"> + <div style="font-style:italic"> + This list looks for moochers by weighing their weekly income against the weekly cost of providing for them. + </div> + <<print App.UI.SlaveList.render.listMarkup( + getBestSlavesIndices( + { + part:(slave)=>(slave.lastWeeksCashIncome - getSlaveCost(slave)), + smallest:true, + count: 7, + filter:(slave)=>( + ["get milked", "work in the dairy", "whore", "work in the brothel", "work a glory hole", "be confined in the arcade"].includes(slave.assignment) + && ((slave.weekAcquired + 1) < V.week) + && slave.lastWeeksCashIncome + ) + } + ), + [], + App.UI.SlaveList.SlaveInteract.stdInteract, + (slave)=>$(document.createDocumentFragment()).append( + `${cashFormatColor(Math.trunc(slave.lastWeeksCashIncome - getSlaveCost(slave)))} net last week` + ).get(0) + )>> + </div> +</div> \ No newline at end of file diff --git a/src/utility/saRulesWidgets.tw b/src/utility/saRulesWidgets.tw index ec30e84dc7d55df5a97761d3f19de26ca8d64015..7516e157a112ff313e3da615aed7e17a2f283338 100644 --- a/src/utility/saRulesWidgets.tw +++ b/src/utility/saRulesWidgets.tw @@ -44,7 +44,7 @@ and <<switch $slaves[$i].fetish>> <<case "submissive">> hold $him down and - <<if $slaves[i].vagina <= 0 && $slaves[i].anus <= 0>> + <<if $slaves[$i].vagina <= 0 && $slaves[$i].anus <= 0>> use $his body <<else>> fuck $him