diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt index 3bd7d6c503218276727e239fcee66faf7c020c59..c875e4b541b79541b98fe7e6417ced2cccb88851 100644 --- a/devNotes/VersionChangeLog-Premod+LoliMod.txt +++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt @@ -2,6 +2,16 @@ Pregmod 0.10.7.1-2.3.x + 9 + -slave assignment links improved + -breast implants now impact milk production based on % implant + -fixes + +04/17/2019 + + 8 + -fixes + 04/15/2019 7 @@ -2671,7 +2681,7 @@ Pregmod 318 -fixed errant ".lightyellow;" - -fixed non lethal pit bug + -fixed nonlethal pit bug 317 -fixed virginity ignoring in saRules @@ -5340,7 +5350,7 @@ Pregmod 17 -extended weight range from -100-100 to -100-200 - -added some more mental effects on slaves to the non-lethal pit, thanks to anon + -added some more mental effects on slaves to the nonlethal pit, thanks to anon -added a new title set up for slaves to use when being rude to you but aren't being adamant. -fixed bugs diff --git a/devTools/makeTwineCSSPassage.bat b/devTools/makeTwineCSSPassage.bat new file mode 100644 index 0000000000000000000000000000000000000000..9ac31514777781a95093238c4ec817460a6a6707 --- /dev/null +++ b/devTools/makeTwineCSSPassage.bat @@ -0,0 +1,23 @@ +@echo off +:: Generates devNotes/twineCSS.txt from all .css files in src/ subdir + +:: See if we can find a git installation +setlocal enabledelayedexpansion + +for %%k in (HKCU HKLM) do ( + for %%w in (\ \Wow6432Node\) do ( + for /f "skip=2 delims=: tokens=1*" %%a in ('reg query "%%k\SOFTWARE%%wMicrosoft\Windows\CurrentVersion\Uninstall\Git_is1" /v InstallLocation 2^> nul') do ( + for /f "tokens=3" %%z in ("%%a") do ( + set GIT=%%z:%%b + set GITFOUND=yes + goto FOUND + ) + ) + ) +) + +:FOUND +if %GITFOUND% == yes ( + set "PATH=%GIT%bin;%PATH%" + bash --login -c ./makeTwineCSSPassage.sh +) diff --git a/devTools/makeTwineCSSPassage.sh b/devTools/makeTwineCSSPassage.sh new file mode 100755 index 0000000000000000000000000000000000000000..d8ccc4726b949c1ba132b15a26a1cf094f2428c4 --- /dev/null +++ b/devTools/makeTwineCSSPassage.sh @@ -0,0 +1,20 @@ +#!/bin/sh +# Generates devNotes/twine CSS.txt from all .css files in src/ subdir + +# Joins all .css files from the current dir (recursive) into a Twee [script] passage +# arguments: +# $1: root repo dir +# $2: output file name +collectCSSForTwine() { + local files=$(find . -iname '*.css' -print) + files=$(echo "$files" | sort) + echo "" > "$2" + for f in $files; do + echo -e "\n/* ${f} */\n" >> "$2" + cat "$f" >> "$2" + done +} + +ROOT_REPO_DIR="$(git rev-parse --show-toplevel)" +cd "${ROOT_REPO_DIR}"/src +collectCSSForTwine "${ROOT_REPO_DIR}" "${ROOT_REPO_DIR}/devNotes/twine CSS.txt" diff --git a/sanityCheck.sh b/sanityCheck.sh index a9b919314930efd96725e8ec6b1c08de17f5abc8..04bae92e8395fcf8ec52499bbd188ab09f7613a6 100755 --- a/sanityCheck.sh +++ b/sanityCheck.sh @@ -121,6 +121,8 @@ $GREP -E "@@(\.|,|;|:)\s" -- src/*.tw | myprint "WrongSelectorPunctuation" $GREP "@@[a-z]\+;" -- 'src/*' | myprint "SelectorMissingDot" # Check for </span>. instead of .</span> $GREP -E "</span>(\.|,|;|:)\s" -- src/*.js | myprint "WrongSelectorPunctuation" +#Check for non lethal or non-lethal instead of nonlethal +$GREP "[Nn]on.lethal" -- 'src/*' | myprint "ShouldBeNonlethal" # Check that we do not have any variables that we use only once. e.g. $onlyUsedOnce # Ignore *Nationalities diff --git a/src/002-config/fc-js-init.js b/src/002-config/fc-js-init.js index d3bc023f91a27ba47814c46832a023b77b0140db..f2d1087953d8beef9b67e9ab917148946fcd23fe 100644 --- a/src/002-config/fc-js-init.js +++ b/src/002-config/fc-js-init.js @@ -4,9 +4,10 @@ * does not work. */ window.App = { }; -// the same declaration for code parsers that don't line the line above +// the same declaration for code parsers that don't like the line above var App = window.App || {}; +App.Data = {}; App.Debug = {}; App.Entity = {}; App.Entity.Utils = {}; diff --git a/src/003-assets/CSS/links.css b/src/003-assets/CSS/links.css new file mode 100644 index 0000000000000000000000000000000000000000..518cab09b24927b774fe273e756208761ba50902 --- /dev/null +++ b/src/003-assets/CSS/links.css @@ -0,0 +1,48 @@ +.textWithTooltip { + position: relative; + display: inline-block; + text-decoration: underline; + text-decoration-color: lightblue; +} + +.textWithTooltip .tooltip { + visibility: hidden; + display: block; + font-size: smaller; + width: 20em; + margin-left: -10em; + background-color: slategray; + color: black; + text-align: center; + border-radius: 3px; + padding: 3px; + position: absolute; + z-index: 1; + bottom: 100%; + left: 50%; +} + +.textWithTooltip .tooltip ul { + margin-left: 5px; + margin-right: 0px; + padding-left: 10px; + padding-right: 0px; + text-align: left; +} + +.textWithTooltip .tooltip::after { + content: ""; + position: absolute; + top: 100%; + left: 50%; + margin-left: -5px; + border-width: 5px; + border-style: solid; + border-color: #555 transparent transparent transparent; +} + +.textWithTooltip:hover .tooltip { + visibility: visible; + opacity: 1; + transition-delay: 0.3s; +} diff --git a/src/004-base/facility.js b/src/004-base/facility.js new file mode 100644 index 0000000000000000000000000000000000000000..041e190e1d8bb3a757a6c015ef26426be49ea14d --- /dev/null +++ b/src/004-base/facility.js @@ -0,0 +1,261 @@ + +App.Data.PositionDesc = class { + constructor() { + this.position = ""; + this.assignment = ""; + } +} + +App.Data.ManagerPositionDesc = class extends App.Data.PositionDesc { + constructor() { + super(); + /** + * Applicable careers + * @type {string[]} */ + this.careers = []; + /** + * Applicable skill name + * @type {string} */ + this.skill = null; + } +} + +App.Data.FacilityDesc = class { + constructor() { + /** Base name for state variables */ + this.baseName = ""; + /** Generic name for UI (Brothel, Club, etc.) + * If null, baseName will be used instead + */ + this.genericName = ""; + /** @type {App.Data.PositionDesc} */ + this.assignee = null; + /** @type {App.Data.PositionDesc} */ + this.penthouse = null; + /** @type {App.Data.ManagerPositionDesc} */ + this.manager = null; + } +} + +App.Data.Facilities = {}; + +App.Entity.Facilities = {}; + +App.Entity.Facilities.Facility = class { + + /** + * @param {App.Data.FacilityDesc} desc defines state variable for this facility + */ + constructor(desc) { + this.desc = desc; + } + + /** Facility display name + * @returns {string} */ + get name() { + return State.variables[this.desc.baseName + "Name"]; + } + + /** Facility generic name ("Brothel", "Schoolroom", etc.) + * @returns {string} */ + get genericName() { + return this.desc.genericName !== null ? this.desc.genericName : capFirstChar(this.desc.baseName); + } + + get penthouseJob() { + return this.desc.penthouse !== null ? this.desc.penthouse.position : undefined; + } + + /** Facility slave capacity + * @returns {number} */ + get capacity() { + return State.variables[this.desc.baseName]; + } + + get established() { + return this.capacity > 0; + } + + get penthouseAssignmentAvailable() { + return this.desc.penthouse !== null; + } + + /** Number of already hosted slaves + * @returns {number} */ + get hostedSlaves() { + return State.variables[this.desc.baseName + "Slaves"]; + } + + get hasFreeSpace() { + return this.capacity > this.hostedSlaves; + } + + /** + * + * @param {string} name + * @returns {number} + */ + option(name) { + return State.variables[this.desc.baseName + name]; + } + + /** + * + * @param {string} name + * @returns {number} + */ + upgrade(name) { + return this.option("Upgrade" + name); + } + + /** + * + * @param {App.Entity.SlaveState} slave + * @returns {string[]} array with rejection reasons. Slave can be hosted if this is empty. + */ + canHostSlave(slave) { + let r = []; + if (!this.hasFreeSpace) { + r.push(`Capacity of ${this.name} exceeded`); + } + + if (slave.assignment === this.desc.assignee.assignment) { + r.push(`${slave.slaveName} is already at ${this.name}`); + } + + return r; + } + + /** + * @param {App.Entity.SlaveState} slave + * @returns {string[]} array with rejection reasons. Slave can be hosted if this is empty. + */ + slaveCanWorkFromPenthouse(slave) { + let r = []; + if (slave.assignment === this.desc.penthouse.assignment) { + r.push(`${slave.slaveName} is already assigned to ${this.desc.penthouse.assignment}`); + } + return r; + } + + /** + * + * @callback linkCallback + * @param {string} assignment new assignment + * @returns {string} code to include into the <<link>><</link> + */ + + /** + * Returns link text for the penthhouse assignment + * @param {number} i slave index + * @param {string} [passage] passage to go to + * @param {linkCallback} [callback] + * @returns {string} + */ + penthouseAssignmentLink(i, passage, callback) { + const linkAction = callback !== undefined ? callback(this.desc.penthouse.assignment) : ''; + return `<<link "${this.desc.penthouse.position}"${passage !== undefined ? ' "' + passage + '"' : ''}>><<= assignJob(${App.Utils.slaveRefString(i)}, "${this.desc.penthouse.assignment}")>>${linkAction}<</link>>`; + } + + /** + * Returns link text for the facility transfer + * @param {number} i slave index + * @returns {string} + */ + transferLink(i) { + return `[[${this.genericName}|Assign][$assignTo = "${this.genericName}", $i = ${i}]]` + } + + /** + * Returns true if slave has enough applicable skill or career + * @param {App.Entity.SlaveState} slave + * @returns {boolean} + */ + slaveHasExperiancedForManagerPosition(slave) { + return (this.desc.manager.skill !== null && slave.skill[this.desc.manager.skill] >= State.variables.masteredXP) || + (typeof slave.career === 'string' && this.desc.manager.careers.includes(slave.career)); + } + + /** + * Tests is slave broken enought + * @protected + * @param {App.Entity.SlaveState} slave + * @param {number} [pureDevotion=50] Minimal devotion level to pass test with any trust + * @param {number} [devotion=-50] Minimal devotion for slaves with enough fear + * @param {number} [trust=-21] Maximal trust (i.e. minimal fear) for the less devotional (see above) + * @param {number} [pureFear=-51] Maximal low trust to pass test with any devotion (because of the fear) + * @param {number} [pureTrust=101] Minimal high trust level to pass test without devotion + * @returns {boolean} + */ + static _isBrokenEnough(slave, pureDevotion, devotion, trust, pureFear, pureTrust) { + if ((slave.devotion < (pureDevotion || 50)) && + (slave.trust < (pureTrust || 101)) && (slave.trust > (pureFear || -51)) && + ((slave.devotion <= (devotion || -51)) || (slave.trust >= (trust || -21)))) { + return false; + } + return true; + } + + /** + * @protected + * Standard message that slave is not broken enough + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ + static _stdBreakageMessage(slave) { + return `${slave.slaveName} must be either more fearful of you or devoted to you`; + } +} + +App.Entity.Facilities.SexWorkFacility = class extends App.Entity.Facilities.Facility { + /** + * @param {App.Data.FacilityDesc} desc + * @param {boolean} publicSexUse + * @param {boolean} fuckdollsAccepted + */ + constructor(desc, publicSexUse, fuckdollsAccepted) { + super(desc); + this.publicSexUse = publicSexUse; + this.fuckdollsAccepted = fuckdollsAccepted; + } + + /** + * + * @param {App.Entity.SlaveState} slave + * @returns {string[]} + */ + canHostSlave(slave) { + let r = super.canHostSlave(slave); + + if (this.publicSexUse && + (slave.breedingMark === 1 || State.variables.propOutcome === 1)) { + r.push(`${slave.slaveName} is for private use only`); + } + + if (!this.fuckdollsAccepted && slave.fuckdoll > 0) { + r.push(`Fuckdolls can't work at ${this.name}`); + } + return r; + } + + /** + * @param {App.Entity.SlaveState} slave + * @returns {string[]} array with rejection reasons. Slave can be hosted if this is empty. + */ + slaveCanWorkFromPenthouse(slave) { + let r = super.slaveCanWorkFromPenthouse(slave); + + if (this.publicSexUse && + (slave.breedingMark === 1 || State.variables.propOutcome === 1)) { + r.push(`${slave.slaveName} is for private use only`); + } + + if (!this.fuckdollsAccepted && slave.fuckdoll > 0) { + r.push(`Fuckdolls can't ${this.desc.penthouse.assignment}`); + } + return r; + } +} + +/** Instances of all facility objects */ +App.Entity.facilities = {}; diff --git a/src/SecExp/rebellionOptions.tw b/src/SecExp/rebellionOptions.tw index 68818878f8c82f423c0d1cc6adea78d016fa7337..b4ddcc7b62902b3cc598c05f20e0df91653723a1 100644 --- a/src/SecExp/rebellionOptions.tw +++ b/src/SecExp/rebellionOptions.tw @@ -205,10 +205,10 @@ <br> The confined spaces of the arcology and the number of vital yet delicate systems within its walls do not allow a lot of tactical flexibility. This will be a long and strenuous fight, street after street, barricade after barricade. In order to preserve the structural integrity of the building and the lives of our civilians, we will have to limit our firepower. -<br><<link "Only light firearms and non lethal weapons">> +<br><<link "Only light firearms and nonlethal weapons">> <<set $engageRule = 0>> <<replace "#engage">> - <br>Your troops will use only non lethal weapons or light firearms to limit to the maximum the collateral damage. This will however weaken our troops considerably. + <br>Your troops will use only nonlethal weapons or light firearms to limit to the maximum the collateral damage. This will however weaken our troops considerably. <</replace>> <</link>> <br><<link "No heavy ordnance">> @@ -234,7 +234,7 @@ In order to preserve the structural integrity of the building and the lives of o <</if>> <span id="engage"> - <br>Your troops will use only non lethal weapons or light firearms to limit to the maximum the collateral damage. This will however weaken our troops considerably. + <br>Your troops will use only nonlethal weapons or light firearms to limit to the maximum the collateral damage. This will however weaken our troops considerably. </span> <br> diff --git a/src/SecExp/rebellionReport.tw b/src/SecExp/rebellionReport.tw index a06b66940ac18918f9811c6c628a644ef867bbda..de82a59cda086e76adce24fd7102adbd55debe29 100644 --- a/src/SecExp/rebellionReport.tw +++ b/src/SecExp/rebellionReport.tw @@ -345,7 +345,7 @@ /* engage rules */ <<if $battleResult != -1>> <<if $engageRule == 0>> - Since you ordered your troops to limit their weaponry to low caliber or non lethal, the arcology reported only @@.red;minor damage.@@ Most citizens and non involved slaves remained unharmed, though some casualties between the civilians were inevitable. + Since you ordered your troops to limit their weaponry to low caliber or nonlethal, the arcology reported only @@.red;minor damage.@@ Most citizens and non involved slaves remained unharmed, though some casualties between the civilians were inevitable. A few businesses were looted and burned, but the damage was pretty limited. <<set $arcRepairTime += 3, IncreasePCSkills('engineering', 0.1)>> <<if $week <= 30>> diff --git a/src/SecExp/widgets/unitsWidgets.tw b/src/SecExp/widgets/unitsWidgets.tw index 82de323530900a1a432dd7cb745b117784a97ce1..bbe7a6a9d0717a7832aead23aec9d8389412aa1b 100644 --- a/src/SecExp/widgets/unitsWidgets.tw +++ b/src/SecExp/widgets/unitsWidgets.tw @@ -143,7 +143,7 @@ <strong>The <<print $secBots.troops>> security drones</strong> are assembled in an ordered line in front of you, absolutely silent and ready to receive their orders. <<if $secBots.troops < $secBots.maxTroops>> The unit is not at its full strength of $secBots.maxTroops drones.<</if>> <<if $secBots.equip == 0>> - They are equipped with light weaponry, mainly anti-riot non lethal weapons. Not particularly effective in battle. + They are equipped with light weaponry, mainly anti-riot nonlethal weapons. Not particularly effective in battle. <<elseif $secBots.equip == 1>> They are equipped with light firearms, not an overwhelming amount of firepower, but with their mobility good enough to be effective. <<elseif $secBots.equip == 2>> diff --git a/src/endWeek/saServeThePublic.js b/src/endWeek/saServeThePublic.js index d7eecc0abba9579ff50db5ce827f7649768eaf13..366c7736815a4cb4e84a7f433c07f9df4d7e3c36 100644 --- a/src/endWeek/saServeThePublic.js +++ b/src/endWeek/saServeThePublic.js @@ -38,7 +38,7 @@ window.saServeThePublic = (function saServeThePublic() { sexCounts(slave); jobPreface(slave); bonusMultiplierText(slave); - usageCountDescripions(slave); + usageCountDescriptions(slave); if (V.seeAge === 1) { comingOfAge(slave); } @@ -199,7 +199,7 @@ window.saServeThePublic = (function saServeThePublic() { } /** @param {App.Entity.SlaveState} slave */ - function usageCountDescripions(slave) { + function usageCountDescriptions(slave) { r += ` ${His} appearance attracted ${slave.sexAmount} members of the public (${Math.trunc(slave.sexAmount / 7)} a day)`; if (slave.sexAmount > 160) { r += `, so many that `; @@ -1192,7 +1192,7 @@ window.saServeThePublic = (function saServeThePublic() { /** @param {App.Entity.SlaveState} slave */ function addRep(slave) { if (slave.assignment !== "recruit girls") { - if (slave.assignment === "serve in the club") { + if (slave.assignment === "serve in the club" || slave.assignment === "be the DJ") { repX(Math.trunc((slave.sexAmount * slave.sexQuality) * (1 + (0.003 * slave.skill.entertainment)) * 0.15), "publicServantClub", slave); } else if (slave.assignment === "serve the public") { repX(Math.trunc((slave.sexAmount * slave.sexQuality) * (1 + (0.003 * slave.skill.entertainment)) * 0.15), "publicServant", slave); diff --git a/src/endWeek/saWhore.js b/src/endWeek/saWhore.js index 2079a4c043f914f216875ad5258ad9ef84448e64..51252a283c1d8b28791671ff8df38a2597892a72 100644 --- a/src/endWeek/saWhore.js +++ b/src/endWeek/saWhore.js @@ -46,7 +46,7 @@ window.saWhore = (function saWhore() { sexCounts(slave); jobPreface(slave); bonusMultiplierText(slave); - usageCountDescripions(slave); + usageCountDescriptions(slave); if (V.seeAge === 1) { comingOfAge(slave); } @@ -78,7 +78,6 @@ window.saWhore = (function saWhore() { // I suspect this one will mostly be cut out in the overhauling /** @param {App.Entity.SlaveState} slave */ function updateNonSlaveVariables(slave) { - // FResult setting FuckResult = FResult(slave); //slave needs release @@ -102,7 +101,7 @@ window.saWhore = (function saWhore() { if (canDoAnal(slave) && slave.anus === 0) { FuckResult += 10; } - + // Beauty setting beauty = Beauty(slave); if (V.ACitizens > (V.ASlaves * 4)) { @@ -127,7 +126,7 @@ window.saWhore = (function saWhore() { if (slave.minorInjury !== 0) { beauty -= 1; } - + // Beauty multipliers beautyMultiplier = 1; if (V.brothel > 0) { @@ -211,7 +210,7 @@ window.saWhore = (function saWhore() { } } } - + // setting and adjustments beauty = Math.trunc(beauty * beautyMultiplier); if ((slave.hears === -1 && slave.earwear !== "hearing aids") || (slave.hears === 0 && slave.earwear === "muffling ear plugs") ||(slave.hears === -2)) { @@ -224,11 +223,11 @@ window.saWhore = (function saWhore() { if (beauty > 210) { beautyCorrection = beauty / 210; beauty = 210; - FResult = Math.trunc(beautyCorrection * FResult); + FuckResult = Math.trunc(beautyCorrection * FuckResult); } T.incomeStats.customers = beauty; } - + /** @param {App.Entity.SlaveState} slave */ function jobPreface(slave) { if (slave.devotion > 95 || slave.energy > 95) { @@ -318,7 +317,7 @@ window.saWhore = (function saWhore() { } } if (V.Madam !== 0) { - let madamPronouns = getPronouns(V.Madam); + const madamPronouns = getPronouns(V.Madam); if (V.madamCashBonus > 0) { if (slave.assignment === "whore") { r += ` Working`; @@ -362,7 +361,7 @@ window.saWhore = (function saWhore() { } /** @param {App.Entity.SlaveState} slave */ - function usageCountDescripions(slave) { + function usageCountDescriptions(slave) { r += ` ${His} appearance attracted ${beauty} members of the public (${Math.trunc(beauty / 7)} a day)`; if (beauty > 160) { r += `, so many that `; @@ -591,7 +590,7 @@ window.saWhore = (function saWhore() { } else if (slave.skill.entertainer >= V.masteredXP) { r += ` ${He} has experience as a prostitute from working for you, making ${him} more effective.`; } - + if (!canWalk(slave)) { if ((V.universalRulesFacilityWork === 1 && slave.assignment === "whore" && V.brothelSpots > 0) || (slave.assignment === "work in the brothel")) { r += ` Since ${he} can't walk, ${he} spends all of $his time in $his own room in ${V.brothelName}. Customers come in, fuck ${him}, and leave.`; @@ -705,14 +704,14 @@ window.saWhore = (function saWhore() { if ((slave.releaseRules === "restrictive" || slave.releaseRules === "chastity") && slave.standardReward !== "orgasm") { r += ` ${He}'s a better whore because prostitution is ${his} main sexual outlet.`; } - + //Someone double check this block if (V.familyTesting === 1) { if (totalRelatives(slave) > 0) { let children = []; children = V.slaves.filter( - function(s) { - return ((slave.ID == s.father || slave.ID == s.mother || s.ID == slave.father || s.ID == slave.mother || areSisters(slave, s) > 0) && (s.assignment === slave.assignment)); + function(s) { + return ((slave.ID === s.father || slave.ID === s.mother || s.ID === slave.father || s.ID === slave.mother || areSisters(slave, s) > 0) && (s.assignment === slave.assignment)); } ); if (children.length > 2) { @@ -739,7 +738,7 @@ window.saWhore = (function saWhore() { r += ` Customers are very enthusiastic about being able to participate in incestuous sex.`; } } else if (children.length > 0) { - let relativePronouns = getPronouns(children[0]); + const relativePronouns = getPronouns(children[0]); r += ` Since ${his} relative, ${children[0].slaveName}, is selling ${relativePronouns.objectReflexive} too, ${he} earns extra ¤ by working with ${relativePronouns.object}.`; if (arcology.FSEgyptianRevivalist > 20) { r += ` Customers are very enthusiastic about being able to participate in incestuous sex like the ancient Egyptians.`; @@ -752,7 +751,7 @@ window.saWhore = (function saWhore() { if (slave.relation !== 0) { SWi = V.slaveIndices[slave.relationTarget]; if (SWi !== undefined && slave.assignment === V.slaves[SWi].assignment) { - let relativePronouns = getPronouns(V.slaves[SWi]); + const relativePronouns = getPronouns(V.slaves[SWi]); r += ` Since ${his} ${V.slaves[SWi].relation} ${V.slaves[SWi].slaveName} is selling ${relativePronouns.objectReflexive} too, ${he} earns extra ¤ by working with ${relativePronouns.object}.`; if (arcology.FSEgyptianRevivalist > 20) { r += ` Customers are very enthusiastic about being able to participate in incestuous sex like the ancient Egyptians.`; @@ -840,7 +839,7 @@ window.saWhore = (function saWhore() { if (slave.butt > 4 && slave.boobs > 800) { if (arcology.FSAssetExpansionist !== "unset") { r += ` ${He} makes a river of ¤ with ${his} huge, fashionable assets.`; - if (canTalk(slave)){ + if (canTalk(slave)) { if (slave.voice > 2) { r += ` ${His} high voice contributes to ${his} bimbo image, so ${he} does even better.`; } @@ -928,7 +927,7 @@ window.saWhore = (function saWhore() { } } } else if (arcology.FSHedonisticDecadence !== "unset" && slave.weight <= 30) { // reduced weight malus for fat loving societies - if (arcology.FSHedonisticDecadenceStrongFat === 1) { // no muscle malus for muscle loving societies + if (arcology.FSHedonisticDecadenceStrongFat === 1) { // no muscle malus for muscle loving societies if (arcology.FSSlimnessEnthusiast > 20) { r += ` ${He} makes extra ¤ due to ${his} fashionably sleek little body.`; } else { @@ -1045,7 +1044,7 @@ window.saWhore = (function saWhore() { } if (arcology.FSSupremacist !== "unset") { if (slave.race !== arcology.FSSupremacistRace) { - r += ` Some citizens fetishize whoress of the servile races.`; + r += ` Some citizens fetishize whores of the servile races.`; } } if (arcology.FSSubjugationist !== "unset") { @@ -1363,7 +1362,7 @@ window.saWhore = (function saWhore() { function addCash(slave) { cash = Math.trunc((beauty * FuckResult) * (1 + (0.002 * slave.skill.whoring))); T.incomeStats.income += cash; - if (slave.assignment === "work in the brothel") { + if (slave.assignment === "work in the brothel" || slave.assignment === "be the Madam") { cashX(cash, "whoreBrothel", slave); } else if (slave.assignment === "whore") { cashX(cash, "whore", slave); @@ -1371,7 +1370,7 @@ window.saWhore = (function saWhore() { cashX(cash, "whoring in an unregistered building", slave); } } - + /** @param {App.Entity.SlaveState} slave */ function addCashText(slave) { r += ` In total, you were paid <span class="yellowgreen">${cashFormat(cash)}</span> for the use of ${slave.slaveName}'s body this week.`; @@ -1618,8 +1617,7 @@ window.saWhore = (function saWhore() { /** @param {App.Entity.SlaveState} slave */ function assignmentVignette(slave) { - let vignette; - vignette = GetVignette(slave); + const vignette = GetVignette(slave); // I forgot what to do with __X__ r += ` __This week__ ${vignette.text} `; if (vignette.type === "cash") { @@ -1706,4 +1704,4 @@ window.saWhore = (function saWhore() { T.incomeStats.rep += Math.trunc(FuckResult * vignette.effect * 0.1); } } -})(); \ No newline at end of file +})(); diff --git a/src/endWeek/saWorkTheFarm.js b/src/endWeek/saWorkTheFarm.js index 2570b995320b2b16ac95933dc5e767a6df061b20..8a1c5bb3c3a2a75b6f0a159d3da766b3ff0e525e 100644 --- a/src/endWeek/saWorkTheFarm.js +++ b/src/endWeek/saWorkTheFarm.js @@ -294,7 +294,7 @@ window.saWorkTheFarm = /** @param {App.Entity.SlaveState} slave */ function saWo if (slave.health > 20) { t += `${He} is in such excellent health that ${he} is able to put on longer and more energetic shows, earning you more. `; } else if (slave.health < -20) { - t += `${His} poor health negatively affects ${his} ablility to put on good shows, cutting into your profits. `; + t += `${His} poor health negatively affects ${his} ability to put on good shows, cutting into your profits. `; } if (slave.face > 40) { t += `${He} is so `; diff --git a/src/facilities/arcade/arcadeFramework.js b/src/facilities/arcade/arcadeFramework.js new file mode 100644 index 0000000000000000000000000000000000000000..dd44a51309f009ca185f30e564f1540e224dbdc9 --- /dev/null +++ b/src/facilities/arcade/arcadeFramework.js @@ -0,0 +1,49 @@ +App.Data.Facilities.arcade = { + baseName: "arcade", + genericName: null, + assignee: { + position: "whore", + assignment: "be confined in the arcade", + }, + penthouse: { + position: "Gloryhole", + assignment: "work a glory hole", + }, + manager: null +} + +App.Entity.Facilities.Arcade = class extends App.Entity.Facilities.SexWorkFacility { + constructor() { + super(App.Data.Facilities.arcade, true, true); + } + + /** + * @param {App.Entity.SlaveState} slave + * @returns {string[]} + */ + canHostSlave(slave) { + let r = super.canHostSlave(slave); + + if (slave.indentureRestrictions > 0) { + r.push(`${slave.slaveName}'s indenture forbids arcade service`) + } + + return r; + } + + /** + * @param {App.Entity.SlaveState} slave + * @returns {string[]} + */ + slaveCanWorkFromPenthouse(slave) { + let r = super.slaveCanWorkFromPenthouse(slave); + + if (slave.indentureRestrictions > 0) { + r.push(`${slave.slaveName}'s indenture forbids gloryhole service`) + } + + return r; + } +} + +App.Entity.facilities.arcade = new App.Entity.Facilities.Arcade(); diff --git a/src/facilities/brothel/brothelFramework.js b/src/facilities/brothel/brothelFramework.js new file mode 100644 index 0000000000000000000000000000000000000000..296ef47f458a34eee12a4fb7b67e1892c5c442dd --- /dev/null +++ b/src/facilities/brothel/brothelFramework.js @@ -0,0 +1,42 @@ +App.Data.Facilities.brothel = { + baseName: "brothel", + genericName: null, + assignee: { + position: "whore", + assignment: "work in the brothel", + }, + penthouse: { + position: "Whore", + assignment: "whore", + }, + manager: { + position: "madam", + assignment: "be the Madam", + careers: ["a banker", "a business owner", "a businessman", "a camp counselor", "a club manager", "a hotel manager", "a landlady", "a madam", "a manager", "a park ranger", "a pimp", "a procuress", "a stockbroker", "an innkeeper"], + skill: null + } +} + +App.Entity.Facilities.Brothel = class extends App.Entity.Facilities.SexWorkFacility { + constructor() { + super(App.Data.Facilities.brothel, true, false); + } + + /** + * @param {App.Entity.SlaveState} slave + * @returns {string[]} + */ + canHostSlave(slave) { + let r = super.canHostSlave(slave); + + // condition is the same as for the club + // TODO: consider moving this to App.Entity.Facilities.SexWorkFacility + if (!App.Entity.Facilities.Facility._isBrokenEnough(slave, 51, -50, -20, -50, 50)) { + r.push(App.Entity.Facilities.Facility._stdBreakageMessage(slave)); + } + + return r; + } +} + +App.Entity.facilities.brothel = new App.Entity.Facilities.Brothel(); diff --git a/src/facilities/cellblock/cellblockFramework.js b/src/facilities/cellblock/cellblockFramework.js new file mode 100644 index 0000000000000000000000000000000000000000..e450e28c4d72c664854511d01749b5f36e4b837d --- /dev/null +++ b/src/facilities/cellblock/cellblockFramework.js @@ -0,0 +1,40 @@ +App.Data.Facilities.cellblock = { + baseName: "cellblock", + genericName: null, + assignee: { + position: "", + assignment: "serve in the master suite", + }, + penthouse: { + position: "Confinement", + assignment: "stay confined", + }, + manager: { + position: "wardness", + assignment: "be the Wardeness", + careers: ["a bouncer", "a bounty hunter", "a bully", "a chief of police", "a gang member", "a hall monitor", "a mercenary", "a police detective", "a police officer", "a prison guard", "a prison warden", "a private detective", "a security guard", "a street thug", "an enforcer", "an orderly"], + skill: "wardeness" + } +} + +App.Entity.Facilities.Cellblock = class extends App.Entity.Facilities.Facility { + constructor() { + super(App.Data.Facilities.cellblock); + } + + /** + * @param {App.Entity.SlaveState} slave + * @returns {string[]} + */ + canHostSlave(slave) { + let r = super.canHostSlave(slave); + + if ((slave.devotion > -20 || slave.trust < -20) && (slave.devotion >= -50 || slave.trust < -50)) { + r.push(`${slave.slaveName} is sufficiently broken in so that the cellblock would have no effect`); + } + + return r; + } +} + +App.Entity.facilities.cellblock = new App.Entity.Facilities.Cellblock(); diff --git a/src/facilities/clinic/clinicFramework.js b/src/facilities/clinic/clinicFramework.js new file mode 100644 index 0000000000000000000000000000000000000000..5b16937d91460ba6f43d98527205e28008231d9e --- /dev/null +++ b/src/facilities/clinic/clinicFramework.js @@ -0,0 +1,41 @@ +App.Data.Facilities.clinic = { + baseName: "clinic", + genericName: null, + assignee: { + position: "patient", + assignment: "get treatment in the clinic", + }, + penthouse: null, + manager: { + position: "nurse", + assignment: "be the Nurse", + careers: ["a chemist", "a chiropractor", "a coroner", "a dentist", "a doctor", "a hospital volunteer", "a medic", "a medical student", "a midwife", "a mortician", "a nurse", "a paramedic", "a pharmacist", "a physician", "a school nurse's assistant", "a school nurse", "a surgeon"], + skill: "nurse" + } +} + +App.Entity.Facilities.Clinic = class extends App.Entity.Facilities.Facility { + constructor() { + super(App.Data.Facilities.clinic); + } + + /** + * @param {App.Entity.SlaveState} slave + * @returns {string[]} + */ + canHostSlave(slave) { + let r = super.canHostSlave(slave); + const V = State.variables; + + if ((slave.health >= 20) && + (V.Nurse === 0 || ((slave.chem <= 15 || this.upgrade("Filters") !== 1) && + (V.bellyImplants !== 1 || slave.bellyImplant <= -1) && + (slave.pregKnown !== 1 || (this.option("SpeedGestation") <= 0 && slave.pregControl !== "speed up")) && (slave.pregAdaptation * 1000 >= slave.bellyPreg && slave.preg <= slave.pregData.normalBirth / 1.33)))) { + r.push(`${slave.slaveName} cannot benefit from the clinic`); + } + + return r; + } +} + +App.Entity.facilities.clinic = new App.Entity.Facilities.Clinic(); diff --git a/src/facilities/club/clubFramework.js b/src/facilities/club/clubFramework.js new file mode 100644 index 0000000000000000000000000000000000000000..481dcc5d79281ddb4f138d1949690c14e105736b --- /dev/null +++ b/src/facilities/club/clubFramework.js @@ -0,0 +1,42 @@ +App.Data.Facilities.club = { + baseName: "club", + genericName: null, + assignee: { + position: "", + assignment: "serve in the club", + }, + penthouse: { + position: "Public Servant ", + assignment: "serve the public", + }, + manager: { + position: "DJ", + assignment: "be the DJ", + careers: ["a classical dancer", "a classical musician", "a dancer", "a house DJ", "a marching band leader", "a musician", "a radio show host", "an aspiring pop star", "an idol", "an orchestra conductor"], + skill: "DJ" + } +} + +App.Entity.Facilities.Club = class extends App.Entity.Facilities.SexWorkFacility { + constructor() { + super(App.Data.Facilities.club, true, false); + } + + /** + * @param {App.Entity.SlaveState} slave + * @returns {string[]} + */ + canHostSlave(slave) { + let r = super.canHostSlave(slave); + + // condition is the same as for the brothel + // TODO: consider moving this to App.Entity.Facilities.SexWorkFacility + if (!App.Entity.Facilities.Facility._isBrokenEnough(slave, 51, -50, -20, -50, 50)) { + r.push(App.Entity.Facilities.Facility._stdBreakageMessage(slave)); + } + + return r; + } +} + +App.Entity.facilities.club = new App.Entity.Facilities.Club(); diff --git a/src/facilities/dairy/dairyFramework.js b/src/facilities/dairy/dairyFramework.js new file mode 100644 index 0000000000000000000000000000000000000000..dfb092a78774f62c95120a18e8517f471850fd20 --- /dev/null +++ b/src/facilities/dairy/dairyFramework.js @@ -0,0 +1,86 @@ +App.Data.Facilities.dairy = { + baseName: "dairy", + genericName: null, + assignee: { + position: "cow", + assignment: "work in the dairy", + }, + penthouse: { + position: "Milked", + assignment: "get milked", + }, + manager: { + position: "milkmaid", + assignment: "be the Milkmaid", + careers: ["a cowgirl", "a dairy worker", "a farmer's daughter", "a milkmaid", "a shepherd", "a veterinarian"], + skill: "milkmaid" + } +} + +App.Entity.Facilities.Dairy = class extends App.Entity.Facilities.Facility { + constructor() { + super(App.Data.Facilities.dairy); + } + + get hasFreeSpace() { + const V = State.variables; + const _dairySeed = V.bioreactorsXY + V.bioreactorsXX + V.bioreactorsHerm + V.bioreactorsBarren; + return this.capacity > this.hostedSlaves + _dairySeed; + } + + /** + * @param {App.Entity.SlaveState} slave + * @returns {string[]} + */ + canHostSlave(slave) { + let r = super.canHostSlave(slave); + const V = State.variables; + + if ((slave.indentureRestrictions > 0) && (V.dairyRestraintsSetting > 1)) { + r.push(`${slave.slaveName}'s indenture forbids extractive Dairy service.`); + } + if ((slave.indentureRestrictions > 1) && (V.dairyRestraintsSetting > 0)) { + r.push(`${slave.slaveName}'s indenture allows only free range milking.`); + } + if (slave.breedingMark === 1 && V.propOutcome === 1 && V.dairyRestraintsSetting > 0) { + r.push(`${slave.slaveName} may only be a free range cow`); + } + if ((V.dairyPregSetting > 0) && ((slave.bellyImplant !== -1) || (slave.broodmother !== 0))) { + r.push(`${slave.slaveName}'s womb cannot accommodate current machine settings`); + } + + if ((slave.amp !== 1) && (this.option("RestraintsUpgrade") !== 1) && + !App.Entity.Facilities.Facility._isBrokenEnough(slave, 20, -50, -20, -50)) { + r.push(`${slave.slaveName} must be obedient in order to be milked at ${this.name}`); + } + + if ((slave.lactation === 0) && (slave.balls === 0) && ((V.dairySlimMaintainUpgrade !== 1 && V.dairySlimMaintain <= 0) || (slave.boobs <= 300 && slave.balls !== 0 && V.dairyImplantsSetting !== 1) || V.dairyImplantsSetting === 2)) { + if ((V.dairySlimMaintainUpgrade === 1 && V.dairySlimMaintain === 1) || (V.dairyImplantsSetting === 2) || (slave.boobs <= 300 && slave.balls > 0 && (V.dairyImplantsSetting === 0 || V.dairyImplantsSetting === 3))) { + r.push(`${slave.slaveName} is not lactating ` + ((V.seeDicks > 0) ? 'or producing semen ' : '') + `and ${this.name}'s current settings forbid the automatic implantation of lactation inducing drugs or manual stimulation to induce it, so she cannot be a cow`); + } else { + r.push(`${slave.slaveName} is not lactating ` + ((V.seeDicks > 0) ? 'or producing semen ' : '') + 'and cannot be a cow'); + } + } else if ((V.dairyStimulatorsSetting >= 2) && (slave.anus <= 2) && (V.dairyPrepUpgrade !== 1)) { + r.push(`${slave.slaveName}'s anus cannot accommodate current machine settings`); + } else if ((V.dairyPregSetting >= 2) && (slave.vagina <= 2) && (slave.ovaries !== 0) && (V.dairyPrepUpgrade !== 1)) { + r.push(`${slave.slaveName}'s vagina cannot accommodate current machine settings`); + } + + return r; + } + + /** + * @param {App.Entity.SlaveState} slave + * @returns {string[]} + */ + slaveCanWorkFromPenthouse(slave) { + let r = super.slaveCanWorkFromPenthouse(slave); + + if ((slave.lactation <= 0) && (slave.balls <= 0)) { + r.push(`${slave.slaveName} is not lactating` + ((State.variables.seeDicks > 0) ? ' or producing semen' : '')); + } + return r; + } +} + +App.Entity.facilities.dairy = new App.Entity.Facilities.Dairy(); diff --git a/src/facilities/farmyard/farmyardFramework.js b/src/facilities/farmyard/farmyardFramework.js new file mode 100644 index 0000000000000000000000000000000000000000..24f71a6edbacb504915a90172a2a15179fd565a4 --- /dev/null +++ b/src/facilities/farmyard/farmyardFramework.js @@ -0,0 +1,23 @@ +App.Data.Facilities.farmyard = { + baseName: "farmyard", + genericName: null, + assignee: { + position: "", + assignment: "work as a farmhand", + }, + penthouse: null, + manager: { + position: "farmer", + assignment: "be the Farmer", + careers: ["a beekeeper", "a bullfighter", "a farmer", "a farmhand", "a rancher", "a rodeo star", "a zookeeper"], + skill: "farmer" + } +} + +App.Entity.Facilities.Farmyard = class extends App.Entity.Facilities.Facility { + constructor() { + super(App.Data.Facilities.farmyard); + } +} + +App.Entity.facilities.farmyard = new App.Entity.Facilities.Farmyard(); diff --git a/src/facilities/masterSuite/masterSuiteFramework.js b/src/facilities/masterSuite/masterSuiteFramework.js new file mode 100644 index 0000000000000000000000000000000000000000..4ca615876207d3faffd5c4fbc7c9421c3c8291e7 --- /dev/null +++ b/src/facilities/masterSuite/masterSuiteFramework.js @@ -0,0 +1,39 @@ +App.Data.Facilities.masterSuite = { + baseName: "masterSuite", + genericName: "Master Suite", + assignee: { + position: "fucktoy", + assignment: "serve in the master suite", + }, + penthouse: { + position: "Fucktoy", + assignment: "please you", + }, + manager: { + position: "concubine", + assignment: "be your Concubine", + careers: [], + skill: null + } +} + +App.Entity.Facilities.MasterSuite = class extends App.Entity.Facilities.Facility { + constructor() { + super(App.Data.Facilities.masterSuite); + } + + /** + * @param {App.Entity.SlaveState} slave + * @returns {string[]} + */ + canHostSlave(slave) { + let r = super.canHostSlave(slave); + if (!App.Entity.Facilities.Facility._isBrokenEnough(slave, 20, -51, -21, -50)) { + r.push(`${slave.slaveName} is not sufficiently broken for the master suite`); + } + + return r; + } +} + +App.Entity.facilities.masterSuite = new App.Entity.Facilities.MasterSuite(); diff --git a/src/facilities/nursery/nursery.tw b/src/facilities/nursery/nursery.tw index 90bd721983fc08a165fe8455d197fc5767b4f9f5..6048756ef10f30e4c0a247621496cc79f6fd69d1 100644 --- a/src/facilities/nursery/nursery.tw +++ b/src/facilities/nursery/nursery.tw @@ -95,7 +95,7 @@ $nurseryNameCaps /*TODO: add a malus for having children without nannies*/ <<set _Tmult0 = Math.trunc($nurseryNannies*1000*$upgradeMultiplierArcology)>> -<br>It can support $nurseryNannies nannies. Currently there <<if $nurserySlaves == 1>>is<<else>>are<</if>> $nurserySlaves nann<<if $nurserySlaves != 1>>ies<<else>>y<</if>> at $nurseryName. +<br>It can support $nurseryNannies nann<<if $nurseryNannies != 1>>ies<<else>>y<</if>>. There <<if $nurserySlaves == 1>>is<<else>>are<</if>> $nurserySlaves nann<<if $nurserySlaves != 1>>ies<<else>>y<</if>> in $nurseryName. <<if $nurseryBabies > 0 && ($nurserySlaves < 1 && $Matron < 1)>> //You must have at least one nanny or Matron to be able to influence the children's upbringing// <br> @@ -164,7 +164,7 @@ $nurseryNameCaps <script>document.getElementById("tab remove").click();</script> <</if>> -<br><br>It can support $nursery child<<if $nursery != 1>>ren<</if>>. Currently $nurseryBabies rooms are in use. +<br><br>It can support $nursery child<<if $nursery != 1>>ren<</if>>. There <<if $nurseryBabies == 1>>is<<else>>are<</if>> currently $nurseryBabies room<<if $nurseryBabies != 1>>s<</if>> in use in $nurseryName. <<if $nursery < 50>> [[Add another room|Nursery][cashX(forceNeg(Math.trunc(5000*$upgradeMultiplierArcology)), "farmyard"), $nursery += 5]] //Costs <<print cashFormat(Math.trunc(5000*$upgradeMultiplierArcology))>> and will increase upkeep costs// <<if $freeCribs == 0>> diff --git a/src/facilities/nursery/nurseryFramework.js b/src/facilities/nursery/nurseryFramework.js new file mode 100644 index 0000000000000000000000000000000000000000..2efb72dda025a630fb2900fe9433349a7ce0bdc2 --- /dev/null +++ b/src/facilities/nursery/nurseryFramework.js @@ -0,0 +1,37 @@ +App.Data.Facilities.nursery = { + baseName: "nursery", + genericName: null, + assignee: { + position: "nanny", + assignment: "work as a nanny" + }, + penthouse: null, + manager: { + position: "matron", + assignment: "be the Matron", + careers: ["a babysitter", "a nanny", "a practitioner", "a wet nurse", "an au pair"], + skill: "matron" + } +} + +App.Entity.Facilities.Nursery = class extends App.Entity.Facilities.Facility { + constructor() { + super(App.Data.Facilities.nursery); + } + + /** + * @param {App.Entity.SlaveState} slave + * @returns {string[]} + */ + canHostSlave(slave) { + let r = super.canHostSlave(slave); + + if (!App.Entity.Facilities.Facility._isBrokenEnough(slave, -20, -50, 20, -21)) { + r.push(App.Entity.Facilities.Facility._stdBreakageMessage(slave)); + } + + return r; + } +} + +App.Entity.facilities.nursery = new App.Entity.Facilities.Nursery(); diff --git a/src/facilities/pit/pitFramework.js b/src/facilities/pit/pitFramework.js new file mode 100644 index 0000000000000000000000000000000000000000..9b4369c0554b95abad9b96c4bc2715631348bfd9 --- /dev/null +++ b/src/facilities/pit/pitFramework.js @@ -0,0 +1,36 @@ +App.Data.Facilities.pit = { + baseName: "pit", + genericName: null, + assignee: { + position: "fighter", + assignment: "" + }, + penthouse: null, + manager: null +} + +App.Entity.Facilities.Pit = class extends App.Entity.Facilities.Facility { + constructor() { + super(App.Data.Facilities.pit); + } + + /** + * @param {App.Entity.SlaveState} slave + * @returns {string[]} + */ + canHostSlave(slave) { + let r = super.canHostSlave(slave); + if (slave.breedingMark === 1 && State.variables.propOutcome === 1) { + r.push(`${slave.slaveName} may not participate in combat.`); + } + if (slave.indentureRestrictions > 1) { + r.push(`${slave.slaveName}'s indenture forbids fighting.`); + } + if ((slave.indentureRestrictions > 0) && (this.option("Lethal") === 1)) { + r.push(`${slave.slaveName}'s indenture forbids lethal fights.`); + } + return r; + } +} + +App.Entity.facilities.pit = new App.Entity.Facilities.Pit(); diff --git a/src/facilities/schoolroom/schoolroomFramework.js b/src/facilities/schoolroom/schoolroomFramework.js new file mode 100644 index 0000000000000000000000000000000000000000..578612c218e1e3144ae2122798fbb4992f69871e --- /dev/null +++ b/src/facilities/schoolroom/schoolroomFramework.js @@ -0,0 +1,66 @@ +App.Data.Facilities.schoolroom = { + baseName: "schoolroom", + genericName: null, + assignee: { + position: "", + assignment: "learn in the schoolroom", + }, + penthouse: { + position: "Classes", + assignment: "take classes", + }, + manager: { + position: "teacher", + assignment: "be the Schoolteacher", + careers: ["a child prodigy", "a coach", "a dean", "a historian", "a librarian", "a principal", "a private instructor", "a professor", "a scholar", "a scientist", "a teacher's pet", "a teacher", "a teaching assistant", "an archaeologist", "an astronaut", "an economist"], + skill: "teacher" + } +} + +App.Entity.Facilities.Schoolroom = class extends App.Entity.Facilities.Facility { + constructor() { + super(App.Data.Facilities.schoolroom); + } + + /** + * @param {App.Entity.SlaveState} slave + * @returns {string[]} + */ + slaveCanWorkFromPenthouse(slave) { + let r = super.slaveCanWorkFromPenthouse(slave); + if (slave.intelligenceImplant >= 15) { + r.push(`${slave.slaveName} already has a basic education`); + } + if (!App.Entity.Facilities.Facility._isBrokenEnough(slave, -20, -50, -20, -51)) { + r.push(`${slave.slaveName} is too resistant to learn`); + } + + if (slave.fetish === "mindbroken") { + r.push(`${capFirstChar(slave.possessive)} mind is fundamentally broken and can't learn`); + } + return r; + } + + /** + * @param {App.Entity.SlaveState} slave + * @returns {string[]} + */ + canHostSlave(slave) { + let r = super.canHostSlave(slave); + + if (!App.Entity.Facilities.Facility._isBrokenEnough(slave, -20, -50, -20, -51)) { + r.push(`${slave.slaveName} is too resistant to learn`); + } + + const maxSkill = 10 + this.upgrade("Skills") * 20; // maximal skill value the scholl can teach + if ((slave.intelligenceImplant >= 30) && (slave.voice === 0 || slave.accent + this.upgrade("Language") <= 2) && + (slave.skill.oral > maxSkill) && (slave.skill.whoring > maxSkill) && (slave.skill.entertainment > maxSkill) && + (slave.skill.anal > maxSkill) && ((slave.vagina < 0) || (slave.skill.vaginal > maxSkill))) { + r.push(`${slave.slaveName} already has a basic education`); + } + + return r; + } +} + +App.Entity.facilities.schoolrom = new App.Entity.Facilities.Schoolroom(); diff --git a/src/facilities/servantsQuarters/servantsQuartersFramework.js b/src/facilities/servantsQuarters/servantsQuartersFramework.js new file mode 100644 index 0000000000000000000000000000000000000000..03a556170703c7a845d5734a5c070106125d633b --- /dev/null +++ b/src/facilities/servantsQuarters/servantsQuartersFramework.js @@ -0,0 +1,66 @@ +App.Data.Facilities.servantsQuaters = { + baseName: "servantsQuarters", + genericName: "Servants' Quarters", + assignee: { + position: "servant", + assignment: "work as a servant", + }, + penthouse: { + position: "House Servant", + assignment: "be a servant", + }, + manager: { + position: "stewardess", + assignment: "be the Stewardess", + careers: ["a barista", "a bartender", "a brewer", "a bureaucrat", "a caregiver", "a charity worker", "a club treasurer", "a concierge", "a critic", "a housekeeper", "a housesitter", "a lemonade stand operator", "a personal assistant", "a professional bartender", "a secretary", "a wedding planner", "an air hostess", "an architect", "an editor", "an estate agent", "an investor", "an office worker"], + skill: "stewardess" + } +} + +App.Entity.Facilities.ServantsQuarters = class extends App.Entity.Facilities.Facility { + constructor() { + super(App.Data.Facilities.servantsQuaters); + } + + /** + * @param {App.Entity.SlaveState} slave + * @returns {string[]} + */ + canHostSlave(slave) { + let r = super.canHostSlave(slave); + + if (!App.Entity.Facilities.Facility._isBrokenEnough(slave, -20, -50, 20, -21)) { + r.push(App.Entity.Facilities.Facility._stdBreakageMessage(slave)); + } + if (!window.canWalk(slave)) { + r.push(`${slave.slaveName} can't work as a servant because ${slave.pronoun} can't walk`); + } + if (!canSee(slave)) { + r.push(`${slave.slaveName} can't work as a servant because ${slave.pronoun} is blind`); + } + return r; + } + + /** + * @param {App.Entity.SlaveState} slave + * @returns {string[]} + */ + slaveCanWorkFromPenthouse(slave) { + let r = super.slaveCanWorkFromPenthouse(slave); + + if (!App.Entity.Facilities.Facility._isBrokenEnough(slave, -20, -50, -19, -51)) { + r.push(App.Entity.Facilities.Facility._stdBreakageMessage(slave)); + } + + if (!canWalk(slave)) { + r.push(`${slave.slaveName} can't work as a servant because ${slave.pronoun} can't walk`); + } + if (!canSee(slave)) { + r.push(`${slave.slaveName} can't work as a servant because ${slave.pronoun} is blind`); + } + + return r; + } +} + +App.Entity.facilities.servantsQuarters = new App.Entity.Facilities.ServantsQuarters(); diff --git a/src/facilities/spa/spaFramework.js b/src/facilities/spa/spaFramework.js new file mode 100644 index 0000000000000000000000000000000000000000..77c04f998064812c0b014a143943461d276e9ac6 --- /dev/null +++ b/src/facilities/spa/spaFramework.js @@ -0,0 +1,46 @@ +App.Data.Facilities.spa = { + baseName: "spa", + genericName: null, + assignee: { + position: "", + assignment: "rest in the spa" + }, + penthouse: { + position: "Rest", + assignment: "rest", + }, + manager: { + position: "attendant", + assignment: "be the Attendant", + careers: ["a barber", "a cosmetologist", "a counselor", "a dispatch officer", "a fortune teller", "a groomer", "a latchkey kid", "a lifeguard", "a masseuse", "a mediator", "a personal trainer", "a police negotiator", "a psychologist", "a therapist", "a yoga instructor"], + skill: "attendant" + } +} + +App.Entity.Facilities.Spa = class extends App.Entity.Facilities.Facility { + constructor() { + super(App.Data.Facilities.spa); + } + + penthouseAssignmentLink(i, passage, callback) { + const linkAction = callback !== undefined ? callback(this.desc.penthouse.assignment) : ''; + const slRef = App.Utils.slaveRefString(i); + return `<<link "Rest"${passage !== undefined ? ' "' + passage + '"' : ''}>><<= removeJob(${slRef}, ${slRef}.assignment)>>${linkAction}<</link>>`; + } + + /** + * @param {App.Entity.SlaveState} slave + * @returns {string[]} + */ + canHostSlave(slave) { + let r = super.canHostSlave(slave); + + if (((slave.devotion < -20 && slave.fetish !== "mindbroken") || (slave.health >= 20 && slave.trust > 60 && slave.devotion > 60 && slave.fetish !== "mindbroken" && slave.sexualFlaw === "none" && slave.behavioralFlaw === "none"))) { + r.push(`${slave.slaveName} can not benefit from spa procedures`); + } + + return r; + } +} + +App.Entity.facilities.spa = new App.Entity.Facilities.Spa(); diff --git a/src/init/setupVars.tw b/src/init/setupVars.tw index d4f1ade394f28ce268693736140eaffdc6e3a31b..303e439ee5dba5a8506619c4b361f3f6b691216e 100644 --- a/src/init/setupVars.tw +++ b/src/init/setupVars.tw @@ -319,27 +319,27 @@ equine: {type: "equine", normalOvaMin:1, normalOvaMax: 1, normalBirth: 48, minLi <<set setup.HGCareers = ["a captain", "a corporate executive", "a director", "a dominatrix", "a gang leader", "a judge", "a lawyer", "a leading arcology citizen", "a military officer", "a model-UN star", "a noblewoman", "a politician", "a Queen", "a slaver", "a student council president"]>> -<<set setup.madamCareers = ["a banker", "a business owner", "a businessman", "a camp counselor", "a club manager", "a hotel manager", "a landlady", "a madam", "a manager", "a park ranger", "a pimp", "a procuress", "a stockbroker", "an innkeeper"]>> +<<set setup.madamCareers = App.Data.Facilities.brothel.manager.careers>> -<<set setup.DJCareers = ["a classical dancer", "a classical musician", "a dancer", "a house DJ", "a marching band leader", "a musician", "a radio show host", "an aspiring pop star", "an idol", "an orchestra conductor"]>> +<<set setup.DJCareers = App.Data.Facilities.club.manager.careers>> <<set setup.bodyguardCareers = ["a bodyguard", "a boxer", "a bully hunter", "a child soldier", "a hitman", "a kunoichi", "a law enforcement officer", "a military brat", "a prince", "a revolutionary", "a sniper", "a soldier", "a transporter", "an assassin", "an MS pilot", "captain of the kendo club", "in a militia", "spec ops"]>> -<<set setup.wardenessCareers = ["a bouncer", "a bounty hunter", "a bully", "a chief of police", "a gang member", "a hall monitor", "a mercenary", "a police detective", "a police officer", "a prison guard", "a prison warden", "a private detective", "a security guard", "a street thug", "an enforcer", "an orderly"]>> +<<set setup.wardenessCareers = App.Data.Facilities.cellblock.manager.careers>> -<<set setup.nurseCareers = ["a chemist", "a chiropractor", "a coroner", "a dentist", "a doctor", "a hospital volunteer", "a medic", "a medical student", "a midwife", "a mortician", "a nurse", "a paramedic", "a pharmacist", "a physician", "a school nurse's assistant", "a school nurse", "a surgeon"]>> +<<set setup.nurseCareers = App.Data.Facilities.clinic.manager.careers>> -<<set setup.attendantCareers = ["a barber", "a cosmetologist", "a counselor", "a dispatch officer", "a fortune teller", "a groomer", "a latchkey kid", "a lifeguard", "a masseuse", "a mediator", "a personal trainer", "a police negotiator", "a psychologist", "a therapist", "a yoga instructor"]>> +<<set setup.attendantCareers = App.Data.Facilities.spa.manager.careers>> -<<set setup.matronCareers = ["a babysitter", "a nanny", "a practitioner", "a wet nurse", "an au pair"]>> +<<set setup.matronCareers = App.Data.Facilities.nursery.manager.careers>> -<<set setup.milkmaidCareers = ["a cowgirl", "a dairy worker", "a farmer's daughter", "a milkmaid", "a shepherd", "a veterinarian"]>> +<<set setup.milkmaidCareers = App.Data.Facilities.dairy.manager.careers>> -<<set setup.farmerCareers = ["a beekeeper", "a bullfighter", "a farmer", "a farmhand", "a rancher", "a rodeo star", "a zookeeper"]>> +<<set setup.farmerCareers = App.Data.Facilities.farmyard.manager.careers>> -<<set setup.stewardessCareers = ["a barista", "a bartender", "a brewer", "a bureaucrat", "a caregiver", "a charity worker", "a club treasurer", "a concierge", "a critic", "a housekeeper", "a housesitter", "a lemonade stand operator", "a personal assistant", "a professional bartender", "a secretary", "a wedding planner", "an air hostess", "an architect", "an editor", "an estate agent", "an investor", "an office worker"]>> +<<set setup.stewardessCareers = App.Data.Facilities.servantsQuaters.manager.careers>> -<<set setup.schoolteacherCareers = ["a child prodigy", "a coach", "a dean", "a historian", "a librarian", "a principal", "a private instructor", "a professor", "a scholar", "a scientist", "a teacher's pet", "a teacher", "a teaching assistant", "an archaeologist", "an astronaut", "an economist"]>> +<<set setup.schoolteacherCareers = App.Data.Facilities.schoolroom.manager.careers>> <<set setup.recruiterCareers = ["a club recruiter", "a college scout", "a con artist", "a cult leader", "a girl scout", "a hunter", "a lobbyist", "a military recruiter", "a missionary", "a political activist", "a princess", "a spy", "a talent scout", "retired"]>> /* pregmod */ diff --git a/src/js/assignJS.js b/src/js/assignJS.js index 03285aff851b1fa43c30e93da9a2afb57152a2b6..17d69c8b0e51c86529454a62f4fe46fba723a38e 100644 --- a/src/js/assignJS.js +++ b/src/js/assignJS.js @@ -171,7 +171,7 @@ window.assignJob = function assignJob(slave, job) { slave.assignmentVisible = 0; V.masterSuiteSlaves++; V.MastSiIDs.push(slave.ID); - if(V.masterSuiteUpgradeLuxury > 0) + if (V.masterSuiteUpgradeLuxury > 0) slave.livingRules = "luxurious"; else slave.livingRules = "spare"; @@ -259,7 +259,7 @@ window.assignJob = function assignJob(slave, job) { case "be your concubine": slave.assignment = job; slave.assignmentVisible = 0; /* non-visible leadership roles */ - if(V.masterSuiteUpgradeLuxury > 0) + if (V.masterSuiteUpgradeLuxury > 0) slave.livingRules = "luxurious"; else slave.livingRules = "normal"; @@ -544,3 +544,136 @@ window.resetJobIDArray = function resetJobIDArray() { /* todo: expand to all ass return JobIDArray; }; + +/** + * Generates string with links for changing slave assignment + */ +App.UI.jobLinks = function () { + "use strict"; + const facilitiesOrder = [ + App.Entity.facilities.spa, + App.Entity.facilities.clinic, + App.Entity.facilities.masterSuite, + App.Entity.facilities.schoolrom, + App.Entity.facilities.servantsQuarters, + App.Entity.facilities.farmyard, + App.Entity.facilities.nursery, + App.Entity.facilities.brothel, + App.Entity.facilities.club, + App.Entity.facilities.dairy, + App.Entity.facilities.arcade, + App.Entity.facilities.cellblock + ]; + + return { + assignments: assignmentLinks, + transfers: transferLinks + }; + + /** + * Generates assignment links + * @param {number} index index in the slaves array or -1 for the activeSlave + * @param {string} [passage] optional next passage to go to + * @param {linkCallback} [callback] + * @returns {string} + */ + function assignmentLinks(index, passage, callback) { + let res = []; + /** @type {App.Entity.SlaveState} */ + const slave = index >= 0 ? State.variables.slaves[index] : State.variables.activeSlave; + + for (const f of facilitiesOrder) { + if (!f.penthouseAssignmentAvailable) continue; + const rejects = f.slaveCanWorkFromPenthouse(slave); + if (rejects.length === 0) { + res.push(f.penthouseAssignmentLink(index, passage, callback)); + } else { + res.push(App.UI.disabledLink(f.penthouseJob, rejects)); + } + } + if (slave.fuckdoll === 0) { + const assignment = "choose her own job"; + if (slave.assignment !== assignment) { + const linkAction = callback !== undefined ? callback(assignment) : ''; + res.push(`<<link "Let ${slave.object} choose" ${passage !== undefined ? '"' + passage + '"' : ''}>><<= assignJob(${App.Utils.slaveRefString(index)}, "${assignment}")>>${linkAction}<</link>>`); + } + } else { + res.push(App.UI.disabledLink(`Let ${slave.object} choose`, ["Fuckdolls can't choose their job"])); + } + + return res.join(" | "); + } + + function transferLinks(index) { + /** @type {string[]} */ + const transfers = []; + /** @type {App.Entity.SlaveState} */ + const slave = index >= 0 ? State.variables.slaves[index] : State.variables.activeSlave; + + if (slave.assignment !== "rest" && slave.assignment !== "please you" && slave.assignment !== "take classes" && slave.assignment !== "be a servant" && slave.assignment !== "whore" && slave.assignment !== "work a glory hole" && slave.assignment !== "serve the public" && slave.assignment !== "get milked" && slave.assignment !== "stay confined") { + transfers.push(`<<link "Penthouse" "Main">><<= removeJob($slaves[${index}], $slaves[${index}].assignment)>><</link>>`); + } else { + transfers.push(App.UI.disabledLink('Penthouse', [`${slave.slaveName} is already at the Penthouse`])); + } + + for (const f of facilitiesOrder) { + if (!f.established) continue; + + const rejects = f.canHostSlave(slave); + if (rejects.length === 0) { + transfers.push(f.transferLink(index)); + } else { + transfers.push(App.UI.disabledLink(f.genericName, rejects)); + } + } + + return transfers.join(' | '); + } +}(); + +App.UI.SlaveInteract = { + fucktoyPref: function () { + let elem = jQuery('#fucktoypref'); + elem.empty(); + let res = ""; + /** @type {App.Entity.SlaveState} */ + const slave = State.variables.activeSlave; + if ((slave.assignment === "please you") || (slave.assignment === "serve in the master suite") || (slave.assignment === "be your Concubine")) { + res += '__Fucktoy use preference__: <strong><span id = "hole">' + slave.toyHole + '</span></strong>.'; + /** @type {string[]} */ + let links = []; + links.push('<<link "Mouth">><<set $activeSlave.toyHole = "mouth">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>'); + links.push('<<link "Tits">><<set $activeSlave.toyHole = "boobs">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>'); + if ((slave.vagina > 0) && canDoVaginal(slave)) { + links.push('<<link "Pussy">><<set $activeSlave.toyHole = "pussy">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>'); + } else if (slave.vagina === 0) { + links.push(App.UI.disabledLink("Pussy", + [`Take ${slave.possessive} virginity before giving ${slave.possessive} pussy special attention`])); + } + if ((slave.anus > 0) && canDoAnal(slave)) { + links.push('<<link "Ass">><<set $activeSlave.toyHole = "ass">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>'); + } else { + links.push(App.UI.disabledLink("Ass", + [`Take ${slave.possessive} anal virginity before giving ${slave.possessive} ass special attention`])); + } + if ((slave.dick > 0) && canPenetrate(slave)) { + links.push('<<link "Dick">><<set $activeSlave.toyHole = "dick">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>'); + } + links.push(`<<link "No Preference">><<set $activeSlave.toyHole = "all ${slave.possessive} holes">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>`); + res += links.join(' | ') + '<br>'; + } + let ins = jQuery(document.createDocumentFragment()); + ins.wiki(res); + elem.append(ins); + }, + + assignmentBlock: function (blockId) { + let res = App.UI.jobLinks.assignments(-1, undefined, () => { + return `<<replace "#assign">>$activeSlave.assignment<</replace>><<replace "#${blockId}">><<= App.UI.SlaveInteract.assignmentBlock("${blockId}")>><<= App.UI.SlaveInteract.fucktoyPref()>><</replace>>`; + }); + if (State.variables.activeSlave.assignment !== "choose her own job") { + res += ' |  <<link "Stay on this assignment for another month">><<set $activeSlave.sentence += 4>><<replace "#assign">>$activeSlave.assignment($activeSlave.sentence weeks)<</replace>><</link>>'; + } + return res; + } +}; diff --git a/src/js/datatypeCleanupJS.js b/src/js/datatypeCleanupJS.js index 57b6e9ccebaf8d831ee4149929c84131e70af10b..1edb9708fd8882990bb8000f099b3981b251ee0d 100644 --- a/src/js/datatypeCleanupJS.js +++ b/src/js/datatypeCleanupJS.js @@ -146,7 +146,7 @@ App.Entity.Utils.SlaveDataSchemeCleanup = (function () { customTitle: "title", customTitleLisp: "titleLisp", customHairVector: "hairVector" - } + }; for (let prop in slave) { if (nameMap.hasOwnProperty(prop)) { @@ -771,7 +771,7 @@ window.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() { } if (slave.custom.image !== null) { if (typeof slave.custom.image.filename !== "string") { - slave.custom.image = null + slave.custom.image = null; } } } diff --git a/src/js/descriptionWidgets.js b/src/js/descriptionWidgets.js index 0359baa9dd2b5624ec630d98eb8f6b948d32263a..91ba8540fcd90237e4d2dd5898bfbe697af6c408 100644 --- a/src/js/descriptionWidgets.js +++ b/src/js/descriptionWidgets.js @@ -34,8 +34,8 @@ App.Desc.eyes = function (slave) { } r += ` and unfocused`; } - } else if (slave.eyes === -3){ - r += `${He} has ${slave.eyeColor} colored glass eyes` + } else if (slave.eyes === -3) { + r += `${He} has ${slave.eyeColor} colored glass eyes`; } else { r += `${His} gaze is empty`; } @@ -241,7 +241,7 @@ App.Desc.eyes = function (slave) { } } return r; -} +}; /** * @param {App.Entity.SlaveState} slave @@ -251,15 +251,15 @@ App.Desc.eyeColor = function (slave) { "use strict"; let r; - if (slave.eyes === -4){ - r = 'empty' + if (slave.eyes === -4) { + r = "empty"; } else if (hasVisibleHeterochromia(slave)) { - r = `heterochromatic ${slave.eyeColor} and ${slave.geneticQuirks.heterochromatia}`; + r = `heterochromatic ${slave.eyeColor} and ${slave.geneticQuirks.heterochromia}`; } else { r = `${slave.eyeColor}`; } return r; -} +}; /** * @param {App.Entity.SlaveState} slave @@ -442,6 +442,7 @@ App.Desc.ageAndHealth = function (slave) { ** This section replaces the age/therapy texts, giving more details for the NCS condition. */ if (slave.geneMods.NCS) { + let bodyNCS; if (slave.vagina < 0 && slave.dick <= 0) { bodyNCS = "childlike"; } else if (slave.vagina < 0 && slave.dick > 0) { @@ -565,7 +566,7 @@ App.Desc.ageAndHealth = function (slave) { r += ` and ${slave.physicalAge} years old.`; } return r; -} +}; App.Desc.brand = /** @@ -597,7 +598,7 @@ App.Desc.brand = } } return r; - } + }; App.Desc.amputee = /** @@ -637,7 +638,7 @@ App.Desc.amputee = } } return r; - } + }; App.Desc.waist = /** @@ -676,7 +677,6 @@ App.Desc.waist = r += ` despite how thin ${he} is. `; } else { r += `. `; - } if (slave.belly >= 1500) { if (slave.belly >= 750000) { @@ -713,11 +713,11 @@ App.Desc.waist = } } } else if (slave.waist > 40) { - r += `a broad, <span class=red>ugly waist</span> that makes ${him} look mannish` + r += `a broad, <span class=red>ugly waist</span> that makes ${him} look mannish`; if (slave.weight > 30) { - r += ` and exaggerates how fat ${he} is. ` + r += ` and exaggerates how fat ${he} is. `; } else if (slave.weight < -30) { - r += ` despite how thin ${he} is. ` + r += ` despite how thin ${he} is. `; } else { r += `. `; } @@ -756,7 +756,7 @@ App.Desc.waist = } } } else if (slave.waist > 10) { - r += `an <span class=red>unattractive waist</span> that conceals ${his} ` + r += `an <span class=red>unattractive waist</span> that conceals ${his} `; if (slave.visualAge > 25) { r += `girlish`; } else { @@ -809,16 +809,16 @@ App.Desc.waist = } } } else if (slave.waist > -10) { - r += `an average waist for a ` + r += `an average waist for a `; if (slave.visualAge > 25) { r += `${boy}`; } else { r += `${woman}`; } if (slave.weight > 30) { - r += `, though it looks broader since ${he}'s fat. ` + r += `, though it looks broader since ${he}'s fat. `; } else if (slave.weight < -30) { - r += `, though it looks narrower since ${he}'s thin. ` + r += `, though it looks narrower since ${he}'s thin. `; } else { r += `. `; } @@ -861,7 +861,7 @@ App.Desc.waist = } } } else if (slave.waist > -40) { - r += `a nice <span class=pink>feminine waist</span> that gives ${him} a ` + r += `a nice <span class=pink>feminine waist</span> that gives ${him} a `; if (slave.visualAge > 25) { r += `girlish`; } else { @@ -961,7 +961,7 @@ App.Desc.waist = } } } else if (slave.belly < 750000) { - r += `${His} ${belly} belly lewdly bulges to either side of ${his} narrow waist and continues for nearly half a ` + r += `${His} ${belly} belly lewdly bulges to either side of ${his} narrow waist and continues for nearly half a `; if (V.showInches === 2) { r += `yard`; } else { @@ -978,7 +978,7 @@ App.Desc.waist = } } } else { - r += `an <span class=pink>absurdly narrow waist</span> that gives ${him} a cartoonishly hourglass figure` + r += `an <span class=pink>absurdly narrow waist</span> that gives ${him} a cartoonishly hourglass figure`; if (slave.weight > 30) { r += `made even more ludicrous by ${his} extra weight. `; } else if (slave.weight < -30) { @@ -988,7 +988,7 @@ App.Desc.waist = } if (slave.belly >= 1500) { if (slave.belly >= 750000) { - r += `${His} ${belly} belly grotesquely bulges around ${his} narrow waist and continues ` + r += `${His} ${belly} belly grotesquely bulges around ${his} narrow waist and continues `; if (slave.belly >= 1000000) { r += `quite the distance`; } else { @@ -1027,7 +1027,7 @@ App.Desc.waist = } } } else if (slave.belly < 750000) { - r += `${His} ${belly} belly lewdly bulges to either side of ${his} narrow waist and continues for nearly half a ` + r += `${His} ${belly} belly lewdly bulges to either side of ${his} narrow waist and continues for nearly half a `; if (V.showInches === 2) { r += `yard`; } else { @@ -1045,4 +1045,4 @@ App.Desc.waist = } } return r; - } + }; diff --git a/src/js/extendedFamilyModeJS.js b/src/js/extendedFamilyModeJS.js index de9c109f11b68c44985aa4eb36c1357a5a19b92c..a44dd4c8ea5efeac41560bec0a4f105fb37de352 100644 --- a/src/js/extendedFamilyModeJS.js +++ b/src/js/extendedFamilyModeJS.js @@ -16,17 +16,15 @@ window.isParentP = function isParentP(daughter, parent) { window.sameDad = function (slave1, slave2) { if ((slave1.father === slave2.father) && (slave1.father !== 0 && slave1.father !== -2)) { return true; - } else { - return false; } + return false; }; window.sameMom = function (slave1, slave2) { if ((slave1.mother === slave2.mother) && (slave1.mother !== 0 && slave1.mother !== -2)) { return true; - } else { - return false; } + return false; }; window.isAunt = /** @param {App.Entity.SlaveState} niece, @param {App.Entity.SlaveState} aunt */ function (niece, aunt) { @@ -58,9 +56,8 @@ window.sameTParent = function (slave1, slave2) { return 2; } else if ((slave1.mother === slave2.father || slave1.father === slave2.mother) && slave1.mother !== 0 && slave1.mother !== -2 && slave2.mother !== 0 && slave2.mother !== -2 && slave1.mother !== slave1.father) { return 3; - } else { - return 0; } + return 0; }; /* @@ -80,9 +77,8 @@ window.areTwins = function (slave1, slave2) { return false; } else if (slave1.actualAge === slave2.actualAge && slave1.birthWeek === slave2.birthWeek) { return true; - } else { - return false; } + return false; }; window.areSisters = function (slave1, slave2) { @@ -205,9 +201,8 @@ window.isSlaveAvailable = /** @param {App.Entity.SlaveState} slave */ function ( return false; } else if (slave.assignment === "work in the dairy" && State.variables.dairyRestraintsSetting >= 2) { return false; - } else { - return true; } + return true; }; /* OLD @@ -312,7 +307,7 @@ window.totalPlayerRelatives = function (pc) { window.relativeTerm = /** @param {App.Entity.SlaveState} slave1 @param {App.Entity.SlaveState} slave2 */ function (slave1, slave2) { if (slave2.mother === slave1.ID || slave2.father === slave1.ID) { - if (slave2.genes === "XY" && State.variables.diversePronouns == 1) { + if (slave2.genes === "XY" && State.variables.diversePronouns === 1) { return "son"; } else { return "daughter"; @@ -322,31 +317,31 @@ window.relativeTerm = /** @param {App.Entity.SlaveState} slave1 @param {App.Enti } else if (slave1.father === slave2.ID) { return "father"; } else if (areSisters(slave2, slave1) === 1) { - if (slave2.genes === "XY" && State.variables.diversePronouns == 1) { + if (slave2.genes === "XY" && State.variables.diversePronouns === 1) { return "twin brother"; } else { return "twin sister"; } } else if (areSisters(slave2, slave1) === 2) { - if (slave2.genes === "XY" && State.variables.diversePronouns == 1) { + if (slave2.genes === "XY" && State.variables.diversePronouns === 1) { return "brother"; } else { return "sister"; } } else if (areSisters(slave2, slave1) === 3) { - if (slave2.genes === "XY" && State.variables.diversePronouns == 1) { + if (slave2.genes === "XY" && State.variables.diversePronouns === 1) { return "half-brother"; } else { return "half-sister"; } } else if (isAunt(slave1, slave2)) { - if (slave2.genes === "XY" && State.variables.diversePronouns == 1) { + if (slave2.genes === "XY" && State.variables.diversePronouns === 1) { return "nephew"; } else { return "niece"; } } else if (isAunt(slave2, slave1)) { - if (slave2.genes === "XY" && State.variables.diversePronouns == 1) { + if (slave2.genes === "XY" && State.variables.diversePronouns === 1) { return "uncle"; } else { return "aunt"; diff --git a/src/js/familyTreeJS.js b/src/js/familyTreeJS.js index 4819a4019cad81bb1a854391173009beb8d321c6..491dfcd9d01c0e7699e1e4cb50dbfaaf260b21bf 100644 --- a/src/js/familyTreeJS.js +++ b/src/js/familyTreeJS.js @@ -37,14 +37,14 @@ window.renderFamilyTree = function(slaves, filterID) { function initFtreeSVG(data) { ftreeWidth = data.nodes.length * 45; ftreeHeight = data.nodes.length * 35; - if(ftreeWidth < 600) { + if (ftreeWidth < 600) { ftreeWidth = 600; - } else if(ftreeWidth > 1920) { + } else if (ftreeWidth > 1920) { ftreeWidth = 1920; } - if(ftreeHeight < 480) { + if (ftreeHeight < 480) { ftreeHeight = 480; - } else if(ftreeHeight > 1200) { + } else if (ftreeHeight > 1200) { ftreeHeight = 1200; } @@ -95,9 +95,9 @@ window.renderFamilyTree = function(slaves, filterID) { .append('line') .attr('marker-end', 'url(#arrowhead)') .attr('stroke', function(d) { - if(d.type === 'homologous') { + if (d.type === 'homologous') { return '#862d59'; - } else if(d.type === 'paternal') { + } else if (d.type === 'paternal') { return '#24478f'; } else { return '#aa909b'; @@ -118,7 +118,7 @@ window.renderFamilyTree = function(slaves, filterID) { node.append('circle') .attr('r', function (d) { return d.r; }) .attr('stroke', function(d) { - if(d.ID === filterID) { + if (d.ID === filterID) { return '#ffff20'; } else { return '#5a5a5a'; @@ -130,8 +130,8 @@ window.renderFamilyTree = function(slaves, filterID) { node.append('text') .text(function(d) { var ssym; - if(d.ID === -1) { - if(d.dick === 1 && d.vagina === 1) { + if (d.ID === -1) { + if (d.dick === 1 && d.vagina === 1) { ssym = '☿'; } else if (d.dick === 1) { ssym = '♂'; @@ -153,13 +153,13 @@ window.renderFamilyTree = function(slaves, filterID) { .attr('dx', function(d) { return -(8*d.name.length)/2; }) .attr('class', 'node-text') .style('fill', function(d) { - if(d.is_mother && d.is_father) { + if (d.is_mother && d.is_father) { return '#b84dff'; - } else if(d.is_father) { + } else if (d.is_father) { return '#00ffff'; - } else if(d.is_mother) { + } else if (d.is_mother) { return '#ff3399'; - } else if(d.unborn) { + } else if (d.unborn) { return '#a3a3c2'; } else { return '#66cc66'; @@ -202,7 +202,6 @@ window.renderFamilyTree = function(slaves, filterID) { d.fx = null; d.fy = null; } - } }; @@ -237,78 +236,78 @@ window.buildFamilyTree = function(slaves = State.variables.slaves, filterID) { charList.push.apply(charList, State.variables.tanks); var unborn = {}; - for(let i = 0; i < State.variables.tanks.length; i++) { + for (let i = 0; i < State.variables.tanks.length; i++) { unborn[State.variables.tanks[i].ID] = true; } for (let i = 0; i < State.variables.cribs.length; i++) { unborn[State.variables.cribs[i].ID] = true; } - for(let i = 0; i < charList.length; i++) { + for (let i = 0; i < charList.length; i++) { var mom = charList[i].mother; var dad = charList[i].father; - if(mom) { - if(!kids[mom]) { + if (mom) { + if (!kids[mom]) { kids[mom] = {}; } kids[mom].mother = true; } - if(dad) { - if(!kids[dad]) { + if (dad) { + if (!kids[dad]) { kids[dad] = {}; } kids[dad].father = true; } } - for(let i = 0; i < charList.length; i++) { + for (let i = 0; i < charList.length; i++) { var character = charList[i]; - if(character.mother === 0 && character.father === 0 && !kids[character.ID]) { + if (character.mother === 0 && character.father === 0 && !kids[character.ID]) { continue; } let mom = character.mother; - if(mom < -6) { + if (mom < -6) { if (mom in State.variables.missingTable && State.variables.showMissingSlaves) { node_lookup[mom] = family_graph.nodes.length; var missing = State.variables.missingTable[mom]; charList.push({ID: mom, mother: 0, father: 0, is_mother: true, dick: missing.dick, vagina: missing.vagina, slaveName: missing.slaveName}); } else { - if(typeof outmoms[mom] === 'undefined') { + if (typeof outmoms[mom] === 'undefined') { outmoms[mom] = []; } outmoms[mom].push(character.slaveName); } - } else if(mom < 0 && typeof node_lookup[mom] === 'undefined' && typeof preset_lookup[mom] !== 'undefined') { + } else if (mom < 0 && typeof node_lookup[mom] === 'undefined' && typeof preset_lookup[mom] !== 'undefined') { node_lookup[mom] = family_graph.nodes.length; charList.push({ID: mom, mother: 0, father: 0, is_father: true, dick: 0, vagina: 1, slaveName: preset_lookup[mom]}); } let dad = character.father; - if(dad < -6) { + if (dad < -6) { if (dad in State.variables.missingTable && State.variables.showMissingSlaves) { node_lookup[dad] = family_graph.nodes.length; let missing = State.variables.missingTable[dad]; charList.push({ID: dad, mother: 0, father: 0, is_father: true, dick: missing.dick, vagina: missing.vagina, slaveName: missing.slaveName}); } else { - if(typeof outdads[dad] === 'undefined') { + if (typeof outdads[dad] === 'undefined') { outdads[dad] = []; } outdads[dad].push(character.slaveName); } - } else if(dad < 0 && typeof node_lookup[dad] === 'undefined' && typeof preset_lookup[dad] !== 'undefined') { + } else if (dad < 0 && typeof node_lookup[dad] === 'undefined' && typeof preset_lookup[dad] !== 'undefined') { node_lookup[dad] = family_graph.nodes.length; charList.push({ID: dad, mother: 0, father: 0, is_father: true, dick: 1, vagina: -1, slaveName: preset_lookup[dad]}); } } var mkeys = Object.keys(outmoms); - for(let i = 0; i < mkeys.length; i++) { + for (let i = 0; i < mkeys.length; i++) { var name; var key = mkeys[i]; var names = outmoms[key]; - if(names.length === 1) { + if (names.length === 1) { name = names[0]; - } else if(names.length === 2) { + } else if (names.length === 2) { name = names.join(' and '); } else { names[-1] = `and ${names[-1]}`; @@ -320,13 +319,13 @@ window.buildFamilyTree = function(slaves = State.variables.slaves, filterID) { } var dkeys = Object.keys(outdads); - for(let i = 0; i < dkeys.length; i++) { + for (let i = 0; i < dkeys.length; i++) { let name; let key = dkeys[i]; let names = outdads[key]; - if(names.length === 1) { + if (names.length === 1) { name = names[0]; - } else if(names.length === 2) { + } else if (names.length === 2) { name = names.join(' and '); } else { names[-1] = `and ${names[-1]}`; @@ -338,7 +337,7 @@ window.buildFamilyTree = function(slaves = State.variables.slaves, filterID) { } var charHash = {}; - for(let i = 0; i < charList.length; i++) { + for (let i = 0; i < charList.length; i++) { charHash[charList[i].ID] = charList[i]; } @@ -347,43 +346,43 @@ window.buildFamilyTree = function(slaves = State.variables.slaves, filterID) { var saveTree = {}; function relatedTo(character, targetID, relIDs = {tree: {}, related: false}) { relIDs.tree[character.ID] = true; - if(related[character.ID]) { + if (related[character.ID]) { relIDs.related = true; return relIDs; } - if(character.ID === targetID) { + if (character.ID === targetID) { relIDs.related = true; } - if(seen[character.ID]) { + if (seen[character.ID]) { return relIDs; } seen[character.ID] = true; - if(character.mother !== 0) { - if(charHash[character.mother]) { + if (character.mother !== 0) { + if (charHash[character.mother]) { relatedTo(charHash[character.mother], targetID, relIDs); } } - if(character.father !== 0) { - if(charHash[character.father]) { + if (character.father !== 0) { + if (charHash[character.father]) { relatedTo(charHash[character.father], targetID, relIDs); } } return relIDs; } - if(filterID) { - if(charHash[filterID]) { + if (filterID) { + if (charHash[filterID]) { var relIDs = relatedTo(charHash[filterID], filterID); - for(let k in relIDs.tree) { + for (let k in relIDs.tree) { related[k] = true; } - for(let i = 0; i < charList.length; i++) { - if(charHash[charList[i].ID]) { + for (let i = 0; i < charList.length; i++) { + if (charHash[charList[i].ID]) { var pRelIDs = relatedTo(charHash[charList[i].ID], filterID); - if(pRelIDs.related) { - for(let k in pRelIDs.tree) { + if (pRelIDs.related) { + for (let k in pRelIDs.tree) { related[k] = true; - if(saveTree[k]) { - for(let k2 in saveTree[k].tree) { + if (saveTree[k]) { + for (let k2 in saveTree[k].tree) { related[k2] = true; } } @@ -395,13 +394,13 @@ window.buildFamilyTree = function(slaves = State.variables.slaves, filterID) { } } - for(let i = 0; i < charList.length; i++) { + for (let i = 0; i < charList.length; i++) { let character = charList[i]; let char_id = character.ID; - if(character.mother === 0 && character.father === 0 && !kids[char_id]) { + if (character.mother === 0 && character.father === 0 && !kids[char_id]) { continue; } - if(filterID && !related[char_id]) { + if (filterID && !related[char_id]) { continue; } node_lookup[char_id] = family_graph.nodes.length; @@ -412,7 +411,7 @@ window.buildFamilyTree = function(slaves = State.variables.slaves, filterID) { unborn: !!unborn[char_id], vagina: character.vagina }; - if(kids[char_id]) { + if (kids[char_id]) { char_obj.is_mother = !!kids[char_id].mother; char_obj.is_father = !!kids[char_id].father; } else { @@ -422,24 +421,24 @@ window.buildFamilyTree = function(slaves = State.variables.slaves, filterID) { family_graph.nodes.push(char_obj); } - for(let i = 0; i < charList.length; i++) { + for (let i = 0; i < charList.length; i++) { let character = charList[i]; let char_id = character.ID; - if(character.mother === 0 && character.father === 0 && !kids[char_id]) { + if (character.mother === 0 && character.father === 0 && !kids[char_id]) { continue; } - if(filterID && !related[char_id]) { - if(related[character.mother]) { + if (filterID && !related[char_id]) { + if (related[character.mother]) { console.log('wtf, mom'); } - if(related[character.father]) { + if (related[character.father]) { console.log('wtf, dad'); } continue; } - if(typeof node_lookup[character.mother] !== 'undefined') { + if (typeof node_lookup[character.mother] !== 'undefined') { var ltype; - if(character.mother === character.father) { + if (character.mother === character.father) { ltype = 'homologous'; } else { ltype = 'maternal'; @@ -450,10 +449,10 @@ window.buildFamilyTree = function(slaves = State.variables.slaves, filterID) { source: node_lookup[character.mother]*1 }); } - if(character.mother === character.father) { + if (character.mother === character.father) { continue; } - if(typeof node_lookup[character.father] !== 'undefined') { + if (typeof node_lookup[character.father] !== 'undefined') { family_graph.links.push({ type: 'paternal', target: node_lookup[char_id]*1, @@ -487,7 +486,7 @@ window.updateFamilyTree = function(activeSlave = lastActiveSlave, slaves = lastS var numTreeNodes = 0; var graphElement = document.getElementById("graph"); - if(!graphElement) + if (!graphElement) return; graphElement.innerHTML = ""; @@ -497,17 +496,17 @@ window.updateFamilyTree = function(activeSlave = lastActiveSlave, slaves = lastS */ function getSlave(id, expectedGenes) { - if(id === -1) { + if (id === -1) { return {"slaveName": "YOU", "ID": id, "physicalAge": PC.physicalAge, "genes": PC.genes, "father": PC.father, "mother": PC.mother}; } - if(id === 0) { + if (id === 0) { return {"slaveName": "-", "ID": id, "genes": expectedGenes}; } - if(id === activeSlave.ID) { + if (id === activeSlave.ID) { return activeSlave; } - for(let i = 0; i < slaves.length; ++i) { - if(slaves[i].ID === id) + for (let i = 0; i < slaves.length; ++i) { + if (slaves[i].ID === id) return slaves[i]; } return {"slaveName": "-", "ID": id, "genes": expectedGenes}; @@ -516,23 +515,23 @@ window.updateFamilyTree = function(activeSlave = lastActiveSlave, slaves = lastS function slaveInfo(slave, activeSlaveId, recursionProtectSlaveId = {}) { numTreeNodes = 0; treeDepth = 0; - if(recursionProtectSlaveId[slave.ID]) { + if (recursionProtectSlaveId[slave.ID]) { console.log("Recursion protection"); return slaveInfo_(slave, activeSlaveId); } recursionProtectSlaveId[slave.ID] = true; - if(typeof slave.father === "undefined" || typeof slave.mother === "undefined") + if (typeof slave.father === "undefined" || typeof slave.mother === "undefined") return slaveInfo_(slave, activeSlaveId); - if(slave.father === -1 || slave.mother === -1) { + if (slave.father === -1 || slave.mother === -1) { return slaveInfo(getSlave(-1), activeSlaveId, recursionProtectSlaveId); } - if(slave.father !== 0) { + if (slave.father !== 0) { return slaveInfo(getSlave(slave.father, "unknownXY"), activeSlaveId, recursionProtectSlaveId); } - if(slave.mother !== 0) { + if (slave.mother !== 0) { return slaveInfo(getSlave(slave.mother, "unknownXX"), activeSlaveId, recursionProtectSlaveId); } return slaveInfo_(slave, activeSlaveId); @@ -541,7 +540,7 @@ window.updateFamilyTree = function(activeSlave = lastActiveSlave, slaves = lastS numTreeNodes += 1; treeDepth = Math.max(treeDepth, depth); var shouldAddChildren = false; - if(!slavesAdded[slave.ID]) { + if (!slavesAdded[slave.ID]) { shouldAddChildren = true; slavesAdded[slave.ID] = true; } @@ -555,33 +554,33 @@ window.updateFamilyTree = function(activeSlave = lastActiveSlave, slaves = lastS var spouseToChild = {}; function maybeAddSpouseToChild(child) { - if(child.ID === slave.ID) + if (child.ID === slave.ID) return; if (child.father === slave.ID) { - if(!spouseToChild[child.mother]) { + if (!spouseToChild[child.mother]) { spouseToChild[child.mother] = []; } spouseToChild[child.mother].push(child); } else if (child.mother === slave.ID) { - if(!spouseToChild[child.father]) { + if (!spouseToChild[child.father]) { spouseToChild[child.father] = []; } spouseToChild[child.father].push(child); } } - if(activeSlave.ID !== PC.ID) + if (activeSlave.ID !== PC.ID) maybeAddSpouseToChild(activeSlave); maybeAddSpouseToChild(getSlave(-1)); - for(let i = 0; i < slaves.length; ++i) { + for (let i = 0; i < slaves.length; ++i) { var child = slaves[i]; - if(child.ID !== activeSlave.ID) + if (child.ID !== activeSlave.ID) maybeAddSpouseToChild(child); } - for(let key in spouseToChild) { - if(spouseToChild.hasOwnProperty(key)) { + for (let key in spouseToChild) { + if (spouseToChild.hasOwnProperty(key)) { var children = shouldAddChildren?spouseToChild[key]:[]; var spouse = getSlave(key, (slaves.genes === "XX")?"unknownXY":(slaves.genes === "XY")?"unknownXX":"unknown"); var spouseName; @@ -608,7 +607,7 @@ window.updateFamilyTree = function(activeSlave = lastActiveSlave, slaves = lastS var parentWidth = document.getElementById('editFamily').offsetWidth; console.log(parentWidth, document.getElementById('passages').offsetWidth); - if(!parentWidth) + if (!parentWidth) parentWidth = document.body.offsetWidth - 483; console.log(parentWidth, Math.min(200 + 40*numTreeNodes, parentWidth-200) + 200); @@ -624,5 +623,4 @@ window.updateFamilyTree = function(activeSlave = lastActiveSlave, slaves = lastS } } }); - }; diff --git a/src/js/generateGenetics.js b/src/js/generateGenetics.js index bd06512e580e373f1a1a7139b7adf8536005fcf0..76a391f91bd45c18220195ce96f3dd1696e69eea 100644 --- a/src/js/generateGenetics.js +++ b/src/js/generateGenetics.js @@ -911,6 +911,68 @@ window.generateGenetics = (function() { } } } + + //gigantomastia + if (father !== 0) { + if (mother.geneticQuirks.gigantomastia >= 2 && father.geneticQuirks.gigantomastia >= 2) { + if (jsRandom(1, 4) === 1) { + quirks.gigantomastia = 3; + } else { + quirks.gigantomastia = 1; + } + } else if ((mother.geneticQuirks.gigantomastia >= 2 && father.geneticQuirks.gigantomastia === 1) || (mother.geneticQuirks.gigantomastia === 1 && father.geneticQuirks.gigantomastia >= 2)) { + chance = jsRandom(1, 4); + if (chance === 1) { + quirks.gigantomastia = 3; + } else if (chance !== 4) { + quirks.gigantomastia = 1; + } + } else if (mother.geneticQuirks.gigantomastia === 1 && father.geneticQuirks.gigantomastia === 1) { + if (jsRandom(1, 4) === 1) { + quirks.gigantomastia = 3; + } + } + } else if (mother.geneticQuirks.gigantomastia >= 1) { + if (jsRandom(0, 40000) >= 39500) { + chance = jsRandom(1, 4); + if (chance === 1) { + quirks.gigantomastia = 3; + } else if (chance !== 4) { + quirks.gigantomastia = 1; + } + } + } + + //macromastia + if (father !== 0) { + if (mother.geneticQuirks.macromastia >= 2 && father.geneticQuirks.macromastia >= 2) { + if (jsRandom(1, 4) === 1) { + quirks.macromastia = 3; + } else { + quirks.macromastia = 1; + } + } else if ((mother.geneticQuirks.macromastia >= 2 && father.geneticQuirks.macromastia === 1) || (mother.geneticQuirks.macromastia === 1 && father.geneticQuirks.macromastia >= 2)) { + chance = jsRandom(1, 4); + if (chance === 1) { + quirks.macromastia = 3; + } else if (chance !== 4) { + quirks.macromastia = 1; + } + } else if (mother.geneticQuirks.macromastia === 1 && father.geneticQuirks.macromastia === 1) { + if (jsRandom(1, 4) === 1) { + quirks.macromastia = 3; + } + } + } else if (mother.geneticQuirks.macromastia >= 1) { + if (jsRandom(0, 40000) >= 39500) { + chance = jsRandom(1, 4); + if (chance === 1) { + quirks.macromastia = 3; + } else if (chance !== 4) { + quirks.macromastia = 1; + } + } + } return clone(quirks); } diff --git a/src/js/generateNewSlaveJS.js b/src/js/generateNewSlaveJS.js index 4f7665fad0d04f12047b75055f023b8745339589..eea1a3df11d06081641e53ac5819d669beeec78a 100644 --- a/src/js/generateNewSlaveJS.js +++ b/src/js/generateNewSlaveJS.js @@ -1124,6 +1124,18 @@ window.GenerateNewSlave = (function() { } else if (chance < 100) { slave.geneticQuirks.rearLipedema = 1; } + chance = jsRandom(1, 20000); + if (chance >= 19975) { + slave.geneticQuirks.gigantomastia = 2; + } else if (chance >= 19800) { + slave.geneticQuirks.gigantomastia = 1; + } + chance = jsRandom(1, 20000); + if (chance >= 19900) { + slave.geneticQuirks.macromastia = 2; + } else if (chance >= 19500) { + slave.geneticQuirks.macromastia = 1; + } } function generateXYGeneticQuirks() { @@ -1158,6 +1170,14 @@ window.GenerateNewSlave = (function() { } else if (chance < 10) { slave.geneticQuirks.rearLipedema = 1; } + chance = jsRandom(1, 20000); + if (chance >= 19975) { + slave.geneticQuirks.gigantomastia = 1; + } + chance = jsRandom(1, 20000); + if (chance > 19900) { + slave.geneticQuirks.macromastia = 1; + } } function generateAge() { @@ -1534,6 +1554,33 @@ window.GenerateNewSlave = (function() { slave.butt += jsRandom(.2 * slave.physicalAge, .5 * slave.physicalAge); slave.butt = Math.clamp(slave.butt, 0, 24); } + if (slave.geneticQuirks.macromastia === 3) { + if (slave.pubertyXX > 0) { + if (jsRandom(1, 10) > 3) { + slave.geneticQuirks.macromastia = 2; + } + } + } + if (slave.geneticQuirks.macromastia === 2) { + slave.boobs += jsRandom(1 * slave.physicalAge, 3 * slave.physicalAge) * 100; + slave.boobs = Math.clamp(slave.boobs, 300, 5000); + } + if (slave.geneticQuirks.gigantomastia === 3) { + if (slave.pubertyXX > 0) { + if (jsRandom(1, 10) > 3) { + slave.geneticQuirks.gigantomastia = 2; + } + } + } + if (slave.geneticQuirks.gigantomastia === 2) { + slave.boobs += jsRandom(1 * slave.physicalAge, 20 * slave.physicalAge) * 100; + if (slave.geneticQuirks.macromastia === 2) { + slave.boobs = Math.clamp(slave.boobs, 300, 100000); + } else { + slave.boobs = Math.clamp(slave.boobs, 300, 25000); + } + } + } return GenerateNewSlave; diff --git a/src/js/slaveStatsChecker.js b/src/js/slaveStatsChecker.js index 9174c3cc788cce8c59e660cc06810ab5eeeae579..2a922c08bb091db204e770f93efffa475f01ab1a 100644 --- a/src/js/slaveStatsChecker.js +++ b/src/js/slaveStatsChecker.js @@ -149,7 +149,10 @@ window.SlaveStatsChecker = (function() { /* call as SlaveStatsChecker.isUnmodded() */ /** @param {App.Entity.SlaveState} slave */ function isUnmodded(slave) { - return (!isModded(slave) && slave.corsetPiercing === 0 && piercingScore(slave) < 3 && tatScore(slave) < 2); + const tattoos = tatScore(slave); + const piercings = piercingScore(slave); + + return (!isModded(slave) && slave.corsetPiercing === 0 && piercings < 3 && tattoos < 2); } }()); diff --git a/src/js/slaveSummaryWidgets.js b/src/js/slaveSummaryWidgets.js index 17a0876eabeea5fb73050623ebb590a07406e939..7caebe85b2e0c19b7cffb3a976f974de4fa9414c 100644 --- a/src/js/slaveSummaryWidgets.js +++ b/src/js/slaveSummaryWidgets.js @@ -5060,6 +5060,61 @@ App.UI.slaveSummaryList = function (passageName) { } } + const passageToFacilityMap = { + "Arcade": App.Entity.facilities.arcade, + "Brothel": App.Entity.facilities.brothel, + "Cellblock": App.Entity.facilities.cellblock, + "Clinic": App.Entity.facilities.clinic, + "Club": App.Entity.facilities.club, + "Dairy": App.Entity.facilities.dairy, + "Farmyard": App.Entity.facilities.farmyard, + "Master Suite": App.Entity.facilities.masterSuite, + "Nursery": App.Entity.facilities.nursery, + "Pit": App.Entity.facilities.pit, + "Schoolroom": App.Entity.facilities.schoolrom, + "Servants' Quarters": App.Entity.facilities.servantsQuarters, + "Spa": App.Entity.facilities.spa + }; + + const managerSelectPassageToFacilityMap = { + "Attendant Select": App.Entity.facilities.spa, + "Matron Select": App.Entity.facilities.nursery, + "Madam Select": App.Entity.facilities.brothel, + "Milkmaid Select": App.Entity.facilities.dairy, + "Nurse Select": App.Entity.facilities.clinic, + "DJ Select": App.Entity.facilities.club, + "Farmer Select": App.Entity.facilities.farmyard, + "Stewardess Select": App.Entity.facilities.servantsQuarters, + "Schoolteacher Select": App.Entity.facilities.schoolrom, + "Wardeness Select": App.Entity.facilities.cellblock, + }; + + // TODO: merge with managerSelectPassageToFacilityMap + const selectionWorkarounds = { + "Agent Select": "Agent Workaround", + "BG Select": "Bodyguard Workaround", + "Recruiter Select": "Recruiter Workaround", + "HG Select": "HG Workaround", + "Attendant Select":"Attendant Workaround", + "Matron Select": "Matron Workaround", + "Madam Select": "Madam Workaround", + "DJ Select": "DJ Workaround", + "Nurse Select": "Nurse Workaround", + "Schoolteacher Select": "Schoolteacher Workaround", + "Milkmaid Select": "Milkmaid Workaround", + "Farmer Select": "Farmer Workaround", + "Stewardess Select": "Stewardess Workaround", + "Concubine Select": "Concubine Workaround", + "Wardeness Select": "Wardeness Workaround" + }; + + /** @type {App.Entity.Facilities.Facility} */ + const passageFacility = passageToFacilityMap[passageName]; + /** @type {App.Entity.Facilities.Facility} */ + const managerSelectFacility = managerSelectPassageToFacilityMap[passageName]; + /** @type {string} */ + const selectionWorkaround = selectionWorkarounds[passageName]; + for (const _ssi of _filteredSlaveIdxs) { let _Slave = slaves[_ssi]; @@ -5084,6 +5139,32 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`<div id="slave_${ _Slave.ID }" style="clear:both">`); + if (passageFacility !== undefined) { + if (V.Flag === 0) { + if (!passageFacility.hasFreeSpace) { + res.pop(); + continue; + } + const rejects = passageFacility.canHostSlave(_Slave); + if (rejects.length > 0) { + let rejectString = `${_slaveName}: <ul>${rejects.map(e => `<li>${e}</li>`).join('')}</ul></div>`; + res.push(rejectString); + continue; + } else { + res.push(dividerAndImage(_Slave)); + res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); + } + } else if (V.Flag === 1) { + res.push(dividerAndImage(_Slave)); + res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); + } else { + if ((V.seeImages === 1) && (V.seeSummaryImages === 1)) res.push(slaveImage(_Slave)); + res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); + } + } else if (selectionWorkaround !== undefined) { + res.push(dividerAndImage(_Slave)); + res.push(`[[${_slaveName}|${selectionWorkaround}][$i = ${_ssi}]]`); + } switch (passageName) { case "Main": if ((_Slave.choosesOwnClothes === 1) && (_Slave.clothes === "choosing her own clothes")) { @@ -5107,22 +5188,6 @@ App.UI.slaveSummaryList = function (passageName) { res.push(dividerAndImage(_Slave)); res.push(`<<link "${_slaveName}">> <<run App.UI.selectSlaveForPersonalAttention(${_Slave.ID})>><</link>>`); break; - case "Agent Select": - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Agent Workaround][$i = ${_ssi}]]`); - break; - case "BG Select": - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Bodyguard Workaround][$i = ${_ssi}]]`); - break; - case "Recruiter Select": - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Recruiter Workaround][$i = ${_ssi}]]`); - break; - case "HG Select": - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|HG Workaround][$i = ${_ssi}]]`); - break; case "Head Girl Suite": if (V.Flag === 0) { res.push(dividerAndImage(_Slave)); @@ -5136,392 +5201,6 @@ App.UI.slaveSummaryList = function (passageName) { res.push(dividerAndImage(_Slave)); res.push(`[[${_slaveName}|Subordinate Targeting][$activeSlave.subTarget = $slaves[${_ssi}].ID]]`); break; - case "Spa": - if (V.Flag === 0) { - if (V.spa <= V.spaSlaves) { - res.pop(); - continue; - } - if ((_Slave.health < 20) || (_Slave.trust < 60) || (_Slave.devotion <= 60) || (_Slave.fetish === "mindbroken") || _Slave.sexualFlaw !== "none" || _Slave.behavioralFlaw !== "none") { - if (_Slave.devotion >= -20 || _Slave.fetish === "mindbroken") { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else { - res.push(`<i>${_Slave.slaveName} cannot be trusted in the spa</i></div>`); - continue; - } - } else { - res.push(`<i>${_Slave.slaveName} cannot benefit from the spa</i></div>`); - continue; - } - } else if (V.Flag === 1) { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else { - if ((V.seeImages === 1) && (V.seeSummaryImages === 1)) res.push(slaveImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } - break; - case "Attendant Select": - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Attendant Workaround][$i = ${_ssi}]]`); - break; - case "Nursery": - if (V.Flag === 0) { - if (V.nurseryNannies <= V.nurserySlaves) { - res.pop(); - continue; - } - if ((_Slave.devotion >= -20) || ((_Slave.devotion >= -50) && (_Slave.trust <= 20)) || (_Slave.trust < -20)) { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else { - res.push(`<i>${_Slave.slaveName} must be either more fearful of you or devoted to you</i></div>`); - continue; - } - } else if (V.Flag === 1) { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else { - if ((V.seeImages === 1) && (V.seeSummaryImages === 1)) { - res.push(slaveImage(_Slave)); - } - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } - break; - case "Matron Select": - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Matron Workaround][$i = ${_ssi}]]`); - break; - case "Brothel": - if (V.Flag === 0) { - if (V.brothel <= V.brothelSlaves) { - res.pop(); - continue; - } - if (_Slave.breedingMark !== 1 || V.propOutcome === 0) { - if ((_Slave.devotion > 50) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50) || (_Slave.trust > 50)) { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else { - res.push(`<i>${_Slave.slaveName} must be either more fearful of you or devoted to you</i></div>`); - continue; - } - } else { - res.push(`<i>${_Slave.slaveName} is for private use only</i></div>`); - continue; - } - } else if (V.Flag === 1) { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else { - if ((V.seeImages === 1) && (V.seeSummaryImages === 1)) { - res.push(slaveImage(_Slave)); - } - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } - break; - case "Madam Select": - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Madam Workaround][$i = ${_ssi}]]`); - break; - case "Club": - if (V.Flag === 0) { - if (V.club <= V.clubSlaves) { - res.pop(); - continue; - } - if (_Slave.breedingMark !== 1 || V.propOutcome === 0) { - if ((_Slave.devotion > 50) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50) || (_Slave.trust > 50)) { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else { - res.push(`//${_Slave.slaveName} must be either more fearful of you or devoted to you//</div>`); - continue; - } - } else { - res.push(`//${_Slave.slaveName} is for private use only//</div>`); - continue; - } - } else if (V.Flag === 1) { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName} | Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } - break; - case "DJ Select": - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|DJ Workaround][$i = ${_ssi}]]`); - break; - case "Clinic": - if (V.Flag === 0) { - if (V.clinic <= V.clinicSlaves) { - res.pop(); - continue; - } - if ((_Slave.health < 20) || (V.Nurse !== 0 && ((_Slave.chem > 15 && V.clinicUpgradeFilters === 1) || (V.bellyImplants === 1 && _Slave.bellyImplant > -1) || (_Slave.pregKnown === 1 && (V.clinicSpeedGestation >= 0 || _Slave.pregControl === "speed up")) || (_Slave.pregAdaptation * 1000 < _Slave.bellyPreg || _Slave.preg > _Slave.pregData.normalBirth / 1.33)))) { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else { - res.push(`//${_Slave.slaveName} cannot benefit from the clinic//</div>`); - continue; - } - } else if (V.Flag === 1) { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName} | Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } - break; - case "Nurse Select": - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Nurse Workaround][$i = ${_ssi}]]`); - break; - case "Schoolroom": - if (V.Flag === 0) { - if (V.schoolroom <= V.schoolroomSlaves) { - res.pop(); - continue; - } - if ((_Slave.devotion >= -20) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50)) { - if ((_Slave.intelligenceImplant < 30) || (_Slave.voice !== 0 && _Slave.accent + V.schoolroomUpgradeLanguage > 2) || (_Slave.skill.oral <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.skill.whoring <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.skill.entertainment <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.skill.anal < 10 + V.schoolroomUpgradeSkills * 20) || ((_Slave.vagina >= 0) && (_Slave.skill.vaginal < 10 + V.schoolroomUpgradeSkills * 20))) { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else { - res.push(`//${_Slave.slaveName} already has a basic education//</div>`); - continue; - } - } else { - res.push(`//${_Slave.slaveName} is too resistant to learn//</div>`); - continue; - } - } else if (V.Flag === 1) { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } - break; - case "Schoolteacher Select": - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Schoolteacher Workaround][$i = ${_ssi}]]`); - break; - case "Dairy": - if (V.Flag === 0) { - const _dairySeed = V.bioreactorsXY + V.bioreactorsXX + V.bioreactorsHerm + V.bioreactorsBarren; - if (_Slave.assignment === "work in the dairy") { - res.pop(); - continue; - } - if (V.dairy <= V.dairySlaves + _dairySeed) { - res.pop(); - continue; - } - if ((_Slave.indentureRestrictions > 0) && (V.dairyRestraintsSetting > 1)) { - res.push(`//${_Slave.slaveName}'s indenture forbids extractive Dairy service.//</div>`); - continue; - } else if ((_Slave.indentureRestrictions > 1) && (V.dairyRestraintsSetting > 0)) { - res.push(`//${_Slave.slaveName}'s indenture allows only free range milking.//</div>`); - continue; - } else if (_Slave.breedingMark === 1 && V.propOutcome === 1 && V.dairyRestraintsSetting > 0) { - res.push(`//${_Slave.slaveName} may only be a free range cow//</div>`); - continue; - } else if ((V.dairyPregSetting > 0) && ((_Slave.bellyImplant !== -1) || (_Slave.broodmother !== 0))) { - res.push(`//${_Slave.slaveName}'s womb cannot accommodate current machine settings//</div>`); - continue; - } else { - if ((_Slave.lactation > 0) || (_Slave.balls > 0) || ((V.dairySlimMaintainUpgrade === 0 || V.dairySlimMaintain === 0) && (_Slave.boobs > 300 || _Slave.balls === 0 || V.dairyImplantsSetting === 1) && V.dairyImplantsSetting !== 2)) { - if ((_Slave.devotion > 20) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50) || (_Slave.amp === 1) || (V.dairyRestraintsUpgrade === 1)) { - if ((V.dairyStimulatorsSetting < 2) || (_Slave.anus > 2) || (V.dairyPrepUpgrade === 1)) { - if ((V.dairyPregSetting < 2) || (_Slave.vagina > 2) || (_Slave.ovaries === 0) || (V.dairyPrepUpgrade === 1)) { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else { - res.push(`//${_Slave.slaveName}'s vagina cannot accommodate current machine settings//</div>`); - continue; - } - } else { - res.push(`//${_Slave.slaveName}'s anus cannot accommodate current machine settings//</div>`); - continue; - } - } else { - res.push(`//${_Slave.slaveName} must be obedient in order to be milked here//</div>`); - continue; - } - } else if ((V.dairySlimMaintainUpgrade === 1 && V.dairySlimMaintain === 1) || (V.dairyImplantsSetting === 2) || (_Slave.boobs <= 300 && _Slave.balls > 0 && (V.dairyImplantsSetting === 0 || V.dairyImplantsSetting === 3))) { - res.push(`//${_Slave.slaveName} is not lactating ${(V.seeDicks > 0) ? 'or producing semen' : ''} and ${V.dairyName}'s current settings forbid the automatic implantation of lactation inducing drugs or manual stimulation to induce it, so she cannot be a cow//</div>`); - continue; - } else { - res.push(`//${_Slave.slaveName} is not lactating ${(V.seeDicks > 0) ? 'or producing semen' : ''} and cannot be a cow//</div>`); - continue; - } - } - } else if (V.Flag === 1) { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } - break; - case "Milkmaid Select": - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Milkmaid Workaround][$i = ${_ssi}]]`); - break; - case "Farmyard": - if (V.Flag === 0) { - if (_Slave.assignment === "work as a farmhand") { - res.pop(); - continue; - } - if (V.farmyard <= V.farmyardSlaves) { - res.pop(); - continue; - } - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else if (V.Flag === 1) { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } - break; - case "Farmer Select": - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Farmer Workaround][$i = ${_ssi}]]`); - break; - case "Servants' Quarters": - if (V.Flag === 0) { - if (V.servantsQuarters <= V.servantsQuartersSlaves) { - res.pop(); - continue; - } - if ((_Slave.devotion >= -20) || ((_Slave.devotion >= -50) && (_Slave.trust <= 20)) || (_Slave.trust < -20)) { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else { - res.push(`//${_Slave.slaveName} must be either more fearful of you or devoted to you//</div>`); - continue; - } - } else if (V.Flag === 1) { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } - break; - case "Stewardess Select": - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Stewardess Workaround][$i = ${_ssi}]]`); - break; - case "Master Suite": - if (V.Flag === 0) { - if (V.masterSuite <= V.masterSuiteSlaves) { - res.pop(); - continue; - } - if ((_Slave.devotion > 20) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50)) { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else { - res.push(`//${_Slave.slaveName} is not sufficiently broken for the master suite//</div>`); - continue; - } - } else if (V.Flag === 1) { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } - break; - case "Concubine Select": - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Concubine Workaround][$i = ${_ssi}]]`); - break; - case "Cellblock": - if (_Slave.assignmentVisible !== 1) { - res.pop(); - continue; - } - if (V.Flag === 0) { - if (V.cellblock <= V.cellblockSlaves) { - res.pop(); - continue; - } - if ((_Slave.devotion < -20 && _Slave.trust >= -20) || (_Slave.devotion < -50 && _Slave.trust >= -50)) { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else { - res.push(`//${_Slave.slaveName} is sufficiently broken in so that the cellblock would have no effect//</div>`); - continue; - } - } else if (V.Flag === 1) { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } - break; - case "Wardeness Select": - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Wardeness Workaround][$i = ${_ssi}]]`); - break; - case "Arcade": - if (V.Flag === 0) { - if (_Slave.assignment === "be confined in the arcade") { - res.pop(); - continue; - } - if (V.arcade <= V.arcadeSlaves && V.arcadeUpgradeFuckdolls !== 1) { - res.pop(); - continue; - } - if ((_Slave.breedingMark !== 1 || V.propOutcome === 0)) { - if (_Slave.indentureRestrictions <= 0) { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } else { - res.push(`//${_Slave.slaveName}'s indenture forbids arcade service.//</div>`); - continue; - } - } else { - res.push(`//${_Slave.slaveName} is for private use only//</div>`); - continue; - } - } else { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`); - } - break; - case "Pit": - if (V.Flag === 0) { - if ((_Slave.indentureRestrictions > 0) && (V.pitLethal === 1)) { - res.push(`//${_Slave.slaveName}'s indenture forbids lethal fights.//</div>`); - continue; - } else if (_Slave.indentureRestrictions > 1) { - res.push(`//${_Slave.slaveName}'s indenture forbids fighting.//</div>`); - continue; - } else if (_Slave.breedingMark === 1 && V.propOutcome === 1) { - res.push(`//${_Slave.slaveName} may not participate in combat//</div>`); - continue; - } else { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Assign][$i = ${_ssi}]]`); - } - } else { - res.push(dividerAndImage(_Slave)); - res.push(`[[${_slaveName}|Retrieve][$i = ${_ssi}]]`); - } - break; case "Coursing Association": if (V.Flag === 0) { res.push(dividerAndImage(_Slave)); @@ -5579,86 +5258,18 @@ App.UI.slaveSummaryList = function (passageName) { } else if ((_Slave.assignment === "stay confined") && ((_Slave.devotion > 20) || ((_Slave.trust < -20) && (_Slave.devotion >= -20)) || ((_Slave.trust < -50) && (_Slave.devotion >= -50)))) { res.push("<strong><u><span class=lawngreen>stay confined.</span></u></strong>"); if (_Slave.sentence > 0) { - res.push(`(${_Slave.sentence} weeks)`); + res.push(` (${_Slave.sentence} weeks)`); } } else if (_Slave.choosesOwnAssignment === 1) { res.push('choose her own job'); } else { res.push(_Slave.assignment); - if (_Slave.sentence > 0) res.push(`${_Slave.sentence} weeks`); + if (_Slave.sentence > 0) res.push(` ${_Slave.sentence} weeks`); } res.push('. '); - /** @type {string[]} */ - const assignments = []; if ((V.displayAssignments === 1) && (passageName === "Main") && (_Slave.ID !== V.HeadGirl.ID) && (_Slave.ID !== V.Recruiter.ID) && (_Slave.ID !== V.Bodyguard.ID)) { - if (_Slave.assignment !== "rest") { - assignments.push(`<<link "Rest" "Main">><<= removeJob($slaves[${_ssi}], $slaves[${_ssi}].assignment)>><</link>>`); - } else { - assignments.push('Rest'); - } - if (_Slave.assignment !== "please you") { - assignments.push(`<<link "Fucktoy" "Main">><<= assignJob($slaves[${_ssi}], "please you")>><</link>>`); - } else { - assignments.push('Fucktoy'); - } - if (_Slave.indentureRestrictions <= 0 && (_Slave.breedingMark !== 1 || V.propOutcome === 0)) { - if (_Slave.assignment !== "work a glory hole") { - assignments.push(`<<link "Gloryhole" "Main">><<= assignJob($slaves[${_ssi}], "work a glory hole")>><</link>>`); - } else { - assignments.push('Hole'); - } - } - if (_Slave.fuckdoll === 0) { - /* NON-FUCKDOLL ASSIGNMENTS */ - if (_Slave.assignment !== "take classes") { - if ((_Slave.intelligenceImplant < 15) && ((_Slave.devotion >= -20) || ((_Slave.trust < -20) && (_Slave.devotion >= -50)) || (_Slave.trust < -50)) && (_Slave.fetish !== "mindbroken")) { - assignments.push(`<<link "Classes" "Main">><<= assignJob($slaves[${_ssi}], "take classes")>><</link>>`); - } else { - assignments.push('Classes'); - } - } else { - assignments.push('Classes'); - } - if (_Slave.assignment !== "be a servant") { - if (((_Slave.devotion >= -20) || ((_Slave.trust < -20) && (_Slave.devotion >= -50)) || (_Slave.trust < -50)) && canWalk(_Slave) && canSee(_Slave)) { - assignments.push(`<<link "House Servant" "Main">><<= assignJob($slaves[${_ssi}], "be a servant")>><</link>>`); - } else { - assignments.push('House Servant'); - } - } else { - assignments.push('House Servant'); - } - if ((_Slave.assignment !== "whore") && (_Slave.breedingMark !== 1 || V.propOutcome === 0)) { - assignments.push(`<<link "Whore" "Main">><<= assignJob($slaves[${_ssi}], "whore")>><</link>>`); - } else { - assignments.push('Whore'); - } - if ((_Slave.assignment !== "serve the public") && (_Slave.breedingMark !== 1 || V.propOutcome === 0)) { - assignments.push(`<<link "Public Servant" "Main">><<= assignJob($slaves[${_ssi}], "serve the public")>><</link>>`); - } else { - assignments.push('Public Servant'); - } - if ((_Slave.lactation > 0) || (_Slave.balls > 0)) { - if (_Slave.assignment !== "get milked") { - assignments.push(`<<link "Milked" "Main">><<= assignJob($slaves[${_ssi}], "get milked")>><</link>>`); - } else { - assignments.push('Milked'); - } - } - if (_Slave.assignment !== "stay confined") { - assignments.push(`<<link "Confinement" "Main">><<= assignJob($slaves[${_ssi}], "stay confined")>><</link>>`); - } else { - assignments.push('Confinement'); - } - if (_Slave.assignment !== "choose her own job") { - assignments.push(`<<link "Let ${_Slave.object} choose" "Main">><<= assignJob($slaves[${_ssi}], "choose her own job")>><</link>>`); - } else { - assignments.push(`Let ${_Slave.object} choose`); - } - } /* CLOSES FUCKDOLL CHECK */ - - res.push(assignments.join(" | ")); + res.push(App.UI.jobLinks.assignments(_ssi, "Main")); } const _numFacilities = V.brothel + V.club + V.dairy + V.farmyard + V.servantsQuarters + V.masterSuite + V.spa + V.clinic + V.schoolroom + V.cellblock + V.arcade + V.HGSuite; @@ -5668,119 +5279,7 @@ App.UI.slaveSummaryList = function (passageName) { V.returnTo = passageName; res.push('<br>Transfer to: '); - /** @type {string[]} */ - const transfers = []; - if (_Slave.assignment !== "rest" && _Slave.assignment !== "please you" && _Slave.assignment !== "take classes" && _Slave.assignment !== "be a servant" && _Slave.assignment !== "whore" && _Slave.assignment !== "serve the public" && _Slave.assignment !== "get milked" && _Slave.assignment !== "stay confined") { - transfers.push(`<<link "Penthouse" "Main">><<= removeJob($slaves[${_ssi}], $slaves[${_ssi}].assignment)>><</link>>`); - } else { - transfers.push('Penthouse'); - } - - if (V.arcade !== 0) { - if (V.arcade > V.arcadeSlaves && (_Slave.indentureRestrictions <= 0) && (_Slave.breedingMark !== 1 || V.propOutcome === 0)) { - transfers.push(`[[Arcade|Assign][$assignTo = "Arcade", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ - } else { - transfers.push('Arcade'); - } - } - - if (_Slave.fuckdoll === 0) { - /* NON-FUCKDOLL FACILITIES */ - if (V.clinic !== 0) { - if (V.clinic > V.clinicSlaves && (_Slave.health < 20 || (V.Nurse !== 0 && ((_Slave.chem > 15 && V.clinicUpgradeFilters === 1) || (V.bellyImplants === 1 && _Slave.bellyImplant > -1) || (_Slave.pregKnown === 1 && (V.clinicSpeedGestation >= 0 || _Slave.pregControl === "speed up")) || (_Slave.pregAdaptation * 1000 < _Slave.bellyPreg || _Slave.preg > _Slave.pregData.normalBirth / 1.33))))) { - transfers.push(`[[Clinic|Assign][$assignTo = "Clinic", $i =${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ - } else { - transfers.push('Clinic'); - } - } - - if (V.masterSuite !== 0) { - if (V.masterSuite > V.masterSuiteSlaves && ((_Slave.devotion > 20) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50))) { - transfers.push(`[[Master Suite|Assign][$assignTo = "Master Suite", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ - } else { - transfers.push('Master Suite'); - } - } - - if (V.cellblock !== 0) { - if (V.cellblock > V.cellblockSlaves && ((_Slave.devotion < -20 && _Slave.trust >= -20) || (_Slave.devotion < -50 && _Slave.trust >= -50))) { - transfers.push(`[[Cellblock|Assign][$assignTo = "Cellblock", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ - } else { - transfers.push('Cellblock'); - } - } - - if (V.schoolroom !== 0) { - if (V.schoolroom > V.schoolroomSlaves && (_Slave.fetish !== "mindbroken" && (_Slave.devotion >= -20 || (_Slave.devotion >= -50 && _Slave.trust < -20) || _Slave.trust < -50) && ((_Slave.intelligenceImplant < 30) || (_Slave.voice !== 0 && _Slave.accent + V.schoolroomUpgradeLanguage > 2) || (_Slave.skill.oral <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.skill.whoring <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.skill.entertainment <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.skill.anal < 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.vagina >= 0 && _Slave.skill.vaginal < 10 + V.schoolroomUpgradeSkills * 20)))) { - transfers.push(`[[Schoolroom|Assign][$assignTo = "Schoolroom", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ - } else { - transfers.push('Schoolroom'); - } - } - - if (V.servantsQuarters !== 0) { - if (V.servantsQuarters > V.servantsQuartersSlaves && (canWalk(_Slave) && canSee(_Slave) && (_Slave.devotion >= -20 || (_Slave.devotion >= -50 && _Slave.trust <= 20) || _Slave.trust < -20))) { - transfers.push(`[[Servants' Quarters|Assign][$assignTo = "Servants' Quarters", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ - } else { - transfers.push('Servants\' Quarters'); - } - } - - if (V.brothel !== 0) { - if (V.brothel > V.brothelSlaves && (((_Slave.devotion > 50) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50) || (_Slave.trust > 50)) && (_Slave.breedingMark !== 1 || V.propOutcome === 0))) { - transfers.push(`[[Brothel|Assign][$assignTo = "Brothel", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ - } else { - transfers.push('Brothel'); - } - } - - if (V.club !== 0) { - if (V.club > V.clubSlaves && (((_Slave.devotion > 50) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50) || (_Slave.trust > 50)) && (_Slave.breedingMark !== 1 || V.propOutcome === 0))) { - transfers.push(`[[Club|Assign][$assignTo = "Club", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ - } else { - transfers.push('Club'); - } - } - - if (V.dairy !== 0) { - const _dairySeed = V.bioreactorsXY + V.bioreactorsXX + V.bioreactorsHerm + V.bioreactorsBarren; - if (V.dairy <= V.dairySlaves + _dairySeed) { - transfers.push('Dairy'); - } else if (((_Slave.indentureRestrictions > 0) && (V.dairyRestraintsSetting > 1)) || ((_Slave.indentureRestrictions > 1) && (V.dairyRestraintsSetting > 0)) || (_Slave.breedingMark === 1 && V.propOutcome === 1 && V.dairyRestraintsSetting > 0) || ((V.dairyPregSetting > 0) && ((_Slave.bellyImplant !== -1) || (_Slave.broodmother > 0)))) { - transfers.push('Dairy'); - } else if (((_Slave.lactation > 0) || (_Slave.balls > 0)) || ((V.dairyFeedersUpgrade === 1) && (V.dairyFeedersSetting > 0) && (V.dairySlimMaintainUpgrade === 0))) { - transfers.push(`[[Dairy|Assign][$assignTo = "Dairy", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ - } else { - transfers.push('Dairy'); - } - } - - if (V.farmyard !== 0) { - if (V.farmyard > V.farmyardSlaves) { - transfers.push(`[[Farmyard|Assign][$assignTo = "Farmyard", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ - } else { - transfers.push('Farmyard'); - } - } - - if (V.spa !== 0) { - if (V.spa > V.spaSlaves && ((_Slave.devotion >= -20 || _Slave.fetish === "mindbroken") && (_Slave.health < 20 || _Slave.trust <= 60 || _Slave.devotion <= 60 || _Slave.fetish === "mindbroken" || _Slave.sexualFlaw !== "none" || _Slave.behavioralFlaw !== "none"))) { - transfers.push(`[[Spa|Assign][$assignTo = "Spa", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ - } else { - transfers.push('Spa'); - } - } - - if (V.nursery !== 0) { - if (V.nurseryNannies > V.nurserySlaves && (_Slave.devotion > 20 || _Slave.trust > 20 || _Slave.fetish === "mindbroken")) { - transfers.push(`[[Nursery|Assign][$assignTo = "Nursery", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */ - } else { - transfers.push('Nursery'); - } - } /* Closes transfer options check */ - - res.push(transfers.join(' | ')); - } /* CLOSES FUCKDOLL CHECK */ + res.push(App.UI.jobLinks.transfers(_ssi)); } } /* closes _numFacilities */ @@ -5799,6 +5298,12 @@ App.UI.slaveSummaryList = function (passageName) { V.slaves[_ssi] = _Slave; res.push('</div>'); + if (managerSelectFacility !== undefined) { + if (managerSelectFacility.slaveHasExperiancedForManagerPosition(_Slave)) { + res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? ' ' : ''); + res.push('@@.lime;Has applicable career experience.@@'); + } + } switch (passageName) { case "Main": continue; @@ -5838,12 +5343,6 @@ App.UI.slaveSummaryList = function (passageName) { res.push('[[Change or remove Attendant|Attendant Select]]'); } break; - case "Attendant Select": - if (setup.attendantCareers.includes(_Slave.career) || (_Slave.skill.attendant >= V.masteredXP)) { - res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? ' ' : ''); - res.push('@@.lime;Has applicable career experience.@@'); - } - break; case "Nursery": res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? ' ' : ''); if (V.Flag === 0) { @@ -5854,12 +5353,6 @@ App.UI.slaveSummaryList = function (passageName) { res.push('[[Change or remove Matron|Matron Select]]'); } break; - case "Matron Select": - if (setup.matronCareers.includes(_Slave.career) || (_Slave.skill.matron >= V.masteredXP)) { - res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? ' ' : ''); - res.push('@@.lime;Has applicable career experience.@@'); - } - break; case "Brothel": res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? ' ' : ''); if (V.Flag === 0) { @@ -5870,12 +5363,6 @@ App.UI.slaveSummaryList = function (passageName) { res.push('[[Change or remove Madam|Madam Select]]'); } break; - case "Madam Select": - if (setup.madamCareers.includes(_Slave.career) || (_Slave.skill.madam >= V.masteredXP)) { - res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? ' ' : ''); - res.push('@@.lime;Has applicable career experience.@@'); - } - break; case "Club": res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? ' ' : ''); if (V.Flag === 0) { @@ -5894,12 +5381,6 @@ App.UI.slaveSummaryList = function (passageName) { res.push(`<<link "Release ${_Slave.object} from $arcadeName" "Retrieve">><<set $i = ${_ssi}>><</link>>`); } break; - case "DJ Select": - if (setup.DJCareers.includes(_Slave.career) || (_Slave.skill.DJ >= V.masteredXP)) { - res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? ' ' : ''); - res.push('@@.lime;Has applicable career experience.@@'); - } - break; case "Clinic": res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? ' ' : ''); if (V.clinicUpgradeScanner === 1) { @@ -5913,12 +5394,6 @@ App.UI.slaveSummaryList = function (passageName) { res.push('[[Change or remove Nurse|Nurse Select]]'); } break; - case "Nurse Select": - if (setup.nurseCareers.includes(_Slave.career) || (_Slave.skill.nurse >= V.masteredXP)) { - res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? ' ' : ''); - res.push('@@.lime;Has applicable career experience.@@'); - } - break; case "Schoolroom": res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? ' ' : ''); if (V.Flag === 0) { @@ -5929,12 +5404,6 @@ App.UI.slaveSummaryList = function (passageName) { res.push('[[Change or remove Schoolteacher|Schoolteacher Select]]'); } break; - case "Schoolteacher Select": - if (setup.schoolteacherCareers.includes(_Slave.career) || (_Slave.skill.teacher >= V.masteredXP)) { - res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? ' ' : ''); - res.push('@@.lime;Has applicable career experience.@@'); - } - break; case "Dairy": res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? ' ' : ''); if (V.Flag === 0) { @@ -5945,12 +5414,6 @@ App.UI.slaveSummaryList = function (passageName) { res.push('[[Change or remove Milkmaid|Milkmaid Select]]'); } break; - case "Milkmaid Select": - if (setup.milkmaidCareers.includes(_Slave.career) || (_Slave.skill.milkmaid >= V.masteredXP)) { - res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? ' ' : ''); - res.push('@@.lime;Has applicable career experience.@@'); - } - break; case "Farmyard": res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? ' ' : ''); if (V.Flag === 0) { @@ -5961,12 +5424,6 @@ App.UI.slaveSummaryList = function (passageName) { res.push('[[Change or remove Farmer|Farmer Select]]'); } break; - case "Farmer Select": - if (setup.farmerCareers.includes(_Slave.career) || (_Slave.skill.farmer >= V.masteredXP)) { - res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? ' ' : ''); - res.push('@@.lime;Has applicable career experience.@@'); - } - break; case "Servants' Quarters": res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? ' ' : ''); if (V.Flag === 0) { @@ -5977,12 +5434,6 @@ App.UI.slaveSummaryList = function (passageName) { res.push('[[Change or remove Stewardess|Stewardess Select]]'); } break; - case "Stewardess Select": - if (setup.stewardessCareers.includes(_Slave.career) || (_Slave.skill.stewardess >= V.masteredXP)) { - res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? ' ' : ''); - res.push('@@.lime;Has applicable career experience.@@'); - } - break; case "Master Suite": res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? ' ' : ''); if (V.Flag === 0) { @@ -6003,12 +5454,6 @@ App.UI.slaveSummaryList = function (passageName) { res.push('[[Change or remove Wardeness|Wardeness Select]]'); } break; - case "Wardeness Select": - if (setup.wardenessCareers.includes(_Slave.career) || (_Slave.skill.wardeness >= V.masteredXP)) { - res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? ' ' : ''); - res.push('@@.lime;Has applicable career experience.@@'); - } - break; case "New Game Plus": res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? ' ' : ''); if (V.Flag === 0) { diff --git a/src/js/storyJS.js b/src/js/storyJS.js index 1548c981bf12685af4389e82e275ff8e0ef0acaa..8ece004e7cc16fd8ffee8c90c85b13c94448ba4c 100644 --- a/src/js/storyJS.js +++ b/src/js/storyJS.js @@ -159,13 +159,13 @@ window.milkAmount = /** @param {App.Entity.SlaveState} slave */ function (slave) } else { milk = (8 + ((calcs - 400) / 50)); } + if (slave.boobsImplant > 0) { + milk *= Math.max(.25, (1 - (slave.boobsImplant / slave.boobs))); + } if (slave.lactation === 2) { milk *= 1.2; } milk += (milk * ((slave.devotion - 50) / 200)); - if (slave.boobsImplant > 200) { - milk *= 0.9; - } calcs = (slave.hormoneBalance / 50); if (slave.balls !== 0 && calcs > -2) { calcs -= 1; diff --git a/src/js/utilJS.js b/src/js/utilJS.js index 9a818220e493659114da787fe9373181146c883f..4d702148361483e3fead571b04b500eb20933180 100644 --- a/src/js/utilJS.js +++ b/src/js/utilJS.js @@ -1700,3 +1700,22 @@ window.changeSkinTone = function(skin, value) { } return prop; }; + + +/** + * Creates a span for an link with tooltip containing the reasons why it is disabled + * @param {string} link + * @param {string[]} reasons + * @returns {string} + */ +App.UI.disabledLink = function(link, reasons) { + const tooltips = reasons.length === 1 ? + `<span class="tooltip">${reasons}</span>`: + `<div class="tooltip"><ul>${reasons.map(e => `<li>${e}</li>`).join('')}</ul></div>`; + return '<span class="textWithTooltip">' + link + tooltips + '</span>'; +} + + +App.Utils.slaveRefString = function(i) { + return i >= 0 ? `$slaves[${i}]` : '$activeSlave'; +} diff --git a/src/pregmod/incubator.tw b/src/pregmod/incubator.tw index c41e4525217eaa1aafc9bf7c74c3840bdc1cea5f..25ee6a8a7bfd3f11200b8ad48cb13edc238cf1cf 100644 --- a/src/pregmod/incubator.tw +++ b/src/pregmod/incubator.tw @@ -21,7 +21,7 @@ $incubatorNameCaps is a clean, cold hall designed to be lined with tanks and the It's empty and quiet. [[Decommission the incubator|Main][$incubator = 0, $incubatorUpgradeSpeed = 5, $incubatorUpgradeWeight = 0, $incubatorUpgradeMuscles = 0, $incubatorUpgradeReproduction = 0, $incubatorUpgradeGrowthStims = 0, $incubatorWeightSetting = 0, $incubatorMusclesSetting = 0, $incubatorReproductionSetting = 0, $incubatorGrowthStimsSetting = 0, $tanks = []]] <</if>> -<br>It can support $incubator <<if $incubator == 1>>child<<else>>children<</if>>. Currently $incubatorSlaves tanks are in use. +<br>It can support $incubator child<<if $incubator != 1>>ren<</if>>. There <<if $incubatorSlaves == 1>>is<<else>>are<</if>> currently $incubatorSlaves tank<<if $incubatorSlaves != 1>>s<</if>> in use in $incubatorName. [[Add another incubation tank|Incubator][cashX(forceNeg(Math.trunc(60000*$upgradeMultiplierArcology)), "capEx"), $incubator += 1]] //Costs <<print cashFormat(Math.trunc(60000*$upgradeMultiplierArcology))>> and will increase upkeep costs// <<if $freeTanks == 0>> All of the tanks are currently occupied by growing children. diff --git a/src/pregmod/physicalDevelopment.tw b/src/pregmod/physicalDevelopment.tw index c88999ace627e7cb18155d897e193badd533ca29..2f4771bdbaae6c53de60abde0083dbcc389782e8 100644 --- a/src/pregmod/physicalDevelopment.tw +++ b/src/pregmod/physicalDevelopment.tw @@ -4,6 +4,19 @@ <<set _rearQuirk = $args[0].geneticQuirks.rearLipedema == 2 ? 2 : 0>> <<set _rearQuirkDivider = _rearQuirk == 0 ? 1 : _rearQuirk>> +<<if $args[0].geneticQuirks.gigantomastia == 2 && $args[0].geneticQuirks.macromastia == 2>> + <<set _gigantomastiaMod = 3>> +<<elseif $args[0].geneticQuirks.gigantomastia == 2>> + <<set _gigantomastiaMod = 2>> +<<elseif $args[0].geneticQuirks.macromastia == 2>> + <<set _gigantomastiaMod = 1.5>> +<<elseif $args[0].geneticQuirks.gigantomastia == 3>> + <<set _gigantomastiaMod = 1.2>> +<<elseif $args[0].geneticQuirks.macromastia == 3>> + <<set _gigantomastiaMod = 1.1>> +<<else>> + <<set _gigantomastiaMod = 1>> +<</if>> <<if ($args[0].geneMods.NCS == 1)>> /* NCS completely blocks all natural physical growth: no height increases. It also blocks all hormonal secondary sexual * characteristics. So, on the female side: no boobs, no butt, no hips, and no labia. And on the male side: no dick, no clit, no balls, no scrotum, no shoulders. */ @@ -436,8 +449,8 @@ <<set $args[0].butt += 1>> <</if>> <</if>> - <<if $args[0].boobs < 600>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 600*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -458,8 +471,8 @@ <<set $args[0].butt += 1>> <</if>> <</if>> - <<if $args[0].boobs < 500>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 500*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -480,7 +493,7 @@ <<set $args[0].butt += 1>> <</if>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 100>> <</if>> <<if $args[0].clit > 0 && $args[0].clit < 4>> @@ -504,7 +517,7 @@ <<set $args[0].butt += 1>> <</if>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 50>> <</if>> <<if $args[0].clit > 0 && $args[0].clit < 4>> @@ -528,8 +541,8 @@ <<set $args[0].butt += 1>> <</if>> <</if>> - <<if $args[0].boobs < 300>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 300*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -557,8 +570,8 @@ <<set $args[0].butt += 1>> <</if>> <</if>> - <<if $args[0].boobs < 700>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 700*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -584,8 +597,8 @@ <<set $args[0].butt += 1>> <</if>> <</if>> - <<if $args[0].boobs < 600>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 600*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -611,7 +624,7 @@ <<set $args[0].butt += 1>> <</if>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 100>> <</if>> <<if $args[0].clit > 0 && $args[0].clit < 4>> @@ -640,7 +653,7 @@ <<set $args[0].butt += 1>> <</if>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 50>> <</if>> <<if $args[0].clit > 0 && $args[0].clit < 4>> @@ -669,8 +682,8 @@ <<set $args[0].butt += 1>> <</if>> <</if>> - <<if $args[0].boobs < 300>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 300*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -717,8 +730,8 @@ <<set $args[0].butt += 1>> <</if>> <</if>> - <<if $args[0].boobs < 1000>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 1000*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -758,8 +771,8 @@ <<set $args[0].butt += 1>> <</if>> <</if>> - <<if $args[0].boobs < 900>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 900*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -795,7 +808,7 @@ <<set $args[0].butt += 1>> <</if>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 100>> <</if>> <<if $args[0].clit > 0 && $args[0].clit < 4>> @@ -834,7 +847,7 @@ <<set $args[0].butt += 1>> <</if>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 50>> <</if>> <<if $args[0].clit > 0 && $args[0].clit < 4>> @@ -877,8 +890,8 @@ <<set $args[0].voice -= 1>> <</if>> <</if>> - <<if $args[0].boobs < 400>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 400*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -906,8 +919,8 @@ <<set $args[0].hips += 1>> <</if>> <</if>> - <<if $args[0].boobs < 800>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 800*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -928,8 +941,8 @@ <<set $args[0].hips += 1>> <</if>> <</if>> - <<if $args[0].boobs < 700>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 700*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -945,7 +958,7 @@ <<elseif $args[0].height <= 173>> <<set $args[0].height += 3>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 100>> <</if>> <<if $args[0].clit > 0 && $args[0].clit < 4>> @@ -964,7 +977,7 @@ <<elseif $args[0].height <= 173>> <<set $args[0].height += 3>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 50>> <</if>> <<if $args[0].clit > 0 && $args[0].clit < 4>> @@ -988,8 +1001,8 @@ <<set $args[0].hips += 1>> <</if>> <</if>> - <<if $args[0].boobs < 500>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 500*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -1015,8 +1028,8 @@ <<set $args[0].hips += 1>> <</if>> <</if>> - <<if $args[0].boobs < 900>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 900*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -1035,8 +1048,8 @@ <<set $args[0].hips += 1>> <</if>> <</if>> - <<if $args[0].boobs < 800>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 800*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -1050,7 +1063,7 @@ <<if $args[0].height <= 174>> <<set $args[0].height += either(1,1,1,2,2)>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 100>> <</if>> <<if $args[0].clit > 0 && $args[0].clit < 4>> @@ -1067,7 +1080,7 @@ <<if $args[0].height <= 174>> <<set $args[0].height += either(0,1,1,1,2)>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 50>> <</if>> <<if $args[0].clit > 0 && $args[0].clit < 4>> @@ -1084,8 +1097,8 @@ <<if $args[0].height <= 174>> <<set $args[0].height += either(0,0,1,1,1,2)>> <</if>> - <<if $args[0].boobs < 500>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 500*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -1111,8 +1124,8 @@ <<set $args[0].hips += 1>> <</if>> <</if>> - <<if $args[0].boobs < 1200>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 1200*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -1131,8 +1144,8 @@ <<set $args[0].hips += 1>> <</if>> <</if>> - <<if $args[0].boobs < 1000>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 1000*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -1146,7 +1159,7 @@ <<if $args[0].height <= 174>> <<set $args[0].height += either(1,1,1,2,2)>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 100>> <</if>> <<if $args[0].clit > 0 && $args[0].clit < 4>> @@ -1163,7 +1176,7 @@ <<if $args[0].height <= 174>> <<set $args[0].height += either(0,1,1,1,2)>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 50>> <</if>> <<if $args[0].clit > 0 && $args[0].clit < 4>> @@ -1180,8 +1193,8 @@ <<if $args[0].height <= 174>> <<set $args[0].height += either(0,0,1,1,1,2)>> <</if>> - <<if $args[0].boobs < 800>> - <<if random(1,100) > 50>> + <<if $args[0].boobs < 800*_gigantomastiaMod>> + <<if random(1,100) > 50/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -1207,8 +1220,8 @@ <<set $args[0].hips += 1>> <</if>> <</if>> - <<if $args[0].boobs < 1600>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 1600*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -1227,8 +1240,8 @@ <<set $args[0].hips += 1>> <</if>> <</if>> - <<if $args[0].boobs < 1200>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 1200*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -1242,7 +1255,7 @@ <<if $args[0].height <= 174>> <<set $args[0].height += either(1,1,1,2,2)>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 100>> <</if>> <<if $args[0].clit > 0 && $args[0].clit < 4>> @@ -1259,7 +1272,7 @@ <<if $args[0].height <= 174>> <<set $args[0].height += either(0,1,1,1,2)>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 50>> <</if>> <<if $args[0].clit > 0 && $args[0].clit < 4>> @@ -1276,8 +1289,8 @@ <<if $args[0].height <= 174>> <<set $args[0].height += either(0,0,1,1,1,2)>> <</if>> - <<if $args[0].boobs < 800>> - <<if random(1,100) > 60>> + <<if $args[0].boobs < 800*_gigantomastiaMod>> + <<if random(1,100) > 60/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -1303,8 +1316,8 @@ <<set $args[0].hips += 1>> <</if>> <</if>> - <<if $args[0].boobs < 2000>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 2000*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -1323,8 +1336,8 @@ <<set $args[0].hips += 1>> <</if>> <</if>> - <<if $args[0].boobs < 1600>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 1600*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -1338,7 +1351,7 @@ <<if $args[0].height <= 174>> <<set $args[0].height += either(1,1,1,2,2)>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 100>> <</if>> <<if $args[0].clit > 0 && $args[0].clit < 4>> @@ -1355,7 +1368,7 @@ <<if $args[0].height <= 174>> <<set $args[0].height += either(0,1,1,1,2)>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 50>> <</if>> <<if $args[0].clit > 0 && $args[0].clit < 4>> @@ -1372,8 +1385,8 @@ <<if $args[0].height <= 174>> <<set $args[0].height += either(0,0,1,1,1,2)>> <</if>> - <<if $args[0].boobs < 800>> - <<if random(1,100) > 70>> + <<if $args[0].boobs < 800*_gigantomastiaMod>> + <<if random(1,100) > 70/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -1911,7 +1924,7 @@ <<elseif $args[0].height <= 163>> <<set $args[0].height += 3>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 100>> <</if>> <<if $args[0].dick > 0 && $args[0].dick < 6>> @@ -1936,7 +1949,7 @@ <<elseif $args[0].height <= 163>> <<set $args[0].height += 3>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 50>> <</if>> <<if $args[0].dick > 0 && $args[0].dick < 6>> @@ -2024,7 +2037,7 @@ <<elseif $args[0].height <= 171>> <<set $args[0].height += 3>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 100>> <</if>> <<if $args[0].dick > 0 && $args[0].dick < 6>> @@ -2054,7 +2067,7 @@ <<elseif $args[0].height <= 168>> <<set $args[0].height += 3>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 50>> <</if>> <<if $args[0].dick > 0 && $args[0].dick < 6>> @@ -2132,8 +2145,8 @@ <<set $args[0].butt += 1>> <</if>> <</if>> - <<if $args[0].boobs < 1000>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 1000*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -2169,8 +2182,8 @@ <<set $args[0].butt += 1>> <</if>> <</if>> - <<if $args[0].boobs < 900>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 900*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -2191,7 +2204,7 @@ <<set $args[0].voice -= 1>> <</if>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 50>> <</if>> <<if $args[0].dick > 0 && $args[0].dick < 6>> @@ -2226,7 +2239,7 @@ <<set $args[0].voice -= 1>> <</if>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 50>> <</if>> <<if $args[0].dick > 0 && $args[0].dick < 6>> @@ -2298,8 +2311,8 @@ <<set $args[0].hips += 1>> <</if>> <</if>> - <<if $args[0].boobs < 800>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 800*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -2320,8 +2333,8 @@ <<set $args[0].hips += 1>> <</if>> <</if>> - <<if $args[0].boobs < 700>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 700*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -2337,7 +2350,7 @@ <<elseif $args[0].height <= 173>> <<set $args[0].height += 3>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 100>> <</if>> <<if $args[0].dick > 0 && $args[0].dick < 6>> @@ -2367,7 +2380,7 @@ <<elseif $args[0].height <= 173>> <<set $args[0].height += 3>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 50>> <</if>> <<if $args[0].dick > 0 && $args[0].dick < 6>> @@ -2437,8 +2450,8 @@ <<set $args[0].hips += 1>> <</if>> <</if>> - <<if $args[0].boobs < 900>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 900*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -2457,8 +2470,8 @@ <<set $args[0].hips += 1>> <</if>> <</if>> - <<if $args[0].boobs < 800>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 800*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -2472,7 +2485,7 @@ <<if $args[0].height <= 174>> <<set $args[0].height += either(1,1,1,2,2)>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 100>> <</if>> <<if $args[0].dick > 0 && $args[0].dick < 6>> @@ -2500,7 +2513,7 @@ <<if $args[0].height <= 174>> <<set $args[0].height += either(0,1,1,1,2)>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 50>> <</if>> <<if $args[0].dick > 0 && $args[0].dick < 6>> @@ -2560,8 +2573,8 @@ <<set $args[0].hips += 1>> <</if>> <</if>> - <<if $args[0].boobs < 1200>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 1200*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -2580,8 +2593,8 @@ <<set $args[0].hips += 1>> <</if>> <</if>> - <<if $args[0].boobs < 1000>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 1000*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -2595,7 +2608,7 @@ <<if $args[0].height <= 174>> <<set $args[0].height += either(1,1,1,2,2)>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 100>> <</if>> <<if $args[0].dick > 0 && $args[0].dick < 6>> @@ -2623,7 +2636,7 @@ <<if $args[0].height <= 174>> <<set $args[0].height += either(0,1,1,1,2)>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 50>> <</if>> <<if $args[0].dick > 0 && $args[0].dick < 6>> @@ -2670,8 +2683,8 @@ <<set $args[0].hips += 1>> <</if>> <</if>> - <<if $args[0].boobs < 1600>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 1600*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -2690,8 +2703,8 @@ <<set $args[0].hips += 1>> <</if>> <</if>> - <<if $args[0].boobs < 1200>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 1200*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -2705,7 +2718,7 @@ <<if $args[0].height <= 174>> <<set $args[0].height += either(1,1,1,2,2)>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 100>> <</if>> <<if $args[0].dick > 0 && $args[0].dick < 6>> @@ -2733,7 +2746,7 @@ <<if $args[0].height <= 174>> <<set $args[0].height += either(0,1,1,1,2)>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 50>> <</if>> <<if $args[0].dick > 0 && $args[0].dick < 6>> @@ -2780,8 +2793,8 @@ <<set $args[0].hips += 1>> <</if>> <</if>> - <<if $args[0].boobs < 2000>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 2000*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -2800,8 +2813,8 @@ <<set $args[0].hips += 1>> <</if>> <</if>> - <<if $args[0].boobs < 1600>> - <<if random(1,100) > 40>> + <<if $args[0].boobs < 1600*_gigantomastiaMod>> + <<if random(1,100) > 40/_gigantomastiaMod>> <<set $args[0].boobs += 100>> <</if>> <</if>> @@ -2815,7 +2828,7 @@ <<if $args[0].height <= 174>> <<set $args[0].height += either(1,1,1,2,2)>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 100>> <</if>> <<if $args[0].dick > 0 && $args[0].dick < 6>> @@ -2843,7 +2856,7 @@ <<if $args[0].height <= 174>> <<set $args[0].height += either(0,1,1,1,2)>> <</if>> - <<if $args[0].boobs > 200>> + <<if $args[0].boobs > 200 && _gigantomastiaMod != 3>> <<set $args[0].boobs -= 50>> <</if>> <<if $args[0].dick > 0 && $args[0].dick < 6>> diff --git a/src/pregmod/rePregInventor.tw b/src/pregmod/rePregInventor.tw index 85149afe6cb48118fba7f19b3cb338337cfb21e6..8d1549144dea6c8d881f622226b44cc1cb423b7d 100644 --- a/src/pregmod/rePregInventor.tw +++ b/src/pregmod/rePregInventor.tw @@ -27,7 +27,7 @@ <<else>> <<if $activeSlave.boobs >= 20000>> grin and rubs the sides of $his debilitatingly large breasts with anticipation. - <<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> + <<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> grin and pushes $his augmented tits together to give you a view of $his impressive cleavage. <<elseif $activeSlave.boobs >= 3000>> grin and hefts one of $his massive breasts with both hands, sucking on $his nipple to give you a show while you wait. @@ -239,7 +239,7 @@ sink face first into $his warm, room filling ass cleavage <<elseif $activeSlave.butt > 5>> grab generous handfuls of $his humongous ass - <<elseif Math.floor($activeSlave.buttImplant/$activeSlave.butt) > .60>> + <<elseif ($activeSlave.buttImplant/$activeSlave.butt) > .60>> rest the weight of your upper body on $his implant inflated ass cheeks <<elseif $activeSlave.butt > 2>> slap $his generous ass @@ -369,7 +369,7 @@ debilitating, insanely enormous ass <<elseif $activeSlave.butt > 5>> huge ass - <<elseif Math.floor($activeSlave.buttImplant/$activeSlave.butt) > .60>> + <<elseif ($activeSlave.buttImplant/$activeSlave.butt) > .60>> implant swollen ass cheeks <<elseif $activeSlave.butt > 2>> plump ass @@ -455,7 +455,7 @@ eye wateringly massive tits <<elseif ($activeSlave.boobs >= 3000)>> huge tits - <<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> + <<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> luscious, augmented tits <<else>> petite breasts @@ -465,7 +465,7 @@ couch smothering ass cheeks. <<elseif $activeSlave.butt > 5>> enormous ass. - <<elseif Math.floor($activeSlave.buttImplant/$activeSlave.butt) > .60>> + <<elseif ($activeSlave.buttImplant/$activeSlave.butt) > .60>> implant-filled ass. <<elseif $activeSlave.butt > 2>> delicious looking ass. @@ -612,7 +612,7 @@ causing $his insanely enormous tits to flop onto the tile at the pool's edge with a loud "thwack." <<elseif ($activeSlave.boobs >= 3000)>> resting $his enormous breasts on the pool's edge, causing them to push up into $his chin as $he looks up at you. - <<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> + <<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> resting $his huge, implant-distended tits on the pool's edge, causing them to push up into $his chin as $he looks up at you. <<else>> giving you a nice view of $his cute tits. @@ -648,7 +648,7 @@ colossal breasts spread out around you, completely surrounding your head. With some effort, you part $his heavy cleavage enough to be able to continue listening to $him without being smothered. <<elseif ($activeSlave.boobs >= 3000)>> massive chest fills the space between you, blocking your view of $his face. You spread $his cleavage enough to be able to continue listening to $him. - <<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> + <<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> fat, implanted tits fill the space between you, blocking your view of $his face. With some effort, you spread $his tightly packed, spherical cleavage enough to be able to continue listening to $him. <<else>> spherical belly pushes into your crotch. @@ -713,7 +713,7 @@ enormous, gel-slicked ass, <<elseif $activeSlave.butt > 4>> plush, gel-slicked ass, - <<elseif Math.floor($activeSlave.buttImplant/$activeSlave.butt) > .60>> + <<elseif ($activeSlave.buttImplant/$activeSlave.butt) > .60>> implant-filled, gel-slicked ass, <<elseif $activeSlave.butt > 2>> perfect, gel-slicked ass, diff --git a/src/pregmod/rePregInventorText.tw b/src/pregmod/rePregInventorText.tw index 90edf6bf416627c76b838ef1a31fddd1069373e6..30421c5e3d66fab2b3a4e60fbccceda91a55fa17 100644 --- a/src/pregmod/rePregInventorText.tw +++ b/src/pregmod/rePregInventorText.tw @@ -10,7 +10,7 @@ debilitatingly enormous, mind boggling breasts <<elseif ($activeSlave.boobs >= 3000)>> enormous breasts - <<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> + <<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> implant inflated tits <<else>> upper body @@ -70,7 +70,7 @@ rubs the bases of $his gargantuan breasts in hungry anticipation. <<elseif ($activeSlave.boobs >= 3000)>> rubs the sides of $his enormous breasts in hungry anticipation. - <<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> + <<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> rubs the sides of $his fat, implanted tits in hungry anticipation. <<else>> <<if $activeSlave.nipples != "fuckable">>tweaks<<else>>fingers<</if>> $his nipples through the sheer fabric of $his pretty slave gown while regarding the host with a look of hungry anticipation. @@ -80,7 +80,7 @@ pushes $his arm stubs into what little of the sides of $his gargantuan breasts $he can reach, a look of hungry anticipation on $his face. <<elseif ($activeSlave.boobs >= 3000)>> pushes $his arm stubs into the sides of $his enormous breasts, a look of hungry anticipation on $his face. - <<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> + <<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> pushes $his arm stubs into the sides of $his fat, implanted tits, a look of hungry anticipation on $his face. <<else>> rubs $his arm stubs against $his nipples through $his pretty slave gown, a look of hungry anticipation on $his face. @@ -152,7 +152,7 @@ your slave's astoundingly enormous, slimed up cleavage, pumping it up and down to get their unfathomable mass jiggling while she nibbles at and whispers into the squirming baby machine's ear, just loud enough for the mic to pick it up. <<elseif ($activeSlave.boobs >= 3000)>> your slave's massive, slimed up tits, lewdly abusing one breast while she nibbles at and whispers into the squirming baby machine's ear, just loud enough for the mic to pick it up. - <<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> + <<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> your slave's fat, implanted tits, pumping it up and down to get their tightly packed mass bobbing while she nibbles and whispers into the baby machine's ear, just loud enough for the mic to pick it up. <<else>> your slave's breasts, rubbing it up and down one of $his pert nipples while she simultaneously toys with the ridge of one of the baby machine's ears and both nibbles on and whispers into the other, just loud enough for the mic to pick it up. diff --git a/src/pregmod/saAgent.tw b/src/pregmod/saAgent.tw index 9016bdae8ac7b9cf3dc807bb21a3b52acd44ec18..3b2226747cb1b00c149ad0fd1b8bc5b34a88325d 100644 --- a/src/pregmod/saAgent.tw +++ b/src/pregmod/saAgent.tw @@ -1,5 +1,7 @@ :: SA agent [nobr] +<<set _gigantomastiaMod = $slaves[$i].geneticQuirks.gigantomastia == 2 ? ($slaves[$i].geneticQuirks.macromastia == 2 ? 3 : 2) : 1>> + <<if $slaves[$i].boobsImplantType == 1>> <<set $slaves[$i].boobsImplant += 50, $slaves[$i].boobs += 50>> <<if ($slaves[$i].boobs > 50000)>> @@ -9,19 +11,32 @@ <</if>> <</if>> <</if>> -<<if $slaves[$i].geneMods.NCS == 1>> - /* NCS is blocking boob expansion. */ -<<elseif ($slaves[$i].boobsImplant > 1000)>> - <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant < 1000) && (random(1,100) > 60)>> - <<set $slaves[$i].boobs += 50>> +<<if $slaves[$i].geneMods.NCS == 1>> /* NCS is blocking boob expansion. */ + <<if ($slaves[$i].boobsImplant > 1000)>> + <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant < 1000) && (random(1,100) > 60)>> + <<set $slaves[$i].boobs += 50>> + <</if>> + <<elseif ($slaves[$i].boobsImplant > 600)>> + <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant < 500) && (random(1,100) > 60)>> + <<set $slaves[$i].boobs += 50>> + <</if>> + <<elseif ($slaves[$i].boobsImplant > 0)>> + <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant < 300) && (random(1,100) > 60)>> + <<set $slaves[$i].boobs += 50>> + <</if>> <</if>> -<<elseif ($slaves[$i].boobsImplant > 600)>> - <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant < 500) && (random(1,100) > 60)>> - <<set $slaves[$i].boobs += 50>> +<</if>> +<<if $slaves[$i].geneticQuirks.macromastia == 2 && $slaves[$i].geneticQuirks.gigantomastia == 2>> + <<if $slaves[$i].boobs < 100000 && $slaves[$i].weight >= -95>> + <<set $slaves[$i].boobs += 30>> + <</if>> +<<elseif $slaves[$i].geneticQuirks.gigantomastia == 2>> + <<if $slaves[$i].boobs < 25000 && $slaves[$i].weight >= -95>> + <<set $slaves[$i].boobs += 20>> <</if>> -<<elseif ($slaves[$i].boobsImplant > 0)>> - <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant < 300) && (random(1,100) > 60)>> - <<set $slaves[$i].boobs += 50>> +<<elseif $slaves[$i].geneticQuirks.macromastia == 2>> + <<if $slaves[$i].boobs < 5000 && $slaves[$i].weight >= -95>> + <<set $slaves[$i].boobs += 10>> <</if>> <</if>> <<if $slaves[$i].buttImplantType == 1>> @@ -104,6 +119,12 @@ <<if $slaves[$i].pubertyXX == 0>> <<if $slaves[$i].physicalAge >= $slaves[$i].pubertyAgeXX>> <<set $slaves[$i].pubertyXX = 1>> + <<if $slaves[$i].geneticQuirks.gigantomastia == 3 && random(1,100) < $slaves[$i].hormoneBalance>> + <<set $slaves[$i].geneticQuirks.gigantomastia = 2>> + <</if>> + <<if $slaves[$i].geneticQuirks.macromastia == 3 && random(1,100) < $slaves[$i].hormoneBalance>> + <<set $slaves[$i].geneticQuirks.macromastia = 2>> + <</if>> <</if>> <</if>> <</if>> @@ -132,6 +153,12 @@ <</if>> <</if>> <<if ($slaves[$i].preg >= $slaves[$i].pregData.normalBirth/4)>> + <<if $slaves[$i].geneticQuirks.gigantomastia == 3 && random(1,200) < $slaves[$i].hormoneBalance>> + <<set $slaves[$i].geneticQuirks.gigantomastia = 2>> + <</if>> + <<if $slaves[$i].geneticQuirks.macromastia == 3 && random(1,200) < $slaves[$i].hormoneBalance>> + <<set $slaves[$i].geneticQuirks.macromastia = 2>> + <</if>> <<if $slaves[$i].geneMods.NCS == 1>> /* Sort-of No-op, NCS prevents boob growth */ <<set _boobTarget = 0>> @@ -176,6 +203,7 @@ <<set _boobTarget = 400>> <</if>> <</if>> + <<set _boobTarget *= _gigantomastiaMod>> <<if ($slaves[$i].pregType >= 30)>> <<if ($slaves[$i].weight <= 65)>> <<set $slaves[$i].weight += 1>> @@ -478,6 +506,13 @@ <<set $slaves[$i].induceLactation-->> <</if>> +<<if $slaves[$i].geneticQuirks.gigantomastia == 3 && random(70-$slaves[$i].physicalAge,300) < $slaves[$i].hormoneBalance>> + <<set $slaves[$i].geneticQuirks.gigantomastia = 2>> +<</if>> +<<if $slaves[$i].geneticQuirks.macromastia == 3 && random(70-$slaves[$i].physicalAge,300) < $slaves[$i].hormoneBalance>> + <<set $slaves[$i].geneticQuirks.macromastia = 2>> +<</if>> + <<if ($slaves[$i].hStyle != "shaved" && $slaves[$i].bald != 1 && $slaves[$i].haircuts == 0) && ($slaves[$i].hLength < 150)>> <<set $slaves[$i].hLength += 1>> <</if>> diff --git a/src/pregmod/saInflation.tw b/src/pregmod/saInflation.tw index bbb81ae68b986f79e1562340aa24f986a064db89..1b2f8e11e83462a1f516b8851f8c7f943cce2cea 100644 --- a/src/pregmod/saInflation.tw +++ b/src/pregmod/saInflation.tw @@ -530,11 +530,12 @@ <<if $slaves[$i].inflationType == "milk" && $slaves[$i].bellyFluid >= 1500>> <<set _rearQuirk = $slaves[$i].geneticQuirks.rearLipedema == 2 ? 2 : 0>> <<set _rearQuirkDivider = _rearQuirk == 0 ? 1 : _rearQuirk>> + <<set _gigantomastiaMod = $slaves[$i].geneticQuirks.gigantomastia == 2 ? ($slaves[$i].geneticQuirks.macromastia == 2 ? 3 : 2) : 1>> <<if $slaves[$i].weight < 200>> $His body @@.lime;grows a little more padded@@ as it absorbs the milk contained in $his digestive track. <<set $slaves[$i].weight += 2>> <</if>> - <<if random(1,100) > 50 && if $slaves[$i].boobs < 3000>> + <<if random(1,100) > 50/_gigantomastiaMod && if $slaves[$i].boobs < 3000*_gigantomastiaMod>> $His breasts @@.lime;swell@@ with added fat as $he digests the milk contained in $his digestive track. <<set $slaves[$i].boobs += 200>> <</if>> @@ -545,11 +546,12 @@ <<elseif $slaves[$i].inflationType == "food" && $slaves[$i].bellyFluid >= 1500>> <<set _rearQuirk = $slaves[$i].geneticQuirks.rearLipedema == 2 ? 2 : 0>> <<set _rearQuirkDivider = _rearQuirk == 0 ? 1 : _rearQuirk>> + <<set _gigantomastiaMod = $slaves[$i].geneticQuirks.gigantomastia == 2 ? ($slaves[$i].geneticQuirks.macromastia == 2 ? 3 : 2) : 1>> <<if $slaves[$i].weight < 200>> $His body @@.lime;rapidly gains weight@@ as it digests the food contained in $his digestive track. <<set $slaves[$i].weight += 4>> <</if>> - <<if random(1,100) > 50 && $slaves[$i].boobs < 3000>> + <<if random(1,100) > 50/_gigantomastiaMod && $slaves[$i].boobs < 3000*_gigantomastiaMod>> $His breasts @@.lime;swell@@ with added fat as $he digests the food contained in $his digestive track. <<set $slaves[$i].boobs += 200>> <</if>> diff --git a/src/uncategorized/PESS.tw b/src/uncategorized/PESS.tw index 43993f9163e190ac221f29ca91007c739f7d1990..d5679bb41bc7db040b824dafba7b9c166703d51b 100644 --- a/src/uncategorized/PESS.tw +++ b/src/uncategorized/PESS.tw @@ -388,9 +388,9 @@ $He sees you examining at $him, and looks back at you submissively, too tired to <</if>> <<else>> <<if ($activeSlave.vagina > 0)>> - $His pussy is warm and very wet, making penetration easy; $he gasps and arches $his back, clasping you between $his legs<<if canSee(activeSlave)>> as $his <<= App.Desc.eyeColor($activeSlave)>> eyes look deep into yours<</if>>. + $His pussy is warm and very wet, making penetration easy; $he gasps and arches $his back, clasping you between $his legs<<if canSee($activeSlave)>> as $his <<= App.Desc.eyeColor($activeSlave)>> eyes look deep into yours<</if>>. <<elseif ($activeSlave.anus > 0)>> - $His butt is relaxed and welcoming, and $he holds $his legs back to take missionary anal loving<<if canSee(activeSlave)>> as $his <<= App.Desc.eyeColor($activeSlave)>> eyes look deep into yours<</if>>. + $His butt is relaxed and welcoming, and $he holds $his legs back to take missionary anal loving<<if canSee($activeSlave)>> as $his <<= App.Desc.eyeColor($activeSlave)>> eyes look deep into yours<</if>>. <<else>> $He holds $his thighs together for frottage so $he can love you without losing $his virginity. <</if>> diff --git a/src/uncategorized/REFI.tw b/src/uncategorized/REFI.tw index cd566193a98c685569200daab36a788fe3ff7e18..e3ddfac49b678cca682df725cfaabbdffecbf839 100644 --- a/src/uncategorized/REFI.tw +++ b/src/uncategorized/REFI.tw @@ -1695,7 +1695,7 @@ There was a glint of envy <<if canSee($activeSlave)>>in $his eyes when $he saw<< <<elseif $activeSlave.butt <= 20>> absurdly massive <</if>> - ass around your cock. Deep within its quivering <<if Math.floor($activeSlave.buttImplant/$activeSlave.butt) > .60>>firmness<<else>>softness<</if>>, you can clearly feel how excited $he is over $his rear getting the attention it deserves. While $he may have expected anal, you've decided otherwise, so you go to work savoring the depths of $his butt cheeks. $He is <<if !canTalk($activeSlave)>>practically <</if>> mewling with lust by the time you cum in $him, joining you in orgasm as $he feels your seed trickle down $his lower back and down to $his chastity belt. + ass around your cock. Deep within its quivering <<if $activeSlave.buttImplant/$activeSlave.butt > .60>>firmness<<else>>softness<</if>>, you can clearly feel how excited $he is over $his rear getting the attention it deserves. While $he may have expected anal, you've decided otherwise, so you go to work savoring the depths of $his butt cheeks. $He is <<if !canTalk($activeSlave)>>practically <</if>> mewling with lust by the time you cum in $him, joining you in orgasm as $he feels your seed trickle down $his lower back and down to $his chastity belt. @@.hotpink;$He has become more devoted to you,@@ and @@.lightcoral;$his sexuality now focuses on $his rear end.@@ <<elseif $activeSlave.butt >= 2>> slip your cock between $his @@ -1706,7 +1706,7 @@ There was a glint of envy <<if canSee($activeSlave)>>in $his eyes when $he saw<< <<elseif $activeSlave.butt <= 5>> enormous <</if>> - <<if Math.floor($activeSlave.buttImplant/$activeSlave.butt) > .60>>firm<<else>>soft<</if>> buttocks, atop $his anal chastity. You let $him quiver with anticipation for a little before reminding $him that the belt's removal is a reward for good slaves, and you might give release $him from it one day — but that $he doesn't deserve it yet. With that, you begin thrusting against $his rear, enjoying the twin pairs off flesh against your palms. $He is <<if !canTalk($activeSlave)>>practically <</if>> mewling with lust by the time you cum on $him, joining you in orgasm as $he feels your seed trickle down $his lower back and down to $his chastity belt. + <<if $activeSlave.buttImplant/$activeSlave.butt > .60>>firm<<else>>soft<</if>> buttocks, atop $his anal chastity. You let $him quiver with anticipation for a little before reminding $him that the belt's removal is a reward for good slaves, and you might give release $him from it one day — but that $he doesn't deserve it yet. With that, you begin thrusting against $his rear, enjoying the twin pairs off flesh against your palms. $He is <<if !canTalk($activeSlave)>>practically <</if>> mewling with lust by the time you cum on $him, joining you in orgasm as $he feels your seed trickle down $his lower back and down to $his chastity belt. <<else>> rest your cock between $his <<if $activeSlave.butt <= 0>> diff --git a/src/uncategorized/REFS.tw b/src/uncategorized/REFS.tw index 08bbbb8183099741f3d64d87ea15258681b2ca79..b8847e3b3051ca4f1684837a56358b450557992f 100644 --- a/src/uncategorized/REFS.tw +++ b/src/uncategorized/REFS.tw @@ -106,7 +106,7 @@ <<set $activeSlave.devotion = 100>> <<set $activeSlave.trust = 100>> <<set $activeSlave.health = 100>> - <<set $activeSlave.Hcolor = "grey">> + <<set $activeSlave.hColor = "grey">> <<set $activeSlave.hStyle = "bun">> <<set $activeSlave.clothes = "conservative clothing">> diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw index 569f4a5ba4f16cd524351746b1456063d00d3463..8e56aea55d6005680f5faaa699e8c336d40ddb97 100644 --- a/src/uncategorized/RESS.tw +++ b/src/uncategorized/RESS.tw @@ -709,7 +709,7 @@ The sight is comical. <<if $activeSlave.belly >= 5000>>Four<<else>>Three<</if>> <</if>> <<if ($activeSlave.nipples == "huge")>>Each is capped by a gigantic nipple, soft with relaxation and the heat of the spa, but hugely prominent.<</if>> <<if ($activeSlave.areolae > 1)>>$His areolae spread widely around each nipple.<</if>> -<<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> +<<if $activeSlave.boobsImplant/$activeSlave.boobs >= .60>> $His implants keep $his tits shaped in exactly the same way regardless of currents in the water, betraying their fake nature. <<elseif ($activeSlave.boobsImplant == 0)>> $His all-natural boobs move gently with currents in the water. @@ -1512,7 +1512,7 @@ into your bedroom. Since $he is not allowed to ask questions, $he says nothing, <<case "shaped areolae">> <<EventNameLink>>'s breasts are real works of art. $His -<<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> +<<if ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> massive fake <<elseif $activeSlave.boobsImplant > 0>> massive, partially unnatural @@ -2976,7 +2976,7 @@ neck, $activeSlave.skin, <<if $activeSlave.muscles > 95>>hugely muscled<<elseif Working in your office early in the morning, you can hear the low, human hum of your slaves who work during the daytime busily getting ready for their days. Suddenly, there's motion at your doorway, and <<EventNameLink>> hurries in. $He's nude, $his $activeSlave.skin skin glowing with the fresh cleanliness of having just gotten out of the shower. $He <<if canSee($activeSlave)>>glances at you<<elseif canHear($activeSlave)>>listens<<else>>waits<</if>> to see if $he's unwelcome, and seeing no sign that $he is, the devoted $desc comes over to your desk. <<if $activeSlave.boobs < 400>> $His little $activeSlave.boobShape tits barely move at all as $he walks, though $his $activeSlave.nipples nipples certainly catch your eye. -<<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .75>> /* tiny little 200cc implants in 20000cc tits are laughable. Now we make sure those tits are fake. */ +<<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .75>> /* tiny little 200cc implants in 20000cc tits are laughable. Now we make sure those tits are fake. */ $His fake tits barely move at all as $he walks, their shape maintained by $his implants. <<elseif $activeSlave.boobs < 1000>> $His lovely $activeSlave.boobShape boobs move delightfully as $he walks, and $his $activeSlave.nipples nipples bounce prettily. @@ -3200,7 +3200,7 @@ hips <</if>> <</if>> in time with $his humming, $he runs $his hands sensually over them, along $his flanks, and over $his chest, <<if $activeSlave.boobs > 3000>>letting the vast mass of $his tits rest atop them<<elseif $activeSlave.boobs > 1000>>groping $his own heavy breasts<<else>>$his fingertips circling $his nipples<</if>> for an alluring moment. As $his hips maintain their sexual rhythm, $his hands continue, tracing up $his throat, over $his moist lips, and over $his head. As $he stretches up, $his torso begins to sway with the barely perceptible beat, $his -<<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .75>> +<<if ($activeSlave.boobsImplant/$activeSlave.boobs) >= .75>> fake tits staying perfectly in place. <<elseif $activeSlave.boobs > 2000>> $activeSlave.boobShape boobs swaying along. @@ -3669,7 +3669,7 @@ Passing by the kitchen in the morning, you take a moment to listen to the low hu "It's your belly," the other slave explains. "They love how big and round it is. If you look pregnant, they'll be all over you. Even if it's fake, they won't care." <<elseif $arcologies[0].FSRepopulationFocusPregPolicy == 1 && $activeSlave.bellyPreg >= 5000>> "It's your belly," the other slave explains. "Preggos are in these days and you aren't exactly lacking in the 'with child' department." -<<elseif ($arcologies[0].FSTransformationFetishist != "unset") && Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .50>> +<<elseif ($arcologies[0].FSTransformationFetishist != "unset") && ($activeSlave.boobsImplant/$activeSlave.boobs) >= .50>> "It's your fake tits," the other slave explains. "They love how fake they look, here. If you look like a bimbo, they don't care if you're a little mature." <<elseif ($arcologies[0].FSHedonisticDecadence != "unset") && ($activeSlave.weight > 95)>> "You're so fat," the other slave explains. "Everyone here loves thick girls. They don't care that you're a little mature; that just means you understand life's pleasures more." @@ -4310,7 +4310,7 @@ You pass through your slaves' living area as some of them are starting their day <<setLocalPronouns $slaves[_ress] 2>> $slaves[_ress].slaveName is still asleep in it, and the shape of _his2 <<if $slaves[_ress].belly >= 120000>>_belly belly is - <<elseif $slaves[_ress].boobs > 25000>>immense <<if Math.floor($slaves[_ress].boobsImplant/$slaves[_ress].boobs) >= .60>>fake <</if>> breasts are + <<elseif $slaves[_ress].boobs > 25000>>immense <<if ($slaves[_ress].boobsImplant/$slaves[_ress].boobs) >= .60>>fake <</if>> breasts are <<elseif $slaves[_ress].dick > 10>>monster dick is <<elseif $slaves[_ress].balls > 8>>immense testicles are <<elseif $slaves[_ress].weight > 130>>gigantic body is @@ -4321,8 +4321,8 @@ You pass through your slaves' living area as some of them are starting their day <<elseif canAchieveErection($slaves[_ress])>>half-erect dick is <<elseif $slaves[_ress].belly >= 5000>>big <<if $slaves[_ress].bellyPreg >= 3000>>pregnant <</if>>belly is <<elseif $slaves[_ress].nipples == "huge">>huge nipples are - <<elseif $slaves[_ress].boobs > 5000>>monstrous <<if Math.floor($slaves[_ress].boobsImplant/$slaves[_ress].boobs) >= .60>>fake <</if>> breasts are - <<elseif $slaves[_ress].boobs > 2000>>huge <<if Math.floor($slaves[_ress].boobsImplant/$slaves[_ress].boobs) >= .60>>fake <</if>> tits are + <<elseif $slaves[_ress].boobs > 5000>>monstrous <<if ($slaves[_ress].boobsImplant/$slaves[_ress].boobs) >= .60>>fake <</if>> breasts are + <<elseif $slaves[_ress].boobs > 2000>>huge <<if ($slaves[_ress].boobsImplant/$slaves[_ress].boobs) >= .60>>fake <</if>> tits are <<elseif $slaves[_ress].butt > 5>>monstrous ass is <<elseif $slaves[_ress].balls > 8>>giant balls are <<elseif $slaves[_ress].weight > 95>>chubby body is @@ -4347,7 +4347,7 @@ It's time for $him to start another strenuous day of carrying the weight of $his <<else>> heavy <</if>> -<<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> +<<if ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> implants. <<elseif $activeSlave.lactation>> milk-bearing udders. @@ -4385,7 +4385,7 @@ $He kneels with $his legs together, and then sits back, $his cute butt resting lightly on $his heels. <</if>> Then $he reaches $his arms back, and leans back, as far as $he can go. $He arches $his spine, closing $his eyes voluptuously as $he enjoys the stretch in $his lower back. The pose thrusts $his chest up and out, -<<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> +<<if ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> but $his implants stretch $his skin so tight that they stay tacked to $his chest, right where they are. $He looks like a stereotypical silicone queen, arching $his back and sticking $his fake cans out. <<elseif $activeSlave.boobShape == "perky">> making $his spectacularly perky breasts point their $activeSlave.nipples nipples straight up at the ceiling. It's incredible, that they've managed to maintain their youthful shape despite their great weight. @@ -7502,7 +7502,7 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He <<elseif ($activeSlave.dick > 1)>> $his soft cock flop around as one of the air jets strikes it.) <<elseif ($activeSlave.boobs > 800)>> - <<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> + <<if ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> how $his fake tits refuse to jiggle under the air jets.) <<else>> how the air jets produce a lot of delectable jiggling when they strike $his boobs.) @@ -8723,7 +8723,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address After so much of this that $he's clearly ready to orgasm at the slightest further touch, you grab $his <<if $activeSlave.boobs > 8000>> massive tits - <<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> + <<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> fake tits <<elseif $activeSlave.boobs > 2000>> huge boobs @@ -10523,7 +10523,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address <</if>> <<else>> $He groans with lust as pull $him onto your lap to make out. "Ohh," $he moans as you run your hands across $his - <<if $activeSlave.boobsImplant >= 1000 && (Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60)>> + <<if $activeSlave.boobsImplant >= 1000 && (($activeSlave.boobsImplant/$activeSlave.boobs) >= .60)>> bimbo <<elseif $activeSlave.boobs >= 1000 && $activeSlave.butt > 5 && $activeSlave.hips > 0>> fecund @@ -11497,7 +11497,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address <br> <<link "while in pain">> <<EventNameDelink $activeSlave>> <<replace "#result">> - You tell $him that $he deserves a way to get off for coming to tell you rather than breaking the rules. For the rest of the week, $he can come to you and masturbate: but you will abuse $him while $he does. $He starts to cry in fear, but <<if $activeSlave.belly >= 10000>>struggles to get<<else>>hurriedly gets<</if>> up on your desk anyway. You swat $his thighs apart so $he can get a hand down there. $He hesitates desperately before touching $himself, knowing that as soon as $he does the pain will start, but $his horniness wins out. You aim a vicious flick at $his <<if ($activeSlave.nipples == "huge")>>absurd nipples<<elseif ($activeSlave.nipples != "tiny")>>big nipples<<else>>nipples<</if>> and then take a crop out of your desk, flogging $his <<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>fake<<elseif ($activeSlave.boobs > 1000)>>jiggling<<else>>firm<</if>> breasts without mercy. $He finally orgasms and flees, falling over $his own feet in $his desperation; $his acceptance of sexual slavery @@.hotpink;has increased.@@ + You tell $him that $he deserves a way to get off for coming to tell you rather than breaking the rules. For the rest of the week, $he can come to you and masturbate: but you will abuse $him while $he does. $He starts to cry in fear, but <<if $activeSlave.belly >= 10000>>struggles to get<<else>>hurriedly gets<</if>> up on your desk anyway. You swat $his thighs apart so $he can get a hand down there. $He hesitates desperately before touching $himself, knowing that as soon as $he does the pain will start, but $his horniness wins out. You aim a vicious flick at $his <<if ($activeSlave.nipples == "huge")>>absurd nipples<<elseif ($activeSlave.nipples != "tiny")>>big nipples<<else>>nipples<</if>> and then take a crop out of your desk, flogging $his <<if ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>fake<<elseif ($activeSlave.boobs > 1000)>>jiggling<<else>>firm<</if>> breasts without mercy. $He finally orgasms and flees, falling over $his own feet in $his desperation; $his acceptance of sexual slavery @@.hotpink;has increased.@@ <<set $activeSlave.devotion += 4>> <<if ($activeSlave.fetish == "masochist") && ($activeSlave.fetishKnown == 1)>> <<set $activeSlave.fetishStrength += 4>> @@ -15536,10 +15536,10 @@ You tell $him kindly that you understand, and that $he'll be trained to address <<EventNameDelink $activeSlave>> <<replace "#result">> $His eyes fly open as $he feels someone groping $him. - <<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> + <<if ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> You're mauling $his fake boob, squeezing it and making the skin of $his breast, which is already stretched rather taut by the implant, stretch a bit farther. <<elseif $activeSlave.boobs > 3000>> - You're hefting and massaging $his mass of breastflesh, playing with $his <<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) < .60>>mostly <</if>>natural boob, making $his huge soft udder bounce and jiggle. + You're hefting and massaging $his mass of breastflesh, playing with $his <<if ($activeSlave.boobsImplant/$activeSlave.boobs) < .60>>mostly <</if>>natural boob, making $his huge soft udder bounce and jiggle. <<elseif $activeSlave.lactation > 0>> You're kneading and massaging $his udder, and the milk begins to <<if $activeSlave.nipples != "fuckable">>bead at<<else>>leak from<</if>> the cow's nipple. <<elseif $activeSlave.boobs > 300>> @@ -18259,7 +18259,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address <<else>> breasts. <</if>> - <<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> + <<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> fake tits. <<elseif $activeSlave.weight > 160>> fat folds. @@ -18949,7 +18949,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address $He gestures $his thanks, <</if>> and then makes a show of deciding. $He <<if $activeSlave.intelligence+$activeSlave.intelligenceImplant < -15>>doesn't have to pretend<<else>>cheekily pretends<</if>> to be an airheaded bimbo puzzling over how $he wants to approach a fuck, bouncing - <<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> + <<if ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> $his fake tits a little, <<elseif $activeSlave.boobs > 4000>> $his monstrous udders heavily, @@ -20015,7 +20015,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address <<EventNameDelink $activeSlave>> <<replace "#result">> Deciding to take pity, you stand up<<if $PC.dick == 0>>, pull on a strap-on,<</if>> and approach $his crumpled, weeping form. You reach down and take $his clasped hands in yours, pulling $him gently to $his feet and giving $him a quick cuddle. You make it just long enough to reassure $him that you care for $him, but not long enough to frustrate $him even further; $his extreme horniness is only sharpened by the hug and the way it traps $his arms between $his - <<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> + <<if ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> fake boobs <<elseif $activeSlave.boobs > 4000>> monstrous udders @@ -20444,7 +20444,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address straddling $his ribcage just below $his breasts. <</if>> $His huge breasts rest atop your inner thighs, - <<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> + <<if ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> $his skin taut against yours, from the implants. <<else>> heavy and soft and female. @@ -20557,7 +20557,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address big belly jiggling. <<elseif $activeSlave.belly >= 5000>> as fast as $his swollen belly will allow. - <<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> + <<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> fake tits bouncing. <<elseif $activeSlave.butt > 4>> $his big booty jiggling. @@ -20954,7 +20954,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address massage the soft butter into $his monstrous tits, enjoying the struggle it takes to heft each butter-slick, glistening melon with both hands. You note with satisfaction $his nipples harden with arousal. <<elseif ($activeSlave.boobs >= 3000)>> massage the soft butter into each of $his huge tits. Your slave cranes $his head back a bit to avoid being smothered by $his own breasts as you work the butter into them, but you can tell $he's aroused by what you're doing — $his nipples have turned hard as rocks. - <<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> + <<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>> massage the soft butter into $his fat, fake titties, noting with satisfaction $his nipples harden with arousal. <<elseif ($activeSlave.boobs >= 650)>> massage the soft butter into $his big tits, noting with satisfaction $his nipples harden with arousal. diff --git a/src/uncategorized/arcade.tw b/src/uncategorized/arcade.tw index 8b7f8a04404a3f6921008a199a86e694d7bd8b52..62be9de5d90eb699043808bed7345b749fd3fb19 100644 --- a/src/uncategorized/arcade.tw +++ b/src/uncategorized/arcade.tw @@ -87,7 +87,7 @@ $arcadeNameCaps <</if>> <</if>> -<br>It can support $arcade inmates. Currently $arcadeSlaves <<if $arcadeSlaves == 1>>slave is<<else>>slaves are<</if>> incarcerated. +<br>It can support $arcade inmates. There <<if $arcadeSlaves == 1>>is<<else>>are<</if>> currently $arcadeSlaves <<if $arcadeSlaves != 1>>s<</if>> incarcerated in $arcadeName. <<if $arcadeUpgradeFuckdolls == 1 && $arcadeSlaves > 1>> <br>The arcade has automatic fuckdolification functions and you can decide to convert your least popular slave at the end of the week. [[Activate|Arcade][$arcadeUpgradeFuckdolls == 2]] <<elseif $arcadeUpgradeFuckdolls == 2>> diff --git a/src/uncategorized/arcadeReport.tw b/src/uncategorized/arcadeReport.tw index a9bc4aaf6cb6c4b01e049f03934945b88339d987..190244fc68dd9cdf318d437bf65e37fdc184afa8 100644 --- a/src/uncategorized/arcadeReport.tw +++ b/src/uncategorized/arcadeReport.tw @@ -102,11 +102,12 @@ <</if>> <<set _milkprofits += $cash-_oldCash>> <<set _growth = 0>> + <<set _gigantomastiaMod = $slaves[$i].geneticQuirks.gigantomastia == 2 ? ($slaves[$i].geneticQuirks.macromastia == 2 ? 3 : 2) : 1>> <<if ($slaves[$i].boobs < 2000)>> <<set _growth = 100>> - <<elseif ($slaves[$i].boobs < 5000)>> + <<elseif ($slaves[$i].boobs < 5000*_gigantomastiaMod)>> <<set _growth = 50>> - <<elseif ($slaves[$i].boobs < 10000)>> + <<elseif ($slaves[$i].boobs < 10000*_gigantomastiaMod)>> <<set _growth = 25>> <</if>> <<if ($slaves[$i].geneMods.NCS == 1)>> diff --git a/src/uncategorized/cellblock.tw b/src/uncategorized/cellblock.tw index c3bfd3068786fc14a325d40046d9ee10e29244bb..b0fd72eada40ff70d8d0a081f530e7ad1170430b 100644 --- a/src/uncategorized/cellblock.tw +++ b/src/uncategorized/cellblock.tw @@ -87,7 +87,7 @@ $cellblockNameCaps <</if>> <<set _Tmult0 = Math.trunc($cellblock*1000*$upgradeMultiplierArcology)>> -<br>$cellblockNameCaps has room for $cellblock slaves to be kept in close confinement. Currently $cellblockSlaves <<if $cellblockSlaves == 1>>is<<else>>are<</if>> kept in close confinement. +<br>$cellblockNameCaps has room for $cellblock slaves to be kept in close confinement. There <<if $cellblockSlaves == 1>>is<<else>>are<</if>> currently $cellblockSlaves <<if $cellblockSlaves != 1>>s<</if>> kept in close confinement in $cellblockName. [[Expand the cellblock|Cellblock][cashX(forceNeg(_Tmult0), "capEx"), $cellblock += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>// <br> diff --git a/src/uncategorized/clinic.tw b/src/uncategorized/clinic.tw index 1180023b4e6897bc0d69d74128ca3d118632c0dc..ddb516b27b94453e8042a5827f8eec94b36a9c9f 100644 --- a/src/uncategorized/clinic.tw +++ b/src/uncategorized/clinic.tw @@ -87,7 +87,7 @@ $clinicNameCaps <</if>> <<set _Tmult0 = Math.trunc($clinic*1000*$upgradeMultiplierArcology)>> -<br>$clinicNameCaps has room to support $clinic slaves while they receive treatment. Currently $clinicSlaves slave<<if $clinicSlaves == 1>> is<<else>>s are<</if>> receiving treatment. +<br>$clinicNameCaps has room to support $clinic slaves while they receive treatment. There <<if $clinicSlaves == 1>>is<<else>>are<</if>> currently $clinicSlaves slave<<if $clinicSlaves != 1>>s<</if>> receiving treatment in $clinicName. [[Expand the clinic|Clinic][cashX(forceNeg(_Tmult0), "capEx"), $clinic += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>// <br> diff --git a/src/uncategorized/club.tw b/src/uncategorized/club.tw index 1231f6018d1c489d4edbcfbb79ba71cdc84ffbf0..2350808bbda0370a844f69b7e114a1070d7a434d 100644 --- a/src/uncategorized/club.tw +++ b/src/uncategorized/club.tw @@ -218,7 +218,7 @@ $clubNameCaps <</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. Currently $clubSlaves <<if $clubSlaves == 1>>is<<else>>are<</if>> serving in $clubName. +<br>There are rooms off $clubName to support slaves as they work as club sluts. They can support $club slaves. There <<if $clubSlaves == 1>>is<<else>>are<</if>> currently $clubSlaves slave<<if $clubSlaves != 1>>s<</if>> serving in $clubName. [[Expand the club|Club][cashX(forceNeg(_Tmult0), "capEx"), $club += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>> and will increase upkeep costs// <br> diff --git a/src/uncategorized/clubReport.tw b/src/uncategorized/clubReport.tw index 5e489a9b9cb0c68c9f9215dd6ccb9a5e8ba3f58b..d665aac59a929593ab42724ea238c973b4bbcd3a 100644 --- a/src/uncategorized/clubReport.tw +++ b/src/uncategorized/clubReport.tw @@ -88,7 +88,7 @@ <</if>> <<if (_DL + $slavesGettingHelp < 10)>> <<set $i = _FLs>> /* apply following SA passages to facility leader */ - <<if ($legendaryEntertainerID == 0) && ($slaves[_FLs].prestige == 0) && ($slaves[_FLs].entertainSkill >= 100) && ($slaves[_FLs].devotion > 50)>> + <<if ($legendaryEntertainerID == 0) && ($slaves[_FLs].prestige == 0) && ($slaves[_FLs].skill.entertainment >= 100) && ($slaves[_FLs].devotion > 50)>> <<set $legendaryEntertainerID = $slaves[_FLs].ID>> <</if>> <<if (_DL+$slavesGettingHelp < 10)>> @@ -104,7 +104,7 @@ <</if>> <<run repX(Math.trunc(($beauty*$FResult)*(1+(0.003*$slaves[_FLs].skill.entertainment))*0.1*0.5), "club", $slaves[_FLs])>> <</if>> - <<run repX(Math.trunc(($slaves[_FLs].sexAmount*$slaves[_FLs].sexQuality)*(1+(0.003*$slaves[_FLs].entertainSkill))*0.1*0.5), "club", $slaves[_FLs])>> + <<run repX(Math.trunc(($slaves[_FLs].sexAmount*$slaves[_FLs].sexQuality)*(1+(0.003*$slaves[_FLs].skill.entertainment))*0.1*0.5), "club", $slaves[_FLs])>> <</if>> <<if (_DL > 0)>><br><br><</if>> <</if>> diff --git a/src/uncategorized/genericPlotEvents.tw b/src/uncategorized/genericPlotEvents.tw index 0603596103df07dad3888161c291c6b0adde37da..263273abbf21f7ff4a31d75ad694a46ead585b7b 100644 --- a/src/uncategorized/genericPlotEvents.tw +++ b/src/uncategorized/genericPlotEvents.tw @@ -846,6 +846,12 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your s.boobs += Math.floor(Math.random() * 10 + 1) * 300 * s.inflation; } } + if (s.geneticQuirks.macromastia == 3) { + s.geneticQuirks.macromastia = 2; + } + if (s.geneticQuirks.gigantomastia == 3) { + s.geneticQuirks.gigantomastia = 2; + } })>> <</replace>> <</link>> diff --git a/src/uncategorized/masterSuite.tw b/src/uncategorized/masterSuite.tw index b8289dc54a207f3bb043191d621744580ad40702..12689c1814ba63bf8b9aa180fea42ad4fda791db 100644 --- a/src/uncategorized/masterSuite.tw +++ b/src/uncategorized/masterSuite.tw @@ -294,7 +294,7 @@ $masterSuiteNameCaps is furnished <</if>> -<br>$masterSuiteNameCaps has room for $masterSuite slaves to live comfortably<<if $masterSuiteUpgradeLuxury == 2>> in the moments when they're not in the fuckpit<<elseif $masterSuiteUpgradeLuxury == 1>> on its huge bed<</if>>. There <<if $masterSuiteSlaves == 1>>is<<else>>are<</if>> currently $masterSuiteSlaves slave<<if $masterSuiteSlaves != 1>>s<</if>> in $masterSuiteNameCaps. +<br>$masterSuiteNameCaps has room for $masterSuite slaves to live comfortably<<if $masterSuiteUpgradeLuxury == 2>> in the moments when they're not in the fuckpit<<elseif $masterSuiteUpgradeLuxury == 1>> on its huge bed<</if>>. There <<if $masterSuiteSlaves == 1>>is<<else>>are<</if>> currently $masterSuiteSlaves slave<<if $masterSuiteSlaves != 1>>s<</if>> in $masterSuiteName. <<set _Tmult0 = Math.trunc($masterSuite*1000*$upgradeMultiplierArcology)>> [[Expand the Master Suite|Master Suite][cashX(forceNeg(_Tmult0), "capEx"), $masterSuite += 2, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>// <<if $Concubine == 0 && $masterSuiteSlaves == 0>> diff --git a/src/uncategorized/pSlaveMedic.tw b/src/uncategorized/pSlaveMedic.tw index 1bbfba4eaf8a780522e11a947859f2d274362dd5..897cda1264f642b4842b29dc8b9f4f518ebd071c 100644 --- a/src/uncategorized/pSlaveMedic.tw +++ b/src/uncategorized/pSlaveMedic.tw @@ -37,6 +37,7 @@ <<set $activeSlave.hips = 1>> <<set $activeSlave.boobs = 2000>> <<set $activeSlave.boobShape = "perky">> +<<set $activeSlave.geneticQuirks.macromastia = 2>> <<set $activeSlave.butt = 4>> <<set $activeSlave.voice = 3>> <<set $activeSlave.hStyle = "neat">> diff --git a/src/uncategorized/reNickname.tw b/src/uncategorized/reNickname.tw index 07d26f78a9a90b12bd3fa0ed5bb5c30bff2bc506..ec7d10fc2c9c94ca695d0f15f834a6994a62eecb 100644 --- a/src/uncategorized/reNickname.tw +++ b/src/uncategorized/reNickname.tw @@ -182,10 +182,10 @@ <<if ($activeSlave.amp == 1)>> <<set $qualifiedNicknames.push("amp")>> <</if>> -<<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60 || Math.floor($activeSlave.buttImplant/$activeSlave.butt) > .60>> +<<if ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60 || ($activeSlave.buttImplant/$activeSlave.butt) > .60>> <<set $qualifiedNicknames.push("implants")>> <</if>> -<<if ($activeSlave.boobsImplant >= 750) && Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60 && ($activeSlave.buttImplant >= 2) && Math.floor($activeSlave.buttImplant/$activeSlave.butt) > .60 && ($activeSlave.lipsImplant >= 10) && Math.floor($activeSlave.lipsImplant/$activeSlave.lips) > .30 && ($activeSlave.intelligence+$activeSlave.intelligenceImplant < -15)>> +<<if ($activeSlave.boobsImplant >= 750) && ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60 && ($activeSlave.buttImplant >= 2) && ($activeSlave.buttImplant/$activeSlave.butt) > .60 && ($activeSlave.lipsImplant >= 10) && ($activeSlave.lipsImplant/$activeSlave.lips) > .30 && ($activeSlave.intelligence+$activeSlave.intelligenceImplant < -15)>> <<set $qualifiedNicknames.push("bimbo")>> <</if>> <<if ($activeSlave.intelligence+$activeSlave.intelligenceImplant < -50)>> diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw index 9e49429cede9eca0c5923e1be1d17deedaafaafe..c646e97cd25ce0c59930e7b36625d435118adbe5 100644 --- a/src/uncategorized/remoteSurgery.tw +++ b/src/uncategorized/remoteSurgery.tw @@ -1408,7 +1408,7 @@ $He has <</if>> <<if $activeSlave.geneticQuirks.albinism == 2>> <br> - [[Albinism prevention treamtment|Surgery Degradation][$activeSlave.geneticQuirks.albinism = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]] + [[Albinism prevention treatment|Surgery Degradation][$activeSlave.geneticQuirks.albinism = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]] <</if>> <<if $activeSlave.geneticQuirks.pFace == 2>> <br> @@ -1430,6 +1430,18 @@ $He has <br> [[Correct ova release during pregnancy|Surgery Degradation][$activeSlave.geneticQuirks.superfetation = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]] <</if>> + <<if $activeSlave.geneticQuirks.gigantomastia >= 2>> + <br> + [[Corret gigantomastia|Surgery Degradation][$activeSlave.geneticQuirks.gigantomastia = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]] + <</if>> + <<if $activeSlave.geneticQuirks.macromastia >= 2>> + <br> + [[Corret macromastia|Surgery Degradation][$activeSlave.geneticQuirks.macromastia = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]] + <</if>> + <<if $activeSlave.geneticQuirks.rearLipedema == 2>> + <br> + [[Corret lipedema|Surgery Degradation][$activeSlave.geneticQuirks.rearLipedema = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]] + <</if>> <<if $activeSlave.geneticQuirks.wellHung == 2>> <br> [[Corret genetic predisposition for large genitals|Surgery Degradation][$activeSlave.geneticQuirks.wellHung = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]] diff --git a/src/uncategorized/saDiet.tw b/src/uncategorized/saDiet.tw index 17089ecaf641b4b5418aca10d06f04f8e983bc1e..72d356d150c507fcce21f7b8ddf188f98b9a836c 100644 --- a/src/uncategorized/saDiet.tw +++ b/src/uncategorized/saDiet.tw @@ -2,6 +2,7 @@ /* quirk modifiers */ <<set _rearQuirk = $slaves[$i].geneticQuirks.rearLipedema == 2 ? 2 : 0>> +<<set _gigantomastiaMod = $slaves[$i].geneticQuirks.gigantomastia == 2 ? ($slaves[$i].geneticQuirks.macromastia == 2 ? 3 : 2) : 1>> <<if $slaves[$i].fuckdoll == 0>> @@ -117,8 +118,8 @@ $He @@.lime;loses weight.@@ <</if>> <<set $slaves[$i].weight -= _weightLoss+($feeder*2)>> - <<if $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200>> - <<if (($slaves[$i].geneMods.NCS == 0) && (random(1,_assetLoss) <= 1+$feeder))>> + <<if $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200 && _gigantomastiaMod != 3>> + <<if (($slaves[$i].geneMods.NCS == 0) && (random(1,_assetLoss*_gigantomastiaMod) <= 1+$feeder))>> @@.orange;$His breasts get a little smaller.@@ <<set $slaves[$i].boobs -= 50>> <<elseif (($slaves[$i].geneMods.NCS == 1) && (random(-_assetLoss, _assetLoss - 2) <= 1+$feeder))>> @@ -426,7 +427,7 @@ <<set $slaves[$i].muscles -= 2>> <</if>> <<if ((($slaves[$i].geneMods.NCS == 0) && (random(1,100) > 90)) || (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 45)))>> - <<if ((($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200)) || (($slaves[$i].geneMods.NCS == 1) && ($slaves[$i].boobs > 100)))>> + <<if ((($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200)) || (($slaves[$i].geneMods.NCS == 1) && ($slaves[$i].boobs > 100)) && _gigantomastiaMod != 3)>> <<if ($slaves[$i].geneMods.NCS == 0)>> @@.orange;$His breasts get a little smaller.@@ <<set $slaves[$i].boobs -= 50>> @@ -462,7 +463,7 @@ Since $he is rather weak, $his routine slowly tones $his soft muscles. <<set $slaves[$i].muscles++>> <</if>> - <<if ((($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200)) || (($slaves[$i].geneMods.NCS == 1) && ($slaves[$i].boobs > 100)))>> + <<if ((($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200)) || (($slaves[$i].geneMods.NCS == 1) && ($slaves[$i].boobs > 100)) && _gigantomastiaMod != 3)>> <<if ($slaves[$i].geneMods.NCS == 0)>> @@.orange;$His breasts get a little smaller.@@ <<set $slaves[$i].boobs -= 50>> @@ -527,7 +528,7 @@ Hormonal changes encourage $his body to @@.lime;grow softer.@@ <<set $slaves[$i].weight += 1>> <</if>> - <<if (($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs < 500))>> + <<if (($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs < 500*_gigantomastiaMod))>> $His breasts @@.lime;grow slightly@@ from the estrogen. <<set $slaves[$i].boobs += 10>> <</if>> @@ -566,7 +567,7 @@ Hormonal changes encourage $his body to @@.lime;grow softer.@@ <<set $slaves[$i].weight += 1>> <</if>> - <<if (($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs < 600))>> + <<if (($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs < 600*_gigantomastiaMod))>> $His breasts @@.lime;grow slightly@@ from the estrogen. <<set $slaves[$i].boobs += 10>> <</if>> @@ -587,7 +588,7 @@ Hormonal changes encourage $his body to @@.lime;grow softer.@@ <<set $slaves[$i].weight += 1>> <</if>> - <<if (($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs < 400))>> + <<if (($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs < 400*_gigantomastiaMod))>> $His breasts @@.lime;grow slightly@@ from the estrogen. <<set $slaves[$i].boobs += 10>> <</if>> @@ -646,7 +647,7 @@ $His balls @@.lime;swell@@ due to the male hormones in $his diet. <<set $slaves[$i].balls += 1>> <</if>> - <<if ((($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 400)) || (($slaves[$i].geneMods.NCS == 1) && ($slaves[$i].boobs > 20)))>> + <<if ((($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 400)) || (($slaves[$i].geneMods.NCS == 1) && ($slaves[$i].boobs > 20)) && _gigantomastiaMod != 3)>> $His breasts @@.orange;lose some mass@@ from the lack of estrogen in $his diet. <<set $slaves[$i].boobs -= 10>> <<if ($slaves[$i].geneMods.NCS == 1)>> @@ -666,7 +667,7 @@ Hormonal changes encourage $his body to @@.lime;gain muscle.@@ <<set $slaves[$i].muscles += 1>> <</if>> - <<if ((($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 500)) || (($slaves[$i].geneMods.NCS == 1) && ($slaves[$i].boobs > 20)))>> + <<if ((($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 500)) || (($slaves[$i].geneMods.NCS == 1) && ($slaves[$i].boobs > 20)) && _gigantomastiaMod != 3)>> $His breasts @@.orange;lose some mass@@ from the lack of estrogen in $his diet. <<set $slaves[$i].boobs -= 10>> <<if ($slaves[$i].geneMods.NCS == 1)>> @@ -697,7 +698,7 @@ $His balls @@.lime;swell@@ due to the male hormones in $his diet. <<set $slaves[$i].balls += 1>> <</if>> - <<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 300)>> + <<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 300 && _gigantomastiaMod != 3)>> $His breasts @@.orange;lose some mass@@ to better suit $his body chemistry. <<set $slaves[$i].boobs -= 10>> <</if>> @@ -725,7 +726,7 @@ Hormonal changes encourage $his body to @@.lime;grow softer.@@ <<set $slaves[$i].weight += 1>> <</if>> - <<if (($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs < 800))>> + <<if (($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs < 800*_gigantomastiaMod))>> $His breasts @@.lime;grow slightly@@ to fit $his developing femininity. <<set $slaves[$i].boobs += 10>> <</if>> @@ -868,7 +869,7 @@ <<elseif $slaves[$i].dietCum == 1>> <<if random(1,3) == 3>> $He has trouble keeping $his disgusting food down; $he loses weight. - <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200)>> + <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200*_gigantomastiaMod) && _gigantomastiaMod != 3>> @@.orange;$His breasts get a little smaller.@@ <<set $slaves[$i].boobs -= 50>> <<elseif ($slaves[$i].butt > 1) && ($slaves[$i].geneticQuirks.rearLipedema != 2 || ($slaves[$i].butt > 10 && random(1,100) > 80))>> @@ -973,7 +974,7 @@ The ports in Fuckdoll suits allow total dietary control, and $he's barely aware $he's being @@.lime;slimmed down.@@ <<set $slaves[$i].weight -= 9>> <<if random(1,2) <= 1>> - <<if random(1,2) <= 1>> + <<if random(1,2) <= 1 && _gigantomastiaMod != 3>> @@.orange;$His breasts get a little smaller.@@ <<set $slaves[$i].boobs -= 50>> <<if ($slaves[$i].geneMods.NCS == 1)>> @@ -1020,7 +1021,7 @@ <<set $slaves[$i].muscles += 9>> <</if>> <<if random(1,100) > 90>> - <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200)>> + <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200*_gigantomastiaMod && _gigantomastiaMod != 3)>> @@.orange;$His breasts get a little smaller.@@ <<set $slaves[$i].boobs -= 50>> <<elseif ($slaves[$i].butt > 1) && ($slaves[$i].geneticQuirks.rearLipedema != 2 || ($slaves[$i].butt > 10 && random(1,100) > 80))>> @@ -1044,7 +1045,7 @@ <<set $slaves[$i].muscles -= 9>> <</if>> <<if random(1,100) > 90>> - <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200)>> + <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200*_gigantomastiaMod && _gigantomastiaMod != 3)>> @@.orange;$His breasts get a little smaller.@@ <<set $slaves[$i].boobs -= 50>> <<elseif ($slaves[$i].butt > 1) && ($slaves[$i].geneticQuirks.rearLipedema != 2 || ($slaves[$i].butt > 10 && random(1,100) > 80))>> @@ -1075,7 +1076,7 @@ Hormonal changes encourage $his body to @@.lime;grow softer.@@ <<set $slaves[$i].weight += 1>> <</if>> - <<if (($slaves[$i].geneMods.NCS == 0) && (($slaves[$i].boobs-$slaves[$i].boobsImplant) < 500))>> + <<if (($slaves[$i].geneMods.NCS == 0) && (($slaves[$i].boobs-$slaves[$i].boobsImplant) < 500*_gigantomastiaMod))>> $His breasts @@.lime;grow slightly@@ from the estrogen. <<set $slaves[$i].boobs += 10>> <</if>> @@ -1100,7 +1101,7 @@ Hormonal changes encourage $his body to @@.lime;grow softer.@@ <<set $slaves[$i].weight += 1>> <</if>> - <<if (($slaves[$i].geneMods.NCS == 0) && (($slaves[$i].boobs-$slaves[$i].boobsImplant) < 600))>> + <<if (($slaves[$i].geneMods.NCS == 0) && (($slaves[$i].boobs-$slaves[$i].boobsImplant) < 600*_gigantomastiaMod))>> $His breasts @@.lime;grow slightly@@ from the estrogen. <<set $slaves[$i].boobs += 10>> <</if>> @@ -1117,7 +1118,7 @@ Hormonal changes encourage $his body to @@.lime;grow softer.@@ <<set $slaves[$i].weight += 1>> <</if>> - <<if (($slaves[$i].geneMods.NCS == 0) && (($slaves[$i].boobs-$slaves[$i].boobsImplant) < 600))>> + <<if (($slaves[$i].geneMods.NCS == 0) && (($slaves[$i].boobs-$slaves[$i].boobsImplant) < 600*_gigantomastiaMod))>> $His breasts @@.lime;grow slightly@@ from the estrogen. <<set $slaves[$i].boobs += 10>> <</if>> @@ -1157,7 +1158,7 @@ $His balls @@.lime;swell@@ due to the male hormones in $his diet. <<set $slaves[$i].balls += 1>> <</if>> - <<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 400)>> + <<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 400*_gigantomastiaMod && _gigantomastiaMod != 3)>> $His breasts @@.orange;lose some mass@@ from the lack of estrogen in $his diet. <<set $slaves[$i].boobs -= 10>> <</if>> @@ -1166,7 +1167,7 @@ Hormonal changes encourage $his body to @@.lime;gain muscle.@@ <<set $slaves[$i].muscles += 1>> <</if>> - <<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 500)>> + <<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 500*_gigantomastiaMod && _gigantomastiaMod != 3)>> $His breasts @@.orange;lose some mass@@ from the lack of estrogen in $his diet. <<set $slaves[$i].boobs -= 10>> <</if>> @@ -1190,7 +1191,7 @@ $His balls @@.lime;swell@@ due to the male hormones in $his diet. <<set $slaves[$i].balls += 1>> <</if>> - <<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 300)>> + <<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 300*_gigantomastiaMod && _gigantomastiaMod != 3)>> $His breasts @@.orange;lose some mass@@ to better suit $his body chemistry. <<set $slaves[$i].boobs -= 10>> <</if>> @@ -1212,7 +1213,7 @@ Hormonal changes @@.lime;thin $his waist.@@ <<set $slaves[$i].waist-->> <</if>> - <<if (($slaves[$i].geneMods.NCS == 0) && (($slaves[$i].boobs-$slaves[$i].boobsImplant) < 800))>> + <<if (($slaves[$i].geneMods.NCS == 0) && (($slaves[$i].boobs-$slaves[$i].boobsImplant) < 800*_gigantomastiaMod))>> $His breasts @@.lime;grow slightly@@ to fit $his developing femininity. <<set $slaves[$i].boobs += 10>> <</if>> diff --git a/src/uncategorized/saDrugs.tw b/src/uncategorized/saDrugs.tw index 55fd645ed31e9df66220261bba094666011f3053..7d6b2e115744aa189c2d258752b19615f5f03ad3 100644 --- a/src/uncategorized/saDrugs.tw +++ b/src/uncategorized/saDrugs.tw @@ -31,8 +31,9 @@ <</if>> <<case "hyper breast injections">> + <<set _gigantomastiaMod = $slaves[$i].geneticQuirks.gigantomastia == 2 ? ($slaves[$i].geneticQuirks.macromastia == 2 ? 3 : 2) : 1>> <<set $slaves[$i].chem += 2>> - <<set _growth = (1+$injectionUpgrade)*3>> + <<set _growth = (1+$injectionUpgrade)*3*_gigantomastiaMod>> $He receives @@.lime;direct injections of <<if ($injectionUpgrade != 0)>> advanced<</if>> hyper growth hormones, right into $his breasts;@@ <<if ($slaves[$i].diet == "fattening")>> all the food $he's required to consume fuels growth, <<if $slaves[$i].health > -20>>and<<else>>but<</if>> @@ -126,9 +127,16 @@ <<set $slaves[$i].nipples = "inverted">> <</if>> <</if>> + <<if $slaves[$i].geneticQuirks.gigantomastia == 3 && random(1,200) < $slaves[$i].hormoneBalance>> + <<set $slaves[$i].geneticQuirks.gigantomastia = 2>> + <</if>> + <<if $slaves[$i].geneticQuirks.macromastia == 3 && random(1,200) < $slaves[$i].hormoneBalance>> + <<set $slaves[$i].geneticQuirks.macromastia = 2>> + <</if>> <<case "breast injections" "intensive breast injections">> - <<set _growth = 1+$injectionUpgrade>> + <<set _gigantomastiaMod = $slaves[$i].geneticQuirks.gigantomastia == 2 ? ($slaves[$i].geneticQuirks.macromastia == 2 ? 3 : 2) : 1>> + <<set _growth = 1+$injectionUpgrade*_gigantomastiaMod>> $He receives @@.lime; <<if _intensive>> massive @@ -245,6 +253,12 @@ <</if>> <</if>> <</if>> + <<if $slaves[$i].geneticQuirks.gigantomastia == 3 && random(1,300) < $slaves[$i].hormoneBalance>> + <<set $slaves[$i].geneticQuirks.gigantomastia = 2>> + <</if>> + <<if $slaves[$i].geneticQuirks.macromastia == 3 && random(1,300) < $slaves[$i].hormoneBalance>> + <<set $slaves[$i].geneticQuirks.macromastia = 2>> + <</if>> <<case "butt injections" "intensive butt injections">> <<set _growth = 1+$injectionUpgrade>> @@ -1015,35 +1029,51 @@ <<set $slaves[$i].lips -= _shrinkage>> <<case "breast redistributors">> - $He receives @@.lime;direct injections of fat redistributors right into $his breasts,@@ causing $his body to begin moving fatty tissue from them to $his core<<if $slaves[$i].geneMods.NCS == 1>>, $his @@.orange;NCS@@ amplifies the effectiveness<</if>>. - <<set _factor = 0>> - <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) <= 100>> - $His natural breast tissue is now so thin that further drug use will fail to shrink it further; @@.yellow;$his drug regimen has been ended.@@ - <<set $slaves[$i].drugs = "no drugs">> - <<elseif ($slaves[$i].weight >= 200)>> - $He is now so immensely obese $his health is greatly at risk; @@.yellow;$his drug regimen has been ended.@@ - <<set $slaves[$i].drugs = "no drugs">> - <<elseif ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) >= 20000>> - @@.lime;$His breasts shrink painfully,@@ becoming massively smaller while $his @@.orange;waistline swells tremendously.@@ - <<set _factor = 20>> - <<elseif ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) >= 10000>> - @@.lime;$His breasts shrink painfully,@@ becoming greatly smaller while $his @@.orange;waistline swells.@@ - <<set _factor = 10>> - <<elseif ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) >= 5000>> - @@.lime;$His breasts shrink painfully,@@ becoming smaller while $his @@.orange;waistline swells.@@ - <<set _factor = 5>> - <<elseif ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) >= 1000>> - @@.lime;$His breasts shrink painfully,@@ becoming smaller while $his @@.orange;waistline grows.@@ - <<set _factor = 3>> - <<elseif ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 100>> - @@.lime;$His breasts shrink painfully,@@ becoming smaller while $his @@.orange;waistline grows slightly.@@ - <<set _factor = 1>> - <</if>> - <<set $slaves[$i].weight += _factor>> - <<if ($slaves[$i].geneMods.NCS == 1) && (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 200)>> - <<set _factor *= 2>> - <</if>> - <<set $slaves[$i].boobs -= 100*_factor>> + <<set _gigantomastiaMod = $slaves[$i].geneticQuirks.gigantomastia == 2 ? ($slaves[$i].geneticQuirks.macromastia == 2 ? 3 : 2) : 1>> + $He receives @@.lime;direct injections of fat redistributors right into $his + <<if _gigantomastiaMod != 3>> + breasts, causing $his body to begin moving fatty tissue from them to $his core<<if $slaves[$i].geneMods.NCS == 1>>, $his @@.orange;NCS@@ amplifies the effectiveness@@<</if>>. + <<set _factor = 0>> + <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) <= 100>> + $His natural breast tissue is now so thin that further drug use will fail to shrink it further; @@.yellow;$his drug regimen has been ended.@@ + <<set $slaves[$i].drugs = "no drugs">> + <<elseif ($slaves[$i].weight >= 200)>> + $He is now so immensely obese $his health is greatly at risk; @@.yellow;$his drug regimen has been ended.@@ + <<set $slaves[$i].drugs = "no drugs">> + <<elseif ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) >= 20000>> + @@.lime;$His breasts shrink painfully,@@ becoming massively smaller while $his @@.orange;waistline swells tremendously.@@ + <<set _factor = 20>> + <<elseif ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) >= 10000>> + @@.lime;$His breasts shrink painfully,@@ becoming greatly smaller while $his @@.orange;waistline swells.@@ + <<set _factor = 10>> + <<elseif ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) >= 5000>> + @@.lime;$His breasts shrink painfully,@@ becoming smaller while $his @@.orange;waistline swells.@@ + <<set _factor = 5>> + <<elseif ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) >= 1000>> + @@.lime;$His breasts shrink painfully,@@ becoming smaller while $his @@.orange;waistline grows.@@ + <<set _factor = 3>> + <<elseif ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 100>> + @@.lime;$His breasts shrink painfully,@@ becoming smaller while $his @@.orange;waistline grows slightly.@@ + <<set _factor = 1>> + <</if>> + <<set $slaves[$i].weight += _factor>> + <<if ($slaves[$i].geneMods.NCS == 1) && (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 200)>> + <<set _factor *= 2>> + <</if>> + <<if _gigantomastiaMod == 2>> + <<set _factor = 1>> + <<if $geneticMappingUpgrade >= 1>> + However, @@.orange;$his gigantomastia inhibits $his breast loss.@@ + <<else>> + However, @@.orange;$his breasts do not shrink proportionately to $his stomach's growth.@@ + <</if>> + <</if>> + <<set $slaves[$i].boobs -= 100*_factor>> + <<elseif $geneticMappingUpgrade >= 1>> + breasts to no avail; $his body refuses to allow $his breasts to shrink, and as such, @@.yellow;$his drug regimen has been ended.@@ + <<else>> + breasts to no avail; @@.yellow;$his drug regimen has been ended.@@ + <</if>> <<case "butt redistributors">> <<set _rearQuirk = $slaves[$i].geneticQuirks.rearLipedema == 2 ? 1 : 0>> diff --git a/src/uncategorized/saGetMilked.tw b/src/uncategorized/saGetMilked.tw index 17ae4ed153662fba6a7e377d795870e6205f826d..d320dd96011c392dfc73f4d997df2596a5b8ff3e 100644 --- a/src/uncategorized/saGetMilked.tw +++ b/src/uncategorized/saGetMilked.tw @@ -37,10 +37,27 @@ gets milked this week. <<set $milk = milkAmount($slaves[$i])>> $He produces from $his <<print either("boobs", "breasts", "mammaries", "tits", "udders")>>, which have a combined volume of <<print $slaves[$i].boobs*2>> CCs; + <<if ($slaves[$i].boobsImplant > 0)>> + <<set _implantEffect = $slaves[$i].boobsImplant/$slaves[$i].boobs>> + <</if>> <<if ($slaves[$i].lactation == 1)>> - $he is lactating naturally and produces a healthy stream of milk. + $he is lactating naturally and produces + <<if _implantEffect >= .90>> + a weak trickle of milk. + <<elseif _implantEffect >= .75>> + a weak stream of milk. + <<else>> + a healthy stream of milk. + <</if>> <<elseif ($slaves[$i].lactation == 2)>> - $he is on lactation drugs and produces a river of milk. + $he is on lactation drugs and produces + <<if _implantEffect >= .90>> + a steady flow of milk. + <<elseif _implantEffect >= .75>> + strong bursts of milk. + <<else>> + a river of milk. + <</if>> <<if $slaves[$i].lactationAdaptation < 100>> $His udders are forced to adapt to this unnatural productivity. <<set $slaves[$i].lactationAdaptation += 1>> @@ -61,8 +78,24 @@ gets milked this week. $He's such an unhappy cow that $his mental state has a negative impact on $his production. <</if>> - <<if ($slaves[$i].boobsImplant > 200)>> - However, $his breast implants impede milk production. + <<if ($slaves[$i].boobsImplant > 0)>> + However, $his + <<if _implantEffect >= .90>> + breast implants are ill-suited for + <<elseif _implantEffect >= .75>> + breasts are almost entirely implant, greatly restricting $his + <<elseif _implantEffect >= .60>> + breasts are mostly implant, restricting $his + <<elseif _implantEffect >= .45>> + implants make up a considerable amount of $his breasts and greatly impede + <<elseif _implantEffect >= .30>> + breast implants take up enough space to impede + <<elseif _implantEffect >= .10>> + breast implants slightly impede + <<else>> + breast implants cause a minor decrease in + <</if>> + milk production<<if _implantEffect >= .90>>, given the lack of actual breast flesh<</if>>. <</if>> <<set $hormones = $slaves[$i].hormoneBalance/100>> diff --git a/src/uncategorized/saHormoneEffects.tw b/src/uncategorized/saHormoneEffects.tw index b5acc52a0ebf251abe13ea008a38bb185ea9687c..006125be50d54c25df70ea70184f4572794f8439 100644 --- a/src/uncategorized/saHormoneEffects.tw +++ b/src/uncategorized/saHormoneEffects.tw @@ -73,6 +73,7 @@ /* quirk modifiers */ <<set _rearQuirk = $slaves[$i].geneticQuirks.rearLipedema == 2 ? 2 : 0>> +<<set _gigantomastiaMod = $slaves[$i].geneticQuirks.gigantomastia == 2 ? ($slaves[$i].geneticQuirks.macromastia == 2 ? 3 : 2) : 1>> <<if $slaves[$i].physicalAge >= 18 || $loliGrow == 1 || $slaves[$i].geneMods.NCS == 1>> <<if Math.abs($slaves[$i].hormoneBalance) >= 50>> @@ -132,7 +133,7 @@ <</if>> <<if $slaves[$i].geneMods.NCS == 0>> - <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant) < 1400>> + <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant) < 1400*_gigantomastiaMod>> Hormonal effects cause @@.lime;a small amount of natural breast growth.@@ <<set $slaves[$i].boobs += 10+(15*$hormoneUpgradePower)>> <</if>> @@ -233,7 +234,7 @@ <</if>> <<if $slaves[$i].geneMods.NCS == 0>> - <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant) < 1000>> + <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant) < 1000*_gigantomastiaMod>> Hormonal effects cause @@.lime;a small amount of natural breast growth.@@ <<set $slaves[$i].boobs += 10+(15*$hormoneUpgradePower)>> <</if>> @@ -333,7 +334,7 @@ <</if>> <<if $slaves[$i].geneMods.NCS == 0>> - <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant) < 800>> + <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant) < 800*_gigantomastiaMod>> Hormonal effects cause @@.lime;a small amount of natural breast growth.@@ <<set $slaves[$i].boobs += 10+(15*$hormoneUpgradePower)>> <</if>> @@ -430,7 +431,7 @@ <</if>> <<if $slaves[$i].geneMods.NCS == 0>> - <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant) < 650>> + <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant) < 650*_gigantomastiaMod>> Hormonal effects cause @@.lime;a small amount of natural breast growth.@@ <<set $slaves[$i].boobs += 10+(15*$hormoneUpgradePower)>> <</if>> @@ -499,7 +500,7 @@ <</if>> <<if $slaves[$i].geneMods.NCS == 0>> - <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant) < 500>> + <<if ($slaves[$i].boobs-$slaves[$i].boobsImplant) < 500*_gigantomastiaMod && _gigantomastiaMod != 3>> Hormonal effects cause @@.lime;a small amount of natural breast growth.@@ <<set $slaves[$i].boobs += 10+(15*$hormoneUpgradePower)>> <</if>> @@ -570,7 +571,7 @@ <</if>> <<set $slaves[$i].butt-->> <</if>> - <<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 100)>> + <<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 100*_gigantomastiaMod && _gigantomastiaMod != 3)>> <<if (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50) && ($slaves[$i].boobsImplant > 200))>> Hormonal effects work with $his @@.orange;NCS@@ and cause @@.orange;$his tits to shrink a lot.@@ <<set $slaves[$i].boobs -= 10+(15*$hormoneUpgradePower)>> @@ -657,7 +658,7 @@ <</if>> <<set $slaves[$i].butt-->> <</if>> - <<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 300)>> + <<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 300*_gigantomastiaMod && _gigantomastiaMod != 3)>> <<if (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50))>> Hormonal effects work with $his @@.orange;NCS@@ and cause @@.orange;$his tits to shrink a lot.@@ <<set $slaves[$i].boobs -= 10+(15*$hormoneUpgradePower)>> @@ -741,7 +742,7 @@ <</if>> <<set $slaves[$i].butt-->> <</if>> - <<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 400)>> + <<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 400*_gigantomastiaMod && _gigantomastiaMod != 3)>> <<if (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50))>> Hormonal effects work with $his @@.orange;NCS@@ and cause @@.orange;$his tits to shrink a lot.@@ <<set $slaves[$i].boobs -= 10+(15*$hormoneUpgradePower)>> @@ -825,7 +826,7 @@ <</if>> <<set $slaves[$i].butt-->> <</if>> - <<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 600)>> + <<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 600*_gigantomastiaMod && _gigantomastiaMod != 3)>> <<if (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50))>> Hormonal effects work with $his @@.orange;NCS@@ and cause @@.orange;$his tits to shrink a lot.@@ <<set $slaves[$i].boobs -= 10+(15*$hormoneUpgradePower)>> @@ -903,7 +904,7 @@ <</if>> <<set $slaves[$i].butt-->> <</if>> - <<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 800)>> + <<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 800*_gigantomastiaMod && _gigantomastiaMod != 3)>> <<if (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50))>> Hormonal effects work with $his @@.orange;NCS@@ and cause @@.orange;$his tits to shrink a lot.@@ <<set $slaves[$i].boobs -= 10+(15*$hormoneUpgradePower)>> @@ -998,3 +999,4 @@ <<if Math.abs($slaves[$i].hormones) > 1>> <<set $slaves[$i].chem += 0.5>> <</if>> + diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw index 9085f49bec623dd2bdc37fed96b59e120acfe03c..104cf5ae12f84e517cda6a954c315ba2c624cce2 100644 --- a/src/uncategorized/saLongTermEffects.tw +++ b/src/uncategorized/saLongTermEffects.tw @@ -10,6 +10,7 @@ <<set _para = 0>> <<if $slaves[$i].aphrodisiacs === -1>><<set _oldEnergy = $slaves[$i].energy, _maxEnergyGain = Math.round((75 - _oldEnergy)/9.3)>><</if>> <<set _rearQuirk = $slaves[$i].geneticQuirks.rearLipedema == 2 ? 2 : 0>> +<<set _gigantomastiaMod = $slaves[$i].geneticQuirks.gigantomastia == 2 ? ($slaves[$i].geneticQuirks.macromastia == 2 ? 3 : 2) : 1>> <<if $slaves[$i].fuckdoll > 0>> <<if $slaves[$i].fuckdoll >= 100>> @@ -1179,6 +1180,10 @@ <<if ["get milked", "work in the dairy"].includes($slaves[$i].assignment) && $slaves[$i].lactation > 0>> $His paraphilia is satisfied by $his work as a cow; $he can feel $his udders swelling with milk. <<set _para = 1>> + <<elseif $slaves[$i].geneticQuirks.gigantomastia == 2 && $slaves[$i].geneticQuirks.macromastia == 2 && $geneticMappingUpgrade >= 1>> + $His paraphilia is satisfied by the knowledge that $his genetic abnormality will keep $his breasts growing for the rest of $his life. + <<elseif $slaves[$i].geneticQuirks.gigantomastia == 2 || $slaves[$i].geneticQuirks.macromastia == 2>> + $His paraphilia is satisfied by the knowledge that $his genetic abnormality will keep $his breasts bigger than $his head. <<elseif $slaves[$i].health < 0>> $His paraphilia is ameliorated by $his poor health; $he knows $he can't take expansion right now. <<elseif $slaves[$i].drugs == "intensive breast injections">> @@ -2838,6 +2843,14 @@ Allowing $him to indulge in $his fetish to the point of obsession advances hedonism and @@.green;bolsters your reputation.@@ <<= FSChange("Hedonism", 2)>> <</if>> + <<elseif $slaves[$i].geneticQuirks.gigantomastia == 2 && $slaves[$i].boobs-$slaves[$i].boobsImplant >= 25000>> + $He loves $his tits, and measuring their weekly growth from gigantomastia starts to hold more fascination for $him than mere sex. @@.yellow;$His sexual identity is now dominated by $his swelling boobs.@@ + <<set $slaves[$i].sexualFlaw = "breast growth">> + <<set $slaves[$i].fetishStrength = 100>> + <<if $arcologies[0].FSHedonisticDecadence != "unset">> + Allowing $him to indulge in $his fetish to the point of obsession advances hedonism and @@.green;bolsters your reputation.@@ + <<= FSChange("Hedonism", 2)>> + <</if>> <<elseif ($slaves[$i].hormoneBalance >= 100) && ($slaves[$i].boobs < 1000)>> $He loves $his tits, and feeling them grow under female hormone treatments starts to hold more fascination for $him than mere sex. @@.yellow;$His sexual identity is now dominated by $his swelling boobs.@@ <<set $slaves[$i].sexualFlaw = "breast growth">> @@ -3303,7 +3316,7 @@ <<if (($slaves[$i].butt-$slaves[$i].buttImplant) < 2*_rearQuirk) && (($slaves[$i].geneMods.NCS == 0) || (random(1,100) > 75/_rearQuirkDivider))>> <<set _Effects.push("ButtBigger")>> <</if>> - <<if (($slaves[$i].boobs-$slaves[$i].boobsImplant) < 500) && (($slaves[$i].geneMods.NCS == 0) || (random(1,100) > 75))>> + <<if (($slaves[$i].boobs-$slaves[$i].boobsImplant) < 500*_gigantomastiaMod) && (($slaves[$i].geneMods.NCS == 0) || (random(1,100) > 75/_gigantomastiaMod))>> <<set _Effects.push("BoobsBigger")>> <</if>> <<if $slaves[$i].face-$slaves[$i].faceImplant <= 10>> @@ -3592,15 +3605,15 @@ <<set _precocious += 0.1>> <<elseif ($slaves[$i].drugs == "steroids")>> <<set _precocious += 0.2>> - <<if ($slaves[$i].boobs > 100) && (random(1,100) < 30)>> - <<if (($slaves[$i].geneMods.NCS == 1) && ($slaves[$i].boobs > 300) && (random(1,100) > 25))>> + <<if ($slaves[$i].boobs > 100) && (random(1,100) < 30/_gigantomastiaMod) && _gigantomastiaMod != 3>> + <<if (($slaves[$i].geneMods.NCS == 1) && ($slaves[$i].boobs > 300) && (random(1,100) > 25*_gigantomastiaMod))>> Hormonal effects work with $his @@.orange;NCS@@ and cause @@.orange;$his tits to shrink down.@@ - <<set $slaves[$i].boobs -= 50>> + <<set $slaves[$i].boobs -= 50/_gigantomastiaMod>> <<set $slaves[$i].energy += 1>> <<else>> $He feels an @@.orange;unusual calmness@@ in $his belly and breasts. <</if>> - <<set $slaves[$i].boobs -= 50>> + <<set $slaves[$i].boobs -= 50/_gigantomastiaMod>> <</if>> <<if ($slaves[$i].geneMods.NCS == 0)>> <<if ($slaves[$i].clit < 2) && (random(1,100) < 10)>> @@ -3612,7 +3625,7 @@ <<set _precocious -= 0.5>> <<if ($slaves[$i].geneMods.NCS == 0)>> $He feels an @@.lime;unusual warm feeling@@ in $his belly and breasts. - <<if ($slaves[$i].boobs < 400) && (random(1,100) < 30)>> + <<if ($slaves[$i].boobs < 400*_gigantomastiaMod) && (random(1,100) < 30)>> $His breasts feel @@.lime;heavy, hot and sensitive.@@ <<set $slaves[$i].boobs += 50>> <<if random(1,100) < 10 && ($slaves[$i].breastMesh != 1)>> @@ -3709,7 +3722,7 @@ <<set _precocious -= 1>> <<if ($slaves[$i].geneMods.NCS == 0)>> $He feels @@.lime;unusual warm feeling@@ in $his breasts. - <<if ($slaves[$i].boobs < 400) && (random(1,100) < 30)>> + <<if ($slaves[$i].boobs < 400*_gigantomastiaMod) && (random(1,100) < 30) && _gigantomastiaMod != 3>> $His chest feels @@.lime;hot and sensitive.@@ <<set $slaves[$i].boobs += 50>> <<if random(1,100) < 10 && ($slaves[$i].breastMesh != 1)>> @@ -3788,6 +3801,12 @@ <<if $slaves[$i].pubertyXX == 0>> <<if $slaves[$i].physicalAge >= $slaves[$i].pubertyAgeXX>> <<set $slaves[$i].pubertyXX = 1>> + <<if $slaves[$i].geneticQuirks.gigantomastia == 3 && random(1,100) < $slaves[$i].hormoneBalance>> + <<set $slaves[$i].geneticQuirks.gigantomastia = 2>> + <</if>> + <<if $slaves[$i].geneticQuirks.macromastia == 3 && random(1,100) < $slaves[$i].hormoneBalance>> + <<set $slaves[$i].geneticQuirks.macromastia = 2>> + <</if>> <</if>> <</if>> <</if>> @@ -3946,6 +3965,12 @@ <</if>> <<if ($slaves[$i].preg >= $slaves[$i].pregData.normalBirth/4)>> + <<if $slaves[$i].geneticQuirks.gigantomastia == 3 && random(1,200) < $slaves[$i].hormoneBalance>> + <<set $slaves[$i].geneticQuirks.gigantomastia = 2>> + <</if>> + <<if $slaves[$i].geneticQuirks.macromastia == 3 && random(1,200) < $slaves[$i].hormoneBalance>> + <<set $slaves[$i].geneticQuirks.macromastia = 2>> + <</if>> <<if ($slaves[$i].fuckdoll == 0) && ($slaves[$i].fetish != "mindbroken")>> <<if $slaves[$i].career == "a dairy cow" && ($slaves[$i].devotion <= 50)>> $He @@.mediumaquamarine;feels right@@ to be growing heavy with child. To $him, a growing baby means better milk. @@ -4136,6 +4161,7 @@ <<set _boobTarget = 400>> <</if>> <</if>> + <<set _boobTarget *= _gigantomastiaMod>> <<if ($slaves[$i].geneMods.NCS == 0)>> <<if ($slaves[$i].pregType >= 30) && ((($slaves[$i].assignment == "be your Concubine" || $slaves[$i].assignment == "serve in the master suite") && $masterSuitePregnancySlaveLuxuries == 1) || ($slaves[$i].diet == "high caloric"))>> <<if ($slaves[$i].weight <= 65)>> @@ -6130,13 +6156,13 @@ <<if $slaves[$i].weight <= 10>> <<if $slaves[$i].diet != "fattening">> <<if $slaves[$i].weight < -95>> - <<if $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 750>> + <<if $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 750 && _gigantomastiaMod != 3>> $His desperately underweight body @@.orange;burns fat off $his plush boobs.@@ - <<set $slaves[$i].boobs -= 50>> + <<set $slaves[$i].boobs -= 50/_gigantomastiaMod>> <<elseif $slaves[$i].butt-$slaves[$i].buttImplant > 3 && _rearQuirk != 2>> $His desperately underweight body @@.orange;burns fat off $his plush butt.@@ <<set $slaves[$i].butt -= 0.4>> - <<elseif $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 500>> + <<elseif $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 500 && _gigantomastiaMod != 3>> $His desperately underweight body @@.orange;burns some fat off $his healthy boobs.@@ <<set $slaves[$i].boobs -= 25>> <<elseif $slaves[$i].butt-$slaves[$i].buttImplant > 2 && _rearQuirk != 2>> @@ -6144,13 +6170,13 @@ <<set $slaves[$i].butt -= 0.2>> <</if>> <<elseif $slaves[$i].weight <= -30>> - <<if $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 1000>> + <<if $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 1000 && _gigantomastiaMod != 3>> $His underweight body @@.orange;burns fat off $his big boobs.@@ - <<set $slaves[$i].boobs -= 50>> + <<set $slaves[$i].boobs -= 50/_gigantomastiaMod>> <<elseif $slaves[$i].butt-$slaves[$i].buttImplant > 4 && _rearQuirk != 2>> $His underweight body @@.orange;burns fat off $his big butt.@@ <<set $slaves[$i].butt -= 0.4>> - <<elseif $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 750>> + <<elseif $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 750 && _gigantomastiaMod != 3>> $His underweight body @@.orange;burns some fat off $his plush boobs.@@ <<set $slaves[$i].boobs -= 25>> <<elseif $slaves[$i].butt-$slaves[$i].buttImplant > 3 && _rearQuirk != 2>> @@ -6158,13 +6184,13 @@ <<set $slaves[$i].butt -= 0.2>> <</if>> <<elseif $slaves[$i].weight < -10>> - <<if $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 2000>> + <<if $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 2000 && _gigantomastiaMod != 3>> $His skinny body @@.orange;burns fat off $his huge boobs.@@ - <<set $slaves[$i].boobs -= 50>> + <<set $slaves[$i].boobs -= 50/_gigantomastiaMod>> <<elseif $slaves[$i].butt-$slaves[$i].buttImplant > 6 && _rearQuirk != 2>> $His skinny body @@.orange;burns fat off $his huge butt.@@ <<set $slaves[$i].butt -= 0.4>> - <<elseif $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 1000>> + <<elseif $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 1000 && _gigantomastiaMod != 3>> $His skinny body @@.orange;burns some fat off $his big boobs.@@ <<set $slaves[$i].boobs -= 25>> <<elseif $slaves[$i].butt-$slaves[$i].buttImplant > 4 && _rearQuirk != 2>> @@ -6172,13 +6198,13 @@ <<set $slaves[$i].butt -= 0.2>> <</if>> <<else>> - <<if $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 5000>> + <<if $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 5000 && _gigantomastiaMod != 3>> $His thin body @@.orange;burns fat off $his monstrous boobs.@@ - <<set $slaves[$i].boobs -= 50>> + <<set $slaves[$i].boobs -= 50/_gigantomastiaMod>> <<elseif $slaves[$i].butt-$slaves[$i].buttImplant > 8 && _rearQuirk != 2>> $His thin body @@.orange;burns fat off $his monstrous butt.@@ <<set $slaves[$i].butt -= 0.4>> - <<elseif $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 2000>> + <<elseif $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 2000 && _gigantomastiaMod != 3>> $His thin body @@.orange;burns some fat off $his huge boobs.@@ <<set $slaves[$i].boobs -= 25>> <<elseif $slaves[$i].butt-$slaves[$i].buttImplant > 6 && _rearQuirk != 2>> @@ -6589,7 +6615,7 @@ ** the slave's accumulated youthening is 6 or higher, ** or by a 50% chance. */ - <<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 5000) && (random(1,100) < 90))>> + <<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 5000) && (random(1,100) < 90) && _gigantomastiaMod != 3)>> $His @@.orange;NCS@@ has @@.orange;reduced the size of $his bouncing breasts.@@ <<set $slaves[$i].boobs -= Math.round($slaves[$i].boobs * .11), _countNCS++>> <<elseif (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk <= 5000) && (!["cute", "fuckable", "tiny"].includes($slaves[$i].nipples)) && (random(1,100) < 30))>> @@ -6603,7 +6629,7 @@ $His areolae also shrink down to a more normal size<<if ($slaves[$i].areolaeShape != "circle")>>, including the unique $slaves[$i].areolaeShape shapes<</if>>. <<set $slaves[$i].areolae = 1, _countNCS++>> <</if>> - <<elseif (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 300) && (($slaves[$i].NCSyouthening >= 6) || (random(1,100) < 50)))>> + <<elseif (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 300) && (($slaves[$i].NCSyouthening >= 6) || (random(1,100) < 50)) && _gigantomastiaMod != 3)>> $His @@.orange;NCS@@ has @@.orange;reduced the size of $his tits.@@ <<set $slaves[$i].boobs -= Math.round($slaves[$i].boobs * .09), _countNCS++>> <</if>> @@ -6721,6 +6747,36 @@ <</if>> <</if>> +/* macromastia random trigger + growth */ +<<if $slaves[$i].geneticQuirks.gigantomastia == 3 && random(70-$slaves[$i].physicalAge,300) < $slaves[$i].hormoneBalance>> + <<set $slaves[$i].geneticQuirks.gigantomastia = 2>> +<</if>> +<<if $slaves[$i].geneticQuirks.macromastia == 3 && random(70-$slaves[$i].physicalAge,300) < $slaves[$i].hormoneBalance>> + <<set $slaves[$i].geneticQuirks.macromastia = 2>> +<</if>> +<<if $slaves[$i].geneticQuirks.macromastia == 2 && $slaves[$i].geneticQuirks.gigantomastia == 2>> + <<if $slaves[$i].boobs < 100000 && $slaves[$i].weight >= -95>> + <<if $geneticMappingUpgrade >= 1>> + $His @@.lime;breasts expand @@ due to $his abnormal strain of gigantomastia. + <</if>> + <<set $slaves[$i].boobs += 30>> + <</if>> +<<elseif $slaves[$i].geneticQuirks.gigantomastia == 2>> + <<if $slaves[$i].boobs < 25000 && $slaves[$i].weight >= -95>> + <<if $geneticMappingUpgrade >= 1>> + $His @@.lime;breasts expand @@ due to $his gigantomastia. + <</if>> + <<set $slaves[$i].boobs += 20>> + <</if>> +<<elseif $slaves[$i].geneticQuirks.macromastia == 2>> + <<if $slaves[$i].boobs < 5000 && $slaves[$i].weight >= -95>> + <<if $geneticMappingUpgrade >= 1>> + $His @@.lime;breasts expand @@ due to $his macromastia. + <</if>> + <<set $slaves[$i].boobs += 10>> + <</if>> +<</if>> + <<if $slaves[$i].geneticQuirks.rearLipedema == 2 && $slaves[$i].butt < 20 && $slaves[$i].weight >= -95>> <<if $geneticMappingUpgrade >= 1>> $His body @@.lime;continues to lay fat on $his rear@@ due to $his lipedema. @@ -6845,15 +6901,15 @@ <<if ($slaves[$i].boobs > 30000+($slaves[$i].muscles*100))>> <<if ($slaves[$i].assignment != "work in the dairy") || ($dairyRestraintsSetting < 2) || $arcologies[0].FSAssetExpansionistResearch == 0>> <<if (($slaves[$i].drugs != "breast injections") && ($slaves[$i].drugs != "intensive breast injections") && ($arcologies[0].FSAssetExpansionistResearch == 0))>> - <<if (($slaves[$i].bellyPreg < 300000) && ($slaves[$i].hormoneBalance < 300))>> - <<if ($slaves[$i].boobs > 30000+($slaves[$i].muscles*100))>> + <<if (($slaves[$i].bellyPreg < 300000) && ($slaves[$i].hormoneBalance < 300) && _gigantomastiaMod != 3)>> + <<if ($slaves[$i].boobs < 30000+($slaves[$i].muscles*100))*2>> $His breasts are larger than $his body can possibly sustain without industrial intervention, and they @@.orange;naturally lose mass.@@ <<set $slaves[$i].boobs -= 25>> <<else>> $His breasts are far, far beyond what $his body can sustain without industrial intervention, and they @@.orange;naturally lose mass.@@ - <<set $slaves[$i].boobs -= 50>> + <<set $slaves[$i].boobs -= 50/_gigantomastiaMod>> <</if>> - <<if (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50))>> + <<if (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50*_gigantomastiaMod))>> This effect is massively compounded by $his @@.orange;NCS.@@ <<set $slaves[$i].boobs -= Math.round($slaves[$i].boobs * .1)>> <</if>> @@ -6861,7 +6917,7 @@ <</if>> <</if>> <</if>> - <<if ($slaves[$i].boobs > 40000)>> + <<if ($slaves[$i].boobs > 40000)>> /* raise me later */ $His immense breasts are so big they pin $him to the floor, taking the weight off $his body. <<if $slaves[$i].sexualFlaw == "breast growth">> $He's perfectly fine with dragging them along as a testament to how much $he's managed to grow. @@ -6912,16 +6968,16 @@ <</if>> <</if>> <<elseif $slaves[$i].physicalAge <= 3>> - <<if ($slaves[$i].boobs > 5000+($slaves[$i].muscles*10))>> + <<if ($slaves[$i].boobs > (_gigantomastiaMod == 2 ? 25000 : 5000)+($slaves[$i].muscles*10))>> <<if ($slaves[$i].assignment != "work in the dairy") || ($dairyRestraintsSetting < 2) || $arcologies[0].FSAssetExpansionistResearch == 0>> <<if ($slaves[$i].drugs != "breast injections" && $slaves[$i].drugs != "intensive breast injections" && $arcologies[0].FSAssetExpansionistResearch == 0)>> - <<if $slaves[$i].bellyPreg < 300000 && $slaves[$i].hormoneBalance < 300>> - <<if ($slaves[$i].boobs > 5000+($slaves[$i].muscles*10))>> + <<if $slaves[$i].bellyPreg < 300000 && $slaves[$i].hormoneBalance < 300 && _gigantomastiaMod != 3>> + <<if ($slaves[$i].boobs < (_gigantomastiaMod == 2 ? 25000 : 5000)+($slaves[$i].muscles*10))*2>> $His breasts are larger than $his body can possibly sustain without industrial intervention, and they @@.orange;naturally lose mass.@@ <<set $slaves[$i].boobs -= 25>> <<else>> $His breasts are far, far beyond what $his body can sustain without industrial intervention, and they @@.orange;naturally lose mass.@@ - <<set $slaves[$i].boobs -= 50>> + <<set $slaves[$i].boobs -= 50/_gigantomastiaMod>> <</if>> <<if (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50))>> This effect is compounded by $his @@.orange;NCS.@@ @@ -6993,16 +7049,16 @@ <</if>> <</if>> <<elseif $slaves[$i].physicalAge <= 12>> - <<if ($slaves[$i].boobs > 10000+($slaves[$i].muscles*20))>> + <<if ($slaves[$i].boobs > (_gigantomastiaMod == 2 ? 25000 : 10000)+($slaves[$i].muscles*20))>> <<if ($slaves[$i].assignment != "work in the dairy") || ($dairyRestraintsSetting < 2) || $arcologies[0].FSAssetExpansionistResearch == 0>> <<if ($slaves[$i].drugs != "breast injections" && $slaves[$i].drugs != "intensive breast injections" && $arcologies[0].FSAssetExpansionistResearch == 0)>> - <<if $slaves[$i].bellyPreg < 300000 && $slaves[$i].hormoneBalance < 300>> - <<if ($slaves[$i].boobs > 10000+($slaves[$i].muscles*20))>> + <<if $slaves[$i].bellyPreg < 300000 && $slaves[$i].hormoneBalance < 300 && _gigantomastiaMod != 3>> + <<if ($slaves[$i].boobs > (_gigantomastiaMod == 2 ? 25000 : 10000)+($slaves[$i].muscles*20))>> $His breasts are larger than $his body can possibly sustain without industrial intervention, and they @@.orange;naturally lose mass.@@ <<set $slaves[$i].boobs -= 25>> <<else>> $His breasts are far, far beyond what $his body can sustain without industrial intervention, and they @@.orange;naturally lose mass.@@ - <<set $slaves[$i].boobs -= 50>> + <<set $slaves[$i].boobs -= 50/_gigantomastiaMod>> <</if>> <<if (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50))>> This effect is compounded by $his @@.orange;NCS.@@ @@ -7074,16 +7130,16 @@ <</if>> <</if>> <<else>> - <<if ($slaves[$i].boobs > 20000+($slaves[$i].muscles*50))>> + <<if ($slaves[$i].boobs > (_gigantomastiaMod == 2 ? 40000 : 20000)+($slaves[$i].muscles*50))>> <<if ($slaves[$i].assignment != "work in the dairy") || ($dairyRestraintsSetting < 2) || $arcologies[0].FSAssetExpansionistResearch == 0>> <<if ($slaves[$i].drugs != "breast injections" && $slaves[$i].drugs != "intensive breast injections" && $arcologies[0].FSAssetExpansionistResearch == 0)>> - <<if $slaves[$i].bellyPreg < 300000 && $slaves[$i].hormoneBalance < 300>> - <<if ($slaves[$i].boobs > 20000+($slaves[$i].muscles*50))>> + <<if $slaves[$i].bellyPreg < 300000 && $slaves[$i].hormoneBalance < 300 && _gigantomastiaMod != 3>> + <<if ($slaves[$i].boobs > (_gigantomastiaMod == 2 ? 40000 : 20000)+($slaves[$i].muscles*50))>> $His breasts are larger than $his body can possibly sustain without industrial intervention, and they @@.orange;naturally lose mass.@@ <<set $slaves[$i].boobs -= 25>> <<else>> $His breasts are far, far beyond what $his body can sustain without industrial intervention, and they @@.orange;naturally lose mass.@@ - <<set $slaves[$i].boobs -= 50>> + <<set $slaves[$i].boobs -= 50/_gigantomastiaMod>> <</if>> <<if (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50))>> This effect is compounded by $his @@.orange;NCS.@@ @@ -7543,7 +7599,7 @@ <<elseif ($slaves[$i].boobs < 1600)>> The powerful lactation drugs $he's implanted with @@.lime;slowly swell $his big breasts.@@ <<set $slaves[$i].boobs += 50>> - <<elseif ($slaves[$i].boobs < 3000)>> + <<elseif ($slaves[$i].boobs < 3000*_gigantomastiaMod)>> The powerful lactation drugs $he's implanted with @@.lime;gradually swell $his enormous breasts.@@ <<set $slaves[$i].boobs += 25>> <</if>> diff --git a/src/uncategorized/schoolroom.tw b/src/uncategorized/schoolroom.tw index aaf4a616a133d544b938fd9b930176e9637a76c7..bb15e1b52fe2e6999321e83bf1028e8bf002d820 100644 --- a/src/uncategorized/schoolroom.tw +++ b/src/uncategorized/schoolroom.tw @@ -89,7 +89,7 @@ $schoolroomNameCaps is well-equipped, with wallscreens to display lessons. These <</if>> <<set _Tmult0 = Math.trunc($schoolroom*1000*$upgradeMultiplierArcology)>> -<br>$schoolroomNameCaps has room to house $schoolroom slaves while they learn. Currently $schoolroomSlaves <<if $schoolroomSlaves == 1>>is<<else>>are<</if>> learning. +<br>$schoolroomNameCaps has room to house $schoolroom slaves while they learn. There <<if $schoolroomSlaves == 1>>is<<else>>are<</if>> currently $schoolroomSlaves <<if $schoolroomSlaves != 1>>s<</if>> learning in $schoolroomName. [[Expand the schoolroom|Schoolroom][cashX(forceNeg(_Tmult0), "capEx"), $schoolroom += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>// <br> diff --git a/src/uncategorized/servantsQuarters.tw b/src/uncategorized/servantsQuarters.tw index b4a778b748ab58b7088399eaee5279b240480cd2..546766faf616dd850c6b13eb2cc500ac36562ae6 100644 --- a/src/uncategorized/servantsQuarters.tw +++ b/src/uncategorized/servantsQuarters.tw @@ -87,7 +87,7 @@ $servantsQuartersNameCaps <</if>> <<set _Tmult0 = Math.trunc($servantsQuarters*1000*$upgradeMultiplierArcology)>> -<br>$servantsQuartersNameCaps has room to keep $servantsQuarters slaves while they serve. Currently $servantsQuartersSlaves <<if $servantsQuartersSlaves == 1>>is<<else>>are<</if>> serving. +<br>$servantsQuartersNameCaps has room to keep $servantsQuarters slaves while they serve. There <<if $servantsQuartersSlaves == 1>>is<<else>>are<</if>> currently $servantsQuartersSlaves <<if $servantsQuartersSlaves != 1>>s<</if>> serving in $servantsQuartersName. [[Expand the Servants' Quarters|Servants' Quarters][cashX(forceNeg(_Tmult0), "capEx"), $servantsQuarters += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>// <br> diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw index 4180f663b94938e1e9e4161b1b63d56413d59cd6..e627340ea14e2b4f7c4b26fcd8db8a957e0b07c5 100644 --- a/src/uncategorized/slaveInteract.tw +++ b/src/uncategorized/slaveInteract.tw @@ -349,11 +349,9 @@ <<set _ML = $marrying.length>> <<if (($MixedMarriage == 1 || $cheatMode == 1) && $activeSlave.relationship != 5 && $activeSlave.relationship != -3)>> <<set _eligible = 1>> - <<for _m = 0; _m < _ML; _m++>> - <<if $marrying[_m] == $activeSlave.ID>> - <<set _eligible = 0>> - <</if>> - <</for>> + <<if $marrying.includes($activeSlave.ID)>> + <<set _eligible = 0>> + <</if>> <<if _eligible != 0>> <<if (_ML < 2)>> <<if ($cheatMode == 1) || (_ML == 0)>> @@ -365,7 +363,6 @@ | //You can only marry up to two slaves per week// <</if>> <<else>> - /* FIXME: this message only displays for the last slave being married */ | //You are already marrying $him this weekend// <</if>> <</if>> @@ -514,154 +511,12 @@ /* CAN BE REASSIGNED */ Assignment: <strong><span id="assign">$activeSlave.assignment<<if $activeSlave.sentence>> ($activeSlave.sentence weeks)<</if>></span>.</strong> - <<link "Rest">> <<= assignJob($activeSlave, "rest")>><<replace "#assign">>$activeSlave.assignment<</replace>><<SlaveInteractFucktoy>><</link>> - <<if ["be confined in the arcade", "serve in the club", "serve in the master suite", "work as a farmhand", "work as a nanny", "work as a servant", "work in the brothel", "work in the dairy"].includes($activeSlave.assignment)>> - | <<link "Remove From Facility">> <<= removeJob($activeSlave, $activeSlave.assignment)>><<replace "#assign">>$activeSlave.assignment<</replace>><<SlaveInteractFucktoy>><</link>> - <</if>> - | <<link "Fucktoy">> <<= assignJob($activeSlave, "please you")>><<replace "#assign">>$activeSlave.assignment<</replace>><<SlaveInteractFucktoy>><</link>> - - <<if ($activeSlave.indentureRestrictions <= 0) && ($activeSlave.breedingMark != 1 || $propOutcome == 0)>> - | <<link "Gloryhole">> <<= assignJob($activeSlave, "work a glory hole")>><<replace "#assign">>$activeSlave.assignment<</replace>><<SlaveInteractFucktoy>><</link>> - <</if>> - - <<if $activeSlave.fuckdoll == 0>> /* NON-FUCKDOLL ASSIGNMENTS */ - - <<if ($activeSlave.devotion >= -20) || (($activeSlave.devotion >= -50) && ($activeSlave.trust < -20)) || ($activeSlave.trust < -50)>> - <<if $activeSlave.intelligenceImplant < 15 && $activeSlave.fetish != "mindbroken">> - | <<link "Classes">> <<= assignJob($activeSlave, "take classes")>><<replace "#assign">>$activeSlave.assignment<</replace>><<SlaveInteractFucktoy>><</link>> - <<else>> - | Classes - <</if>> - <<else>> - /*| //Too resistant to take classes// */ - <</if>> - - <<if (($activeSlave.devotion >= -20) || (($activeSlave.trust < -20) && ($activeSlave.devotion >= -50)) || ($activeSlave.trust < -50))>> - | <<link "Subordinate Slave" "Subordinate Targeting">> <<= assignJob($activeSlave, "be a subordinate slave")>><</link>> - <<if canSee($activeSlave) && canWalk($activeSlave)>> - | <<link "House Servant">> <<= assignJob($activeSlave, "be a servant")>><<replace "#assign">>$activeSlave.assignment<</replace>><<SlaveInteractFucktoy>><</link>> - <<else>> - /*| //Blind or immobile slaves cannot be servants// */ - <</if>> - <<else>> - /*| //Too resistant to be a servant// */ - <</if>> - - <<if ($activeSlave.breedingMark != 1 || $propOutcome == 0)>> - | <<link "Whore">> <<= assignJob($activeSlave, "whore")>><<replace "#assign">>$activeSlave.assignment<</replace>><<SlaveInteractFucktoy>><</link>> - | <<link "Public Servant">> <<= assignJob($activeSlave, "serve the public")>><<replace "#assign">>$activeSlave.assignment<</replace>><<SlaveInteractFucktoy>><</link>> - <</if>> - - <<if ($activeSlave.lactation > 0) || ($activeSlave.balls > 0 && $activeSlave.ballType == "human")>> - | <<link "Milked">> <<= assignJob($activeSlave, "get milked")>><<replace "#assign">>$activeSlave.assignment<</replace>><<SlaveInteractFucktoy>><</link>> - <<else>> - /*| //Not lactating// */ - <</if>> - - | <<link "Confinement">> <<= assignJob($activeSlave, "stay confined")>><<replace "#assign">>$activeSlave.assignment<</replace>><<SlaveInteractFucktoy>><</link>> - | <<link "Let $him choose">> <<= assignJob($activeSlave, "choose her own job")>><<replace "#assign">>$activeSlave.assignment<</replace>><<SlaveInteractFucktoy>><</link>> - | <<link "Stay on this assignment for another month">><<if $activeSlave.assignment != "choose her own job">><<set $activeSlave.sentence += 4>><<replace "#assign">>$activeSlave.assignment ($activeSlave.sentence weeks)<</replace>><</if>><</link>> - - <</if>>/* CLOSES FUCKDOLL CHECK */ + <span id="assignmentLinks"><<= App.UI.SlaveInteract.assignmentBlock("assignmentLinks")>></span> <<set _numFacilities = $brothel+$club+$dairy+$farmyard+$servantsQuarters+$masterSuite+$spa+$nursery+$clinic+$schoolroom+$cellblock+$arcade+$HGSuite>> <<if _numFacilities > 0>> - - <br>Transfer to: - - <<if $arcade != 0>> - <<if $arcade > $arcadeSlaves && ($activeSlave.indentureRestrictions <= 0) && ($activeSlave.breedingMark != 1 || $propOutcome == 0)>> - [[Arcade|Assign][$assignTo = "Arcade", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */ - <<else>>Arcade<</if>> - <<if _numFacilities-- > 1>>|<</if>> - <</if>> - - <<if $activeSlave.fuckdoll == 0>> /* NON-FUCKDOLL FACILITIES */ - - <<if $clinic != 0>> - <<if $clinic > $clinicSlaves && ($activeSlave.health < 20 || ($Nurse != 0 && (($activeSlave.chem > 15 && $clinicUpgradeFilters == 1) || ($bellyImplants == 1 && $activeSlave.bellyImplant > -1) || ($activeSlave.pregKnown == 1 && ($clinicSpeedGestation >= 0 || $activeSlave.pregControl == "speed up")) || ($activeSlave.pregAdaptation*1000 < $activeSlave.bellyPreg || $activeSlave.preg > $activeSlave.pregData.normalBirth/1.33))))>> - [[Clinic|Assign][$assignTo = "Clinic", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */ - <<else>>Clinic<</if>> - <<if _numFacilities-- > 1>>|<</if>> - <</if>> - - <<if $masterSuite != 0>> - <<if $masterSuite > $masterSuiteSlaves && (($activeSlave.devotion > 20) || (($activeSlave.devotion >= -50) && ($activeSlave.trust < -20)) || ($activeSlave.trust < -50))>> - [[Master Suite|Assign][$assignTo = "Master Suite", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */ - <<else>>Master Suite<</if>> - <<if _numFacilities-- > 1>>|<</if>> - <</if>> - - <<if $cellblock != 0>> - <<if $cellblock > $cellblockSlaves && (($activeSlave.devotion < -20 && $activeSlave.trust >= -20) || ($activeSlave.devotion < -50 && $activeSlave.trust >= -50))>> - [[Cellblock|Assign][$assignTo = "Cellblock", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */ - <<else>>Cellblock<</if>> - <<if _numFacilities-- > 1>>|<</if>> - <</if>> - - <<if $schoolroom != 0>> - <<if $schoolroom > $schoolroomSlaves && ($activeSlave.fetish != "mindbroken" && ($activeSlave.devotion >= -20 || ($activeSlave.devotion >= -50 && $activeSlave.trust < -20) || $activeSlave.trust < -50) && (($activeSlave.intelligenceImplant < 30) || ($activeSlave.voice != 0 && $activeSlave.accent+$schoolroomUpgradeLanguage > 2) || ($activeSlave.skill.oral <= 10+$schoolroomUpgradeSkills*20) || ($activeSlave.skill.whoring <= 10+$schoolroomUpgradeSkills*20) || ($activeSlave.skill.entertainment <= 10+$schoolroomUpgradeSkills*20) || ($activeSlave.skill.anal < 10+$schoolroomUpgradeSkills*20) || ($activeSlave.vagina >= 0 && $activeSlave.skill.vaginal < 10+$schoolroomUpgradeSkills*20)))>> - [[Schoolroom|Assign][$assignTo = "Schoolroom", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */ - <<else>>Schoolroom<</if>> - <<if _numFacilities-- > 1>>|<</if>> - <</if>> - - <<if $servantsQuarters != 0>> - <<if $servantsQuarters > $servantsQuartersSlaves && (canWalk($activeSlave) && canSee($activeSlave) && ($activeSlave.devotion >= -20 || ($activeSlave.devotion >= -50 && $activeSlave.trust <= 20) || $activeSlave.trust < -20))>> - [[Servants' Quarters|Assign][$assignTo = "Servants' Quarters", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */ - <<else>>Servants' Quarters<</if>> - <<if _numFacilities-- > 1>>|<</if>> - <</if>> - - <<if $brothel != 0>> - <<if $brothel > $brothelSlaves && ((($activeSlave.devotion > 50) || (($activeSlave.devotion >= -50) && ($activeSlave.trust < -20)) || ($activeSlave.trust < -50) || ($activeSlave.trust > 50)) && ($activeSlave.breedingMark != 1 || $propOutcome == 0))>> - [[Brothel|Assign][$assignTo = "Brothel", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */ - <<else>>Brothel<</if>> - <<if _numFacilities-- > 1>>|<</if>> - <</if>> - - <<if $club != 0>> - <<if $club > $clubSlaves && ((($activeSlave.devotion > 50) || (($activeSlave.devotion >= -50) && ($activeSlave.trust < -20)) || ($activeSlave.trust < -50) || ($activeSlave.trust > 50)) && ($activeSlave.breedingMark != 1 || $propOutcome == 0))>> - [[Club|Assign][$assignTo = "Club", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */ - <<else>>Club<</if>> - <<if _numFacilities-- > 1>>|<</if>> - <</if>> - - <<if $dairy != 0>> - <<set _dairySeed = $bioreactorsXY+$bioreactorsXX+$bioreactorsHerm+$bioreactorsBarren>> - <<if $dairy <= $dairySlaves+_dairySeed>> - Dairy - <<elseif((($activeSlave.indentureRestrictions > 0) && ($dairyRestraintsSetting > 1)) || (($activeSlave.indentureRestrictions > 1) && ($dairyRestraintsSetting > 0)) || ($activeSlave.breedingMark == 1 && $propOutcome == 1 && $dairyRestraintsSetting > 0) || (($dairyPregSetting > 0) && (($activeSlave.bellyImplant != -1) || ($activeSlave.broodmother > 0))))>> - Dairy - <<elseif (($activeSlave.lactation > 0) || ($activeSlave.balls > 0)) || (($dairyFeedersUpgrade == 1) && ($dairyFeedersSetting > 0) && ($dairySlimMaintainUpgrade == 0))>> - [[Dairy|Assign][$assignTo = "Dairy", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */ - <<else>>Dairy<</if>> - <<if _numFacilities-- > 1>>|<</if>> - <</if>> - - <<if $farmyard != 0>> - <<if $farmyard > $farmyardSlaves>> - [[Farmyard|Assign][$assignTo = "Farmyard", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */ - <<else>>Farmyard<</if>> - <<if _numFacilities-- > 1>>|<</if>> - <</if>> - - <<if $spa != 0>> - <<if $spa > $spaSlaves && (($activeSlave.devotion >= -20 || $activeSlave.fetish == "mindbroken") && ($activeSlave.health < 20 || $activeSlave.trust <= 60 || $activeSlave.devotion <= 60 || $activeSlave.fetish == "mindbroken" || $activeSlave.sexualFlaw !== "none" || $activeSlave.behavioralFlaw !== "none"))>> - [[Spa|Assign][$assignTo = "Spa", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */ - <<else>>Spa<</if>> - <<if _numFacilities-- > 1>>|<</if>> - <</if>> - - <<if $nursery != 0>> - <<if $nurseryNannies > $nurserySlaves && ($activeSlave.devotion > 20 || $activeSlave.trust > 20 || $activeSlave.fetish == "mindbroken")>> - [[Nursery|Assign][$assignTo = "Nursery", $i = -1]] - <<else>>Nursery<</if>> - <</if>> - - <</if>> /* CLOSES FUCKDOLL CHECK */ - + <br>Transfer to: <<= App.UI.jobLinks.transfers(-1)>> <</if>> /* closes _numFacilities */ <</switch>> /* END CAN BE REASSIGNED */ @@ -1002,8 +857,8 @@ <br>Leg accessory: ''<span id="legAccessory">$activeSlave.legAccessory</span>.'' <<link "None">><<set $activeSlave.legAccessory = "none">><<replace "#legAccessory">>$activeSlave.legAccessory<</replace>><</link>> - | <<link "Short Stockings">><<set $activeSlave.legAccessory = "short stockings">><<replace "#legAccessory">>$activeSlave.legAccessory<</replace>><</link>> - | <<link "Long Stockings">><<set $activeSlave.legAccessory = "long stockings">><<replace "#legAccessory">>$activeSlave.legAccessory<</replace>><</link>> + | <<link "Short stockings">><<set $activeSlave.legAccessory = "short stockings">><<replace "#legAccessory">>$activeSlave.legAccessory<</replace>><</link>> + | <<link "Long stockings">><<set $activeSlave.legAccessory = "long stockings">><<replace "#legAccessory">>$activeSlave.legAccessory<</replace>><</link>> <</if>> <br>Torso accessory: ''<span id="bellyAccessory">$activeSlave.bellyAccessory</span>.'' @@ -1100,17 +955,17 @@ <br>Chastity device: ''<span id="chastity"><<if $activeSlave.chastityAnus == 1 && $activeSlave.chastityPenis == 1 && $activeSlave.chastityVagina == 1>>full chastity<<elseif $activeSlave.chastityPenis == 1 && $activeSlave.chastityVagina == 1>>genital chastity<<elseif $activeSlave.chastityAnus == 1 && $activeSlave.chastityPenis == 1>>combined chastity cage<<elseif $activeSlave.chastityAnus == 1 && $activeSlave.chastityVagina == 1>>combined chastity belt<<elseif $activeSlave.chastityVagina == 1>>chastity belt<<elseif $activeSlave.chastityPenis == 1>>chastity cage<<elseif $activeSlave.chastityAnus == 1>>anal bhastity<<elseif $activeSlave.chastityAnus == 0 && $activeSlave.chastityPenis == 0 && $activeSlave.chastityVagina == 0>>none<<else>>THERE HAS BEEN AN ERROR<</if>></span>.'' <<link "None">><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>None<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>> - | <<link "Anal Chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>Anal Chastity<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>> + | <<link "Anal chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>Anal chastity<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>> <<if $activeSlave.vagina > -1>> - | <<link "Chastity Belt">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Vaginal Chastity<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>> - | <<link "Combined Chastity Belt">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Combined Chastity Belt<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>> + | <<link "Chastity belt">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Chastity belt<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>> + | <<link "Combined chastity belt">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Combined chastity belt<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>> <</if>> <<if $activeSlave.dick > 0>> - | <<link "Chastity Cage">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>Chastity Cage<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>> - | <<link "Combined Chastity Cage">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>Combined Chastity Cage<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>> + | <<link "Chastity cage">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>Chastity cage<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>> + | <<link "Combined chastity cage">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>Combined Chastity cage<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>> <<if $activeSlave.vagina > -1>> - | <<link "Genital Chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Genital Chastity<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>> - | <<link "Full Chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Full Chastity<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>> + | <<link "Genital chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Genital chastity<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>> + | <<link "Full chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Full chastity<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>> <</if>> <</if>> diff --git a/src/uncategorized/spa.tw b/src/uncategorized/spa.tw index d6bafceeda1d727d47e3089f0eec93f2ee58e33b..400c8d9ac7924f473299205b604029b7f76ddbff 100644 --- a/src/uncategorized/spa.tw +++ b/src/uncategorized/spa.tw @@ -88,7 +88,7 @@ $spaNameCaps <</if>> <<set _Tmult0 = Math.trunc($spa*1000*$upgradeMultiplierArcology)>> -<br>$spaNameCaps can house $spa slaves while they recuperate here. Currently $spaSlaves <<if $spaSlaves == 1>>is<<else>>are<</if>> recuperating. +<br>$spaNameCaps can house $spa slaves while they recuperate here. There <<if $spaSlaves == 1>>is<<else>>are<</if>> currently $spaSlaves <<if $spaSlaves != 1>>s<</if>> recuperating in $spaName. [[Expand the spa|Spa][cashX(forceNeg(_Tmult0), "capEx"), $spa += 5]] //Costs <<print cashFormat(_Tmult0)>>// <br> diff --git a/src/utility/descriptionWidgets.tw b/src/utility/descriptionWidgets.tw index ba81c8464d63f74dbdf872a6cd34f1ef71213806..7b85c5a8aefe811c609f58590a22ca8934fe6599 100644 --- a/src/utility/descriptionWidgets.tw +++ b/src/utility/descriptionWidgets.tw @@ -128,6 +128,23 @@ $He posses a rare genetic flaw that causes pregnancy to not block ovulation; not that it matters when $he can't get pregnant. <</if>> <</if>> + <<if $activeSlave.geneticQuirks.macromastia == 2 && $activeSlave.geneticQuirks.gigantomastia == 2>> + $He has an abnormal strain of gigantomastia and will experience constant excessive breast growth. + <<elseif $activeSlave.geneticQuirks.gigantomastia >= 2>> + $He has + <<if $activeSlave.geneticQuirks.gigantomastia == 3>> + dormant gigantomastia. Hormonal effects may cause it to become active. + <<else>> + gigantomastia and will experience excessive breast growth. + <</if>> + <<elseif $activeSlave.geneticQuirks.macromastia >= 2>> + $He has + <<if $activeSlave.geneticQuirks.macromastia == 3>> + dormant macromastia. Hormonal effects may cause it to become active. + <<else>> + macromastia and will experience excess development of breast tissue. + <</if>> + <</if>> <<if $activeSlave.geneticQuirks.wellHung == 2>> <<if $activeSlave.physicalAge <= 16 && $activeSlave.hormoneBalance < 100 && $activeSlave.dick > 0>> $He is likely to experience an inordinate amount of penile growth during $his physical development. diff --git a/src/utility/miscWidgets.tw b/src/utility/miscWidgets.tw index f6cc307d52fc7a12636aabe21cf7acd57ff768f7..e5951ea84a16cc0c93ca7eca4765a7020dbb3c9e 100644 --- a/src/utility/miscWidgets.tw +++ b/src/utility/miscWidgets.tw @@ -770,37 +770,6 @@ This experience <</if>> <</widget>> -/% - Call as <<SlaveInteractFucktoy>> -%/ -<<widget "SlaveInteractFucktoy">> - -<<replace #fucktoypref>> - <<if ($activeSlave.assignment == "please you") || ($activeSlave.assignment == "serve in the master suite") || ($activeSlave.assignment == "be your Concubine")>> - __Fucktoy use preference__: <strong><span id="hole">$activeSlave.toyHole</span></strong>. - <<link "Mouth">><<set $activeSlave.toyHole = "mouth">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>> - | <<link "Tits">><<set $activeSlave.toyHole = "boobs">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>> - <<if ($activeSlave.vagina > 0) && canDoVaginal($activeSlave)>> - | <<link "Pussy">><<set $activeSlave.toyHole = "pussy">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>> - <<elseif ($activeSlave.vagina == 0)>> - | //Take $his virginity before giving $his pussy special attention// - <</if>> - <<if ($activeSlave.anus > 0) && canDoAnal($activeSlave)>> - | <<link "Ass">><<set $activeSlave.toyHole = "ass">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>> - <<else>> - | //Take $his anal virginity before giving $his ass special attention// - <</if>> - /*check*/ - <<if ($activeSlave.dick > 0) && canPenetrate($activeSlave)>> - | <<link "Dick">><<set $activeSlave.toyHole = "dick">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>> - <</if>> - | <<link "No Preference">><<set $activeSlave.toyHole = "all her holes">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>> - <br> - <</if>> -<</replace>> - -<</widget>> - /* OBSOLETE: Use setPregType()instead! Call as <<SetPregType>> diff --git a/src/utility/slaveCreationWidgets.tw b/src/utility/slaveCreationWidgets.tw index 8a057c1c3fca4b1c0f03e0a85a39aefe066f3076..405626813fa8bed1f63235de2b9a6ef5fff58439 100644 --- a/src/utility/slaveCreationWidgets.tw +++ b/src/utility/slaveCreationWidgets.tw @@ -528,8 +528,8 @@ %/ <<widget "CustomSlaveWhoreSkills">> <<replace #whoreskills>> - <<if $customSlave.whoreSkills <= 10>>Unskilled at prostitution and entertainment. - <<elseif $customSlave.whoreSkills <= 15>>Basic prostitution and entertainment skills. + <<if $customSlave.skill.whore <= 10>>Unskilled at prostitution and entertainment. + <<elseif $customSlave.skill.whore <= 15>>Basic prostitution and entertainment skills. <<else>>Skilled at prostitution and entertainment. <</if>> <</replace>>