From 1bfd8c1590f12786ac531d7ebc654cc444c06ce1 Mon Sep 17 00:00:00 2001 From: Pregmodder <pregmodder@gmail.com> Date: Wed, 1 Apr 2020 19:57:25 -0400 Subject: [PATCH] saGuardYou JSification --- src/endWeek/saGuardYou.js | 327 +++++++++++++++++++++++++++++++ src/uncategorized/fullReport.tw | 2 +- src/uncategorized/saGuardsYou.tw | 249 ----------------------- 3 files changed, 328 insertions(+), 250 deletions(-) create mode 100644 src/endWeek/saGuardYou.js delete mode 100644 src/uncategorized/saGuardsYou.tw diff --git a/src/endWeek/saGuardYou.js b/src/endWeek/saGuardYou.js new file mode 100644 index 00000000000..44cb9a23875 --- /dev/null +++ b/src/endWeek/saGuardYou.js @@ -0,0 +1,327 @@ +window.saGuardYou = (function saGuardYou() { + "use strict"; + + let r; + + // eslint-disable-next-line no-unused-vars + let he, him, his, hers, himself, girl, He, His; + + let BGImpressiveness; + + // Used for selecting a successor + let successorCandidates; + let combatSkilled; + let flawedTrainee; + let candidate; + + return saGuardYou; + + /** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ + function saGuardYou(slave) { + r = []; + + ({ + // eslint-disable-next-line no-unused-vars + he, him, his, hers, himself, girl, He, His + } = getPronouns(slave)); + + BGImpressiveness = Deadliness(slave); + + updateBGState(slave); + jobPreface(slave); + publicImpression(slave); + jobEffects(slave); + if (V.bodyguardTrains === 1) { + trainReplacements(slave); + } + + return r.join(" "); + } + + /** + * @param {App.Entity.SlaveState} slave + * + */ + function jobPreface(slave) { + r.push(`carries arms in your defense.`); + } + + /** + * @param {App.Entity.SlaveState} slave + * + */ + function updateBGState(slave) { + if(V.dojo > 1) { + slave.rules.living = "luxurious"; + } + } + + /** + * @param {App.Entity.SlaveState} slave + * + */ + function publicImpression(slave) { + if (slave.skill.combat > 0) { + r.push(`${His} combat skills greatly increase ${his} deadliness.`); + } + + if (setup.bodyguardCareers.includes(slave.career)) { + r.push(`${He} has experience in personal defense from before ${he} was a slave.`); + } else if (slave.skill.bodyguard >= V.masteredXP) { + r.push(`${He} has experience in personal defense from working for you.`); + } else { + slave.skill.bodyguard += jsRandom(1, Math.ceil((slave.intelligence + slave.intelligenceImplant) / 15) + 8); + } + + if (slave.muscles > 30 && slave.muscles <= 95) { + r.push(`${He} is strong and powerful, yet quick and flexible.`); + } else if (slave.muscles > 95 && slave.height >= 185) { + r.push(`${His} huge muscles are an intimidating sight and, despite their massive size, ${he} is tall enough to use them effectively.`); + } else if (slave.muscles > 95) { + r.push(`${His} huge muscles are an intimidating sight, but are so big that they actually detract from ${his} combat effectiveness.`); + } else if (slave.muscles > 5) { + r.push(`${He} is reasonably fit, but not enough to significantly affect ${his} combat effectiveness.`); + } else if (slave.muscles < -95) { + r.push(`${He} can barely stand, let alone fight. A single shot from ${his} own weapon is liable to incapacitate ${him}, making ${him} an absolute travesty of a bodyguard.`); + } else if (slave.muscles < -30) { + r.push(`${He} tires from just standing, rendering ${him} both ineffective and embarrassing to have as your guard.`); + } else if (slave.muscles < -5) { + r.push(`${He} is rather unfit, enough to negatively impact ${his} combat effectiveness.`); + } + + if (getLimbCount(slave, 6) > 1) { + r.push(`The artificial muscles of ${his} cybernetic limbs increase ${his} strength and flexibility to enhance ${his} combat abilities and give ${him} the intimidating appearance of a super-soldier.`); + } else if (getLimbCount(slave, 105) > 1) { + r.push(`${His} tough combat limbs make ${him} an intimidating sight to behold.`); + } + + if (slave.height >= 170) { + r.push(`${His} height gives ${him} a reach advantage with ${his} sword.`); + } + + if (slave.health.condition > 50) { + r.push(`${His} shining health makes ${him} a better combatant.`); + } + + if (slave.boobs > 4000) { + r.push(`${His} titanic tits are a terrible hindrance in actual fighting.`); + } else if (slave.boobs > 2000) { + r.push(`${His} big breasts get in ${his} way and reduce ${his} efficiency.`); + } + + if (slave.dick >= 10) { + r.push(`${His} massive dick gets in ${his} way and reduces ${his} efficiency.`); + } + + if (slave.balls >= 15) { + r.push(`${His} massive balls slow ${him} down and limit ${his} range of motion.`); + } + + if (slave.butt > 6) { + r.push(`${His} massive ass slows ${him} down and limits ${his} range of motion.`); + } + + if (slave.hips > 2) { + r.push(`${He} struggles to move with ${his} inhumanly wide hips and frequently gets caught between things trying to follow you.`); + } + + if (slave.weight > 190) { + r.push(`${His} extreme weight nearly immobilizes ${him}. ${He} struggles to move let alone protect you. At least ${his} bloated body will likely stop bullets and block doorways when needed.`); + } else if (slave.weight > 160) { + r.push(`${His} extreme weight limits ${his} mobility and range of motion, making ${him} a poor bodyguard but decent meatshield.`); + } else if (slave.weight > 130) { + r.push(`${His} extreme weight is an impediment as a bodyguard.`); + } else if (slave.weight > 30) { + r.push(`${His} heavy weight is an impediment as a bodyguard.`); + } else if (slave.weight < -10) { + r.push(`${His} light weight is an impediment as a bodyguard.`); + } + + if (slave.health.condition < -50) { + r.push(`${His} poor health makes ${him} a weaker combatant.`); + } + + if (slave.health.tired > 90) { + r.push(`${He} is exhausted and can barely stay awake, let alone ready a weapon.`); + } else if (slave.health.tired > 60) { + r.push(`${He} is fatigued, making ${his} situational awareness and reaction time suffer.`); + } else if (slave.health.tired > 30) { + r.push(`${He} is tired, slightly lowering ${his} reaction time.`); + } + + if (slave.pregKnown === 1 || slave.bellyPreg >= 1500) { + if (slave.bellyPreg >= 750000) { + r.push(`${His} monolithic pregnancy greatly restricts ${his} movement and renders ${him} nearly useless in combat. ${He} can barely waddle after you, and when ${he} does, finds doors and small passages don't agree with ${his} bloated figure.`); + } else if (slave.bellyPreg >= 450000) { + r.push(`${His} gigantic pregnancy greatly hinders ${his} movement and terribly reduces ${his} effectiveness in combat. It also limits where ${he} can follow you, as doors and small passages don't agree with ${his} bloated figure.`); + } else if (slave.bellyPreg >= 300000) { + r.push(`${His} massive pregnancy obstructs ${his} movement and greatly hinders ${his} ability to protect you. It also limits where ${he} can follow you, as doors and small passages don't agree with ${his} bloated figure.`); + } else if (slave.bellyPreg >= 150000) { + r.push(`${His} giant pregnancy obstructs ${his} movement and greatly slows ${him} down. It also limits where ${he} can follow you, as ${he} has trouble waddling through crowds.`); + } else if (slave.bellyPreg >= 100000) { + r.push(`${His} giant belly gets in ${his} way and weighs ${him} down.`); + } else if (slave.bellyPreg >= 10000) { + r.push(`${His} huge belly is unwieldy and hinders ${him}.`); + } else if (slave.bellyPreg >= 5000) { + r.push(`${His} advanced pregnancy limits ${his} effectiveness.`); + } else if (slave.bellyPreg >= 1500) { + r.push(`${His} growing pregnancy occasionally distracts ${him} from ${his} job.`); + } else { + r.push(`The life just beginning to grow inside ${him} occasionally distracts ${him} from ${his} job.`); + } + } else if (slave.bellyImplant >= 1500) { + if (slave.bellyImplant >= 750000) { + r.push(`${His} monolithic, ${slave.bellyImplant}cc implant filled belly greatly restricts ${his} movement and renders ${him} nearly useless in combat. ${He} can barely waddle after you, and when ${he} does, finds doors and small passages don't agree with ${his} bloated figure.`); + } else if (slave.bellyImplant >= 450000) { + r.push(`${His} gigantic, ${slave.bellyImplant}cc implant filled belly greatly hinders ${his} movement and terribly reduces ${his} effectiveness in combat. It also limits where ${he} can follow you, as doors and small passages don't agree with ${his} bloated figure.`); + } else if (slave.bellyImplant >= 300000) { + r.push(`${His} massive, ${slave.bellyImplant}cc implant filled belly obstructs ${his} movement and greatly hinders ${his} ability to protect you. It also limits where ${he} can follow you, as doors and small passages don't agree with ${his} bloated figure.`); + } else if (slave.bellyImplant >= 150000) { + r.push(`${His} giant, ${slave.bellyImplant}cc implant filled belly obstructs ${his} movement and greatly slows ${him} down. It also limits where ${he} can follow you, as ${he} has trouble waddling through crowds.`); + } else if (slave.bellyImplant >= 100000) { + r.push(`${His} giant, ${slave.bellyImplant}cc implant filled belly is very heavy and unwieldy, frequently getting in the way of ${his} job.`); + } else if (slave.bellyImplant >= 10000) { + r.push(`${His} huge, ${slave.bellyImplant}cc implant filled belly is very heavy and unwieldy, throwing off ${his} weight and making ${him} far less effective.`); + } else if (slave.bellyImplant >= 5000) { + r.push(`${His} large, ${slave.bellyImplant}cc implant filled belly is heavy and unwieldy, limiting ${his} effectiveness.`); + } else if (slave.bellyImplant >= 1500) { + r.push(`${His} swollen, ${slave.bellyImplant}cc implant filled belly is heavy and occasionally distracts ${him}.`); + } + } + if (slave.labor === 1) { + r.push(`${He}'s feeling labor pains, greatly detracting from ${his} ability to protect you.`); + } else if (slave.preg >= slave.pregData.normalBirth && slave.pregControl !== "labor suppressors") { + r.push(`${He}'ll be going into labor any time now, detracting from ${his} ability to protect you.`); + } + + if (slave.bellyFluid >= 10000) { + r.push(`${His} hugely bloated, ${slave.inflationType}-filled belly is taut and painful, hindering ${his} ability to guard you.`); + } else if (slave.bellyFluid >= 5000) { + r.push(`${His} bloated, ${slave.inflationType}-stuffed belly is constantly jiggling and moving, distracting ${him} and throwing off ${his} weight.`); + } else if (slave.bellyFluid >= 2000) { + r.push(`${His} distended, ${slave.inflationType}-belly is uncomfortable and heavy, distracting ${him}.`); + } + + if (slave.teeth === "pointy") { + r.push(`${His} sharp teeth add nothing to ${his} actual effectiveness, but they're certainly intimidating.`); + } + + if ((slave.skill.combat < 1) && (jsRandom(-100, 150) <= (slave.intelligence + slave.intelligenceImplant))) { + r.push(`After some experience guarding you, and diligent practice in the armory, <span class="green">${his} combat skills increase.</span>`); + slave.skill.combat += 1; + } else if (slave.skill.combat >= 1) { + r.push(`${He} maintains ${his} combat skill with practice in the armory.`); + } else { + r.push(`Though ${he} practices diligently, ${his} basic combat skills do not impress.`); + } + + r.push(`${His} constant presence is`); + if (BGImpressiveness > 6) { + r.push(`extremely intimidating, <span class="green">adding much to your reputation.</span>`); + if (slave.career === "an arcology owner") { + r.push(`You've made a one-time rival arcology owner into a deadly and loyal protector, a feat of slaveownership that's <span class="green">internationally famous.</span>`); + repX(BGImpressiveness * 50, "bodyguard", slave); + } + } else if (BGImpressiveness > 3) { + r.push(`intimidating, <span class="green">adding to your reputation.</span>`); + } else { + r.push(`hardly intimidating, <span class="yellow">barely adding to your reputation.</span>`); + } + + repX(BGImpressiveness * 50, "bodyguard", slave); + } + + /** + * @param {App.Entity.SlaveState} slave + * + */ + function jobEffects(slave) { + r.push(`Being continually trusted with your life <span class="hotpink"> increases ${his} devotion to you</span> and encourages ${him} to <span class="mediumaquamarine"> trust you in turn.</span>`); + slave.devotion += 2; + slave.trust += 4; + + if (V.dojo > 1) { + r.push(`${He} <span class="hotpink">appreciates</span> how special it is that ${he} has a nice room off the armory to rest in. ${He} can finally <span class="green">rest easy</span> while still keeping tabs on your safety.`); + slave.devotion += 1; + } else { + r.push(`Between protecting you, training, and keeping vigil while you sleep, ${he} lives a <span class="red">very tiring</span> life.`); + } + tired(slave); + } + + /** + * @param {App.Entity.SlaveState} slave + * + */ + function trainReplacements(slave) { + if (slave.devotion > 95 && slave.trust > 50 && slave.skill.combat > 0 && slave.intelligence + slave.intelligenceImplant > 15) { + successorCandidates = V.slaves.filter(function(s) { return (assignmentVisible(s) || s.assignment === "be your Concubine" || s.assignment === "be the Wardeness" || s.assignment === "be your Head Girl" || s.assignment === "work as a servant" || s.assignment === "serve in the master suite") && bodyguardSuccessorEligible(s); }); + combatSkilled = successorCandidates.filter(function(s) { return s.skill.combat > 0; }); + + r.push(`${He}'s confident in ${his} martial skills, but smart enough to know that ${he} isn't immortal, and devoted enough to worry about who will protect you should ${he} die.`); + if (combatSkilled.length < 2) { + flawedTrainee = 0; + if (slave.relationship > 1) { + candidate = getSlave(slave.relationshipTarget); + if (candidate !== undefined && candidate.skill.combat === 0 && bodyguardSuccessorEligible(candidate)) { + const candidatePronouns = getPronouns(candidate); + r.push(`${He} does ${his} best to train candidate.slaveName whenever ${he} can, hoping that ${his}`); + if (slave.relationship > 4) { + r.push(`${candidatePronouns.wife}`); + } else if (slave.relationship === 4) { + r.push(`lover`); + } else if (slave.relationship === 3) { + r.push(`${candidatePronouns.girl} friend`); + } else { + r.push(`best friend`); + } + r.push(`can be made capable of stepping into ${his} place.`); + } + } + if (!candidate) { + if (V.HeadGirl !== 0 && V.HeadGirl.skill.combat === 0 && bodyguardSuccessorEligible(V.HeadGirl)) { + r.push(`${He} does ${his} best to train ${V.HeadGirl.slaveName} whenever ${he} can, hoping that your Head Girl can be made capable of stepping into ${his} place.`); + candidate = V.HeadGirl; + } + } + if (!candidate) { + if (V.Concubine !== 0 && V.Concubine.skill.combat === 0 && V.Concubine.devotion > 50 && V.Concubine.muscles >= -30 && V.Concubine.weight < 150 && V.Concubine.butt < 10 && V.Concubine.boobs < 25000 && V.Concubine.belly < 5000 && V.Concubine.balls < 20 && V.Concubine.dick < 15 && V.Concubine.fuckdoll === 0 && V.Concubine.fetish !== "mindbroken" && canWalk(V.Concubine)) { + r.push(`${He} does ${his} best to train V.Concubine.slaveName whenever ${he} can, hoping that your Concubine can be made capable of stepping into ${his} place.`); + if (V.Concubine.boobs >= 8000 || V.Concubine.butt >= 10 || V.Concubine.belly >= 5000 || V.Concubine.balls >= 10 || V.Concubine.dick >= 10 || V.Concubine.muscles < 0 || V.Concubine.weight >= 100) { + r.push(`${His} body is poorly suited for combat, but ${he} can learn to work around it with enough effort.`); + flawedTrainee = jsRandom(0, 50); + } + candidate = V.Concubine; + } + } + if (!candidate) { + if (V.Wardeness !== 0 && V.Wardeness.skill.combat === 0 && V.Wardeness.fetish !== "mindbroken" && bodyguardSuccessorEligible(V.Wardeness)) { + r.push(`${He} does ${his} best to train V.Wardeness.slaveName whenever ${he} can, hoping that your Wardeness can be made capable of stepping into ${his} place.`); + candidate = V.Wardeness; + } + } + if (!candidate) { + candidate = successorCandidates.find(function(s) { return s.skill.combat === 0; }); + if (candidate) { + r.push(`${He} does ${his} best to train candidate.slaveName whenever ${he} can, hoping that ${his} subordinate can be made capable of stepping into ${his} place.`); + } + } + if (candidate) { + if ((slave.intelligence + slave.intelligenceImplant - flawedTrainee) > jsRandom(1, 500)) { + r.push(`By the end of the week, ${he} is satisfied that V.subSlave.slaveName <span class="green">has the combat skill</span> to contribute to your defense.`); + V.slaves[V.slaveIndices[candidate.ID]].skill.combat = 1; + } + } else { + r.push(`${He} finds no suitable candidates to serve as ${his} replacement, leaving ${him} stressed over your future safety. The worry is <span class="red">exhausting</span> and <span class="red">bad for ${his} health.</span>`); + healthDamage(slave, 3); + slave.health.tired += 15; + } + } else { + r.push(`${He} takes care to look after the skills of your other defensively capable slaves, satisfied that there are enough of them living in your penthouse.`); + } + } + } +})(); diff --git a/src/uncategorized/fullReport.tw b/src/uncategorized/fullReport.tw index 2e8120e8b40..8475415180e 100644 --- a/src/uncategorized/fullReport.tw +++ b/src/uncategorized/fullReport.tw @@ -33,7 +33,7 @@ <<case "stay confined">> <<= saStayConfined($slaves[$i])>> <<case "guard you">> - <<include "SA guard you">> + <<= saGuardYou($slaves[$i])>> <<case "be your Head Girl">> <<= saBeYourHeadGirl($slaves[$i])>> <<case "recruit girls">> diff --git a/src/uncategorized/saGuardsYou.tw b/src/uncategorized/saGuardsYou.tw deleted file mode 100644 index 094e5322f04..00000000000 --- a/src/uncategorized/saGuardsYou.tw +++ /dev/null @@ -1,249 +0,0 @@ -:: SA guard you [nobr] - -carries arms in your defense. - -<<if $dojo > 1>> - <<set $slaves[$i].rules.living = "luxurious">> -<</if>> - -<<set _deadliness = Deadliness($slaves[$i])>> - -<<if $slaves[$i].skill.combat > 0>> - $His combat skills greatly increase $his deadliness. -<</if>> - -<<if setup.bodyguardCareers.includes($slaves[$i].career)>> - $He has experience in personal defense from before $he was a slave. -<<elseif $slaves[$i].skill.bodyguard >= $masteredXP>> - $He has experience in personal defense from working for you. -<<else>> - <<set $slaves[$i].skill.bodyguard += random(1,Math.ceil(($slaves[$i].intelligence+$slaves[$i].intelligenceImplant)/15) + 8)>> -<</if>> - -<<if ($slaves[$i].muscles > 30) && ($slaves[$i].muscles <= 95)>> - $He is strong and powerful yet quick and flexible. -<<elseif $slaves[$i].muscles > 95 && $slaves[$i].height >= 185>> - $His huge muscles are an intimidating sight and, despite their massive size, $he is tall enough to use them effectively. -<<elseif $slaves[$i].muscles > 95>> - $His huge muscles are an intimidating sight, but are so big that they actually detract from $his combat effectiveness. -<<elseif $slaves[$i].muscles > 5>> - $He is reasonably fit, but not enough to significantly affect $his combat effectiveness. -<<elseif $slaves[$i].muscles < -95>> - $He can barely stand, let alone fight. A single shot from $his own weapon is liable to incapacitate $him, making $him an absolute travesty of a bodyguard. -<<elseif $slaves[$i].muscles < -30>> - $He tires from just standing, rendering $him both ineffective and embarrassing to have as your guard. -<<elseif $slaves[$i].muscles < -5>> - $He is rather unfit, enough to negatively impact $his combat effectiveness. -<</if>> - -<<if getLimbCount($slaves[$i], 6) > 1>> - The artificial muscles of $his cybernetic limbs increase $his strength and flexibility to enhance $his combat abilities and give $him the intimidating appearance of a super-soldier. -<<elseif getLimbCount($slaves[$i], 105) > 1>> - $His tough combat limbs make $him an intimidating sight to behold. -<</if>> - -<<if $slaves[$i].height >= 170>> - $His height gives $him a reach advantage with $his sword. -<</if>> - -<<if $slaves[$i].health.condition > 50>> - $His shining health makes $him a better combatant. -<</if>> - -<<if $slaves[$i].boobs > 4000>> - $His titanic tits are a terrible hindrance in actual fighting. -<<elseif $slaves[$i].boobs > 2000>> - $His big breasts get in $his way and reduce $his efficiency. -<</if>> - -<<if $slaves[$i].dick >= 10>> - $His massive dick gets in $his way and reduces $his efficiency. -<</if>> - -<<if $slaves[$i].balls >= 15>> - $His massive balls slow $him down and limit $his range of motion. -<</if>> - -<<if $slaves[$i].butt > 6>> - $His massive ass slows $him down and limits $his range of motion. -<</if>> - -<<if $slaves[$i].hips > 2>> - $He struggles to move with $his inhumanly wide hips and frequently gets caught between things trying to follow you. -<</if>> - -<<if $slaves[$i].weight > 190>> - $His extreme weight nearly immobilizes $him. $He struggles to move let alone protect you. At least $his bloated body will likely stop bullets and block doorways when needed. -<<elseif $slaves[$i].weight > 160>> - $His extreme weight limits $his mobility and range of motion, making $him a poor bodyguard but decent meatshield. -<<elseif $slaves[$i].weight > 130>> - $His extreme weight is an impediment as a bodyguard. -<<elseif $slaves[$i].weight > 30>> - $His heavy weight is an impediment as a bodyguard. -<<elseif $slaves[$i].weight < -10>> - $His light weight is an impediment as a bodyguard. -<</if>> - -<<if $slaves[$i].health.condition < -50>> - $His poor health makes $him a weaker combatant. -<</if>> - -<<if $slaves[$i].health.tired > 90>> - $He is exhausted and can barely stay awake, let alone ready a weapon. -<<elseif $slaves[$i].health.tired > 60>> - $He is fatigued, making $his situational awareness and reaction time suffer. -<<elseif $slaves[$i].health.tired > 30>> - $He is tired, slightly lowering $his reaction time. -<</if>> - -<<if $slaves[$i].pregKnown == 1 || $slaves[$i].bellyPreg >= 1500>> - <<if $slaves[$i].bellyPreg >= 750000>> - $His monolithic pregnancy greatly restricts $his movement and renders $him nearly useless in combat. $He can barely waddle after you, and when $he does, finds doors and small passages don't agree with $his bloated figure. - <<elseif $slaves[$i].bellyPreg >= 450000>> - $His gigantic pregnancy greatly hinders $his movement and terribly reduces $his effectiveness in combat. It also limits where $he can follow you, as doors and small passages don't agree with $his bloated figure. - <<elseif $slaves[$i].bellyPreg >= 300000>> - $His massive pregnancy obstructs $his movement and greatly hinders $his ability to protect you. It also limits where $he can follow you, as doors and small passages don't agree with $his bloated figure. - <<elseif $slaves[$i].bellyPreg >= 150000>> - $His giant pregnancy obstructs $his movement and greatly slows $him down. It also limits where $he can follow you, as $he has trouble waddling through crowds. - <<elseif $slaves[$i].bellyPreg >= 100000>> - $His giant belly gets in $his way and weighs $him down. - <<elseif $slaves[$i].bellyPreg >= 10000>> - $His huge belly is unwieldy and hinders $him. - <<elseif $slaves[$i].bellyPreg >= 5000>> - $His advanced pregnancy limits $his effectiveness. - <<elseif $slaves[$i].bellyPreg >= 1500>> - $His growing pregnancy occasionally distracts $him from $his job. - <<else>> - The life just beginning to grow inside $him occasionally distracts $him from $his job. - <</if>> -<<elseif $slaves[$i].bellyImplant >= 1500>> - <<if $slaves[$i].bellyImplant >= 750000>> - $His monolithic, <<print $slaves[$i].bellyImplant>>cc implant filled belly greatly restricts $his movement and renders $him nearly useless in combat. $He can barely waddle after you, and when $he does, finds doors and small passages don't agree with $his bloated figure. - <<elseif $slaves[$i].bellyImplant >= 450000>> - $His gigantic, <<print $slaves[$i].bellyImplant>>cc implant filled belly greatly hinders $his movement and terribly reduces $his effectiveness in combat. It also limits where $he can follow you, as doors and small passages don't agree with $his bloated figure. - <<elseif $slaves[$i].bellyImplant >= 300000>> - $His massive, <<print $slaves[$i].bellyImplant>>cc implant filled belly obstructs $his movement and greatly hinders $his ability to protect you. It also limits where $he can follow you, as doors and small passages don't agree with $his bloated figure. - <<elseif $slaves[$i].bellyImplant >= 150000>> - $His giant, <<print $slaves[$i].bellyImplant>>cc implant filled belly obstructs $his movement and greatly slows $him down. It also limits where $he can follow you, as $he has trouble waddling through crowds. - <<elseif $slaves[$i].bellyImplant >= 100000>> - $His giant, <<print $slaves[$i].bellyImplant>>cc implant filled belly is very heavy and unwieldy, frequently getting in the way of $his job. - <<elseif $slaves[$i].bellyImplant >= 10000>> - $His huge, <<print $slaves[$i].bellyImplant>>cc implant filled belly is very heavy and unwieldy, throwing off $his weight and making $him far less effective. - <<elseif $slaves[$i].bellyImplant >= 5000>> - $His large, <<print $slaves[$i].bellyImplant>>cc implant filled belly is heavy and unwieldy, limiting $his effectiveness. - <<elseif $slaves[$i].bellyImplant >= 1500>> - $His swollen, <<print $slaves[$i].bellyImplant>>cc implant filled belly is heavy and occasionally distracts $him. - <</if>> -<</if>> -<<if $slaves[$i].labor == 1>> - $He's feeling labor pains, greatly detracting from $his ability to protect you. -<<elseif $slaves[$i].preg >= $slaves[$i].pregData.normalBirth && $slaves[$i].pregControl != "labor suppressors">> - $He'll be going into labor any time now, detracting from $his ability to protect you. -<</if>> - -<<if $slaves[$i].bellyFluid >= 10000>> - $His hugely bloated, <<print $slaves[$i].inflationType>>-filled belly is taut and painful, hindering $his ability to guard you. -<<elseif $slaves[$i].bellyFluid >= 5000>> - $His bloated, <<print $slaves[$i].inflationType>>-stuffed belly is constantly jiggling and moving, distracting $him and throwing off $his weight. -<<elseif $slaves[$i].bellyFluid >= 2000>> - $His distended, <<print $slaves[$i].inflationType>>-belly is uncomfortable and heavy, distracting $him. -<</if>> - -<<if $slaves[$i].teeth == "pointy">> - $His sharp teeth add nothing to $his actual effectiveness, but they're certainly intimidating. -<</if>> - -<<if ($slaves[$i].skill.combat < 1) && (random(-100,150) <= ($slaves[$i].intelligence+$slaves[$i].intelligenceImplant))>> - After some experience guarding you, and diligent practice in the armory, @@.green;$his combat skills increase.@@ - <<set $slaves[$i].skill.combat += 1>> -<<elseif $slaves[$i].skill.combat >= 1>> - $He maintains $his combat skill with practice in the armory. -<<else>> - Though $he practices diligently, $his basic combat skills do not impress. -<</if>> - -$His constant presence is -<<if _deadliness > 6>> - extremely intimidating, @@.green;adding much to your reputation.@@ - <<if $slaves[$i].career == "an arcology owner">> - You've made a one-time rival arcology owner into a deadly and loyal protector, a feat of slaveownership that's @@.green;internationally famous.@@ - <<run repX(_deadliness*50, "bodyguard", $slaves[$i])>> - <</if>> -<<elseif _deadliness > 3>> - intimidating, @@.green;adding to your reputation.@@ -<<else>> - hardly intimidating, @@.yellow;barely adding to your reputation.@@ -<</if>> - -<<run repX(_deadliness*50, "bodyguard", $slaves[$i])>> - -Being continually trusted with your life @@.hotpink;increases $his devotion to you@@ and encourages $him to @@.mediumaquamarine;trust you in turn.@@ - <<set $slaves[$i].devotion += 2>> - <<set $slaves[$i].trust += 4>> - -<<if $dojo > 1>> - $He @@.hotpink;appreciates@@ how special it is that $he has a nice room off the armory to rest in. $He can finally @@.green;rest easy@@ while still keeping tabs on your safety. - <<set $slaves[$i].devotion += 1>> -<<else>> - Between protecting you, training, and keeping vigil while you sleep, $he lives a @@.red;very tiring@@ life. -<</if>> -<<run tired($slaves[$i])>> - -<<if $bodyguardTrains == 1 && $slaves[$i].devotion > 95 && $slaves[$i].trust > 50 && $slaves[$i].skill.combat > 0 && $slaves[$i].intelligence+$slaves[$i].intelligenceImplant > 15>> - $He's confident in $his martial skills, but smart enough to know that $he isn't immortal, and devoted enough to worry about who will protect you should $he die. - <<set _successorCandidates = $slaves.filter( function(s) { return (assignmentVisible(s) || s.assignment == "be your Concubine" || s.assignment == "be the Wardeness" || s.assignment == "be your Head Girl" || s.assignment == "work as a servant" || s.assignment == "serve in the master suite") && bodyguardSuccessorEligible(s); } )>> - <<set _combatSkilled = _successorCandidates.filter( function(s) { return s.skill.combat > 0; })>> - <<if _combatSkilled.length < 2>> - <<unset $subSlave>> - <<set _flawedTrainee = 0>> - <<if $slaves[$i].relationship > 1>> - <<set $subSlave = getSlave($slaves[$i].relationshipTarget)>> - <<if (def $subSlave) && $subSlave.skill.combat == 0 && bodyguardSuccessorEligible($subSlave)>> - <<setLocalPronouns $subSlave 2>> - $He does $his best to train $subSlave.slaveName whenever $he can, hoping that $his - <<if $slaves[$i].relationship > 4>>_wife2<<elseif $slaves[$i].relationship == 4>>lover<<elseif $slaves[$i].relationship == 3>><<= _girl2>>friend<<else>>best friend<</if>> - can be made capable of stepping into $his place. - <</if>> - <</if>> - <<if ndef $subSlave>> - <<if $HeadGirl != 0 && $HeadGirl.skill.combat == 0 && bodyguardSuccessorEligible($HeadGirl)>> - $He does $his best to train $HeadGirl.slaveName whenever $he can, hoping that your Head Girl can be made capable of stepping into $his place. - <<set $subSlave = $HeadGirl>> - <</if>> - <</if>> - <<if ndef $subSlave>> - <<if $Concubine != 0 && $Concubine.skill.combat == 0 && $Concubine.devotion > 50 && $Concubine.muscles >= -30 && $Concubine.weight < 150 && $Concubine.butt < 10 && $Concubine.boobs < 25000 && $Concubine.belly < 5000 && $Concubine.balls < 20 && $Concubine.dick < 15 && $Concubine.fuckdoll == 0 && $Concubine.fetish != "mindbroken" && canWalk($Concubine)>> - $He does $his best to train $Concubine.slaveName whenever $he can, hoping that your Concubine can be made capable of stepping into $his place. - <<if $Concubine.boobs >= 8000 || $Concubine.butt >= 10 || $Concubine.belly >= 5000 || $Concubine.balls >= 10 || $Concubine.dick >= 10 || $Concubine.muscles < 0 || $Concubine.weight >= 100>> - $His body is poorly suited for combat, but $he can learn to work around it with enough effort. - <<set _flawedTrainee = random(0,50)>> - <</if>> - <<set $subSlave = $Concubine>> - <</if>> - <</if>> - <<if ndef $subSlave>> - <<if $Wardeness != 0 && $Wardeness.skill.combat == 0 && bodyguardSuccessorEligible($Wardeness)>> - $He does $his best to train $Wardeness.slaveName whenever $he can, hoping that your Wardeness can be made capable of stepping into $his place. - <<set $subSlave = $Wardeness>> - <</if>> - <</if>> - <<if ndef $subSlave>> - <<set $subSlave = _successorCandidates.find( function(s) { return s.skill.combat == 0; })>> - <<if def $subSlave>> - $He does $his best to train $subSlave.slaveName whenever $he can, hoping that $his subordinate can be made capable of stepping into $his place. - <</if>> - <</if>> - <<if def $subSlave>> - <<if ($slaves[$i].intelligence + $slaves[$i].intelligenceImplant - _flawedTrainee) > random(1,500)>> - By the end of the week, $he is satisfied that $subSlave.slaveName @@.green;has the combat skill@@ to contribute to your defense. - <<set _sgy = $slaveIndices[$subSlave.ID]>> - <<set $slaves[_sgy].skill.combat = 1>> - <</if>> - <<else>> - $He finds no suitable candidates to serve as $his replacement, leaving $him stressed over your future safety. The worry is exhausting and @@.red;bad for $his health.@@ - <<run healthDamage($slaves[$i], 3)>> - <</if>> - <<else>> - $He takes care to look after the skills of your other defensively capable slaves, satisfied that there are enough of them living in your penthouse. - <</if>> -<</if>> -- GitLab