diff --git a/devTools/types/FC/gameState.d.ts b/devTools/types/FC/gameState.d.ts index 91f7907885aa0e1aafaecbac93dfc1f69f62fd82..922673d8a521ad3b62e44b51ad846d69f77a387c 100644 --- a/devTools/types/FC/gameState.d.ts +++ b/devTools/types/FC/gameState.d.ts @@ -181,7 +181,6 @@ declare namespace FC { relation: number; heroSlaves: SlaveTemplate[]; - HGTastes?: number; //#region FCTV usedRemote: Bool; diff --git a/src/endWeek/saLiveWithHG.js b/src/endWeek/saLiveWithHG.js new file mode 100644 index 0000000000000000000000000000000000000000..01d248a243de9b298b3ecdfe1b3c20407a209359 --- /dev/null +++ b/src/endWeek/saLiveWithHG.js @@ -0,0 +1,1649 @@ +App.SlaveAssignment.liveWithHG = (function() { + "use strict"; + + /* Major forced feminization. Needs serious reworking to support male slaves. Instead base off HG's attr stat? */ + + let r; + + let arcology; + let he, him, his, himself, girl, He, wife; + let he2, him2, his2, himself2, He2, His2, wife2; + + let diet; + let hormones; + + let oralUse; + let analUse; + let vaginalUse; + let mammaryUse; + let penetrativeUse; + let cervixPump; + + return saliveWithHG; + + /** + * @param {App.Entity.SlaveState} slave + * @returns {DocumentFragment} + */ + function saliveWithHG(slave) { + const el = new DocumentFragment(); + r = []; + + ({ + he, him, his, himself, girl, He, wife + } = getPronouns(slave)); + ({ + he2, him2, his2, himself2, He2, His2, wife2 + } = getPronouns(S.HeadGirl).appendSuffix("2")); + + arcology = V.arcologies[0]; + + // These get swapped prior to their text, so remember them. + diet = slave.diet; + hormones = slave.hormones; + + oralUse = 0; + analUse = 0; + vaginalUse = 0; + mammaryUse = 0; + penetrativeUse = 0; + cervixPump = 0; + + if (V.seeImages && V.seeReportImages) { + App.UI.DOM.appendNewElement("div", el, App.Art.SlaveArtElement(slave, 2, 0), ["imageRef", "medImg"]); + } + + HGSetsDiet(slave, S.HeadGirl); + if (V.HGSuiteHormones !== 0) { + HGSetsHormones(slave, S.HeadGirl); + } + HGSetsDrugs(slave, S.HeadGirl); + HGSetsLivingConditions(slave, S.HeadGirl); + slaveAssistsHG(slave, S.HeadGirl); + HGSlaveTreatment(slave, S.HeadGirl); + slaveHGRelations(slave, S.HeadGirl); + HGTrainsSlave(slave, S.HeadGirl); + if (canPenetrate(S.HeadGirl)) { + HGStretchesHoles(slave, S.HeadGirl); + } + if (V.seePreg !== 0) { + HGManagesPregnancy(slave, S.HeadGirl); + } + if (slave.devotion > 50) { + HGCausesFetish(slave, S.HeadGirl); + } + HGSexualSatiaion(slave, S.HeadGirl); + HGManagesTiredness(slave, S.HeadGirl); + HGDressesSlave(slave, S.HeadGirl); + if (S.HeadGirl.energy > 95) { + narcissistHG(slave, S.HeadGirl); + } + HGSetsDietText(slave, S.HeadGirl); + if (V.HGSuiteHormones !== 0) { + HGSetsHormonesText(slave, S.HeadGirl); + } + HGSetsDrugsText(slave, S.HeadGirl); + if (V.HGSuiteSurgery !== 0) { + HGArrangesSurgery(slave, S.HeadGirl); + } + HGEnjoyment(slave, S.HeadGirl); + slaveReport(slave); + + App.Events.addNode(el, r); + return el; + } + + function getHGTastes() { + if (arcology.FSSlimnessEnthusiast !== "unset") { + return 1; + } else if (arcology.FSRepopulationFocus !== "unset") { + return 4; + } else if (arcology.FSBodyPurist !== "unset") { + return 1; + } else if (arcology.FSDegradationist !== "unset") { + return 3; + } else if (arcology.FSAssetExpansionist !== "unset") { + return 3; + } else if (arcology.FSTransformationFetishist !== "unset") { + return 3; + } + return 2; + } + + /** + * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState} HG + */ + function HGSetsDiet(slave, HG) { + if ((arcology.FSRepopulationFocusPregPolicy === 1 || (arcology.FSRestart === "unset" && HG.fetish === "pregnancy")) && canImpreg(slave, HG) && V.dietFertility === 1) { + if (slave.diet !== "fertility") { + slave.diet = "fertility"; + } + } else if ((slave.weight < 100 && arcology.FSHedonisticDecadence >= 20) || (slave.weight < -10)) { + if (slave.diet !== "fattening") { + slave.diet = "fattening"; + } + } else if (slave.weight > 30 && arcology.FSHedonisticDecadence === "unset") { + if (slave.diet !== "restricted") { + slave.diet = "restricted"; + } + } else if (((slave.muscles <= 95 && ((arcology.FSPhysicalIdealist > 0 && arcology.FSPhysicalIdealistLaw === 0) || ((HG.fetish === "submissive" || HG.fetish === "masochist")))) || (slave.muscles <= 45 && (arcology.FSPhysicalIdealist !== "unset" && arcology.FSPhysicalIdealistLaw === 1)) || slave.muscles <= 5) && !isAmputee(slave)) { + if (slave.diet !== "muscle building") { + slave.diet = "muscle building"; + } + } else if (slave.balls > 0 && HG.fetish === "cumslut" && V.cumProDiet === 1) { + if (slave.diet !== "cum production") { + slave.diet = "cum production"; + } + } else { + if (slave.diet !== "healthy") { + slave.diet = "healthy"; + } + } + } + + /** + * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState} HG + */ + function HGSetsHormones(slave, HG) { + // Room for expansion + if (slave.hormones !== 2) { + slave.hormones = 2; + } + } + + /** + * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState} HG + */ + function HGSetsDrugs(slave, HG) { + if (V.HGSuiteDrugs !== 0) { + if (slave.health.condition < 60) { + slave.curatives = 2; + } + if (slave.lips <= 20) { + slave.drugs = "lip injections"; + } else if (arcology.FSSlaveProfessionalismResearch === 1 && V.HGSuiteEquality !== 0 && canImproveIntelligence(slave)) { + slave.drugs = "psychostimulants"; + } else if (HG.fetish === "buttslut" && arcology.FSAssetExpansionistResearch === 1 && slave.butt < 18) { + slave.drugs = "hyper butt injections"; + } else if (HG.fetish === "buttslut" && arcology.FSAssetExpansionistResearch === 1 && slave.butt < 8) { + slave.drugs = "butt injections"; + } else if (HG.fetish === "cumslut" && arcology.FSAssetExpansionistResearch === 1 && slave.balls < 100 && slave.balls > 0 && slave.dick > 0) { + slave.drugs = "hyper testicle enhancement"; + } else if (HG.fetish === "cumslut" && slave.balls < 10 && slave.balls > 0 && slave.dick > 0) { + slave.drugs = "testicle enhancement"; + } else if ((HG.fetish === "masochist" || HG.fetish === "submissive") && canImproveHeight(slave)) { + slave.drugs = "growth stimulants"; + } else if (HG.fetish === "boobs" && slave.boobs < 15000) { + if (arcology.FSAssetExpansionistResearch === 1) { + slave.drugs = "hyper breast injections"; + } else { + slave.drugs = "breast injections"; + } + } else if (canImpreg(slave, HG) && arcology.FSRestart === "unset" && (getHGTastes() === 4 || HG.fetish === "pregnancy" || arcology.FSRepopulationFocusPregPolicy === 1)) { + slave.drugs = "fertility drugs"; + } else if (getHGTastes() > 1) { + // need to consider things here + if (slave.lips <= 70) { + slave.drugs = "lip injections"; + } else if (slave.boobs > (125 * Math.pow(slave.butt, 2))) { + slave.drugs = "butt injections"; + } else { + slave.drugs = "breast injections"; + } + } else { + slave.drugs = "no drugs"; + } + } else { + if (slave.health.condition < 100) { + slave.curatives = 2; + } + } + } + + /** + * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState} HG + */ + function HGSetsLivingConditions(slave, HG) { + // Room for expansion + if (slave.rules.living !== "luxurious") { + slave.rules.living = "luxurious"; + } + } + + /** + * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState} HG + */ + function slaveAssistsHG(slave, HG) { + if (slave.devotion > 20) { + if (App.EndWeek.saVars.HGSlaveSuccess) { + r.push(`looks after your Head Girl ${SlaveFullName(HG)} domestically and sexually, freeing ${him2} to devote more of ${his2} time to looking after your other slaves.`); + } else { + r.push(`does ${his} best to look after your Head Girl ${SlaveFullName(HG)} domestically and sexually, but doesn't free up much of ${his2} time this week.`); + } + } else if (slave.trust < -20) { + if (App.EndWeek.saVars.HGSlaveSuccess) { + r.push(`obeys Head Girl ${SlaveFullName(HG)} domestically and sexually, freeing ${him2} to devote more of ${his2} time to looking after your other slaves.`); + } else { + r.push(`tries to look after your Head Girl ${SlaveFullName(HG)} domestically and sexually, but doesn't free up much of ${his2} time this week.`); + } + } else { + if (App.EndWeek.saVars.HGSlaveSuccess) { + r.push(`resists Head Girl ${SlaveFullName(HG)}'s domestic and sexual use, but still frees ${him2} to devote more of ${his2} time to looking after your other slaves.`); + } else { + r.push(`resists Head Girl ${SlaveFullName(HG)}'s domestic and sexual use, and doesn't free up much of ${his2} time this week.`); + } + } + } + + /** + * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState} HG + */ + function HGSlaveTreatment(slave, HG) { + if (HG.fetish === "sadist" && HG.fetishStrength > 60) { + if (HG.fetishKnown === 1) { + r.push(`Since ${HG.slaveName} is a sadist, poor ${slave.slaveName} lives a life of fear and pain.`); + } else { + r.push(`Given a toy of ${his2} own to break, ${HG.slaveName} <span class="fetish gain">unleashes ${his2} sadistic side</span> on poor ${slave.slaveName}.`); + HG.fetishKnown = 1; + } + if (slave.energy > 95) { + r.push(`Though it's hard, ${he} manages to find <span class="devotion inc">sexual satisfaction</span> being a pain slave.`); + slave.devotion += 4; + slave.need = 0; + } else if (slave.fetish === "masochist") { + if (slave.fetishKnown === 1) { + if (slave.fetishStrength > 95) { + r.push(`${He} finds deep <span class="devotion inc">sexual satisfaction</span> being a pain slave.`); + slave.devotion += 4; + } else { + r.push(`This forces ${him} to find solace in <span class="fetish inc">deeper masochism.</span>`); + slave.fetishStrength += 4; + } + } else { + r.push(`Oddly enough, ${he} seems to find it enjoyable; <span class="fetish gain">${he}'s a natural masochist.</span>`); + slave.fetishKnown = 1; + } + slave.need = 0; + } else if (slave.devotion < -20) { + r.push(`This rapidly fills ${him} with <span class="devotion dec">hatred</span> and <span class="trust dec">fear.</span>`); + slave.devotion -= 10; + slave.trust -= 10; + } else if (slave.devotion > 20) { + r.push(`This fills ${him} with <span class="devotion dec">bitterness</span> and <span class="trust dec">fear.</span>`); + slave.devotion -= 5; + slave.trust -= 5; + } + } else if (slave.devotion < -20) { + if (slave.trust >= -20) { + r.push(`Since ${he} is not yet obedient, ${HG.slaveName} <span class="trust dec">punishes</span> ${him} constantly, training ${him} to be a decent assistant or suffer pain.`); + slave.trust -= 5; + } else { + r.push(`Since ${he} isn't suitably broken into slavery yet, ${HG.slaveName} trains ${him} to be <span class="devotion inc">obedient</span> or suffer pain.`); + slave.devotion += 5; + } + } else if (slave.devotion <= 20) { + r.push(`Since ${he} is not yet well trained, ${HG.slaveName} instructs ${him}, <span class="devotin inc">training</span> ${him} to be a proper assistant.`); + slave.devotion += 4; + } else if (slave.devotion <= 50) { + r.push(`Since ${he} is not yet a devoted slave, ${HG.slaveName} works with ${him}, <span class="devotion inc">training</span> ${him} to be a good assistant.`); + slave.devotion += 2; + } else { + r.push(`Since ${he} is a devoted assistant, ${HG.slaveName} <span class="devotion inc">praises</span> and encourages ${him}.`); + slave.devotion += 1; + } + } + + /** + * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState} HG + */ + function slaveHGRelations(slave, HG) { + if (HG.rivalry !== 0 && HG.rivalryTarget === slave.ID) { + r.push(`${HG.slaveName} <span class="rivalry dec">resolves the rivalry</span> between ${him2} and ${slave.slaveName}, mostly by the expedient of punishing ${slave.slaveName} savagely whenever ${he} gives any trouble.`); + HG.rivalry = 0; + HG.rivalryTarget = 0; + slave.rivalry = 0; + slave.rivalryTarget = 0; + } else if (HG.relationship === 0) { + if (areRelated(slave, HG) && V.seeIncest === 1) { + r.push(`${HG.slaveName}`); + if (HG.devotion > 95) { + r.push(`is so inured to the perversities of slavery that ${he2} <span class="devotion inc">enjoys</span> the prospect of sexual service from ${his2}`); + HG.devotion += 1; + } else if (HG.sexualQuirk === "perverted") { + r.push(`is such a pervert that ${he2} <span class="devotion inc">enjoys</span> the prospect of sexual service from ${his2}`); + HG.devotion += 1; + } else if (HG.behavioralQuirk === "sinful") { + r.push(`is sinful enough that ${he2} accepts, without complaint, sexual service from ${his2}`); + } else if (HG.devotion > 60) { + r.push(`is so devoted to you that ${he2} accepts the prospect of `); + } else { + r.push(`is somewhat <span class="devotion dec">disturbed</span> by the prospect of sexual service from ${his2}`); + HG.devotion -= 2; + } + r.push(`${relativeTerm(HG, slave)}. ${slave.slaveName}`); + if (slave.devotion > 95) { + r.push(`is so inured to the perversities of slavery that ${he} <span class="devotion inc">savors</span> the thought of sexually servicing ${his}`); + slave.devotion += 1; + } else if (slave.sexualQuirk === "perverted") { + r.push(`is such a pervert that ${he} <span class="devotion inc">enjoys</span> the thought of sexually servicing ${his}`); + slave.devotion += 1; + } else if (slave.behavioralQuirk === "sinful") { + r.push(`is sinful enough that ${he} accepts, without complaint, the prospect of sexually servicing ${his}`); + } else if (slave.devotion > 60) { + r.push(`is so devoted to you that ${he} accepts the prospect of sexually servicing ${his}`); + } else if (slave.devotion > 40) { + r.push(`is somewhat <span class="devotion dec">disturbed</span> by the prospect of sexually servicing ${his}`); + slave.devotion -= 2; + } else if (slave.devotion > 20) { + r.push(`is <span class="devotion dec">disturbed</span> by the prospect of sexually servicing ${his}`); + slave.devotion -= 4; + } else if (slave.devotion >= -20) { + r.push(`is <span class="devotion dec">strongly disturbed</span> by the prospect of sexually servicing ${his}`); + slave.devotion -= 5; + } else { + r.push(`is <span class="devotion dec">revolted</span> by the prospect of sexually servicing ${his}`); + slave.devotion -= 10; + } + r.push(`${relativeTerm(slave, HG)}.`); + } + if (slave.relationship === 0 && slave.devotion > 20) { + r.push(`${slave.slaveName} sees ${HG.slaveName} constantly, and does ${his} best to <span class="relationship">become ${his2} friend.</span>`); + HG.relationship = 1; + HG.relationshipTarget = slave.ID; + slave.relationship = 1; + slave.relationshipTarget = V.HeadGirlID; + } else if (slave.relationship === -2 && slave.devotion > 20 && slave.devotion > 50) { + r.push(`${slave.slaveName} sees ${HG.slaveName} so much more than ${he} sees you and begins to warm up to ${him2} instead of you, <span class="relationship">becoming ${his2} friend.</span>`); + HG.relationship = 1; + HG.relationshipTarget = slave.ID; + slave.relationship = 1; + slave.relationshipTarget = V.HeadGirlID; + } else if (slave.relationship !== 5 && slave.relationship > 0 && slave.relationshipTarget !== V.HeadGirlID) { + const friend = getSlave(slave.relationshipTarget); + r.push(`${slave.slaveName}, as ${HG.slaveName}'s bitch, knows ${friend.slaveName} cannot compete with the Head Girl, and so <span class="relationship dec">their relationship fades.</span>`); + slave.relationship = 0; + slave.relationshipTarget = 0; + friend.relationship = 0; + friend.relationshipTarget = 0; + } + } else { + if (HG.relationshipTarget === slave.ID) { + if (areRelated(HG, slave) && V.seeIncest === 0) { + if (slave.relationship < 2) { + r.push(`Since ${HG.slaveName} and ${slave.slaveName} are already friends, they're <span class="trust inc">thankful</span> to you for allowing it. After spending so much time together, they quickly begin to consider themselves <span class="relationship">best friends.</span>`); + slave.trust += 1; + HG.trust += 1; + HG.relationship = 2; + HG.relationshipTarget = slave.ID; + slave.relationship = 2; + slave.relationshipTarget = V.HeadGirlID; + } else { + r.push(`Since ${HG.slaveName} and ${slave.slaveName} are best friends, they <span class="devotion inc">enjoy</span> spending time together and are <span class="trust inc">thankful</span> to you for allowing it.`); + slave.trust += 2; + slave.devotion += 2; + HG.trust += 2; + HG.devotion += 2; + } + } else { + if (slave.relationship <= 2) { + r.push(`Since ${HG.slaveName} and ${slave.slaveName} are already friends, they're <span class="trust inc">thankful</span> to you for allowing it. After a few nights of offering each other sexual comfort, they consider themselves <span class="relationship">friends with benefits.</span>`); + slave.trust += 1; + HG.trust += 1; + HG.relationship = 3; + HG.relationshipTarget = slave.ID; + slave.relationship = 3; + slave.relationshipTarget = V.HeadGirlID; + } else if (slave.relationship <= 3) { + r.push(`Since ${HG.slaveName} and ${slave.slaveName} are already lovers, they both <span class="devotion inc">enjoy</span> living together and are <span class="trust inc">thankful</span> to you for allowing it. After living together for a few days, they draw closer emotionally, too, and consider themselves <span class="relationship">lovers.</span>`); + slave.trust += 2; + slave.devotion += 2; + HG.trust += 2; + HG.devotion += 2; + HG.relationship = 4; + HG.relationshipTarget = slave.ID; + slave.relationship = 4; + slave.relationshipTarget = V.HeadGirlID; + } else if (slave.relationship <= 4) { + if (HG.fetishStrength <= 60 && HG.fetish === "sadist" && slave.fetish !== "masochist") { + if (HG.fetishKnown === 1) { + r.push(`Since their relationship is very abusive, only ${HG.slaveName} <span class="devotion inc">enjoys</span> living together with ${slave.slaveName}.`); + } else { + r.push(`It turns out their relationship is <span class="fetish gain">rather abusive</span>, so only ${HG.slaveName} gets any <span class="devotion inc">enjoyment</span> out of living together with ${slave.slaveName}.`); + } + HG.devotion += 3; + slave.devotion -= 5; + slave.trust -= 5; + } else { + r.push(`Since ${HG.slaveName} and ${slave.slaveName} are lovers, they <span class="devotion inc">enjoy</span> living together and are <span class="trust inc">thankful</span> to you for encouraging it.`); + HG.devotion += 3; + slave.devotion += 3; + HG.trust += 2; + HG.devotion += 2; + } + } else { + r.push(`Since ${HG.slaveName} and ${slave.slaveName} are`); + if (wife === wife2) { + r.push(`slave wives,`); + } else { + r.push(`married,`); + } + r.push(`they <span class="devotion inc">enjoy</span> living together and are <span class="trust inc">thankful</span> to you for encouraging it.`); + HG.devotion += 4; + slave.devotion += 4; + HG.trust += 3; + HG.devotion += 3; + } + } + HG.relationship = slave.relationship; + } + } + } + + /** + * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState} HG + */ + function HGTrainsSlave(slave, HG) { + if (slave.skill.oral <= 30) { + r.push(`${HG.slaveName} wants to come home to a talented tongue, so ${he2} trains slave.slaveName's oral skills.`); + r.push(`${slaveSkillIncrease('oral', slave, 10)}`); + } else if (slave.vagina > 0 && canDoVaginal(slave) && slave.skill.vaginal <= 30) { + r.push(`${HG.slaveName} wants ${his2} personal sex slave to be as skilled with ${his} pussy as possible, so ${he2} trains ${slave.slaveName}'s vaginal skills.`); + r.push(`${slaveSkillIncrease('vaginal', slave, 10)}`); + } else if (slave.anus > 0 && canDoAnal(slave) && slave.skill.anal <= 30) { + r.push(`${HG.slaveName} wants ${his2} personal sex slave to be a skillful backdoor whore, so ${he2} trains ${slave.slaveName}'s anal skills.`); + r.push(`${slaveSkillIncrease('anal', slave, 10)}`); + } else if (slave.skill.entertainment <= 30) { + r.push(`${HG.slaveName} wants to be kept amused in ${his2} occasional free time, so ${he2} trains ${slave.slaveName}'s entertainment skills.`); + r.push(`${slaveSkillIncrease('entertainment', slave, 10)}`); + } else if (slave.sexualFlaw !== "none") { + r.push(`${HG.slaveName} is annoyed by ${slave.slaveName}'s sexual flaws, so ${he2} <span class="flaw break">trains</span> ${him} out of them.`); + slave.sexualFlaw = "none"; + } else if (slave.behavioralFlaw !== "none") { + r.push(`${HG.slaveName} is irritated by ${slave.slaveName}'s flaws, so ${he2} <span class="flaw break">trains</span> ${him} out of them.`); + slave.behavioralFlaw = "none"; + } + } + + /** + * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState} HG + */ + function HGStretchesHoles(slave, HG) { + if (canDoVaginal(slave)) { + if (slave.vagina === 0) { + r.push(`${HG.slaveName} <span class="devotion inc">loves</span> <span class="virginity loss">taking</span> ${slave.slaveName}'s virginity, and spends much of the week ogling ${his2} conquest complacently.`); + slave.vagina = 1; + HG.devotion += 4; + } else if (slave.vagina === 1) { + if (HG.dick > 4 && HG.energy > 95) { + r.push(`${HG.slaveName} has such a ferocious sex drive and such a big dick that ${his2} constant pounding of ${slave.slaveName} <span class="change positive">loosens</span> the poor ${girl}'s pussy.`); + slave.vagina += 1; + } else if (HG.dick > 5) { + r.push(`Serving ${HG.slaveName}'s monster cock <span class="change positive">loosens</span> ${slave.slaveName}'s pussy.`); + slave.vagina += 1; + } + } else if (slave.vagina === 2) { + if (HG.dick > 5 && HG.energy > 95) { + r.push(`${HG.slaveName} has such a ferocious sex drive and such a monster cock that ${his2} constant pounding of ${slave.slaveName} <span class="change positive">loosens</span> the poor ${girl}'s pussy.`); + slave.vagina += 1; + } + } else if (slave.vagina === 3) { + if (HG.dick > 5 && HG.energy > 95 && random(1, 100) > 80) { + r.push(`${HG.slaveName} has such a ferocious sex drive and such a monster cock that ${his2} constant pounding of ${slave.slaveName}'s loose pussy inevitably leaves it <span class="change positive">gaping.</span>`); + slave.vagina += 1; + } + } + } + if (canDoAnal(slave)) { + if (slave.anus === 0) { + r.push(`${HG.slaveName} <span class="devotion inc">relishes</span> <span class="virginity loss">taking</span> ${slave.slaveName}'s anal virginity, and spends much of the week groping ${his2} conquest's rear end possessively.`); + slave.anus = 1; + HG.devotion += 4; + } else if (slave.anus === 1) { + if (HG.dick > 4 && HG.energy > 95) { + r.push(`${HG.slaveName} uses ${slave.slaveName}'s anus to vent ${his2} sexual addiction. Constant assrape from such a huge dick <span class="change positive">loosens</span> ${his} sphincter.`); + slave.anus += 1; + } else if (HG.dick > 5) { + r.push(`Taking ${HG.slaveName}'s monster cock up the butt <span class="change positive">loosens</span> ${slave.slaveName}'s anal sphincter.`); + slave.anus += 1; + } + } else if (slave.anus === 2) { + if (HG.dick > 5 && HG.energy > 95) { + r.push(`${HG.slaveName} uses ${slave.slaveName}'s anus to vent ${his2} sexual addiction. Constant assrape from the Head Girl's monster cock <span class="change positive">loosens</span> ${his} sphincter.`); + slave.anus += 1; + } + } else if (slave.anus === 3) { + if (HG.dick > 5 && HG.energy > 95 && random(1, 100) > 80) { + r.push(`${HG.slaveName} uses slave.slaveName's loose anus to vent ${his2} sexual addiction. Constant assrape from the Head Girl's monster cock eventually leaves it <span class="change positive">gaping.</span>`); + slave.anus += 1; + } + } + } + } + + /** + * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState} HG + */ + function HGManagesPregnancy(slave, HG) { + if (HG.fetish === "pregnancy" && canImpreg(slave, HG)) { + if (arcology.FSRestart === "unset") { + r.push(`${HG.slaveName} promptly <span class="pregnant">impregnates</span>`); + if (HG.fetishKnown === 1) { + r.push(`${slave.slaveName}, to your Head Girl's considerable <span class="devotion inc">satisfaction.</span> ${slave.slaveName} spent the week regularly getting held down and ejaculated into anytime ${his} superior had cum to spare.`); + HG.devotion += 4; + } else { + r.push(`${slave.slaveName}. ${His2} eagerness completely exposes ${his2} hidden <span class="fetish gain">pregnancy kink.</span>`); + HG.fetishKnown = 1; + } + knockMeUp(slave, 100, 2, V.HeadGirlID, true); + if (HG.fetishStrength > 70 && canImpreg(HG, slave)) { + r.push(`Unsurprisingly, ${he2} gives in to ${his2} own cravings and also takes ${slave.slaveName}'s loads until ${he2} <span class="pregnant">gets pregnant</span> too.`); + knockMeUp(HG, 100, 2, slave.ID, true); + } + } else if (HG.fetishKnown === 1) { + r.push(`${HG.slaveName} knows better than to even consider knocking up ${slave.slaveName}.`); + } + } else if (HG.fetish === "pregnancy" && canImpreg(HG, slave)) { + if (arcology.FSRestart === "unset" && HG.fetishStrength > 70) { + r.push(`${HG.slaveName} promptly <span class="pregnant">knocks ${himself2} up</span> with ${slave.slaveName}'s`); + if (HG.fetishKnown === 1) { + r.push(`seed, to your Head Girl's considerable <span class="devotion inc">satisfaction.</span>`); + HG.devotion += 4; + } else { + r.push(`seed. ${His2} <span class="devotion inc">pride</span> over ${his2} new pregnancy and eagerness to get pregnant completely exposes ${his2} hidden, and powerful, <span class="fetish gain">pregnancy fetish.</span>`); + HG.fetishKnown = 1; + HG.devotion += 4; + } + knockMeUp(HG, 100, 2, slave.ID, true); + } else if (HG.fetishKnown === 1) { + r.push(`${HG.slaveName} knows better than to even consider getting knocked up by ${slave.slaveName}.`); + } + } else if (arcology.FSRepopulationFocusPregPolicy === 1 && canImpreg(slave, HG)) { + r.push(`${HG.slaveName} wastes no time in chasing the current trend and hurries to <span class="pregnant">impregnate</span> ${slave.slaveName}.`); + knockMeUp(slave, 100, 2, V.HeadGirlID, true); + } else if (slave.pregKnown === 1) { + if (slave.breedingMark === 1) { + r.push(`Since ${slave.slaveName} is marked as a breeding slave, ${HG.slaveName} feels it is ${his2} duty to keep ${his} pregnancy safe.`); + } else if (slave.pregSource === -1) { + r.push(`Since ${slave.slaveName} is bearing your child${slave.pregType > 1 ? "ren" : ""}, ${HG.slaveName} feels ${he2} has been tasked with keeping ${his} pregnancy safe.`); + } else if (HG.fetish === "pregnancy") { + r.push(`${HG.slaveName}`); + if (HG.fetishKnown === 1) { + if (slave.bellyPreg > 500) { + r.push(`enjoys the swell of ${slave.slaveName}'s baby bump, giving ${him2} plenty of reason to keep ${his} pregnancy.`); + } else { + r.push(`keeps ${slave.slaveName} pregnant so that ${he2} may savor ${his} growth.`); + } + } else { + r.push(`pays an unusual amount of attention to ${slave.slaveName}'s pregnancy.`); + } + } else if (arcology.FSRepopulationFocusPregPolicy === 0 && arcology.FSRepopulationFocus === "unset" && V.HGSuiteDrugs === 1) { + if (slave.preg > slave.pregData.normalBirth-2 && slave.preg > slave.pregData.minLiveBirth && slave.broodmother === 0 && !isInLabor(slave)) { + r.push(`${HG.slaveName} has no interest in a slut stuffed full of unwanted spawn, so ${he2} promptly doses ${slave.slaveName} with labor inducing agents to get ${him} back in fucking shape.`); + induce(slave); + startLabor(slave); + } else { + r.push(`${HG.slaveName} promptly aborts the child growing in ${slave.slaveName} since ${he2} prefers ${his2} ${girl}s not harboring someone else's child or loaded down with ${his2} own unwanted spawn.`); + TerminatePregnancy(slave); + actX(slave, "abortions"); + } + } + } + } + + /** + * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState} HG + */ + function HGCausesFetish(slave, HG) { + if (fetishChangeChance(slave) > random(0, 100) && HG.fetishKnown === 1 && HG.fetishStrength > 60 && slave.fetish !== "mindbroken") { + if (HG.fetish === "submissive") { + if (slave.fetish !== "dom") { + r.push(`${slave.slaveName} slowly gets used to ${HG.slaveName}'s need to be sexually dominated, and begins to <span class="fetish gain">enjoy being a top</span> within the confines of the suite.`); + slave.fetish = "dom"; + slave.fetishKnown = 1; + slave.fetishStrength = 10; + } + } else if (HG.fetish === "dom") { + if (slave.fetish !== "submissive") { + r.push(`${slave.slaveName} slowly gets used to being tied up and fucked regularly, and accepts that it's how ${HG.slaveName}'s sexual attraction to ${him} expresses itself. ${He} begins to <span class="fetish gain">enjoy being a sub,</span> especially for ${HG.slaveName}.`); + slave.fetish = "submissive"; + slave.fetishKnown = 1; + slave.fetishStrength = 10; + } + } else if (HG.fetish === "boobs") { + if (slave.fetish !== "boobs") { + r.push(`${HG.slaveName} lavishes so much attention on ${slave.slaveName}'s boobs that ${slave.slaveName} really starts to <span class="fetish gain">fetishize tits</span> too.`); + slave.fetish = "boobs"; + slave.fetishKnown = 1; + slave.fetishStrength = 10; + } + } else if (HG.fetish === "pregnancy") { + if (slave.fetish !== "pregnancy") { + r.push(`${slave.slaveName} and ${HG.slaveName} spend so much time talking about pregnancy and fertility that ${slave.slaveName} really starts to <span class="fetish gain">fetishize pregnancy</span> too.`); + slave.fetish = "pregnancy"; + slave.fetishKnown = 1; + slave.fetishStrength = 10; + } + } else if (HG.fetish === "cumslut") { + if (slave.fetish !== "cumslut") { + r.push(`${slave.slaveName} participates in enough of ${HG.slaveName}'s cum games that ${he} can't help but <span class="fetish gain">enjoy oral sex</span> ${himself}.`); + slave.fetish = "cumslut"; + slave.fetishKnown = 1; + slave.fetishStrength = 10; + } + } else if (HG.fetish === "humiliation") { + if (slave.fetish !== "humiliation") { + r.push(`${slave.slaveName} has so much public sex with ${HG.slaveName} that ${he} really starts to <span class="fetish gain">enjoy humiliation</span> ${himself}.`); + slave.fetish = "humiliation"; + slave.fetishKnown = 1; + slave.fetishStrength = 10; + } + } else if (HG.fetish === "buttslut") { + if (slave.fetish !== "buttslut") { + if (canDoAnal(slave)) { + r.push(`${slave.slaveName} takes ${HG.slaveName}'s`); + if (canPenetrate(HG)) { + r.push(`dick`); + } else { + r.push(`strap-on and dildos`); + } + r.push(`up ${his} poor anus so often that ${he} starts to <span class="fetish gain">enjoy buttsex</span> ${himself}.`); + } else { + r.push(`${HG.slaveName} lavishes so much attention on ${slave.slaveName}'s butt, since ${he2} can't use it, that ${slave.slaveName} really starts to <span class="fetish gain">fetishize rears</span> too.`); + } + slave.fetish = "buttslut"; + slave.fetishKnown = 1; + slave.fetishStrength = 10; + } + } else if (HG.fetish === "masochist") { + if (slave.fetish !== "sadist") { + r.push(`${slave.slaveName} is initially shocked to be asked to cause ${HG.slaveName} pain, but ${he} slowly begins to understand the honestly sexual nature of the arrangement. ${He} starts to <span class="fetish gain">enjoy causing pain,</span> since ${HG.slaveName} is clearly enjoying it so much.`); + slave.fetish = "sadist"; + slave.fetishKnown = 1; + slave.fetishStrength = 10; + } + } else if (HG.fetish === "sadist") { + if (slave.fetish !== "masochist") { + r.push(`${HG.slaveName} likes to play rough in bed, so it isn't long before ${slave.slaveName} starts to find it difficult to <span class="fetish gain">separate pain from pleasure.</span>`); + slave.fetish = "masochist"; + slave.fetishKnown = 1; + slave.fetishStrength = 10; + } + } else { + if (canDoAnal(slave) || canDoVaginal(slave)) { + if (slave.fetish !== "none") { + r.push(`${slave.slaveName} often takes ${HG.slaveName}'s`); + if (canPenetrate(HG)) { + r.push(`dick`); + } else { + r.push(`strap-on`); + } + r.push(`in the missionary position, after some light foreplay and before bed; ${he} honestly enjoys the respectful lovemaking, and begins to <span class="fetish gain">enjoy vanilla sex</span> ${himself}.`); + slave.fetish = "none"; + slave.fetishKnown = 1; + slave.fetishStrength = 10; + } + } + } + } + if (HG.attrKnown === 1) { + if (HG.attrXX > 85 && slave.attrXX > 65 && slave.attrXX <= 85) { + r.push(`${slave.slaveName} and ${HG.slaveName} spend so much time giggling over which of your other slaves they think is prettiest (typically followed by giggling sex) that ${slave.slaveName} really starts to <span class="improvement">fetishize girls</span> too.`); + slave.attrXX += 2; + slave.attrKnown = 1; + } + if (HG.attrXY > 85 && slave.attrXY > 65 && slave.attrXY <= 85) { // needs male slave support + r.push(`${slave.slaveName} and ${HG.slaveName} have so much fun debating which male citizens, dickgirls and slave boys are cutest (typically followed by `); + if (canDoAnal(slave) || canDoVaginal(slave)) { + r.push(`${HG.slaveName} banging ${his2} girltoy`); + if (canPenetrate(HG)) { + r.push(`with a strap-on)`); + } else { + r.push(`senseless)`); + } + } else { + r.push(`giggling sex)`); + } + r.push(`that ${slave.slaveName}really starts to <span class="improvement">fetishize boys</span> too.`); + slave.attrXY += 2; + slave.attrKnown = 1; + } + if (HG.energy > 95 && slave.energy <= 95) { + r.push(`${slave.slaveName} has so much fun sex with ${HG.slaveName} that <span class="improvement">${his} sex drive is slowly enhanced.</span>`); + slave.energy += 2; + } + } + } + + /** + * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState} HG + */ + function HGSexualSatiaion(slave, HG) { + if (HG.energy > 95) { + r.push(`${slave.slaveName} spends a lot of time getting fucked in whichever hole or cranny ${HG.slaveName} decides to shove ${his2}`); + if (canPenetrate(HG)) { + r.push(`dick`); + } else { + r.push(`strap-on`); + } + r.push(`into next.`); + oralUse += 5; + if (canDoAnal(slave)) { + analUse += 5; + if (canImpreg(slave, HG)) { + r.push(`${knockMeUp(slave, 5, 1, V.HeadGirlID)}`); + } + } else if (slave.boobs >= 500) { + mammaryUse += 5; + } else { + oralUse += 5; + } + if (slave.vagina > 0 && canDoVaginal(slave)) { + vaginalUse += 5; + if (canImpreg(slave, HG)) { + r.push(`${knockMeUp(slave, 5, 0, V.HeadGirlID)}`); + } + } else if (canDoAnal(slave)) { + analUse += 5; + if (canImpreg(slave, HG)) { + r.push(`${knockMeUp(slave, 5, 1, V.HeadGirlID)}`); + } + } else { + oralUse += 5; + } + HG.counter.penetrative += 15; + V.penetrativeTotal += 15; + } else if (HG.fetish === "submissive" && HG.fetishKnown === 1) { + r.push(`${HG.slaveName} walks a fine line with ${slave.slaveName}. They work out a sexual life in which ${HG.slaveName} is in charge, but ${slave.slaveName} takes the sexual lead: ${slave.slaveName} serves ${his} superior by taking ${him2} firmly.`); + oralUse += 4; + if (canDoAnal(slave)) { + analUse += 3; + if (canImpreg(slave, HG)) { + r.push(`${knockMeUp(slave, 3, 1, V.HeadGirlID)}`); + } + } else if (slave.boobs >= 500) { + mammaryUse += 3; + } else { + oralUse += 3; + } + if (slave.vagina > 0 && canDoVaginal(slave)) { + vaginalUse += 3; + if (canImpreg(slave, HG)) { + r.push(`${knockMeUp(slave, 3, 0, V.HeadGirlID)}`); + } + } else if (canDoAnal(slave)) { + analUse += 3; + if (canImpreg(slave, HG)) { + r.push(`${knockMeUp(slave, 3, 1, V.HeadGirlID)}`); + } + } else { + oralUse += 3; + } + HG.counter.penetrative += 10; + V.penetrativeTotal += 10; + } else if (HG.fetish === "dom" && HG.fetishKnown === 1) { + r.push(`${slave.slaveName} serves ${HG.slaveName} as ${his2} sexual and moral inferior, taking the Head Girl's `); + if (canPenetrate(HG)) { + r.push(`dick`); + } else { + r.push(`strap-on`); + } + r.push(`in all ${his} holes. Though it isn't necessary with such an obedient partner, ${slave.slaveName} is often tied up for use.`); + oralUse += 4; + if (canDoAnal(slave)) { + analUse += 3; + if (canImpreg(slave, HG)) { + r.push(`${knockMeUp(slave, 3, 1, V.HeadGirlID)}`); + } + } else if (slave.boobs >= 500) { + mammaryUse += 3; + } else { + oralUse += 3; + } + if (slave.vagina > 0 && canDoVaginal(slave)) { + vaginalUse += 3; + if (canImpreg(slave, HG)) { + r.push(`${knockMeUp(slave, 3, 0, V.HeadGirlID)}`); + } + } else if (canDoAnal(slave)) { + analUse += 3; + if (canImpreg(slave, HG)) { + r.push(`${knockMeUp(slave, 3, 1, V.HeadGirlID)}`); + } + } else { + oralUse += 3; + } + HG.counter.penetrative += 10; + V.penetrativeTotal += 10; + } else if (HG.fetish === "humiliation" && HG.fetishKnown === 1) { // swap for exhibitionism in the future + r.push(`${HG.slaveName} is such an exhibitionist that ${slave.slaveName} finds ${himself} taking ${HG.slaveName}'s`); + if (canPenetrate(HG)) { + r.push(`dick`); + } else { + r.push(`strap-on`); + } + r.push(`in public quite often.`); + oralUse += 4; + if (canDoAnal(slave)) { + analUse += 3; + if (canImpreg(slave, HG)) { + r.push(`${knockMeUp(slave, 3, 1, V.HeadGirlID)}`); + } + } else if (slave.boobs >= 500) { + mammaryUse += 3; + } else { + oralUse += 3; + } + if (slave.vagina > 0 && canDoVaginal(slave)) { + vaginalUse += 3; + if (canImpreg(slave, HG)) { + r.push(`${knockMeUp(slave, 3, 0, V.HeadGirlID)}`); + } + } else if (canDoAnal(slave)) { + analUse += 3; + if (canImpreg(slave, HG)) { + r.push(`${knockMeUp(slave, 3, 1, V.HeadGirlID)}`); + } + } else { + oralUse += 3; + } + HG.counter.penetrative += 10; + V.penetrativeTotal += 10; + } else if (HG.fetish === "boobs" && HG.fetishKnown === 1) { + r.push(`${HG.slaveName} is such a boob fetishist that ${slave.slaveName} sometimes wonders whether ${HG.slaveName} thinks there are four clits in the suite: the four nipples between the two of them.`); + oralUse += 4; + mammaryUse += 6; + HG.counter.mammary += 10; + V.mammaryTotal += 10; + } else if (HG.fetish === "buttslut" && HG.fetishKnown === 1) { + r.push(`${HG.slaveName} takes a dominant sexual role with ${slave.slaveName}; ${he2} indulges ${his2}`); + if (canDoAnal(slave)) { + r.push(`anal addiction by constantly buttfucking ${slave.slaveName}`); + } else { + r.push(`ass obsession by constantly molesting and using ${slave.slaveName}'s buttcheeks as a sex toy`); + } + r.push(`while wearing a vibrating plug ${himself2}.`); + if (canDoAnal(slave)) { + analUse += 10; + HG.counter.penetrative += 10; + V.penetrativeTotal += 10; + if (canImpreg(slave, HG)) { + r.push(`${knockMeUp(slave, 10, 1, V.HeadGirlID)}`); + } + } + } else if (HG.fetish === "cumslut" && HG.fetishKnown === 1) { + r.push(`${HG.slaveName} takes a dominant sexual role with ${slave.slaveName}; ${he2} indulges ${his2} oral fixation with constant oral sex. ${He2} certainly applies ${his2} mouth to ${slave.slaveName} when ${he2} gets the chance, but ${slave.slaveName} does most of the sucking.`); + oralUse += 20; + HG.counter.oral += 10; + V.oralTotal += 10; + HG.counter.penetrative += 10; + V.penetrativeTotal += 10; + } else if (HG.fetish === "masochist" && HG.fetishKnown === 1) { + r.push(`${HG.slaveName} carefully structures ${his2} sexual games with ${slave.slaveName} to gratify ${his2} deep need to be physically hurt during sex without damaging ${his2} leadership. Usually, ${slave.slaveName} tortures ${HG.slaveName} until ${he2}'s quite sated, and then takes a rough`); + if (canDoAnal(slave)) { + r.push(`buttfuck`); + } else { + r.push(`facefucking`); + } + r.push(`from the aroused ${HG.slaveName}'s`); + if (canPenetrate(HG)) { + r.push(`dick`); + } else { + r.push(`strap-on`); + } + r.push(`to restore their relative positions.`); + if (canDoAnal(slave)) { + analUse += 10; + if (canImpreg(slave, HG)) { + r.push(`${knockMeUp(slave, 10, 1, V.HeadGirlID)}`); + } + } else { + oralUse += 10; + } + HG.counter.penetrative += 10; + V.penetrativeTotal += 10; + } else if (HG.fetish === "sadist" && HG.fetishKnown === 1) { + r.push(`${slave.slaveName} serves ${HG.slaveName} as ${his2} sexual punching bag, taking the Head Girl's `); + if (canPenetrate(HG)) { + r.push(`dick`); + } else { + r.push(`strap-on`); + } + r.push(`roughly in all ${his} holes whenever ${he2} needs to sate ${his2} sadistic urges.`); + oralUse += 4; + if (canDoAnal(slave)) { + analUse += 3; + if (canImpreg(slave, HG)) { + r.push(`${knockMeUp(slave, 3, 1, V.HeadGirlID)}`); + } + } else if (slave.boobs >= 500) { + mammaryUse += 3; + } else { + oralUse += 3; + } + if (slave.vagina > 0 && canDoVaginal(slave)) { + vaginalUse += 3; + if (canImpreg(slave, HG)) { + r.push(`${knockMeUp(slave, 3, 0, V.HeadGirlID)}`); + } + } else if (canDoAnal(slave)) { + analUse += 3; + if (canImpreg(slave, HG)) { + r.push(`${knockMeUp(slave, 3, 1, V.HeadGirlID)}`); + } + } else { + oralUse += 3; + } + HG.counter.penetrative += 10; + V.penetrativeTotal += 10; + } else if (HG.attrXX > 65) { + r.push(`${HG.slaveName} expects ${slave.slaveName} to be girlish sexually, and ${slave.slaveName} spends a lot of time`); + if (hasBothLegs(slave)) { + r.push(`on ${his} knees.`); + } else { + r.push(`servicing ${him2}.`); + } + oralUse += 6; + if (canDoAnal(slave)) { + analUse++; + if (canImpreg(slave, HG)) { + r.push(`${knockMeUp(slave, 1, 1, V.HeadGirlID)}`); + } + } else if (slave.boobs >= 500) { + mammaryUse++; + } else { + oralUse++; + } + if (slave.vagina > 0 && canDoVaginal(slave)) { + vaginalUse++; + if (canImpreg(slave, HG)) { + r.push(`${knockMeUp(slave, 1, 0, V.HeadGirlID)}`); + } + } else if (canDoAnal(slave)) { + analUse++; + if (canImpreg(slave, HG)) { + r.push(`${knockMeUp(slave, 1, 1, V.HeadGirlID)}`); + } + } else { + oralUse++; + } + HG.counter.penetrative += 8; + V.penetrativeTotal += 8; + } else { + r.push(`${HG.slaveName} takes a dominant sexual role with ${slave.slaveName}, mostly getting`); + if (canPenetrate(HG) && (canDoVaginal(slave) || canDoAnal(slave))) { + r.push(`oral and fucking ${him} in the missionary position.`); + } else if (slave.boobs >= 300) { + r.push(`oral and molesting ${his} breasts.`); + } else { + r.push(`oral.`); + } + oralUse += 4; + if (canDoAnal(slave)) { + analUse += 3; + if (canImpreg(slave, HG)) { + r.push(`${knockMeUp(slave, 3, 1, V.HeadGirlID)}`); + } + } else if (slave.boobs >= 300) { + mammaryUse += 3; + } else { + oralUse += 3; + } + if (slave.vagina > 0 && canDoVaginal(slave)) { + vaginalUse += 3; + if (canImpreg(slave, HG)) { + r.push(`${knockMeUp(slave, 3, 0, V.HeadGirlID)}`); + } + } else if (canDoAnal(slave)) { + analUse += 3; + if (canImpreg(slave, HG)) { + r.push(`${knockMeUp(slave, 3, 1, V.HeadGirlID)}`); + } + } else if (slave.boobs >= 300) { + mammaryUse += 3; + } else { + oralUse += 3; + } + HG.counter.penetrative += 10; + V.penetrativeTotal += 10; + } + + slave.counter.oral += oralUse; + V.oralTotal += oralUse; + slave.counter.anal += analUse; + V.analTotal += analUse; + slave.counter.vaginal += vaginalUse; + V.vaginalTotal += vaginalUse; + slave.counter.mammary += mammaryUse; + V.mammaryTotal += mammaryUse; + slave.counter.penetrative += penetrativeUse; + V.penetrativeTotal += penetrativeUse; + + if (slave.cervixImplant === 1 || slave.cervixImplant === 3) { + cervixPump += 20 * vaginalUse; + } + if (slave.cervixImplant === 2 || slave.cervixImplant === 3) { + cervixPump += 20 * analUse; + } + + if (slave.need) { + if (slave.fetishKnown) { + switch (slave.fetish) { + case "masochist": + case "submissive": + if (analUse + vaginalUse > 0) { + r.push(`Being someone's submissive toy really satisfies ${slave.slaveName}.`); + slave.need = 0; + } + break; + case "dom": + case "sadist": + if (penetrativeUse > 0) { + r.push(`Getting to be on top is precious, and it really satisfies ${slave.slaveName}.`); + slave.need = 0; + } + break; + case "cumslut": + if (oralUse > 0) { + r.push(`Being someone's oral toy really satisfies ${slave.slaveName}.`); + slave.need = 0; + } + break; + case "buttslut": + if (analUse > 0) { + r.push(`Having ${his} butthole serve as someone's toy really satisfies ${slave.slaveName}.`); + slave.need = 0; + } + break; + case "pregnancy": + if (vaginalUse > 0 && slave.mpreg === 0) { + r.push(`Having ${his} pussy serve as someone's toy really satisfies ${slave.slaveName}.`); + slave.need = 0; + } else if (analUse > 0 && slave.mpreg === 1) { + r.push(`Having ${his} asspussy serve as someone's toy really satisfies ${slave.slaveName}.`); + slave.need = 0; + } + break; + case "humiliation": + r.push(`Having all the other slaves see ${him} in such a humiliating role really satisfies ${slave.slaveName}.`); + slave.need = 0; + break; + } + } + } + + slave.need -= ((vaginalUse + penetrativeUse + analUse) * 5); + HG.need = 0; + + if (cervixPump > 0) { + r.push(`${slave.slaveName} notices ${his} <span class="change positive">belly swell</span> after`); + if (slave.cervixImplant === 1) { + r.push(`vaginal`); + } else if (slave.cervixImplant === 2) { + r.push(`anal`); + } + r.push(`sex throughout the week.`); + slave.bellyImplant += cervixPump; + } + } + + /** + * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState} HG + */ + function HGManagesTiredness(slave, HG) { + // room for expansion + if (slave.health.tired > 60) { + r.push(`${HG.slaveName} sees ${he} is becoming exhausted and gives ${him} lighter duties so ${he} doesn't break.`); + } + tired(slave); + } + + /** + * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState} HG + */ + function HGDressesSlave(slave, HG) { + if (HG.fetishKnown === 1) { + if (HG.energy > 95) { + r.push(`${HG.slaveName} keeps ${slave.slaveName} naked so ${he2} doesn't have to waste any time tearing ${his} clothes off.`); + slave.clothes = "no clothing"; + } else if (slave.devotion <= 20) { + r.push(`${HG.slaveName} keeps ${slave.slaveName} in a torturous habit since ${he} still clings to ${his} dignity and remains defiant.`); + slave.clothes = "a penitent nuns habit"; + } else if (HG.fetish === "submissive") { + r.push(`${HG.slaveName} keeps ${slave.slaveName} dressed up in slutty power clothing, since ${he2}'s attracted to competence.`); + slave.clothes = "slutty business attire"; + } else if (HG.fetish === "masochist") { + r.push(`${HG.slaveName} keeps ${slave.slaveName}`); + if (isItemAccessible.entry("battledress", "clothing")) { + r.push(`in battledress, since ${he2} likes the fantasy of being raped by a soldier ${girl}.`); + slave.clothes = "battledress"; + } else { + r.push(`in a scalemail bikini, since ${he2} likes the fantasy of being raped by a horny barbarian.`); + slave.clothes = "a scalemail bikini"; + } + } else if (HG.fetish === "dom") { + r.push(`${HG.slaveName} keeps ${slave.slaveName} dressed up as a school${girl}`); + if (slave.physicalAge > 16) { + r.push(`to infantilize ${his2} sub.`); + } else { + r.push(`to highlight ${his2} authority over ${his2} young sub.`); + } + slave.clothes = "a schoolgirl outfit"; + } else if (HG.fetish === "boobs") { + r.push(`${HG.slaveName} keeps ${slave.slaveName} wearing a string bikini, since ${he2} likes seeing those tits.`); + slave.clothes = "a string bikini"; + } else if (HG.fetish === "cumslut") { + r.push(`${HG.slaveName} keeps ${slave.slaveName} in restrictive latex, because ${he2} likes how it draws attention to ${his} mouth.`); + slave.clothes = "restrictive latex"; + } else if (HG.fetish === "humiliation") { + r.push(`${HG.slaveName} keeps ${slave.slaveName} in humiliating bondage gear, because ${he2} likes to see others blush, too.`); + slave.clothes = "uncomfortable straps"; + } else if (HG.fetish === "sadist") { + r.push(`${HG.slaveName} keeps ${slave.slaveName} in humiliating bondage gear, because it can easily be tightened to cause considerable anguish.`); + slave.clothes = "uncomfortable straps"; + } else if (HG.fetish === "buttslut") { + r.push(`${HG.slaveName} keeps ${slave.slaveName} wearing nothing but slutty bangles, since ${he2} likes dressing ${him} up but wants that butt bare.`); + slave.clothes = "slutty jewelry"; + } else if (HG.fetish === "pregnancy" && isItemAccessible.entry("a huge empathy belly", "bellyAccessory", slave) === true) { + r.push(`${HG.slaveName} keeps ${slave.slaveName} wearing an empathy belly, since ${he2} likes ${his2} ${girl}s with a bun in the oven.`); + slave.bellyAccessory = "a large empathy belly"; + } else if (HG.fetish === "pregnancy" && slave.preg > 0 && slave.pregKnown === 1 && slave.pregSource === V.HeadGirlID) { + r.push(`${HG.slaveName} keeps the pregnant ${slave.slaveName} dressed as a slutty maid, since ${he2} wants ${him} to look motherly yet fuckable while ${he2} fantasizes about fucking ${him} pregnant again.`); + slave.clothes = "a slutty maid outfit"; + } else if (HG.fetish === "pregnancy") { + r.push(`${HG.slaveName} keeps ${slave.slaveName} dressed as a slutty maid, since ${he2} wants ${him} to look motherly yet fuckable while ${he2} fantasizes about putting a bun in ${his} oven.`); + slave.clothes = "a slutty maid outfit"; + } else if (HG.attrXX > 85) { + r.push(`${HG.slaveName} keeps ${slave.slaveName} wearing nice lingerie, since girls and girliness turn ${him2} on.`); + slave.clothes = "attractive lingerie"; + } else if (HG.attrXY > 85 && slave.dick > 0) { + r.push(`${HG.slaveName} keeps ${slave.slaveName} wearing slutty netting with a hole for ${his} dick to stick through, since ${he2} likes it bare.`); + slave.clothes = "clubslut netting"; + } else { + r.push(`${HG.slaveName} keeps ${slave.slaveName} dressed as a slutty maid, since ${he2} likes seeing ${his} body as ${he} looks after their suite.`); + slave.clothes = "a slutty maid outfit"; + } + } else { + r.push(`${HG.slaveName} keeps ${slave.slaveName} dressed as a slutty maid, since ${he2} likes seeing ${his} body as ${he} looks after their suite.`); + slave.clothes = "a slutty maid outfit"; + } + slave.devotion += 1; + } + + /** + * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState} HG + */ + function narcissistHG(slave, HG) { + if (HG.bald !== 1&& HG.hLength > 0) { + if (slave.bald !== 1) { + if (!hasHColorRule(slave, V.defaultRules)) { + if (slave.hColor !== HG.hColor) { + r.push(`${HG.slaveName} dyes ${slave.slaveName}'s hair ${HG.hColor}, just like ${his2} own, since with nymphomania comes narcissism.`); + slave.hColor = HG.hColor; + } + } + if (!hasHStyleRule(slave, V.defaultRules)) { + if (slave.hStyle !== HG.hStyle) { + r.push(`${HG.slaveName} styles ${slave.slaveName}'s hair just like ${his2} own, since with nymphomania comes narcissism.`); + slave.hStyle = HG.hStyle; + slave.hLength = HG.hLength; + } + } + } else { + if (!hasHColorRule(slave, V.defaultRules)) { + if (slave.hColor !== HG.hColor) { + r.push(`${HG.slaveName} changes ${slave.slaveName}'s wig to ${HG.hColor}, just like ${his2} own hair, since with nymphomania comes narcissism.`); + slave.hColor = HG.hColor; + } + } + if (!hasHStyleRule(slave, V.defaultRules)) { + if (slave.hStyle !== HG.hStyle) { + r.push(`${HG.slaveName} changes ${slave.slaveName}'s wig style to look just like ${his2} own hair, since with nymphomania comes narcissism.`); + slave.hStyle = HG.hStyle; + slave.hLength = HG.hLength; + } + } + } + } + + if (!hasEyeColorRule(slave, V.defaultRules)) { + /* HG wants sub slave to have same eye color as her */ + /* make sure the sub slave has both eyes, missing ones are replaced with glass */ + if (!hasLeftEye(slave)) { + eyeSurgery(slave, "left", "glass"); + } + if (!hasRightEye(slave)) { + eyeSurgery(slave, "right", "glass"); + } + + /* get eye colors, HG can be expected to have at least one working eye due to job requirements */ + const _left = hasLeftEye(HG) ? getLeftEyeColor(HG) : getRightEyeColor(HG); + const _right = hasRightEye(HG) ? getRightEyeColor(HG) : _left; + + /* make sure the slave has the same eye color as the HG */ + if (getLeftEyeColor(slave) !== _left) { + setEyeColor(slave, _left, "left"); + r.push(`${HG.slaveName}`); + if (getLeftEyeType(slave) === 3) { + r.push(`changes`); + } else { + r.push(`gives`); + } + r.push(`${slave.slaveName} ${_left}`); + if (getLeftEyeType(slave) === 3) { + r.push(`eye lenses,`); + } else if (getLeftEyeType(slave) === 2) { + r.push(`glass eyes,`); + } else { + r.push(`contact lenses,`); + } + r.push(`to match ${his2} own left eye, since with nymphomania comes narcissism.`); + } + if (getRightEyeColor(slave) !== _right) { + setEyeColor(slave, _right, "right"); + r.push(`${HG.slaveName}`); + if (getRightEyeType(slave) === 3) { + r.push(`changes`); + } else { + r.push(`gives`); + } + r.push(`${slave.slaveName} ${_right}`); + if (getLeftEyeType(slave) === 3) { + r.push(`eye lenses,`); + } else if (getLeftEyeType(slave) === 2) { + r.push(`glass eyes,`); + } else { + r.push(`contact lenses,`); + } + r.push(`to match ${his2} own right eye, since with nymphomania comes narcissism.`); + } + } + } + + /** + * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState} HG + */ + function HGSetsDietText(slave, HG) { + if ((arcology.FSRepopulationFocusPregPolicy === 1 || (arcology.FSRestart === "unset" && HG.fetish === "pregnancy")) && canImpreg(slave, HG) && V.dietFertility === 1) { + r.push(`${HG.slaveName} thinks ${slave.slaveName} could do with a bigger bump`); + if (arcology.FSRepopulationFocusPregPolicy) { + r.push(`since pregnant ${girl}s are all the rage in your arcology `); + } + if (diet !== "fertility") { + r.push(`and assigns ${him} a diet to promote ovulation.`); + } else { + r.push(`and keeps ${him} on ${his} fertility diet.`); + } + } else if ((slave.weight < 100 && arcology.FSHedonisticDecadence >= 20) || (slave.weight < -10)) { + r.push(`${HG.slaveName} thinks ${slave.slaveName} could use a little extra weight`); + if (arcology.FSHedonisticDecadence >= 20) { + r.push(`since plump ${girl}s are all the rage in your arcology `); + } + if (diet !== "fattening") { + r.push(`and assigns ${him} a diet to fatten ${him} up.`); + } else { + r.push(`and keeps ${him} on ${his} fattening diet.`); + } + } else if (slave.weight > 30 && arcology.FSHedonisticDecadence === "unset") { + r.push(`${HG.slaveName} thinks ${slave.slaveName} is a little too porky`); + if (diet !== "restricted") { + r.push(`and puts ${him} on a diet.`); + } else { + r.push(`and keeps ${him} on ${his} diet.`); + } + } else if (((slave.muscles <= 95 && ((arcology.FSPhysicalIdealist > 0 && arcology.FSPhysicalIdealistLaw === 0) || ((HG.fetish === "submissive" || HG.fetish === "masochist")))) || (slave.muscles <= 45 && (arcology.FSPhysicalIdealist !== "unset" && arcology.FSPhysicalIdealistLaw === 1)) || slave.muscles <= 5) && !isAmputee(slave)) { + r.push(`${HG.slaveName} thinks ${slave.slaveName}`); + if (HG.fetish === "submissive" && HG.fetishKnown === 1) { + r.push(`could use bigger muscles to better dominate ${him2} with in bed`); + } else if (HG.fetish === "masochist" && HG.fetishKnown === 1) { + r.push(`could use bigger muscles to better spank ${him2}`); + } else if (arcology.FSPhysicalIdealist !== "unset") { + r.push(`could use bigger muscles to support your societal goals`); + } else { + r.push(`could use a bit of muscle`); + } + if (diet !== "muscle building") { + r.push(`and makes ${him} work out hard.`); + } else { + r.push(`and keeps ${him} working out.`); + } + } else if (slave.balls > 0 && HG.fetish === "cumslut" && V.cumProDiet === 1) { + r.push(`${HG.slaveName}`); + if (HG.fetishKnown === 1) { + r.push(`loves cum,`); + } else { + r.push(`seems amused by cumshots,`); + } + r.push(`so ${he2}`); + if (diet !== "cum production") { + r.push(`puts`); + } else { + r.push(`keeps`); + } + r.push(`${slave.slaveName} on a diet designed to make ${him} cum harder and stronger.`); + } else { + r.push(`${HG.slaveName} thinks ${slave.slaveName} is fine as is`); + if (diet !== "healthy") { + r.push(`and puts ${him} on a normal diet.`); + } else { + r.push(`and keeps ${him} on ${his} healthy diet.`); + } + } + } + + /** + * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState} HG + */ + function HGSetsHormonesText(slave, HG) { + // room for expansion + if (hormones !== 2) { + r.push(`${HG.slaveName} puts ${slave.slaveName} on intensive female hormones, since ${he2} expects ${him} to act as the submissive, feminine partner.`); + } + } + + /** + * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState} HG + */ + function HGSetsDrugsText(slave, HG) { + if (V.HGSuiteDrugs !== 0) { + if (slave.health.condition < 60) { + r.push(`${HG.slaveName} gives ${slave.slaveName} curatives, since ${he2} wants a shiningly healthy living partner.`); + } + if (slave.lips <= 20) { + r.push(`${HG.slaveName} gives ${slave.slaveName} lip injections, since ${he2} wants to get oral from plump, luscious lips.`); + } else if (arcology.FSSlaveProfessionalismResearch === 1 && V.HGSuiteEquality !== 0 && canImproveIntelligence(slave)) { + r.push(`${HG.slaveName} gives ${slave.slaveName} psychostimulants, since ${him} being smarter will benefit them both when ${he} is in charge.`); + } else if (HG.fetish === "buttslut" && arcology.FSAssetExpansionistResearch === 1 && slave.butt < 18) { + r.push(`${HG.slaveName} gives ${slave.slaveName} hyper ass injections, since ${he2} never once thought it possible to fuck an ass as big as ${his} is.`); + } else if (HG.fetish === "buttslut" && arcology.FSAssetExpansionistResearch === 1 && slave.butt < 8) { + r.push(`${HG.slaveName} gives ${slave.slaveName} ass injections, since ${he2} likes comfortable padding as ${he2} fucks a butt.`); + } else if (HG.fetish === "cumslut" && arcology.FSAssetExpansionistResearch === 1 && slave.balls < 100 && slave.balls > 0 && slave.dick > 0) { + r.push(`${HG.slaveName} gives ${slave.slaveName} hyper testicle injections, since ${he2}`); + if (HG.fetishKnown === 1) { + r.push(`wants to swim in a river of cum.`); + } else { + r.push(`enjoys seeing how large of a load ${slave.slaveName} can blow.`); + } + } else if (HG.fetish === "cumslut" && slave.balls < 10 && slave.balls > 0 && slave.dick > 0) { + r.push(`${HG.slaveName} gives ${slave.slaveName} testicle injections, since ${he2} wants ${slave.slaveName} shooting bigger loads.`); + } else if ((HG.fetish === "masochist" || HG.fetish === "submissive") && canImproveHeight(slave)) { + r.push(`${HG.slaveName}`); + if (HG.fetishKnown === 1) { + r.push(`has a subconscious need to be hurt by the biggest, strongest ${girl} possible,`); + } else { + r.push(`feels that ${slave.slaveName} is too short,`); + } + r.push(`so ${he2} gives ${slave.slaveName} injections of growth stimulants to make ${him} grow taller.`); + } else if (HG.fetish === "boobs" && slave.boobs < 15000) { + r.push(`${HG.slaveName} gives ${slave.slaveName}`); + if (arcology.FSAssetExpansionistResearch === 1) { + r.push(`hyper`); + } + r.push(`tit injections,`); + if (HG.fetishKnown === 1) { + r.push(`since as far as ${he2}'s concerned there's no such thing as too much boob.`); + } else { + r.push(`eager to see just how much boob ${slave.slaveName} can handle.`); + } + } else if (canImpreg(slave, HG) && arcology.FSRestart === "unset" && (getHGTastes() === 4 || HG.fetish === "pregnancy")) { + r.push(`${HG.slaveName} gives ${slave.slaveName} fertility enhancers, since ${he2} wants to see ${slave.slaveName} heavy with child.`); + } else if (arcology.FSRepopulationFocusPregPolicy === 1 && canImpreg(slave, HG)) { + r.push(`${HG.slaveName} gives ${slave.slaveName} fertility enhancers, since pregnancy is popular and ${he2} wants ${slave.slaveName} to look hot.`); + } else if (getHGTastes() > 1) { + if (slave.lips <= 70) { + r.push(`${HG.slaveName} gives ${slave.slaveName} lip injections, since ${he2} thinks ${slave.slaveName} should have lips so big ${he} can barely speak.`); + } else if (slave.boobs > (125 * Math.pow(slave.butt, 2))) { + r.push(`${HG.slaveName} gives ${slave.slaveName} ass injections, since ${he2} loves curves and thinks ${slave.slaveName}'s butt needs the most work.`); + } else { + r.push(`${HG.slaveName} gives ${slave.slaveName} boob injections, since ${he2} loves curves and thinks ${slave.slaveName}'s tits need the most work.`); + } + } + } else { + if (slave.health.condition < 100) { + r.push(`${HG.slaveName} gives ${slave.slaveName} curatives, since ${his2} assistant could be healthier.`); + } + } + } + + /** Allow the HG to set RA surgery rules based on her tastes, for immediate application + * @returns {FC.RA.RuleSurgerySettings} + */ + function getHGSurgeryTargets() { + const thisSurgery = App.RA.newRule.surgery(); + switch (getHGTastes()) { + case 1: + thisSurgery.lactation = 0; + thisSurgery.cosmetic = 1; + thisSurgery.faceShape = "cute"; + thisSurgery.lips = App.RA.makeTarget('==', 10); + thisSurgery.hips = 0; + thisSurgery.hipsImplant = 0; + thisSurgery.butt = App.RA.makeTarget('==', 0); + thisSurgery.accent = 0; + thisSurgery.shoulders = 0; + thisSurgery.shouldersImplant = 0; + thisSurgery.boobs = App.RA.makeTarget('==', 0); + thisSurgery.holes = 0; + break; + case 2: + thisSurgery.lactation = 0; + thisSurgery.cosmetic = 1; + thisSurgery.faceShape = "cute"; + thisSurgery.lips = App.RA.makeTarget('==', 60); + thisSurgery.hips = 0; + thisSurgery.hipsImplant = 0; + thisSurgery.butt = App.RA.makeTarget('==', 4); + thisSurgery.accent = 0; + thisSurgery.shoulders = 0; + thisSurgery.shouldersImplant = 0; + thisSurgery.boobs = App.RA.makeTarget('==', 1200); + thisSurgery.holes = 0; + break; + case 3: + thisSurgery.lactation = 0; + thisSurgery.cosmetic = 1; + thisSurgery.faceShape = "cute"; + thisSurgery.lips = App.RA.makeTarget('==', 95); + thisSurgery.hips = 0; + thisSurgery.hipsImplant = 0; + thisSurgery.butt = App.RA.makeTarget('==', 8); + thisSurgery.accent = 0; + thisSurgery.shoulders = 0; + thisSurgery.shouldersImplant = 0; + thisSurgery.boobs = App.RA.makeTarget('==', 10000); + thisSurgery.holes = 2; + break; + case 4: + thisSurgery.lactation = 1; + thisSurgery.cosmetic = 1; + thisSurgery.faceShape = "cute"; + thisSurgery.lips = App.RA.makeTarget('==', 10); + thisSurgery.hips = 3; + thisSurgery.hipsImplant = 0; + thisSurgery.butt = App.RA.makeTarget('==', 0); + thisSurgery.accent = 0; + thisSurgery.shoulders = 0; + thisSurgery.shouldersImplant = 0; + thisSurgery.boobs = App.RA.makeTarget('==', 0); + thisSurgery.holes = 0; + break; + default: + throw "Unexpected HG tastes"; + } + return thisSurgery; + } + + /** + * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState} HG + */ + function HGArrangesSurgery(slave, HG) { + if (arcology.FSBodyPurist === "unset") { + r.push(`${HG.slaveName} sends ${V.assistant.name} notes on what surgical modifications ${he2} wants for ${slave.slaveName}.`); + r.push(rulesAutosurgery(slave, getHGSurgeryTargets())); + } + if (HG.fetishKnown === 1) { + if (HG.fetish === "sadist" && HG.fetishStrength > 95 && V.seeExtreme === 1 && slave.fetish !== "mindbroken") { + if (slave.health.condition > 40) { + if (hasAnyNaturalLimbs(slave) && slave.devotion < -20) { + let frag = `${HG.slaveName} decides to extract the ultimate in sadistic pleasure from ${slave.slaveName}, and directs the autosurgery to <span class="health dec">amputate ${his}`; + if (hasAnyArms(slave)) { + frag += ` arm${hasBothArms(slave) ? "s" : ""}`; + if (hasAnyLegs(slave)) { + frag += ` and`; + } + } + if (hasAnyLegs(slave)) { + frag += ` leg${hasBothLegs(slave) ? "s" : ""}`; + } + frag += `.</span> ${He2} carefully <span class="trust dec">describes the entire process</span> to the sobbing slave <span class="devotion dec">in minute detail</span> before allowing ${him} to be sedated.`; + r.push(frag); + slave.devotion -= 20; + slave.trust -= 20; + removeLimbs(slave, "all"); + surgeryDamage(slave, 40); + } + if (slave.balls > 0 && slave.devotion <= 50) { + r.push(`${HG.slaveName} decides to have some once-only sadistic pleasure, and carefully straps ${slave.slaveName} into the surgery until ${he}'s completely immobile. ${HG.slaveName} situates`); + if (canSee(slave)) { + r.push(`a mirror so the terrified ${girl} can see ${his} own crotch,`); + } else { + r.push(`${him} so that the terrified ${girl} can sense what part of ${his} body is being manipulated even through the anesthetics,`); + } + r.push(`gets behind ${him}, and carefully sodomizes ${him} during the entire process of <span class="health dec">castration.</span> ${slave.slaveName} is anesthetized down there and can't feel the brutal anal rape, but ${his} abuser orgasms repeatedly to ${him} <span class="trust dec">weeping</span> at the`); + if (canSee(slave)) { + r.push(`sight`); + } else { + r.push(`muted sensation`); + } + r.push(`of <span class="devotion dec">being gelded and raped at once.</span>`); + slave.devotion -= 20; + slave.trust -= 20; + slave.balls = 0; + slave.scrotum = 0; + surgeryDamage(slave, 20); + } + } + if (slave.devotion < -90 && slave.fetish !== "mindbroken") { + r.push(`${HG.slaveName} tires of ${slave.slaveName}'s protests that ${HG.slaveName} is a monster for hurting ${him} this way and ${his} complaints that ${he} deserves better. ${HG.slaveName} decides that it'll be just as much fun and a lot less trouble to mistreat ${slave.slaveName} once ${he}'s mindbroken, and sends ${him} in for <span class="mindbreak">chemical lobotomization.</span>`); + slave.fetish = "mindbroken"; + surgeryDamage(slave, 20); + } + } else if (HG.fetish === "dom" && HG.fetishStrength > 60 && V.seeExtreme === 1 && slave.fetish !== "mindbroken" && slave.devotion <= 50) { + if (slave.health.condition > 40) { + if (slave.heels === 0 && hasAnyNaturalLegs(slave)) { + r.push(`${HG.slaveName} is not satisfied with ${slave.slaveName}'s submissiveness, and directs the autosurgery to <span class="health dec">clip ${his} Achilles tendons.</span> Once the slave has recovered from surgery, ${HG.slaveName} removes all shoes from the suite, too, so ${slave.slaveName} is forced to crawl like a good little bitch. ${slave.slaveName} is <span class="devotion dec">angry</span> and <span class="trust dec">frightened.</span>`); + slave.devotion -= 5; + slave.trust -= 5; + slave.heels = 1; + slave.shoes = "none"; + surgeryDamage(slave, 20); + } + if (slave.balls > 0 && canDoAnal(slave)) { + r.push(`${HG.slaveName} decides that it's counterproductive for ${slave.slaveName} to be able to get hard, and sends ${him} in to have ${his} <span class="health dec">balls removed.</span> ${slave.slaveName} is horrified, but ${HG.slaveName} uses ${his} anus with such persistence and mercilessness that the poor gelding doesn't have much time to mourn. ${slave.slaveName} is badly <span class="trust dec">frightened</span> by ${his} new role as nothing but a recipient of anal.`); + slave.trust -= 10; + slave.balls = 0; + surgeryDamage(slave, 20); + } + } + } else if (HG.energy > 95) { + if (slave.health.condition > 40 && slave.heels === 0 && hasAnyNaturalLegs(slave) && slave.devotion <= 50 && slave.fetish !== "mindbroken") { + r.push(`${HG.slaveName} wants a good little bimbo who sticks ${his} butt out all the time, and directs the autosurgery to <span class="health dec">clip ${slave.slaveName}'s Achilles tendons.</span> Once the slave has recovered from surgery, ${HG.slaveName} presents ${slave.slaveName} with a new pair of extra-tall heels to totter around in like a good little slut. ${slave.slaveName} is <span class="devotion dec">angry</span> and <span class="trust dec">frightened.</span>`); + slave.devotion -= 5; + slave.trust -= 5; + slave.heels = 1; + slave.shoes = "extreme heels"; + surgeryDamage(slave, 20); + } + } else if (HG.fetish === "masochist") { + if (slave.health.condition > 40 && slave.heightImplant === 0 && slave.height < 185 && hasAllLimbs(slave)) { + r.push(`${HG.slaveName} has a subconscious need to be hurt by the biggest, strongest ${girl} possible, and directs the autosurgery to extend ${slave.slaveName}'s arm and leg bones to make ${him} a little <span class="change positive">taller.</span>`); + slave.heightImplant = 1; + slave.height += 10; + surgeryDamage(slave, 20); + } + } else if (HG.fetish === "submissive") { + if (slave.health.condition > 40 && slave.heightImplant === 0 && slave.height < 185 && hasAllLimbs(slave)) { + r.push(`${HG.slaveName} wants to be topped by the biggest, strongest ${girl} possible, and directs the autosurgery to extend ${slave.slaveName}'s arm and leg bones to make ${him} a little <span class="change positive">taller.</span>`); + slave.heightImplant = 1; + slave.height += 10; + surgeryDamage(slave, 20); + } + } + } + } + + /** + * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState} HG + */ + function HGEnjoyment(slave, HG) { + if (V.HGSuiteEquality !== 0) { + if (slave.devotion > 50) { + r.push(`${HG.slaveName} and ${slave.slaveName} <span class="devotion inc">really appreciate</span> the equal, alternating Head Girl system, and <span class="noteworthy">switch places at the end of the week.</span>`); + HG.devotion += 1; + slave.devotion += 1; + } else { + r.push(`${slave.slaveName} is not a decent Head Girl candidate, so ${HG.slaveName} keeps the position for now.`); + } + } else { + const hgEnjoyment = V.HGSuiteSurgery + V.HGSuiteDrugs + V.HGSuiteHormones; + if (hgEnjoyment > 2) { + r.push(`Your Head Girl <span class="devotion inc">really enjoys</span> being given total freedom to customize ${his2} very own bitch.`); + HG.devotion += 5; + } else if (hgEnjoyment === 2) { + r.push(`Your Head Girl <span class="devotion inc">enjoys</span> being given freedom to customize ${his2} very own ${girl}.`); + HG.devotion += 3; + } else if (hgEnjoyment === 1) { + r.push(`Your Head Girl <span class="devotion inc">appreciates</span> being given some freedom to customize ${his2} own servant.`); + HG.devotion += 1; + } + } + } + + /** + * @param {App.Entity.SlaveState} slave + * + */ + function slaveReport(slave) { + if (V.showEWD === 0) { + /* App.SlaveAssignment.choosesOwnClothes(slave) */ + App.SlaveAssignment.rules(slave); + App.SlaveAssignment.diet(slave); + App.SlaveAssignment.longTermEffects(slave); + App.SlaveAssignment.drugs(slave); + App.SlaveAssignment.relationships(slave); + App.SlaveAssignment.rivalries(slave); + App.SlaveAssignment.devotion(slave); + } else { + /* App.SlaveAssignment.choosesOwnClothes(slave) */ + const content = App.UI.DOM.makeElement("div", '', "indent"); + $(content).append( + App.SlaveAssignment.rules(slave), + App.SlaveAssignment.diet(slave), + App.SlaveAssignment.longTermEffects(slave), + App.SlaveAssignment.drugs(slave), + App.SlaveAssignment.relationships(slave), + App.SlaveAssignment.rivalries(slave), + `<div class="indent">${App.SlaveAssignment.devotion(slave)}</span>`); + r.push(content); + } + } +})(); diff --git a/src/events/PE/concubineInterview.js b/src/events/PE/concubineInterview.js new file mode 100644 index 0000000000000000000000000000000000000000..f56b4c9efceda93ce6545f0bba6d4ee354753c50 --- /dev/null +++ b/src/events/PE/concubineInterview.js @@ -0,0 +1,571 @@ +App.Events.PEConcubineInterview = class PEConcubineInterview extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => typeof S.Concubine !== "undefined", + () => canTalk(S.Concubine) && canHear(S.Concubine), + ]; + } + + actorPrerequisites() { + return [ + [ + s => s.ID === S.Concubine.ID, + ] + ]; + } + + execute(node) { + /** @type {Array<App.Entity.SlaveState>} */ + const [eventSlave] = this.actors.map(a => getSlave(a)); + /** @type {App.Entity.PlayerState} */ + const PC = V.PC; + const {he, his, him, girl, He, His} = getPronouns(eventSlave); + const {he: heP, his: hisP, him: himP, woman: womanP, He: HeP} = getPronouns(PC); + const {say, title: Master} = getEnunciation(eventSlave); + const lisps = SlaveStatsChecker.checkForLisp(eventSlave); + const belly = bellyAdjective(eventSlave); + const fluid = eventSlave.inflationType; + const arcology = V.arcologies[0]; + const oldRep = V.rep; + + const rep = val => repX(val, "concubine", eventSlave); + const speak = string => Spoken(eventSlave, string); + + V.nextLink = "Next Week"; + + App.Events.drawEventArt(node, eventSlave); + + let t = []; + + t.push(`You receive an official communication from a popular talk show e-hosted in one of the old world's still-thriving first world countries. Your fame has become known even in the old world, and they'd like to interview `, App.UI.DOM.slaveDescriptionDialog(eventSlave), ` about you. They frankly warn you that you'll have no right to review the interview and no ability to control what ${he} says, and that they'll be asking about anything the interviewer thinks is juicy. This could be great for your reputation, but it could be hazardous, too.`); + + App.Events.addParagraph(node, t); + + App.Events.addResponses(node, [ + new App.Events.Result("Accept", accept), + new App.Events.Result("Decline", decline) + ]); + + function accept() { + t = []; + + t.push(`The show is broadcast live; you head out onto a balcony to watch it on a big screen. It's been impossible to hide, and many of your citizens have taken a proprietary attitude towards your fame: they see your success as their success, too, and want to see ${eventSlave.slaveName} do well. The show introduction plays, introducing the host, a swishy, rail-thin gentleman with impeccable sartorial style and a close-cropped salt-and-pepper beard. He reviews who you are, giving equal time to your accomplishments and the inevitable criticisms from old world antislavery activists, and then calls ${eventSlave.slaveName} out.`); + + App.Events.addParagraph(node, t); + + t = []; + + t.push(`${He} `); + if (eventSlave.bellyPreg > 1000000) { + t.push(`barely waddles out,${hasAnyArms(eventSlave) ? ` arm${hasBothArms(eventSlave) ? `s` : ``} resting atop ${his} ${belly} belly,` : ``}`); + } else if (eventSlave.bellyPreg > 750000) { + t.push(`barely waddles out,${hasAnyArms(eventSlave) ? ` arm${hasBothArms(eventSlave) ? `s` : ``} struggling to lift ${his} ${belly}, absolutely child-stuffed belly as ${he} lewdly caresses it,` : ``}`); + } else if (eventSlave.bellyPreg > 600000) { + t.push(`waddles out,${hasAnyArms(eventSlave) ? ` arm${hasBothArms(eventSlave) ? `s` : ``} cradling ${his} ${belly}, absolutely child-stuffed belly as best ${he} can as ${he} lewdly caresses its sides,` : ``}`); + } else if (eventSlave.bellyPreg > 450000) { + t.push(`waddles out,${hasAnyArms(eventSlave) ? + ` arm${hasBothArms(eventSlave) ? `s` : ``} cradling ${his} ${belly}, absolutely child-stuffed belly as ${he} lewdly sways it side to side,` : + `lewdly swaying ${his} absolutely child-stuffed belly from side to side`},`); + } else if (eventSlave.bellyPreg > 300000) { + t.push(`strides out,${hasAnyArms(eventSlave) ? + ` arm${hasBothArms(eventSlave) ? `s` : ``} cradling ${his} ${belly}, absolutely child-stuffed belly as ${he} lewdly sways it side to side,` : + `lewdly swaying ${his} absolutely child-stuffed belly from side to side`},`); + } else if (eventSlave.bellyPreg > 150000) { + t.push(`strides out with an exaggerated gait, purposefully swaying ${his} ${belly}, child-stuffed belly from side to side,`); + } else if (eventSlave.belly > 150000) { + t.push(`strides out, ${his} ${belly} belly swaying side to side lewdly,`); + } else if (eventSlave.belly > 5000) { + t.push(`strides out, sensually swaying ${his} round belly side to side,`); + } else { + t.push(`strides out`); + } + if (eventSlave.clothes === "no clothing") { + t.push(`in magnificent nudity. It's a shock to old world values, no doubt, but the titillation should counterbalance that.`); + } else { + t.push(`resplendent in ${eventSlave.clothes}.`); + } + if (eventSlave.skill.entertainment > 60) { + t.push(`${He}'s <span class="green">graceful and sensual,</span> and entirely at home.`); + + rep(500); + } else if (eventSlave.skill.entertainment < 30) { + t.push(`${He}'s <span class="red">clumsy and nervous,</span> but does ${his} best to rally.`); + + rep(-100); + } else { + t.push(`${He} manages ${his} entrance reasonably well, and conceals any nervousness.`); + } + if (eventSlave.geneticQuirks.neoteny === 2 && eventSlave.visualAge < V.minimumSlaveAge) { + t.push(`"My honey, aren't you a bit young for this sort of thing?${V.minimumSlaveAge < 16 ? ` I know things are a little different where you're from, but still, you're just a child!` : ``}"`); + if (eventSlave.intelligence + eventSlave.intelligenceImplant > 50) { + t.push(`${He} <span class="green">effortlessly diffuses the question.</span> ${speak(`"I'm really ${eventSlave.actualAge}. Most people would never consider a ${girl} with a genetic condition like mine, but my dear Master was able to see past it."`)}`); + + rep(500); + } else if (eventSlave.intelligence + eventSlave.intelligenceImplant > 15) { + t.push(`${He} manages to sway the topic away from ${his} apparent underageness. ${speak(`"I'm really ${eventSlave.actualAge}, believe it or not. Wouldn't you like to know my secret?"`)}`); + } else { + t.push(`${He} manages to completely miss the insinuation and <span class="red">make things worse than they really are.</span> ${speak(`"Master loves the way I look, that's why I'm hisP favorite after all, but I'm still ${eventSlave.actualAge}-years old."`)}`); + + rep(-100); + } + } else if (eventSlave.face > 95) { + t.push(`"Oh my God," exclaims the host reverently. "Honey, <span class="green">you are gorgeous.</span>" He turns to the camera. "Isn't ${he} just gorgeous?"`); + + rep(500); + } else if (eventSlave.face < 10) { + t.push(`There is a distinct lack of response from the host; perhaps he was <span class="red">expecting ${him} to be prettier.</span>`); + + rep(-100); + } else { + t.push(`The host gives ${him} a perfunctory compliment on ${his} beauty.`); + } + t.push(`They seat themselves in comfortable leather chairs and the interview begins in earnest.`); + + App.Events.addParagraph(node, t); + + t = []; + + t.push(`The host asks ${him} some soft, nonjudgmental questions about ${his} life and how ${he} became your slave. Then he hits ${him}: "So, ${eventSlave.slaveName}. Tell us about ${PlayerName()}."`); + if (eventSlave.devotion > 95) { + t.push(`<span class="green">Without a moment's hesitation,</span> ${he} ${lisps ? `lisps` : `proclaims`}, "I love ${himP}. ${HeP}'s so ${PC.title !== 0 ? `handsome` : `pretty`}, and," ${he} manages to blush prettily, "${heP}'s so good to me."`); + + rep(500); + } else if (eventSlave.devotion < 60) { + t.push(`${He} struggles for an instant and then says <span class="red">unconvincingly</span> that ${he} loves you.`); + + rep(-100); + } else { + t.push(`${He} recovers quickly and responds that ${he} loves you.`); + } + + App.Events.addParagraph(node, t); + + t = []; + + t.push(`The host glances at the camera. "Wow." He presses on. "But you're ${hisP} slave, ${eventSlave.slaveName}. ${HeP} owns you. Isn't that hard for you?"`); + + App.Events.addParagraph(node, t); + + t = []; + + t.push(`${He} shakes ${his} head.`); + if (eventSlave.trust > 95) { + t.push(`<span class="green">${He} responds confidently,</span> "My life with ${himP} is very different from anything you might find here in the old world. But I'm happy with ${himP}, and there's no one I'd rather be with, as a slave or not."`); + + rep(500); + } else if (eventSlave.trust < 60) { + t.push(`${He} explains that it isn't hard to trust someone like you, but this <span class="red">falls a little flat.</span>`); + + rep(-100); + } else { + t.push(`${He} explains earnestly that it isn't hard to trust someone like you, and explains some of the blander details about life as your slave.`); + } + if (eventSlave.belly > 1500) { + t.push(`The host places a hand on ${his} belly,`); + if (eventSlave.bellyPreg > 450000) { + t.push(`gasping at the tautness and the feeling of the ${eventSlave.pregType > 1 ? `children` : `child`} distending the skin beneath his hand.`); + } else if (eventSlave.bellyPreg > 100000) { + t.push(`gasping at the flurry of kicks in response.`); + } else if (eventSlave.belly > 15000) { + t.push(`giving it a good groping.`); + } else if (eventSlave.belly > 5000) { + t.push(`giving it a good pat.`); + } else { + t.push(`giving it a good feel.`); + } + t.push(`"Now I'm sure our viewers are wondering," he says, patting the firm dome. "Is it ${PlayerName()}'s?"`); + if (eventSlave.pregSource === -1) { + if (eventSlave.bellyPreg > 450000) { + t.push(`${speak(`"Of course they are!"`)} ${he} proclaims proudly as ${he} ${hasAnyArms(eventSlave) ? `runs ${his} hand${hasBothArms(eventSlave) ? `s` : ``} across` : `stretches out to show off`} ${his} quivering mass. "All ${eventSlave.pregType} of them!"`); + } else if (eventSlave.bellyPreg > 100000) { + t.push(`${speak(`"Of course they are!"`)} ${he} proclaims proudly as ${he} ${hasAnyArms(eventSlave) ? `runs ${his} hand${hasBothArms(eventSlave) ? `s` : ``} across` : `stretches out to show off`} ${his} belly. "All ${eventSlave.pregType} of them!"`); + } else if (eventSlave.bellyImplant > 1500) { + t.push(speak(`"It's fake. Pretty hard to tell though, isn't it?"`)); + } else if (eventSlave.bellyPreg > 1500) { + t.push(speak(`"Of course ${eventSlave.pregType > 1 ? `they are` : `it is`}!"`)); + } else if (eventSlave.bellyFluid > 100) { + t.push(speak(`"Nah. It's all ${fluid} inside me."`)); + } else if (eventSlave.bellyImplant > -1) { + t.push(speak(`"It's fake. Pretty hard to tell though, isn't it?"`)); + } else { + t.push(speak(`"Of course ${eventSlave.pregType > 1 ? `they are` : `it is`}!"`)); + } + } else { + t.push(speak(`"That's for me and my ${Master} only," ${he} teases, sticking out ${his} tongue.`)); + } + } + if (eventSlave.broodmother === 2 && eventSlave.preg > 37) { + t.push(`${He} grunts and struggles to ${hasBothLegs(eventSlave) ? `spread ${his} legs` : `get into position`}. ${speak(`"I'm sorry, another one is coming out right now..."`)} ${he} ${say}s, turning red. The host, at a loss for words, can only watch as`); + t.push(`a child is born into the world, live on screen.`); + t.push(`a child is born into ${his}`); + + switch(eventSlave.clothes) { + case "a toga": + t.push(`toga.`); + break; + case "a huipil": + t.push(`huipil.`); + break; + case "a slutty qipao": + t.push(`slutty qipao.`); + break; + case "a penitent nuns habit": + t.push(`habit.`); + break; + case "a slave gown": + case "a ball gown": + t.push(`gown.`); + break; + case "a comfortable bodysuit": + t.push(`bodysuit.`); + break; + case "a leotard": + t.push(`leotard.`); + break; + case "a bunny outfit": + t.push(`bunny outfit.`); + break; + case "a nice nurse outfit": + t.push(`nurse outfit.`); + break; + case "a slutty nurse outfit": + t.push(`slutty nurse outfit.`); + break; + case "a schoolgirl outfit": + t.push(`school clothes.`); + break; + case "a hijab and abaya": + case "a niqab and abaya": + t.push(`abaya.`); + break; + case "a klan robe": + t.push(`robe.`); + break; + case "a hijab and blouse": + t.push(`skirt.`); + break; + case "a burqa": + t.push(`burqa.`); + break; + case "a burkini": + t.push(`burkini.`); + break; + case "a kimono": + t.push(`kimono.`); + break; + case "a hanbok": + t.push(`hanbok.`); + break; + case "a nice maid outfit": + t.push(`maid outfit.`); + break; + case "a slutty maid outfit": + t.push(`skimpy maid outfit.`); + break; + case "a gothic lolita dress": + case "a halter top dress": + case "a long qipao": + case "a maternity dress": + case "a mini dress": + case "a Santa dress": + case "a biyelgee costume": + t.push(`dress.`); + break; + case "a latex catsuit": + t.push(`latex catsuit.`); + break; + case "a military uniform": + t.push(`uniform.`); + break; + case "a schutzstaffel uniform": + t.push(`uniform.`); + break; + case "a slutty schutzstaffel uniform": + t.push(`slutty uniform.`); + break; + case "a red army uniform": + t.push(`uniform.`); + break; + case "spats and a tank top": + t.push(`spats.`); + break; + case "a monokini": + t.push(`monokini.`); + break; + case "a cybersuit": + t.push(`cybersuit.`); + break; + case "a tight Imperial bodysuit": + t.push(`bodysuit.`); + break; + case "battlearmor": + t.push(`armor.`); + break; + case "Imperial Plate": + t.push(`ultra-heavy armor.`); + break; + case "a skirt": + t.push(`dress.`); + break; + case "a mounty outfit": + case "a police uniform": + t.push(`uniform.`); + break; + case "lederhosen": + t.push(`shorts.`); + break; + case "a courtesan dress": + t.push(`layered skirt.`); + break; + case "a bimbo outfit": + t.push(`thong.`); + break; + default: + t.push(`${eventSlave.clothes}.`); + break; + } + } + + App.Events.addParagraph(node, t); + + t = []; + + t.push(`The interview winds on, gradually descending into prurient territory. ${eventSlave.slaveName} answers readily, giving everyone watching quite a window into an oversexed slave society.`); + if (eventSlave.intelligence + eventSlave.intelligenceImplant > 15) { + t.push(`${He}'s clever enough to <span class="green">shock and titillate</span> at the same time; in response to a probing question about whether ${he} has any plans for the rest of the night, ${he} ${say}s, ${speak(`"Of course my ${Master} makes the plans. But I hope I can get back to the arcology early."`)} ${He} shifts suggestively in ${his} chair. "I'm looking forward to getting fucked tonight."`); + + rep(500); + } else { + t.push(`${He}'s rather blunt in ${his} responses, answering with a little too much detail; not that the audience minds.`); + } + t.push(`The host, taken off guard, laughs in surprise and says he envies you that. He asks a follow up question that hints at ${his} sexual preferences without coming straight out and asking how ${he} likes it.`); + if (eventSlave.intelligence + eventSlave.intelligenceImplant + eventSlave.skill.entertainment > 130 && !eventSlave.tankBaby) { + t.push(`${He} has enough knowledge of the old world to be able to answer without going too far, and <span class="green">subtly alludes</span> to how much ${he} enjoys`); + if (eventSlave.fetish === "submissive") { + t.push(`submitting to you in bed.`); + } else if (eventSlave.fetish === "cumslut") { + if (!PC.dick) { + t.push(`eating you out.`); + } else { + t.push(`sucking you off.`); + } + } else if (eventSlave.fetish === "humiliation") { + t.push(`it when you show ${him} off in public.`); + } else if (eventSlave.fetish === "buttslut") { + t.push(`anal sex.`); + } else if (eventSlave.fetish === "boobs") { + t.push(`anything that involves ${his} breasts.`); + } else if (eventSlave.fetish === "sadist") { + t.push(`it whenever you share a reluctant slave with ${him}.`); + } else if (eventSlave.fetish === "masochist") { + t.push(`a good spanking.`); + } else if (eventSlave.fetish === "dom") { + t.push(`sharing a submissive slave with you.`); + } else if (eventSlave.fetish === "pregnancy") { + if (eventSlave.pregKnown) { + t.push(`sex while pregnant.`); + } else if (eventSlave.vagina > 0) { + t.push(`bareback.`); + } else { + t.push(`sharing a pregnant slave with you.`); + } + } else if (eventSlave.energy > 95) { + t.push(`sex, regardless of what kind it is.`); + } else { + t.push(`sex in the missionary position.`); + } + + rep(500); + } else { + t.push(`${His} answer betrays how ${eventSlave.tankBaby ? `little ${he} knows` : `much ${he}'s forgotten`} about the old world: ${he} mildly shocks the studio audience by describing`); + if (eventSlave.fetish === "submissive") { + t.push(`how good it feels when you hold ${him} down and fuck ${him}`); + } else if (eventSlave.fetish === "cumslut") { + if (!PC.dick) { + t.push(`how much fun sucking your cock is`); + } else { + t.push(`how much fun polishing your pearl is`); + } + } else if (eventSlave.fetish === "humiliation") { + t.push(`how hot it is to get fucked in public`); + } else if (eventSlave.fetish === "buttslut") { + t.push(`how much ${he} loves the feeling of you stretching ${his} anal ring`); + } else if (eventSlave.fetish === "boobs") { + t.push(`how much ${he} loves having ${his} nipples tugged`); + } else if (eventSlave.fetish === "sadist") { + t.push(`how much ${he} loves molesting other slaves with you`); + } else if (eventSlave.fetish === "masochist") { + t.push(`how good it feels to be forced`); + } else if (eventSlave.fetish === "dom") { + t.push(`how much ${he} loves holding other slaves down for you`); + } else if (eventSlave.fetish === "pregnancy") { + if (eventSlave.pregKnown || eventSlave.counter.births > 0) { + t.push(`how good sex feels while pregnant`); + } else if (eventSlave.vagina > 0) { + t.push(`how good cum feels inside ${him}`); + } else { + t.push(`how much fun it is to fuck pregnant slaves`); + } + } else if (eventSlave.energy > 95) { + t.push(`the average number of sexual encounters ${he} has in a week`); + } else { + t.push(`${his} sex life with you`); + } + t.push(`in a matter-of-fact tone of voice.`); + } + + App.Events.addParagraph(node, t); + + t = []; + + if (eventSlave.intelligence + eventSlave.intelligenceImplant > 50) { + t.push(`Only because you know ${him} so well are you able to perceive the instant of cold calculation before ${he} makes a <span class="green">perfect tactical decision</span> and turns directly to the camera. "Whatever you want," ${he} ${say}s confidently, ${speak(`"You can find it in a Free Cities arcology like my ${Master}'s. Where I live, there's`)}`); + if (arcology.FSRestart > 0) { + t.push(speak(`the most interesting people,`)); + } + + if (arcology.FSPaternalist > 0) { + t.push(speak(`wonderful opportunities for everyone,`)); + } + + if (arcology.FSAssetExpansionist > 0) { + t.push(speak(`boobs the size of beach balls,`)); + } + + if (arcology.FSRepopulationFocus > 0) { + t.push(speak(`lots of bellies of all sizes,`)); + } + + if (arcology.FSBodyPurist === "unset") { + t.push(speak(`gorgeous tattoos and piercings,`)); + } else if (arcology.FSTransformationFetishist > 0) { + t.push(speak(`new assets every day,`)); + } + + if (arcology.FSPastoralist > 0) { + t.push(speak(`milk straight from the nipple,`)); + } + + if (arcology.FSPhysicalIdealist > 0) { + t.push(speak(`the most incredible oiled-up muscles,`)); + } else if (arcology.FSHedonisticDecadence > 0) { + t.push(speak(`the softest, most laid-back girls,`)); + } + + if (arcology.FSRomanRevivalist > 0) { + t.push(speak(`Rome come again,`)); + } else if (arcology.FSNeoImperialist > 0) { + t.push(speak(`a New Imperium worthy of the ages,`)); + } else if (arcology.FSAztecRevivalist > 0) { + t.push(speak(`Blood empire reborn,`)); + } else if (arcology.FSEgyptianRevivalist > 0) { + t.push(speak(`the land of the Pharaohs reborn,`)); + } + + if (arcology.FSGenderRadicalist > 0) { + t.push(speak(`more ass than you can possibly fuck,`)); + } else if (arcology.FSGenderFundamentalist > 0) { + t.push(speak(`so much pussy it's unbelievable,`)); + } + + if (arcology.FSIntellectualDependency > 0) { + t.push(speak(`slaves eager to get in your pants,`)); + } + + if (arcology.FSSlaveProfessionalism > 0) { + t.push(speak(`slaves you can have a conversation with,`)); + } + + if (arcology.FSPetiteAdmiration > 0) { + t.push(speak(`where even the shortest can stand tall,`)); + } else if (arcology.FSStatuesqueGlorification > 0) { + t.push(speak(`plenty of mouths at crotch height,`)); + } + + if (arcology.FSChattelReligionist > 0) { + t.push(speak(`a fulfilling sexual and spiritual life,`)); + } + + if (arcology.FSDegradationist > 0) { + t.push(speak(`bitches you can just hold down and use,`)); + } + + if (arcology.FSSupremacist > 0) { + t.push(speak(`${arcology.FSSupremacistRace} power,`)); + } + + if (arcology.FSSubjugationist > 0) { + t.push(speak(`${arcology.FSSubjugationistRace} girls to cater to your every whim,`)); + } + + t.push(speak(`girls in pretty dresses and girls in string bikinis and girls who haven't worn clothes in years,`)); + if (V.seeDicks !== 0) { + t.push(speak(`girls with huge dicks you can assfuck until they cum buckets, girls with soft dicks and no balls,`)); + } + + if (V.seeDicks !== 0 && V.seeDicks !== 100) { + t.push(speak(`girls with dicks the size of clits and girls with clits the size of dicks,`)); + } + + if (V.seeDicks !== 100) { + t.push(speak(`young girls on their first pregnancy, MILFs on their tenth,`)); + } + + t.push(speak(`lips, tongues,`)); + + if (arcology.FSEgyptianRevivalistIncestPolicy === 1) { + t.push(speak(`incest,`)); + } + + if (arcology.FSSlimnessEnthusiast === "unset") { + t.push(speak(`huge breasts and plush asses,`)); + } else if (arcology.FSAssetExpansionist === "unset") { + t.push(speak(`pert tits and cute butts,`)); + } + + t.push(speak(`and more. I wouldn't trade it for anything."`), ` The host politely regains control of his show, but there's a cautious respect in the rest of his questions.`); + + rep(1500); + + App.Events.addParagraph(node, t); + + t = []; + + t.push(`${eventSlave.slaveName} even manages to <span class="green">respond well</span> to a probing question about your gender. ${He} ${lisps ? `lisps` : `explains`}, ${speak(`"You have to understand that all that nonsense about men and women means less to us in the Free Cities. My ${Master} is a successful and powerful ${womanP}.`)}`); + if (!PC.dick) { + t.push(`${speak(`We just pay the right amount of attention to the success and the power.`)} ${He} quirks a corner of ${his} mouth. "I know <em>I</em> do."`); + } else { + t.push(`${He} quirks a corner of ${his} mouth. ${speak(`"And ${heP} has a <em>wonderful</em> cock."`)}`); + } + + rep(500); + } + + App.Events.addParagraph(node, t); + + t = []; + + t.push(`At the conclusion, the host`); + if (V.rep - oldRep > 200) { + t.push(`seems <span class="green">impressed</span> and says sincerely,`); + } else if (V.rep - oldRep < 0) { + t.push(`seems <span class="red">unimpressed</span> and says mockingly,`); + } else { + t.push(`says jokingly,`); + } + t.push(`"My dear it's been a pleasure. If all Free Cities ${girl}s are like you I might have to look into immigrating. Ladies and gentlemen, good night!"`); + + App.Events.addParagraph(node, t); + + return t; + } + + function decline() { + t = []; + + t.push(`You decline. The media representative of the show is understanding. "I'll be sure to contact you if we ever have another opening," she says. "You're pretty interesting, you know."`); + + return t; + } + } +}; diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js index be6a758b972e75cfc055233716fe0bc919cc2657..f1317ff7fbd749f602edf5ca4ddecb6396f35336 100644 --- a/src/events/randomEvent.js +++ b/src/events/randomEvent.js @@ -59,6 +59,8 @@ App.Events.getNonindividualEvents = function() { return [ // instantiate all possible random nonindividual events here // example: new App.Events.TestEvent(), + new App.Events.PEConcubineInterview(), + new App.Events.REDevotees(), new App.Events.RERelativeRecruiter(), new App.Events.REStaffedMorning(), diff --git a/src/events/scheduled/murderAttempt.js b/src/events/scheduled/murderAttempt.js index d5bde38bd36a2cbd236555b07201c8881bbc5ade..daed121f4a5bcf3f971c75fc1bd94de2e11646be 100644 --- a/src/events/scheduled/murderAttempt.js +++ b/src/events/scheduled/murderAttempt.js @@ -466,7 +466,7 @@ App.Events.murderAttemptFollowup = function(variation, companyName, type) { cashX(1000000, "event"); V.menials += 500; } else { - r.push("Despite great efforts, the coalition of forces trying to establish a new Free City in the old world finally announces their failure. May the reason be that the old world military still has enough power to stop the establishment of a colony or simple mismanagement by the powers at hand is a topic for debate, but the fact remains that months were wasted on a fruitless war. Luckily you didn't invest too much, so the cost for failure is a meager ${cashFormatColor(40000, true)} and some <span class='reputation dec'>reputation.</span>"); + r.push(`The coalition of forces you'd joined to establish a new Free City in the old world admitted defeat this week. The target nation-state's military proved to be less decrepit than your allies assumed, and they've fended off the Free Cities' mercenary forces for now. Of course your allies all blame each other for mismanaging the coalition's resources, a debate you have no interest and no stakes in. In the end, this war proved to be a waste of your time. Luckily you didn't invest too much in the war effort, so it only cost you ${cashFormatColor(40000, true)} and some <span class='reputation dec'>reputation.</span>`); cashX(-40000, "event"); repX(forceNeg(V.rep / 8), "event"); } diff --git a/src/js/rulesAutosurgery.js b/src/js/rulesAutosurgery.js index ff72d90892338c0b7424d850e542531da9590200..b5d6511683f242d848ca071f11bc107846da0000 100644 --- a/src/js/rulesAutosurgery.js +++ b/src/js/rulesAutosurgery.js @@ -7,12 +7,13 @@ globalThis.rulesAutosurgery = (function() { /** * @param {App.Entity.SlaveState} slave + * @param {FC.RA.RuleSurgerySettings} [overrideRules] * @returns {string} */ - function rulesAutoSurgery(slave) { + function rulesAutoSurgery(slave, overrideRules) { r = ""; const surgeries = []; - const thisSurgery = ProcessHGTastes(slave); + const thisSurgery = overrideRules || surgeryFromRules(slave); if (slave.health.health >= -20) { CommitSurgery(slave, thisSurgery, surgeries); } @@ -23,11 +24,10 @@ globalThis.rulesAutosurgery = (function() { } /** - * @param {App.Entity.SlaveState} slave * @param {FC.RA.RuleSetters[]} ruleset * @returns {FC.RA.RuleSurgerySettings} */ - function autoSurgerySelector(slave, ruleset) { + function autoSurgerySelector(ruleset) { const surgery = App.RA.newRule.surgery(); ruleset.forEach(rule => { Object.keys(rule.surgery) @@ -43,93 +43,31 @@ globalThis.rulesAutosurgery = (function() { * @param {App.Entity.SlaveState} slave * @returns {FC.RA.RuleSurgerySettings} */ - function ProcessHGTastes(slave) { - let thisSurgery = App.RA.newRule.surgery(); - switch (V.HGTastes) { - case 1: - thisSurgery.lactation = 0; - thisSurgery.cosmetic = 1; - thisSurgery.faceShape = "cute"; - thisSurgery.lips = App.RA.makeTarget('==', 10); - thisSurgery.hips = 0; - thisSurgery.hipsImplant = 0; - thisSurgery.butt = App.RA.makeTarget('==', 0); - thisSurgery.accent = 0; - thisSurgery.shoulders = 0; - thisSurgery.shouldersImplant = 0; - thisSurgery.boobs = App.RA.makeTarget('==', 0); - thisSurgery.holes = 0; - break; - case 2: - thisSurgery.lactation = 0; - thisSurgery.cosmetic = 1; - thisSurgery.faceShape = "cute"; - thisSurgery.lips = App.RA.makeTarget('==', 60); - thisSurgery.hips = 0; - thisSurgery.hipsImplant = 0; - thisSurgery.butt = App.RA.makeTarget('==', 4); - thisSurgery.accent = 0; - thisSurgery.shoulders = 0; - thisSurgery.shouldersImplant = 0; - thisSurgery.boobs = App.RA.makeTarget('==', 1200); - thisSurgery.holes = 0; - break; - case 3: - thisSurgery.lactation = 0; - thisSurgery.cosmetic = 1; - thisSurgery.faceShape = "cute"; - thisSurgery.lips = App.RA.makeTarget('==', 95); - thisSurgery.hips = 0; - thisSurgery.hipsImplant = 0; - thisSurgery.butt = App.RA.makeTarget('==', 8); - thisSurgery.accent = 0; - thisSurgery.shoulders = 0; - thisSurgery.shouldersImplant = 0; - thisSurgery.boobs = App.RA.makeTarget('==', 10000); - thisSurgery.holes = 2; - break; - case 4: - thisSurgery.lactation = 1; - thisSurgery.cosmetic = 1; - thisSurgery.faceShape = "cute"; - thisSurgery.lips = App.RA.makeTarget('==', 10); - thisSurgery.hips = 3; - thisSurgery.hipsImplant = 0; - thisSurgery.butt = App.RA.makeTarget('==', 0); - thisSurgery.accent = 0; - thisSurgery.shoulders = 0; - thisSurgery.shouldersImplant = 0; - thisSurgery.boobs = App.RA.makeTarget('==', 0); - thisSurgery.holes = 0; - break; - default: - thisSurgery = autoSurgerySelector( - slave, - V.defaultRules - .filter(x => ruleApplied(slave, x) && x.set.autoSurgery === 1) - .map(x => x.set)); - if ((thisSurgery.hips !== null) && (thisSurgery.butt !== null)) { - if (slave.hips < -1) { - if (App.RA.shallGrow(2, thisSurgery.butt)) { - thisSurgery.butt = App.RA.makeTarget('==', 2); - } - } else if (slave.hips < 0) { - if (App.RA.shallGrow(4, thisSurgery.butt)) { - thisSurgery.butt = App.RA.makeTarget('==', 4); - } - } else if (slave.hips > 0) { - if (App.RA.shallGrow(8, thisSurgery.butt)) { - thisSurgery.butt = App.RA.makeTarget('==', 8); - } - } else if (slave.hips > 1) { - // true - } else { - if (App.RA.shallGrow(6, thisSurgery.butt)) { - thisSurgery.butt = App.RA.makeTarget('==', 6); - } - } + function surgeryFromRules(slave) { + let thisSurgery = autoSurgerySelector( + V.defaultRules + .filter(x => ruleApplied(slave, x) && x.set.autoSurgery === 1) + .map(x => x.set)); + if ((thisSurgery.hips !== null) && (thisSurgery.butt !== null)) { + if (slave.hips < -1) { + if (App.RA.shallGrow(2, thisSurgery.butt)) { + thisSurgery.butt = App.RA.makeTarget('==', 2); + } + } else if (slave.hips < 0) { + if (App.RA.shallGrow(4, thisSurgery.butt)) { + thisSurgery.butt = App.RA.makeTarget('==', 4); + } + } else if (slave.hips > 0) { + if (App.RA.shallGrow(8, thisSurgery.butt)) { + thisSurgery.butt = App.RA.makeTarget('==', 8); } - break; + } else if (slave.hips > 1) { + // true + } else { + if (App.RA.shallGrow(6, thisSurgery.butt)) { + thisSurgery.butt = App.RA.makeTarget('==', 6); + } + } } return thisSurgery; } diff --git a/src/uncategorized/peConcubineInterview.tw b/src/uncategorized/peConcubineInterview.tw deleted file mode 100644 index c83d8c7fb19d65b341d274c6ce0e7f32be4c0881..0000000000000000000000000000000000000000 --- a/src/uncategorized/peConcubineInterview.tw +++ /dev/null @@ -1,460 +0,0 @@ -:: PE concubine interview [nobr] - -<<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "RIE Eligibility Check", $activeSlave = _S.Concubine, _oldRep = $rep>> -<<run Enunciate($activeSlave)>> -<<run App.Utils.setLocalPronouns($activeSlave)>> -<<set _belly = bellyAdjective($activeSlave)>> -<<if SlaveStatsChecker.checkForLisp($activeSlave)>> - <<set _lisps = 1>> -<<else>> - <<set _lisps = 0>> -<</if>> -<<setPlayerPronouns>> -<<setSpokenPlayerPronouns $activeSlave>> - -<span id="art-frame"> -/* 000-250-006 */ -<<if $seeImages == 1>> - <<if $imageChoice == 1>> - <div class="imageRef lrgVector"><div class="mask"> </div><<= SlaveArt($activeSlave, 2, 0)>></div> - <<else>> - <div class="imageRef lrgRender"><div class="mask"> </div><<= SlaveArt($activeSlave, 2, 0)>></div> - <</if>> -<</if>> -/* 000-250-006 */ -</span> - -You receive an official communication from a popular talk show e-hosted in one of the old world's still-thriving first world countries. Your fame has become known even in the old world, and they'd like to interview <<= App.UI.slaveDescriptionDialog($activeSlave)>> about you. They frankly warn you that you'll have no right to review the interview and no ability to control what $he says, and that they'll be asking about anything the interviewer thinks is juicy. This could be great for your reputation, but it could be hazardous, too. - -<br><br> - -<span id="result"> -<<link "Decline">> - <<replace "#result">> - You decline. The media representative of the show is understanding. "I'll be sure to contact you if we ever have another opening," she says. "You're pretty interesting, you know." - <</replace>> -<</link>> -<br><<link "Accept">> - <<replace "#result">> - - The show is broadcast live; you head out onto a balcony to watch it on a big screen. It's been impossible to hide, and many of your citizens have taken a proprietary attitude towards your fame: they see your success as their success, too, and want to see $activeSlave.slaveName do well. The show introduction plays, introducing the host, a swishy, rail-thin gentleman with impeccable sartorial style and a close-cropped salt-and-pepper beard. He reviews who you are, giving equal time to your accomplishments and the inevitable criticisms from old world antislavery activists, and then calls $activeSlave.slaveName out. - <br> - $He - <<if $activeSlave.bellyPreg >= 1000000>> - barely waddles out,<<if hasAnyArms($activeSlave)>> arm<<if hasBothArms($activeSlave)>>s<</if>> resting atop $his _belly belly,<</if>> - <<elseif $activeSlave.bellyPreg >= 750000>> - barely waddles out,<<if hasAnyArms($activeSlave)>> arm<<if hasBothArms($activeSlave)>>s<</if>> struggling to lift $his _belly, absolutely child stuffed belly as $he lewdly caresses it,<</if>> - <<elseif $activeSlave.bellyPreg >= 600000>> - waddles out,<<if hasAnyArms($activeSlave)>> arm<<if hasBothArms($activeSlave)>>s<</if>> cradling $his _belly, absolutely child stuffed belly as best $he can as $he lewdly caresses its sides,<</if>> - <<elseif $activeSlave.bellyPreg >= 450000>> - waddles out,<<if hasAnyArms($activeSlave)>> arm<<if hasBothArms($activeSlave)>>s<</if>> cradling $his _belly, absolutely child stuffed belly as $he lewdly sways it side to side,<<else>>lewdly swaying $his absolutely child stuffed belly from side to side<</if>>, - <<elseif $activeSlave.bellyPreg >= 300000>> - strides out,<<if hasAnyArms($activeSlave)>> arm<<if hasBothArms($activeSlave)>>s<</if>> cradling $his _belly, absolutely child stuffed belly as $he lewdly sways it side to side<<else>>lewdly swaying $his absolutely child stuffed belly from side to side<</if>>, - <<elseif $activeSlave.bellyPreg >= 150000>> - strides out with an exaggerated gait, purposefully swaying $his _belly, child stuffed belly from side to side, - <<elseif $activeSlave.belly >= 150000>> - strides out, $his _belly belly swaying side to side lewdly, - <<elseif $activeSlave.belly >= 5000>> - strides out, sensually swaying $his round belly side to side, - <<else>> - strides out - <</if>> - <<if $activeSlave.clothes == "no clothing">> - in magnificent nudity. It's a shock to old world values, no doubt, but the titillation should counterbalance that. - <<else>> - resplendent in $activeSlave.clothes. - <</if>> - <<if $activeSlave.skill.entertainment >= 60>> - $He's @@.green;graceful and sensual,@@ and entirely at home. - <<run repX(500, "concubine", $activeSlave)>> - <<elseif $activeSlave.skill.entertainment <= 30>> - $He's @@.red;clumsy and nervous,@@ but does $his best to rally. - <<run repX(-100, "concubine", $activeSlave)>> - <<else>> - $He manages $his entrance reasonably well, and conceals any nervousness. - <</if>> - <<if $activeSlave.geneticQuirks.neoteny == 2 && $activeSlave.visualAge < $minimumSlaveAge>> - "My honey, aren't you a bit young for this sort of thing?<<if $minimumSlaveAge < 16>> I know things are a little different where you're from, but still, you're just a child!<</if>>" - <<if $activeSlave.intelligence+$activeSlave.intelligenceImplant > 50>> - $He @@.green;effortlessly diffuses the question.@@ "I'm really <<= $activeSlave.actualAge>>. Mo<<s>>t people would never con<<s>>ider a $girl with a genetic condi<<t>>ion like mine, but my dear <<Master>> wa<<s>> able to <<s>>ee pa<<s>>t it." - <<run repX(500, "concubine", $activeSlave)>> - <<elseif $activeSlave.intelligence+$activeSlave.intelligenceImplant > 15>> - $He manages to sway the topic away from $his apparent underageness. "I'm really <<= $activeSlave.actualAge>>, believe it or not. Wouldn't you like to know my <<s>>ecret?" - <<else>> - $He manages to completely miss the insinuation and @@.red;make things worse than they really are.@@ "<<Master>> love<<s>> the way I look, that'<<s>> why I'm <<hisP>> favorite after all, but I'm <<s>>till <<= $activeSlave.actualAge>>-year<<s>> old." - <<run repX(-100, "concubine", $activeSlave)>> - <</if>> - <<elseif $activeSlave.face > 95>> - "Oh my God," exclaims the host reverently. "Honey, @@.green;you are gorgeous.@@" He turns to the camera. "Isn't $he just gorgeous?" - <<run repX(500, "concubine", $activeSlave)>> - <<elseif $activeSlave.face <= 10>> - There is a distinct lack of response from the host; perhaps he was @@.red;expecting $him to be prettier.@@ - <<run repX(-100, "concubine", $activeSlave)>> - <<else>> - The host gives $him a perfunctory compliment on $his beauty. - <</if>> - They seat themselves in comfortable leather chairs and the interview begins in earnest. - <br> - The host asks $him some soft, nonjudgmental questions about $his life and how $he became your slave. Then he hits $him: "So, $activeSlave.slaveName. Tell us about <<= PlayerName()>>." - <<if $activeSlave.devotion > 95>> - @@.green;Without a moment's hesitation,@@ $he <<if _lisps>>lisps<<else>>proclaims<</if>>, "I love _himP. <<HeP>>'<<s>> so <<if $PC.title != 0>>hand<<s>>ome<<else>>pretty<</if>>, and," $he manages to blush prettily, "<<heP>>'<<s>> <<s>>o good to me." - <<run repX(500, "concubine", $activeSlave)>> - <<elseif $activeSlave.devotion <= 60>> - $He struggles for an instant and then says @@.red;unconvincingly@@ that $he loves you. - <<run repX(-100, "concubine", $activeSlave)>> - <<else>> - $He recovers quickly and responds that $he loves you. - <</if>> - <br> - The host glances at the camera. "Wow." He presses on. "But you're _hisP slave, $activeSlave.slaveName. _HeP owns you. Isn't that hard for you?" - <br> - $He shakes $his head. - <<if $activeSlave.trust > 95>> - @@.green;$He responds confidently,@@ "My life with _himP i<<s>> very different from anything you might find here in the old world. But I'm happy with _himP, and there'<<s>> no one I'd rather be with, a<<s>> a <<s>>lave or not." - <<run repX(500, "concubine", $activeSlave)>> - <<elseif $activeSlave.trust < 60>> - $He explains that it isn't hard to trust someone like you, but this @@.red;falls a little flat.@@ - <<run repX(-100, "concubine", $activeSlave)>> - <<else>> - $He explains earnestly that it isn't hard to trust someone like you, and explains some of the blander details about life as your slave. - <</if>> - <<if $activeSlave.belly >= 1500>> - The host places a hand on $his belly, - <<if $activeSlave.bellyPreg >= 450000>> - gasping at the tautness and the feeling of the child<<if $activeSlave.pregType > 1>>ren<</if>> distending the skin beneath his hand. - <<elseif $activeSlave.bellyPreg >= 100000>> - gasping at the flurry of kicks in response. - <<elseif $activeSlave.belly >= 15000>> - giving it a good groping. - <<elseif $activeSlave.belly >= 5000>> - giving it a good pat. - <<else>> - giving it a good feel. - <</if>> - "Now I'm sure our viewers are wondering," he says, patting the firm dome. "Is it <<= PlayerName()>>'s?" - <<if $activeSlave.pregSource == -1>> - <<if $activeSlave.bellyPreg >= 450000>> - "Of cour<<s>>e they are!" $he proclaims proudly as $he <<if hasAnyArms($activeSlave)>>runs $his hand<<if hasBothArms($activeSlave)>>s<</if>> across<<else>>stretches out to show off<</if>> $his quivering mass. "All $activeSlave.pregType of them!" - <<elseif $activeSlave.bellyPreg >= 100000>> - "Of cour<<s>>e they are!" $he proclaims proudly as $he <<if hasAnyArms($activeSlave)>>runs $his hand<<if hasBothArms($activeSlave)>>s<</if>> across<<else>>stretches out to show off<</if>> $his belly. "All $activeSlave.pregType of them!" - <<elseif $activeSlave.bellyImplant >= 1500>> - "It'<<s>> fake. Pretty hard to tell though, i<<s>>n't it?" - <<elseif $activeSlave.bellyPreg >= 1500>> - "Of cour<<s>>e - <<if $activeSlave.pregType > 1>> - they are!" - <<else>> - it i<<s>>!" - <</if>> - <<elseif $activeSlave.bellyFluid > 100>> - <<if _lisps>> - <<set _fluid = lispReplace($activeSlave.inflationType)>> - <<else>> - <<set _fluid = $activeSlave.inflationType>> - <</if>> - "Nah. It'<<s>> all _fluid in<<s>>ide me." - <<elseif $activeSlave.bellyImplant > -1>> - "It'<<s>> fake. Pretty hard to tell though, i<<s>>n't it?" - <<else>> - "Of cour<<s>>e - <<if $activeSlave.pregType > 1>> - they are!" - <<else>> - it i<<s>>!" - <</if>> - <</if>> - <<else>> - "That'<<s>> for me and my <<Master>> only," $he teases, sticking out $his tongue. - <</if>> - <</if>> - <<if $activeSlave.broodmother == 2 && $activeSlave.preg > 37>> - $He grunts and struggles to <<if hasBothLegs($activeSlave)>>spread $his legs<<else>>get into position<</if>>. "I'm <<s>>orry, another one i<<s>> coming out right now..." $he <<say>>s, turning red. The host, at a loss for words, can only watch as - <<if $activeSlave.clothes == "no clothing" || $activeSlave.clothes == "body oil">> - a child is born into the world, live on screen. - <<else>> - a child is born into $his - <<switch $activeSlave.clothes>> - <<case "a toga">> - toga. - <<case "a huipil">> - huipil. - <<case "a slutty qipao">> - slutty qipao. - <<case "a penitent nuns habit">> - habit. - <<case "a slave gown" "a ball gown">> - gown. - <<case "a comfortable bodysuit">> - bodysuit. - <<case "a leotard">> - leotard. - <<case "a bunny outfit">> - bunny outfit. - <<case "a nice nurse outfit">> - nurse outfit. - <<case "a slutty nurse outfit">> - slutty nurse outfit. - <<case "a schoolgirl outfit">> - school clothes. - <<case "a hijab and abaya" "a niqab and abaya">> - abaya. - <<case "a klan robe">> - robe. - <<case "a hijab and blouse">> - skirt. - <<case "a burqa">> - burqa. - <<case "a burkini">> - burkini. - <<case "a kimono">> - kimono. - <<case "a hanbok">> - hanbok. - <<case "a nice maid outfit">> - maid outfit. - <<case "a slutty maid outfit">> - skimpy maid outfit. - <<case "a gothic lolita dress" "a halter top dress" "a long qipao" "a maternity dress" "a mini dress" "a Santa dress" "a biyelgee costume">> - dress. - <<case "a latex catsuit">> - latex catsuit. - <<case "a military uniform">> - uniform. - <<case "a schutzstaffel uniform">> - uniform. - <<case "a slutty schutzstaffel uniform">> - slutty uniform. - <<case "a red army uniform">> - uniform. - <<case "spats and a tank top">> - spats. - <<case "a monokini">> - monokini. - <<case "a cybersuit">> - cybersuit. - <<case "a tight Imperial bodysuit">> - bodysuit. - <<case "battlearmor">> - armor. - <<case "Imperial Plate">> - ultra-heavy armor. - <<case "a skirt">> - dress. - <<case "a mounty outfit" "a police uniform">> - uniform. - <<case "lederhosen">> - shorts. - <<case "a courtesan dress">> - layered skirt. - <<case "a bimbo outfit">> - thong. - <<default>> - $activeSlave.clothes. - <</switch>> - <</if>> - <</if>> - <br> - The interview winds on, gradually descending into prurient territory. $activeSlave.slaveName answers readily, giving everyone watching quite a window into an oversexed slave society. - <<if $activeSlave.intelligence+$activeSlave.intelligenceImplant > 15>> - $He's clever enough to @@.green;shock and titillate@@ at the same time; in response to a probing question about whether $he has any plans for the rest of the night, $he <<say>>s, "Of cour<<s>>e my <<Master>> make<<s>> the plan<<s>>. But I hope I can get back to the arcology early." $He shifts suggestively in $his chair. "I'm looking forward to getting fucked tonight." - <<run repX(500, "concubine", $activeSlave)>> - <<else>> - $He's rather blunt in $his responses, answering with a little too much detail; not that the audience minds. - <</if>> - The host, taken off guard, laughs in surprise and says he envies you that. He asks a follow up question that hints at $his sexual preferences without coming straight out and asking how $he likes it. - <<if $activeSlave.intelligence + $activeSlave.intelligenceImplant + $activeSlave.skill.entertainment >= 130 && $activeSlave.tankBaby == 0>> - $He has enough knowledge of the old world to be able to answer without going too far, and @@.green;subtly alludes@@ to how much $he enjoys - <<if ($activeSlave.fetish == "submissive")>> - submitting to you in bed. - <<elseif ($activeSlave.fetish == "cumslut")>> - <<if $PC.dick == 0>> - eating you out. - <<else>> - sucking you off. - <</if>> - <<elseif ($activeSlave.fetish == "humiliation")>> - it when you show $him off in public. - <<elseif ($activeSlave.fetish == "buttslut")>> - anal sex. - <<elseif ($activeSlave.fetish == "boobs")>> - anything that involves $his breasts. - <<elseif ($activeSlave.fetish == "sadist")>> - it whenever you share a reluctant slave with $him. - <<elseif ($activeSlave.fetish == "masochist")>> - a good spanking. - <<elseif ($activeSlave.fetish == "dom")>> - sharing a submissive slave with you. - <<elseif ($activeSlave.fetish == "pregnancy")>> - <<if $activeSlave.pregKnown == 1>> - sex while pregnant. - <<elseif $activeSlave.vagina > 0>> - bareback. - <<else>> - sharing a pregnant slave with you. - <</if>> - <<elseif ($activeSlave.energy > 95)>> - sex, regardless of what kind it is. - <<else>> - sex in the missionary position. - <</if>> - <<run repX(500, "concubine", $activeSlave)>> - <<else>> - $His answer betrays how <<if $activeSlave.tankBaby > 0>>little $he knows<<else>>much $he's forgotten<</if>> about the old world: $he mildly shocks the studio audience by describing - <<if ($activeSlave.fetish == "submissive")>> - how good it feels when you hold $him down and fuck $him - <<elseif ($activeSlave.fetish == "cumslut")>> - <<if $PC.dick == 0>> - how much fun sucking your cock is - <<else>> - how much fun polishing your pearl is - <</if>> - <<elseif ($activeSlave.fetish == "humiliation")>> - how hot it is to get fucked in public - <<elseif ($activeSlave.fetish == "buttslut")>> - how much $he loves the feeling of you stretching $his anal ring - <<elseif ($activeSlave.fetish == "boobs")>> - how much $he loves having $his nipples tugged - <<elseif ($activeSlave.fetish == "sadist")>> - how much $he loves molesting other slaves with you - <<elseif ($activeSlave.fetish == "masochist")>> - how good it feels to be forced - <<elseif ($activeSlave.fetish == "dom")>> - how much $he loves holding other slaves down for you - <<elseif ($activeSlave.fetish == "pregnancy")>> - <<if $activeSlave.pregKnown == 1 || $activeSlave.counter.births > 0>> - how good sex feels while pregnant - <<elseif $activeSlave.vagina > 0>> - how good cum feels inside $him - <<else>> - how much fun it is to fuck pregnant slaves - <</if>> - <<elseif ($activeSlave.energy > 95)>> - the average number of sexual encounters $he has in a week - <<else>> - $his sex life with you - <</if>> - in a matter-of-fact tone of voice. - <</if>> - <<if $activeSlave.intelligence+$activeSlave.intelligenceImplant > 50>> - <br> - Only because you know $him so well are you able to perceive the instant of cold calculation before $he makes a @@.green;perfect tactical decision@@ and turns directly to the camera. "Whatever you want," $he <<say>>s confidently, "You can find it in a Free <<C>>itie<<s>> arcology like my <<Master>>'<<s>>. Where I live, there'<<s>> - <<if $arcologies[0].FSRestart > 0>> - the mo<<s>>t intere<<s>>ting people, - <</if>> - <<if $arcologies[0].FSPaternalist > 0>> - wonderful opportunitie<<s>> for everyone, - <</if>> - <<if $arcologies[0].FSAssetExpansionist > 0>> - boob<<s>> the <<s>>i<<z>>e of beach ball<<s>>, - <</if>> - <<if $arcologies[0].FSRepopulationFocus > 0>> - lot<<s>> of bellie<<s>> of all <<s>>i<<z>>e<<s>>, - <</if>> - <<if $arcologies[0].FSBodyPurist == "unset">> - gorgeou<<s>> tattoo<<s>> and pier<<c>>ing<<s>>, - <<elseif $arcologies[0].FSTransformationFetishist > 0>> - new a<<ss>>et<<s>> every day, - <</if>> - <<if $arcologies[0].FSPastoralist > 0>> - milk <<s>>traight from the nipple, - <</if>> - <<if $arcologies[0].FSPhysicalIdealist > 0>> - the mo<<s>>t incredible oiled-up mu<<s>>cle<<s>>, - <<elseif $arcologies[0].FSHedonisticDecadence > 0>> - the <<s>>ofte<<s>>t, mo<<s>>t laid-back girl<<s>>, - <</if>> - <<if $arcologies[0].FSRomanRevivalist > 0>> - Rome come again, - <<elseif $arcologies[0].FSNeoImperialist > 0>> - a New Imperium worthy of the ages, - <<elseif $arcologies[0].FSAztecRevivalist > 0>> - Blood empire reborn, - <<elseif $arcologies[0].FSEgyptianRevivalist > 0>> - the land of the Pharaoh<<s>> reborn, - <</if>> - <<if $arcologies[0].FSGenderRadicalist > 0>> - more a<<ss>> than you can po<<ss>>ibly fuck, - <<elseif $arcologies[0].FSGenderFundamentalist > 0>> - so much pu<<ss>>y it'<<s>> unbelievable, - <</if>> - <<if $arcologies[0].FSIntellectualDependency > 0>> - <<s>>lave<<s>> eager to get in your pant<<s>>, - <<elseif $arcologies[0].FSSlaveProfessionalism > 0>> - <<s>>lave<<s>> you can have a conver<<s>>ation with, - <</if>> - <<if $arcologies[0].FSPetiteAdmiration > 0>> - where even the <<sh>>orte<<s>>t can <<s>>tand tall, - <<elseif $arcologies[0].FSStatuesqueGlorification > 0>> - plenty of mouth<<s>> at crotch height, - <</if>> - <<if $arcologies[0].FSChattelReligionist > 0>> - a fulfilling <<s>>e<<x>>ual and <<s>>piritual life, - <</if>> - <<if $arcologies[0].FSDegradationist > 0>> - bitche<<s>> you can ju<<s>>t hold down and u<<s>>e, - <</if>> - <<if $arcologies[0].FSSupremacist > 0>> - <<if _lisps>> - <<set _race = lispReplace($arcologies[0].FSSupremacistRace)>> - <<else>> - <<set _race = $arcologies[0].FSSupremacistRace>> - <</if>> - _race power, - <</if>> - <<if $arcologies[0].FSSubjugationist > 0>> - <<if _lisps>> - <<set _race = lispReplace($arcologies[0].FSSubjugationistRace)>> - <<else>> - <<set _race = $arcologies[0].FSSubjugationistRace>> - <</if>> - _race girl<<s>> to cater to your every whim, - <</if>> - girl<<s>> in pretty dre<<ss>>e<<s>> and girl<<s>> in <<s>>tring bikini<<s>> and girl<<s>> who haven't worn clothe<<s>> in year<<s>>, - <<if $seeDicks != 0>> - girl<<s>> with huge dick<<s>> you can a<<ss>>fuck until they cum bucket<<s>>, girl<<s>> with <<s>>oft dick<<s>> and no ball<<s>>, - <</if>> - <<if $seeDicks != 0 && $seeDicks != 100>> - girl<<s>> with dick<<s>> the <<s>>i<<z>>e of clit<<s>> and girl<<s>> with clit<<s>> the <<s>>i<<z>>e of dick<<s>>, - <</if>> - <<if $seeDicks != 100>> - young girl<<s>> on their fir<<s>>t pregnan<<c>>y, MILF<<s>> on their tenth, - <</if>> - lip<<s>>, tongue<<s>>, - <<if $arcologies[0].FSEgyptianRevivalistIncestPolicy == 1>> - in<<c>>e<<s>>t, - <</if>> - <<if $arcologies[0].FSSlimnessEnthusiast == "unset">> - huge breast<<s>> and plu<<sh>> a<<ss>>e<<s>>, - <<elseif $arcologies[0].FSAssetExpansionist == "unset">> - pert tit<<s>> and cute butt<<s>>, - <</if>> - and more. I wouldn't trade it for anything." - <<run repX(1500, "concubine", $activeSlave)>> - The host politely regains control of his show, but there's a cautious respect in the rest of his questions. - <</if>> - <<if $activeSlave.intelligence+$activeSlave.intelligenceImplant > 50 && $PC.title == 0>> - <br> - $activeSlave.slaveName even manages to @@.green;respond well@@ to a probing question about your gender. - $He <<if _lisps>>lisps<<else>>explains<</if>>, "You have to under<<s>>tand that all that non<<s>>en<<s>>e about men and women mean<<s>> le<<ss>> to u<<s>> in the Free <<C>>itie<<s>>. My <<Master>> i<<s>> a <<s>>u<<cc>>e<<ss>>ful and powerful _womanP. - <<if $PC.dick == 0>> - We ju<<s>>t pay the right amount of attention to the <<s>>u<<cc>>e<<ss>> and the power." $He quirks a corner of $his mouth. "I know //I// do." - <<else>> - $He quirks a corner of $his mouth. "And <<heP>> ha<<s>> a //wonderful// cock." - <</if>> - <<run repX(500, "concubine", $activeSlave)>> - <</if>> - <br> - At the conclusion, the host - <<if $rep - _oldRep > 200>> - seems @@.green;impressed@@ and says sincerely, - <<run repX(500, "concubine", $activeSlave)>> - <<elseif $rep - _oldRep < 0>> - seems @@.red;unimpressed@@ and says mockingly, - <<run repX(-100, "concubine", $activeSlave)>> - <<else>> - says jokingly, - <</if>> - "My dear it's been a pleasure. If all Free Cities <<print $girl>>s are like you I might have to look into immigrating. Ladies and gentlemen, good night!" - <</replace>> -<</link>> -</span> diff --git a/src/uncategorized/penthouseReport.tw b/src/uncategorized/penthouseReport.tw index 7ef58944bdabef7e791efe97e4676214384a1bc5..8119bfbbce3a0627c94ccc60c6b6057dd1b48e86 100644 --- a/src/uncategorized/penthouseReport.tw +++ b/src/uncategorized/penthouseReport.tw @@ -30,7 +30,7 @@ <<= App.SlaveAssignment.choosesOwnJob($slaves[$i])>> $He <</if>> - <<include "SA live with HG">> + <<includeDOM App.SlaveAssignment.liveWithHG($slaves[$i])>> <br><br> <</if>> diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw index a67c0a0ac5caab3898a843819c7bf7687a6312a5..1a682c7d10f77d68ebcf31080eda6aaa1e753d8e 100644 --- a/src/uncategorized/randomNonindividualEvent.tw +++ b/src/uncategorized/randomNonindividualEvent.tw @@ -437,9 +437,6 @@ <<if canSee(_S.Concubine)>> <<set $PESSevent.push("loving concubine")>> <</if>> - <<if canTalk(_S.Concubine) && canHear(_S.Concubine)>> - <<set $events.push("PE concubine interview")>> - <</if>> <</if>> <</if>> diff --git a/src/uncategorized/saLiveWithHG.tw b/src/uncategorized/saLiveWithHG.tw deleted file mode 100644 index 48f53186004fd51e73ca5e795469370a33b2f8c2..0000000000000000000000000000000000000000 --- a/src/uncategorized/saLiveWithHG.tw +++ /dev/null @@ -1,1053 +0,0 @@ -:: SA live with HG [nobr] - -<<set _oralUse = 0, _analUse = 0, _vaginalUse = 0, _mammaryUse = 0, _penetrativeUse = 0>> - -<<if $seeImages && $seeReportImages>> - <div class="imageRef medImg"> - <<= SlaveArt($slaves[$i], 2, 0)>> - </div> -<</if>> - -<<setLocalPronouns $slaves[$i]>> -<<setLocalPronouns _S.HeadGirl 2>> - -/* run this up here so that it affects things better */ -<<if $arcologies[0].FSSlimnessEnthusiast != "unset">> - <<set $HGTastes = 1>> -<<elseif $arcologies[0].FSRepopulationFocus != "unset">> - <<set $HGTastes = 4>> -<<elseif $arcologies[0].FSBodyPurist != "unset">> - <<set $HGTastes = 1>> -<<elseif $arcologies[0].FSDegradationist != "unset">> - <<set $HGTastes = 3>> -<<elseif $arcologies[0].FSAssetExpansionist != "unset">> - <<set $HGTastes = 3>> -<<elseif $arcologies[0].FSTransformationFetishist != "unset">> - <<set $HGTastes = 3>> -<<else>> - <<set $HGTastes = 2>> -<</if>> -<<set _diet = $slaves[$i].diet>> -<<if ($arcologies[0].FSRepopulationFocusPregPolicy == 1 || ($arcologies[0].FSRestart == "unset" && _S.HeadGirl.fetish == "pregnancy")) && canImpreg($slaves[$i], _S.HeadGirl) && ($dietFertility == 1)>> - <<if $slaves[$i].diet != "fertility">> - <<set $slaves[$i].diet = "fertility">> - <</if>> -<<elseif ($slaves[$i].weight < 100 && $arcologies[0].FSHedonisticDecadence >= 20) || ($slaves[$i].weight < -10)>> - <<if $slaves[$i].diet != "fattening">> - <<set $slaves[$i].diet = "fattening">> - <</if>> -<<elseif $slaves[$i].weight > 30 && $arcologies[0].FSHedonisticDecadence == "unset">> - <<if $slaves[$i].diet != "restricted">> - <<set $slaves[$i].diet = "restricted">> - <</if>> -<<elseif (($slaves[$i].muscles <= 95 && (($arcologies[0].FSPhysicalIdealist > 0 && $arcologies[0].FSPhysicalIdealistLaw == 0) || ((_S.HeadGirl.fetish == "submissive" || _S.HeadGirl.fetish == "masochist") && _S.HeadGirl.fetishKnown == 1))) || ($slaves[$i].muscles <= 45 && ($arcologies[0].FSPhysicalIdealist > 0 && $arcologies[0].FSPhysicalIdealistLaw == 1)) || $slaves[$i].muscles <= 5) && !isAmputee($slaves[$i])>> - <<if $slaves[$i].diet != "muscle building">> - <<set $slaves[$i].diet = "muscle building">> - <</if>> -<<elseif $slaves[$i].balls > 0 && _S.HeadGirl.fetish == "cumslut" && _S.HeadGirl.fetishKnown == 1 && $cumProDiet == 1>> - <<if $slaves[$i].diet != "cum production">> - <<set $slaves[$i].diet = "cum production">> - <</if>> -<<else>> - <<if $slaves[$i].diet != "healthy">> - <<set $slaves[$i].diet = "healthy">> - <</if>> -<</if>> -<<set _hormones = $slaves[$i].hormones>> -<<if $HGSuiteHormones != 0 && $slaves[$i].hormones != 2>> - <<set $slaves[$i].hormones = 2>> -<</if>> -<<if $HGSuiteDrugs != 0>> - <<if ($slaves[$i].health.condition < 60)>> - <<set $slaves[$i].curatives = 2>> - <</if>> - <<if ($slaves[$i].lips <= 20)>> - <<set $slaves[$i].drugs = "lip injections">> - <<elseif $arcologies[0].FSSlaveProfessionalismResearch == 1 && $HGSuiteEquality != 0 && canImproveIntelligence($slaves[$i])>> - <<set $slaves[$i].drugs = "psychostimulants">> - <<elseif (_S.HeadGirl.fetishKnown == 1) && (_S.HeadGirl.fetish == "buttslut") && $arcologies[0].FSAssetExpansionistResearch == 1 && $slaves[$i].butt < 18>> - <<set $slaves[$i].drugs = "hyper butt injections">> - <<elseif (_S.HeadGirl.fetishKnown == 1) && (_S.HeadGirl.fetish == "buttslut") && $arcologies[0].FSAssetExpansionistResearch == 1 && $slaves[$i].butt < 8>> - <<set $slaves[$i].drugs = "butt injections">> - <<elseif (_S.HeadGirl.fetishKnown == 1) && (_S.HeadGirl.fetish == "cumslut") && $arcologies[0].FSAssetExpansionistResearch == 1 && $slaves[$i].balls < 100 && $slaves[$i].balls > 0 && $slaves[$i].dick > 0>> - <<set $slaves[$i].drugs = "hyper testicle enhancement">> - <<elseif (_S.HeadGirl.fetishKnown == 1) && (_S.HeadGirl.fetish == "cumslut") && $slaves[$i].balls < 10 && $slaves[$i].balls > 0 && $slaves[$i].dick > 0>> - <<set $slaves[$i].drugs = "testicle enhancement">> - <<elseif (_S.HeadGirl.fetishKnown == 1) && (_S.HeadGirl.fetish == "masochist" || _S.HeadGirl.fetish == "submissive") && canImproveHeight($slaves[$i])>> - <<set $slaves[$i].drugs = "growth stimulants">> - <<elseif (_S.HeadGirl.fetishKnown == 1) && (_S.HeadGirl.fetish == "boobs") && ($slaves[$i].boobs < 8000)>> - <<if $arcologies[0].FSAssetExpansionistResearch == 1>> - <<set $slaves[$i].drugs = "hyper breast injections">> - <<else>> - <<set $slaves[$i].drugs = "breast injections">> - <</if>> - <<elseif canImpreg($slaves[$i], _S.HeadGirl) && $arcologies[0].FSRestart == "unset" && ($HGTastes == 4 || _S.HeadGirl.fetish == "pregnancy" || $arcologies[0].FSRepopulationFocusPregPolicy == 1)>> - <<set $slaves[$i].drugs = "fertility drugs">> - <<elseif $HGTastes > 1>> - <<if ($slaves[$i].lips <= 70)>> - <<set $slaves[$i].drugs = "lip injections">> - <<elseif ($slaves[$i].boobs > (125*Math.pow($slaves[$i].butt, 2)))>> - <<set $slaves[$i].drugs = "butt injections">> - <<else>> - <<set $slaves[$i].drugs = "breast injections">> - <</if>> - <<else>> - <<set $slaves[$i].drugs = "no drugs">> - <</if>> - <<if ($slaves[$i].health.condition < 100)>> - <<set $slaves[$i].curatives = 2>> - <</if>> -<</if>> -<<if $slaves[$i].rules.living != "luxurious">> - <<set $slaves[$i].rules.living = "luxurious">> -<</if>> - -<<if $slaves[$i].devotion > 20>> - <<if App.EndWeek.saVars.HGSlaveSuccess>> - looks after your Head Girl <<= SlaveFullName(_S.HeadGirl)>> domestically and sexually, freeing _him2 to devote more of _his2 time to looking after your other slaves. - <<else>> - does $his best to look after your Head Girl <<= SlaveFullName(_S.HeadGirl)>> domestically and sexually, but doesn't free up much of _his2 time this week. - <</if>> -<<elseif $slaves[$i].trust < -20>> - <<if App.EndWeek.saVars.HGSlaveSuccess>> - obeys Head Girl <<= SlaveFullName(_S.HeadGirl)>> domestically and sexually, freeing _him2 to devote more of _his2 time to looking after your other slaves. - <<else>> - tries to look after your Head Girl <<= SlaveFullName(_S.HeadGirl)>> domestically and sexually, but doesn't free up much of _his2 time this week. - <</if>> -<<else>> - <<if App.EndWeek.saVars.HGSlaveSuccess>> - resists Head Girl <<= SlaveFullName(_S.HeadGirl)>>'s domestic and sexual use, but still frees _him2 to devote more of _his2 time to looking after your other slaves. - <<else>> - resists Head Girl <<= SlaveFullName(_S.HeadGirl)>>'s domestic and sexual use, and doesn't free up much of _his2 time this week. - <</if>> -<</if>> - -<<if (_S.HeadGirl.fetish == "sadist") && (_S.HeadGirl.fetishStrength > 60) && (_S.HeadGirl.fetishKnown == 1)>> - Since _S.HeadGirl.slaveName is a sadist, poor $slaves[$i].slaveName lives a life of fear and pain. - <<if ($slaves[$i].energy > 95)>> - Though it's hard, $he manages to find @@.hotpink;sexual satisfaction@@ being a pain slave. - <<set $slaves[$i].devotion += 4>> - <<set $slaves[$i].need = 0>> - <<elseif ($slaves[$i].fetish == "masochist")>> - <<if $slaves[$i].fetishKnown == 1>> - <<if ($slaves[$i].fetishStrength > 95)>> - $He finds deep @@.hotpink;sexual satisfaction@@ being a pain slave. - <<set $slaves[$i].devotion += 4>> - <<else>> - This forces $him to find solace in @@.lightcoral;deeper masochism.@@ - <<set $slaves[$i].fetishStrength += 4>> - <</if>> - <<else>> - Oddly enough, $he seems to find it enjoyable; @@.lightcoral;$he's a natural masochist.@@ - <<set $slaves[$i].fetishKnown = 1>> - <</if>> - <<set $slaves[$i].need = 0>> - <<elseif ($slaves[$i].devotion < -20)>> - This rapidly fills $him with @@.mediumorchid;hatred@@ and @@.mediumorchid;fear.@@ - <<set $slaves[$i].devotion -= 10, $slaves[$i].trust -= 10>> - <<elseif ($slaves[$i].devotion > 20)>> - This fills $him with @@.mediumorchid;bitterness@@ and @@.mediumorchid;fear.@@ - <<set $slaves[$i].devotion -= 5, $slaves[$i].trust -= 5>> - <</if>> -<<elseif ($slaves[$i].devotion < -20)>> - <<if ($slaves[$i].trust >= -20)>> - Since $he is not yet obedient, _S.HeadGirl.slaveName @@.gold;punishes@@ $him constantly, training $him to be a decent assistant or suffer pain. - <<set $slaves[$i].trust -= 5>> - <<else>> - Since $he isn't suitably broken into slavery yet, _S.HeadGirl.slaveName trains $him to be @@.hotpink;obedient@@ or suffer pain. - <<set $slaves[$i].devotion += 5>> - <</if>> -<<elseif ($slaves[$i].devotion <= 20)>> - Since $he is not yet well trained, _S.HeadGirl.slaveName instructs $him, @@.hotpink;training@@ $him to be a proper assistant. - <<set $slaves[$i].devotion += 4>> -<<elseif ($slaves[$i].devotion <= 50)>> - Since $he is not yet a devoted slave, _S.HeadGirl.slaveName works with $him, @@.hotpink;training@@ $him to be a good assistant. - <<set $slaves[$i].devotion += 2>> -<<else>> - Since $he is a devoted assistant, _S.HeadGirl.slaveName @@.hotpink;praises@@ and encourages $him. - <<set $slaves[$i].devotion += 1>> -<</if>> - -<<if (_S.HeadGirl.rivalry != 0) && (_S.HeadGirl.rivalryTarget == $slaves[$i].ID)>> - _S.HeadGirl.slaveName @@.lightgreen;resolves the rivalry@@ between _him2 and $slaves[$i].slaveName, mostly by the expedient of punishing $slaves[$i].slaveName savagely whenever $he gives any trouble. - <<set _S.HeadGirl.rivalry = 0, _S.HeadGirl.rivalryTarget = 0, $slaves[$i].rivalry = 0, $slaves[$i].rivalryTarget = 0>> -<<elseif (_S.HeadGirl.relationship == 0)>> - <<if areRelated($slaves[$i], _S.HeadGirl)>> - _S.HeadGirl.slaveName - <<if _S.HeadGirl.devotion > 95>> - is so inured to the perversities of slavery that _he2 @@.hotpink;enjoys@@ the prospect of sexual service from _his2 - <<set _S.HeadGirl.devotion += 1>> - <<elseif _S.HeadGirl.devotion > 60>> - is so devoted to you that _he2 accepts the prospect of sexual service from _his2 - <<else>> - is somewhat @@.mediumorchid;disturbed@@ by the prospect of sexual service from _his2 - <<set _S.HeadGirl.devotion -= 2>> - <</if>> - <<print relativeTerm(_S.HeadGirl, $slaves[$i])>>. - $slaves[$i].slaveName - <<if $slaves[$i].devotion > 95>> - is so inured to the perversities of slavery that $he @@.hotpink;enjoys@@ the prospect of sexually servicing $his - <<set $slaves[$i].devotion += 1>> - <<elseif $slaves[$i].devotion > 60>> - is so devoted to you that $he accepts the prospect of sexually servicing $his - <<elseif $slaves[$i].devotion > 40>> - is somewhat @@.mediumorchid;disturbed@@ by the prospect of sexually servicing $his - <<set $slaves[$i].devotion -= 2>> - <<elseif $slaves[$i].devotion > 20>> - is @@.mediumorchid;disturbed@@ by the prospect of sexually servicing $his - <<set $slaves[$i].devotion -= 4>> - <<elseif $slaves[$i].devotion >= -20>> - is @@.mediumorchid;strongly disturbed@@ by the prospect of sexually servicing $his - <<set $slaves[$i].devotion -= 5>> - <<else>> - is @@.mediumorchid;revolted@@ by the prospect of sexually servicing $his - <<set $slaves[$i].devotion -= 10>> - <</if>> - <<print relativeTerm($slaves[$i], _S.HeadGirl)>>. - <</if>> - <<if ($slaves[$i].relationship == 0) && ($slaves[$i].devotion > 20)>> - $slaves[$i].slaveName sees _S.HeadGirl.slaveName constantly, and does $his best to @@.lightgreen;become _his2 friend.@@ - <<set _S.HeadGirl.relationship = 1, _S.HeadGirl.relationshipTarget = $slaves[$i].ID, $slaves[$i].relationship = 1, $slaves[$i].relationshipTarget = $HeadGirlID>> - <<elseif ($slaves[$i].relationship == -2) && ($slaves[$i].devotion > 20) && ($slaves[$i].devotion > 50)>> - $slaves[$i].slaveName sees _S.HeadGirl.slaveName so much more than $he sees you and begins to warm up to _him2 instead of you, @@.lightgreen;becoming _his2 friend.@@ - <<set _S.HeadGirl.relationship = 1, _S.HeadGirl.relationshipTarget = $slaves[$i].ID, $slaves[$i].relationship = 1, $slaves[$i].relationshipTarget = $HeadGirlID>> - <<elseif ($slaves[$i].relationship != 5) && ($slaves[$i].relationship > 0) && ($slaves[$i].relationshipTarget != $HeadGirlID)>> - <<set _j = $slaves.findIndex(function(s) { return s.ID == $slaves[$i].relationshipTarget; })>> - $slaves[$i].slaveName, as _S.HeadGirl.slaveName's bitch, knows $slaves[_j].slaveName cannot compete with the Head Girl, and so their relationship fades. - <<set $slaves[$i].relationship = 0, $slaves[$i].relationshipTarget = 0, $slaves[_j].relationship = 0, $slaves[_j].relationshipTarget = 0>> - <</if>> -<<else>> - <<if (_S.HeadGirl.relationshipTarget == $slaves[$i].ID)>> - <<set $slaves[$i].trust += 1, _S.HeadGirl.trust += 1>> - <<if $slaves[$i].relationship <= 2>> - Since _S.HeadGirl.slaveName and $slaves[$i].slaveName are already friends, they're @@.mediumaquamarine;thankful@@ to you for allowing it. After a few nights of offering each other sexual comfort, they consider themselves @@.lightgreen;friends with benefits.@@ - <<set _S.HeadGirl.relationship = 3, _S.HeadGirl.relationshipTarget = $slaves[$i].ID>> - <<set $slaves[$i].relationship = 3, $slaves[$i].relationshipTarget = $HeadGirlID>> - <<elseif $slaves[$i].relationship <= 3>> - Since _S.HeadGirl.slaveName and $slaves[$i].slaveName are already lovers, they both @@.hotpink;enjoy@@ living together and are @@.mediumaquamarine;thankful@@ to you for allowing it. After living together for a few days, they draw closer emotionally, too, and consider themselves @@.lightgreen;lovers.@@ - <<set _S.HeadGirl.relationship = 4, _S.HeadGirl.relationshipTarget = $slaves[$i].ID>> - <<set $slaves[$i].relationship = 4, $slaves[$i].relationshipTarget = $HeadGirlID>> - <<elseif $slaves[$i].relationship <= 4>> - <<if (_S.HeadGirl.fetishKnown == 1) && (_S.HeadGirl.fetishStrength <= 60) && (_S.HeadGirl.fetish == "sadist") && ($slaves[$i].fetish != "masochist")>> - Since their relationship is very abusive, only _S.HeadGirl.slaveName @@.hotpink;enjoys@@ living together with $slaves[$i].slaveName. - <<set $slaves[$i].devotion -= 5, $slaves[$i].trust -= 5>> - <<else>> - Since _S.HeadGirl.slaveName and $slaves[$i].slaveName are lovers, they @@.hotpink;enjoy@@ living together. - <</if>> - <<else>> - Since _S.HeadGirl.slaveName and $slaves[$i].slaveName are <<if $wife == _wife2>>slave $wives<<else>>married<</if>>, they @@.hotpink;enjoy@@ living together. - <</if>> - <</if>> -<</if>> - -<<set _skillIncrease = 10>> -<<if ($slaves[$i].skill.oral <= 30)>> - _S.HeadGirl.slaveName wants to come home to a talented tongue, so _he2 trains $slaves[$i].slaveName's oral skills. - <<= slaveSkillIncrease('oral', $slaves[$i], _skillIncrease)>> -<<elseif ($slaves[$i].vagina > 0) && ($slaves[$i].skill.vaginal <= 30)>> - _S.HeadGirl.slaveName wants _his2 personal sex slave to be as skilled with $his pussy as possible, so _he2 trains $slaves[$i].slaveName's vaginal skills. - <<= slaveSkillIncrease('vaginal', $slaves[$i], _skillIncrease)>> -<<elseif ($slaves[$i].anus > 0) && ($slaves[$i].skill.anal <= 30)>> - _S.HeadGirl.slaveName wants _his2 personal sex slave to be a skillful backdoor whore, so _he2 trains $slaves[$i].slaveName's anal skills. - <<= slaveSkillIncrease('anal', $slaves[$i], _skillIncrease)>> -<<elseif ($slaves[$i].skill.entertainment <= 10)>> - _S.HeadGirl.slaveName wants to be kept amused in _his2 occasional free time, so _he2 trains $slaves[$i].slaveName's entertainment skills. - <<= slaveSkillIncrease('entertainment', $slaves[$i], _skillIncrease)>> -<<elseif ($slaves[$i].sexualFlaw != "none")>> - _S.HeadGirl.slaveName is annoyed by $slaves[$i].slaveName's sexual flaws, so _he2 @@.green;trains@@ $him out of them. - <<set $slaves[$i].sexualFlaw = "none">> -<<elseif ($slaves[$i].behavioralFlaw != "none")>> - _S.HeadGirl.slaveName is irritated by $slaves[$i].slaveName's flaws, so _he2 @@.green;trains@@ $him out of them. - <<set $slaves[$i].behavioralFlaw = "none">> -<</if>> - -<<if canPenetrate(_S.HeadGirl)>> - <<if canDoVaginal($slaves[$i])>> - <<if ($slaves[$i].vagina == 0)>> - _S.HeadGirl.slaveName @@.hotpink;loves@@ @@.lime;taking@@ $slaves[$i].slaveName's virginity, and spends much of the week ogling _his2 conquest complacently. - <<set $slaves[$i].vagina = 1, _S.HeadGirl.devotion += 4>> - <<elseif ($slaves[$i].vagina == 1)>> - <<if (_S.HeadGirl.dick > 4) && (_S.HeadGirl.energy > 95)>> - _S.HeadGirl.slaveName has such a ferocious sex drive and such a big dick that _his2 constant pounding of $slaves[$i].slaveName @@.lime;loosens@@ the poor $girl's pussy. - <<set $slaves[$i].vagina += 1>> - <<elseif (_S.HeadGirl.dick > 5)>> - Serving _S.HeadGirl.slaveName's monster cock @@.lime;loosens@@ $slaves[$i].slaveName's pussy. - <<set $slaves[$i].vagina += 1>> - <</if>> - <<elseif ($slaves[$i].vagina == 2)>> - <<if (_S.HeadGirl.dick > 5) && (_S.HeadGirl.energy > 95)>> - _S.HeadGirl.slaveName has such a ferocious sex drive and such a monster cock that _his2 constant pounding of $slaves[$i].slaveName @@.lime;loosens@@ the poor $girl's pussy. - <<set $slaves[$i].vagina += 1>> - <</if>> - <<elseif ($slaves[$i].vagina == 3)>> - <<if (_S.HeadGirl.dick > 5) && (_S.HeadGirl.energy > 95) && random(1,100) > 80>> - _S.HeadGirl.slaveName has such a ferocious sex drive and such a monster cock that _his2 constant pounding of $slaves[$i].slaveName's loose pussy inevitably leaves it @@.lime;gaping.@@ - <<set $slaves[$i].vagina += 1>> - <</if>> - <</if>> - <</if>> - <<if canDoAnal($slaves[$i])>> - <<if ($slaves[$i].anus == 0)>> - _S.HeadGirl.slaveName @@.hotpink;relishes@@ @@.lime;taking@@ $slaves[$i].slaveName's anal virginity, and spends much of the week groping _his2 conquest's rear end possessively. - <<set $slaves[$i].anus = 1, _S.HeadGirl.devotion += 4>> - <<elseif ($slaves[$i].anus == 1)>> - <<if (_S.HeadGirl.dick > 4) && (_S.HeadGirl.energy > 95)>> - _S.HeadGirl.slaveName uses $slaves[$i].slaveName's anus to vent _his2 sexual addiction. Constant assrape from such a huge dick @@.lime;loosens@@ $his sphincter. - <<set $slaves[$i].anus += 1>> - <<elseif (_S.HeadGirl.dick > 5)>> - Taking _S.HeadGirl.slaveName's monster cock up the butt @@.lime;loosens@@ $slaves[$i].slaveName's anal sphincter. - <<set $slaves[$i].anus += 1>> - <</if>> - <<elseif ($slaves[$i].anus == 2)>> - <<if (_S.HeadGirl.dick > 5) && (_S.HeadGirl.energy > 95)>> - _S.HeadGirl.slaveName uses $slaves[$i].slaveName's anus to vent _his2 sexual addiction. Constant assrape from the Head Girl's monster cock @@.lime;loosens@@ $his sphincter. - <<set $slaves[$i].anus += 1>> - <</if>> - <<elseif ($slaves[$i].anus == 3)>> - <<if (_S.HeadGirl.dick > 5) && (_S.HeadGirl.energy > 95) && random(1,100) > 80>> - _S.HeadGirl.slaveName uses $slaves[$i].slaveName's loose anus to vent _his2 sexual addiction. Constant assrape from the Head Girl's monster cock eventually leaves it @@.lime;gaping.@@ - <<set $slaves[$i].anus += 1>> - <</if>> - <</if>> - <</if>> -<</if>> - -<<if $seePreg != 0>> - <<if (_S.HeadGirl.fetish == "pregnancy") && canImpreg($slaves[$i], _S.HeadGirl)>> - <<if $arcologies[0].FSRestart == "unset">> - _S.HeadGirl.slaveName promptly @@.lime;impregnates@@ - <<if _S.HeadGirl.fetishKnown == 1>> - $slaves[$i].slaveName, to your Head Girl's considerable @@.hotpink;satisfaction.@@ $slaves[$i].slaveName spent the week regularly getting held down and ejaculated into anytime $his superior had cum to spare. - <<set _S.HeadGirl.devotion += 4>> - <<else>> - $slaves[$i].slaveName. _His2 eagerness completely exposes _his2 hidden @@.lightcoral;pregnancy kink.@@ - <<set _S.HeadGirl.fetishKnown = 1>> - <</if>> - <<= knockMeUp($slaves[$i], 100, 2, $HeadGirlID, 1)>> - <<if (_S.HeadGirl.fetishStrength > 70) && canImpreg(_S.HeadGirl, $slaves[$i])>> - Unsurprisingly, _his2 gives in to _his2 own cravings and also takes $slaves[$i].slaveName's loads until _he2 @@.lime;gets pregnant@@ too. - <<= knockMeUp(_S.HeadGirl, 100, 2, $slaves[$i].ID, 1)>> - <</if>> - <<elseif _S.HeadGirl.fetishKnown == 1>> - _S.HeadGirl.slaveName knows better than to even consider knocking up $slaves[$i].slaveName. - <</if>> - <<elseif (_S.HeadGirl.fetish == "pregnancy") && canImpreg(_S.HeadGirl, $slaves[$i])>> - <<if $arcologies[0].FSRestart == "unset" && (_S.HeadGirl.fetishStrength > 70)>> - _S.HeadGirl.slaveName promptly @@.lime;knocks _himself2 up@@ with $slaves[$i].slaveName's - <<if _S.HeadGirl.fetishKnown == 1>> - seed, to your Head Girl's considerable @@.hotpink;satisfaction.@@ - <<set _S.HeadGirl.devotion += 4>> - <<else>> - seed. _His2 @@.hotpink;pride@@ over _his2 new pregnancy and eagerness to get pregnant completely exposes _his2 hidden, and powerful, @@.lightcoral;pregnancy fetish.@@ - <<set _S.HeadGirl.fetishKnown = 1, _S.HeadGirl.devotion += 4>> - <</if>> - <<= knockMeUp(_S.HeadGirl, 100, 2, $slaves[$i].ID, 1)>> - <<elseif _S.HeadGirl.fetishKnown == 1>> - _S.HeadGirl.slaveName knows better than to even consider getting knocked up by $slaves[$i].slaveName. - <</if>> - <<elseif $arcologies[0].FSRepopulationFocusPregPolicy == 1 && canImpreg($slaves[$i], _S.HeadGirl)>> - _S.HeadGirl.slaveName wastes no time in chasing the current trend and hurries to @@.lime;impregnate@@ $slaves[$i].slaveName. - <<= knockMeUp($slaves[$i], 100, 2, $HeadGirlID, 1)>> - <<elseif $slaves[$i].pregKnown == 1>> - <<if $slaves[$i].breedingMark == 1>> - Since $slaves[$i].slaveName is marked as a breeding slave, _S.HeadGirl.slaveName feels it is _his2 duty to keep $his pregnancy safe. - <<elseif $slaves[$i].pregSource == -1>> - Since $slaves[$i].slaveName is bearing your child<<if $slaves[$i].pregType > 1>>ren<</if>>, _S.HeadGirl.slaveName feels _he2 has been tasked with keeping $his pregnancy safe. - <<elseif _S.HeadGirl.fetish == "pregnancy">> - _S.HeadGirl.slaveName - <<if _S.HeadGirl.fetishKnown == 1>> - <<if $slaves[$i].bellyPreg > 500>> - enjoys the swell of $slaves[$i].slaveName's baby bump, giving _him2 plenty of reason to keep $his pregnancy. - <<else>> - keeps $slaves[$i].slaveName pregnant so that _he2 may savor $his growth. - <</if>> - <<else>> - pays an unusual amount of attention to $slaves[$i].slaveName's pregnancy. - <</if>> - <<elseif $arcologies[0].FSRepopulationFocusPregPolicy == 0 && $arcologies[0].FSRepopulationFocus == "unset" && $HGSuiteDrugs == 1>> - <<if $slaves[$i].preg > $slaves[$i].pregData.normalBirth-2 && $slaves[$i].preg > $slaves[$i].pregData.minLiveBirth && $slaves[$i].broodmother === 0 && !isInLabor($slaves[$i])>> - _S.HeadGirl.slaveName has no interest in a slut stuffed full of unwanted spawn, so _he2 promptly doses slaves[$i].slaveName with labor inducing agents to get $him back in fucking shape. - <<run induce($slaves[$i])>> - <<run startLabor($slaves[$i])>> - <<else>> - _S.HeadGirl.slaveName promptly aborts the child growing in $slaves[$i].slaveName since _he2 prefers _his2 <<= $girl>>s not harboring someone else's child or loaded down with _his2 own unwanted spawn. - <<run TerminatePregnancy($slaves[$i])>> - <<run actX($slaves[$i], "abortions")>> - <</if>> - <</if>> - <</if>> -<</if>> - -<<if ($slaves[$i].devotion > 50)>> - <<if (($slaves[$i].fetishStrength <= 95) || ($slaves[$i].fetishKnown == 0)) && (_S.HeadGirl.fetishKnown == 1) && (_S.HeadGirl.fetishStrength > 60) && ($slaves[$i].fetish != _S.HeadGirl.fetish) && ($slaves[$i].fetish != "mindbroken")>> - <<if (_S.HeadGirl.fetish == "submissive")>> - $slaves[$i].slaveName slowly gets used to _S.HeadGirl.slaveName's need to be sexually dominated, and begins to @@.pink;enjoy being a top@@ within the confines of the suite. - <<set $slaves[$i].fetish = "dom", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>> - <<elseif (_S.HeadGirl.fetish == "dom")>> - <<if ($slaves[$i].fetish != "submissive") || ($slaves[$i].fetish == 0)>> - $slaves[$i].slaveName slowly gets used to being tied up and fucked regularly, and accepts that it's how _S.HeadGirl.slaveName's sexual attraction to $him expresses itself. $He begins to @@.pink;enjoy being a sub,@@ especially for _S.HeadGirl.slaveName. - <<set $slaves[$i].fetish = "submissive", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>> - <</if>> - <<elseif (_S.HeadGirl.fetish == "boobs")>> - _S.HeadGirl.slaveName lavishes so much attention on $slaves[$i].slaveName's boobs that $slaves[$i].slaveName really starts to @@.pink;fetishize tits@@ too. - <<set $slaves[$i].fetish = "boobs", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>> - <<elseif (_S.HeadGirl.fetish == "pregnancy")>> - $slaves[$i].slaveName and _S.HeadGirl.slaveName spend so much time talking about pregnancy and fertility that $slaves[$i].slaveName really starts to @@.pink;fetishize pregnancy@@ too. - <<set $slaves[$i].fetish = "pregnancy", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>> - <<elseif (_S.HeadGirl.fetish == "cumslut")>> - $slaves[$i].slaveName participates in enough of _S.HeadGirl.slaveName's cum games that $he can't help but @@.pink;enjoy oral sex@@ $himself. - <<set $slaves[$i].fetish = "cumslut", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>> - <<elseif (_S.HeadGirl.fetish == "humiliation")>> - $slaves[$i].slaveName has so much public sex with _S.HeadGirl.slaveName that $he really starts to @@.pink;enjoy humiliation@@ $himself. - <<set $slaves[$i].fetish = "humiliation", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>> - <<elseif (_S.HeadGirl.fetish == "buttslut")>> - <<if canDoAnal($slaves[$i])>> - $slaves[$i].slaveName takes _S.HeadGirl.slaveName's <<if canPenetrate(_S.HeadGirl)>>dick<<else>>strap-on and dildos<</if>> up $his poor anus so often that $he starts to @@.pink;enjoy buttsex@@ $himself. - <<else>> - _S.HeadGirl.slaveName lavishes so much attention on $slaves[$i].slaveName's butt, since _he2 can't use it, that $slaves[$i].slaveName really starts to @@.pink;fetishize rears@@ too. - <</if>> - <<set $slaves[$i].fetish = "buttslut", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>> - <<elseif (_S.HeadGirl.fetish == "masochist")>> - <<if ($slaves[$i].fetish != "submissive") || ($slaves[$i].fetish == 0)>> - $slaves[$i].slaveName is initially shocked to be asked to cause _S.HeadGirl.slaveName pain, but $he slowly begins to understand the honestly sexual nature of the arrangement. $He starts to @@.pink;enjoy causing pain,@@ since _S.HeadGirl.slaveName is clearly enjoying it so much. - <<set $slaves[$i].fetish = "sadist", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>> - <</if>> - <<else>> - $slaves[$i].slaveName often takes _S.HeadGirl.slaveName's <<if canPenetrate(_S.HeadGirl)>>dick<<else>>strap-on<</if>> in the missionary position, after some light foreplay and before bed; $he honestly enjoys the respectful lovemaking, and begins to @@.pink;enjoy vanilla sex@@ $himself. - <<set $slaves[$i].fetish = "none", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>> - <</if>> - <</if>> - <<if (_S.HeadGirl.attrKnown == 1)>> - <<if (_S.HeadGirl.attrXX > 85) && ($slaves[$i].attrXX > 65) && ($slaves[$i].attrXX <= 85)>> - $slaves[$i].slaveName and _S.HeadGirl.slaveName spend so much time giggling over which of your other slaves they think is prettiest (typically followed by giggling sex) that $slaves[$i].slaveName really starts to @@.green;fetishize girls@@ too. - <<set $slaves[$i].attrXX += 2, $slaves[$i].attrKnown = 1>> - <</if>> - <<if (_S.HeadGirl.attrXY > 85) && ($slaves[$i].attrXY > 65) && ($slaves[$i].attrXY <= 85)>> - $slaves[$i].slaveName and _S.HeadGirl.slaveName have so much fun debating which male citizens and slave dickgirls are cutest (typically followed by <<if canDoAnal($slaves[$i]) || canDoVaginal($slaves[$i])>>_S.HeadGirl.slaveName banging _his2 girltoy <<if canPenetrate(_S.HeadGirl)>>with a strap-on<<else>>senseless<</if>><<else>>giggling sex<</if>>) that $slaves[$i].slaveName really starts to @@.green;fetishize boys@@ too. - <<set $slaves[$i].attrXY += 2, $slaves[$i].attrKnown = 1>> - <</if>> - <<if (_S.HeadGirl.energy > 95) && ($slaves[$i].energy <= 95)>> - $slaves[$i].slaveName has so much fun sex with _S.HeadGirl.slaveName that @@.green;$his sex drive is slowly enhanced.@@ - <<set $slaves[$i].energy += 2>> - <</if>> - <</if>> -<</if>> - -<<if (_S.HeadGirl.fetishKnown == 1)>> - <<if (_S.HeadGirl.energy > 95)>> - $slaves[$i].slaveName spends a lot of time getting fucked in whichever hole or cranny _S.HeadGirl.slaveName decides to shove _his2 <<if canPenetrate(_S.HeadGirl)>>dick<<else>>strap-on<</if>> into next. - <<set _oralUse += 5>> - <<if canDoAnal($slaves[$i])>> - <<set _analUse += 5>> - <<if canImpreg($slaves[$i], _S.HeadGirl)>> - <<= knockMeUp($slaves[$i], 5, 1, $HeadGirlID)>> - <</if>> - <<elseif $slaves[$i] >= 500>> - <<set _mammaryUse += 5>> - <<else>> - <<set _oralUse += 5>> - <</if>> - <<if ($slaves[$i].vagina > 0) && canDoVaginal($slaves[$i])>> - <<set _vaginalUse += 5>> - <<if canImpreg($slaves[$i], _S.HeadGirl)>> - <<= knockMeUp($slaves[$i], 5, 0, $HeadGirlID)>> - <</if>> - <<elseif canDoAnal($slaves[$i])>> - <<set _analUse += 5>> - <<if canImpreg($slaves[$i], _S.HeadGirl)>> - <<= knockMeUp($slaves[$i], 5, 1, $HeadGirlID)>> - <</if>> - <<else>> - <<set _oralUse += 5>> - <</if>> - <<set _S.HeadGirl.counter.penetrative += 15, $penetrativeTotal += 15>> - <<elseif (_S.HeadGirl.fetish == "submissive")>> - _S.HeadGirl.slaveName walks a fine line with $slaves[$i].slaveName. They work out a sexual life in which _S.HeadGirl.slaveName is in charge, but $slaves[$i].slaveName takes the sexual lead: $slaves[$i].slaveName serves $his superior by taking _him2 firmly. - <<set _oralUse += 4>> - <<if canDoAnal($slaves[$i])>> - <<set _analUse += 3>> - <<if canImpreg($slaves[$i], _S.HeadGirl)>> - <<= knockMeUp($slaves[$i], 3, 1, $HeadGirlID)>> - <</if>> - <<elseif $slaves[$i] >= 500>> - <<set _mammaryUse += 3>> - <<else>> - <<set _oralUse += 3>> - <</if>> - <<if ($slaves[$i].vagina > 0) && canDoVaginal($slaves[$i])>> - <<set _vaginalUse += 3>> - <<if canImpreg($slaves[$i], _S.HeadGirl)>> - <<= knockMeUp($slaves[$i], 3, 0, $HeadGirlID)>> - <</if>> - <<elseif canDoAnal($slaves[$i])>> - <<set _analUse += 3>> - <<if canImpreg($slaves[$i], _S.HeadGirl)>> - <<= knockMeUp($slaves[$i], 3, 1, $HeadGirlID)>> - <</if>> - <<else>> - <<set _oralUse += 3>> - <</if>> - <<set _S.HeadGirl.counter.penetrative += 10, $penetrativeTotal += 10>> - <<elseif (_S.HeadGirl.fetish == "dom")>> - $slaves[$i].slaveName serves _S.HeadGirl.slaveName as _his2 sexual and moral inferior, taking the Head Girl's <<if canPenetrate(_S.HeadGirl)>>dick<<else>>strap-on<</if>> in all $his holes. Though it isn't necessary with such an obedient partner, $slaves[$i].slaveName is often tied up for use. - <<set _oralUse += 4>> - <<if canDoAnal($slaves[$i])>> - <<set _analUse += 3>> - <<if canImpreg($slaves[$i], _S.HeadGirl)>> - <<= knockMeUp($slaves[$i], 3, 1, $HeadGirlID)>> - <</if>> - <<elseif $slaves[$i] >= 500>> - <<set _mammaryUse += 3>> - <<else>> - <<set _oralUse += 3>> - <</if>> - <<if ($slaves[$i].vagina > 0) && canDoVaginal($slaves[$i])>> - <<set _vaginalUse += 3>> - <<if canImpreg($slaves[$i], _S.HeadGirl)>> - <<= knockMeUp($slaves[$i], 3, 0, $HeadGirlID)>> - <</if>> - <<elseif canDoAnal($slaves[$i])>> - <<set _analUse += 3>> - <<if canImpreg($slaves[$i], _S.HeadGirl)>> - <<= knockMeUp($slaves[$i], 3, 1, $HeadGirlID)>> - <</if>> - <<else>> - <<set _oralUse += 3>> - <</if>> - <<set _S.HeadGirl.counter.penetrative += 10, $penetrativeTotal += 10>> - <<elseif (_S.HeadGirl.fetish == "humiliation")>> - _S.HeadGirl.slaveName is such an exhibitionist that $slaves[$i].slaveName finds $himself taking _S.HeadGirl.slaveName's <<if canPenetrate(_S.HeadGirl)>>dick<<else>>strap-on<</if>> in public quite often. - <<set _oralUse += 4>> - <<if canDoAnal($slaves[$i])>> - <<set _analUse += 3>> - <<if canImpreg($slaves[$i], _S.HeadGirl)>> - <<= knockMeUp($slaves[$i], 3, 1, $HeadGirlID)>> - <</if>> - <<elseif $slaves[$i] >= 500>> - <<set _mammaryUse += 3>> - <<else>> - <<set _oralUse += 3>> - <</if>> - <<if ($slaves[$i].vagina > 0) && canDoVaginal($slaves[$i])>> - <<set _vaginalUse += 3>> - <<if canImpreg($slaves[$i], _S.HeadGirl)>> - <<= knockMeUp($slaves[$i], 3, 0, $HeadGirlID)>> - <</if>> - <<elseif canDoAnal($slaves[$i])>> - <<set _analUse += 3>> - <<if canImpreg($slaves[$i], _S.HeadGirl)>> - <<= knockMeUp($slaves[$i], 3, 1, $HeadGirlID)>> - <</if>> - <<else>> - <<set _oralUse += 3>> - <</if>> - <<set _S.HeadGirl.counter.penetrative += 10, $penetrativeTotal += 10>> - <<elseif (_S.HeadGirl.fetish == "boobs")>> - _S.HeadGirl.slaveName is such a boob fetishist that $slaves[$i].slaveName sometimes wonders whether _S.HeadGirl.slaveName thinks there are four clits in the suite: the four nipples between the two of them. - <<set _oralUse += 4>> - <<set _mammaryUse += 6>> - <<set _S.HeadGirl.counter.mammary += 10, $mammaryTotal += 10>> - <<elseif (_S.HeadGirl.fetish == "buttslut")>> - _S.HeadGirl.slaveName takes a dominant sexual role with $slaves[$i].slaveName; _he2 indulges _his2 <<if canDoAnal($slaves[$i])>>anal addiction by constantly buttfucking $slaves[$i].slaveName<<else>>ass obsession by constantly molesting and using $slaves[$i].slaveName's buttcheeks as a sex toy<</if>> while wearing a vibrating plug _himself2. - <<if canDoAnal($slaves[$i])>> - <<set _analUse += 10>> - <<set _S.HeadGirl.counter.penetrative += 10, $penetrativeTotal += 10>> - <<if canImpreg($slaves[$i], _S.HeadGirl)>> - <<= knockMeUp($slaves[$i], 10, 1, $HeadGirlID)>> - <</if>> - <</if>> - <<elseif (_S.HeadGirl.fetish == "cumslut")>> - _S.HeadGirl.slaveName takes a dominant sexual role with $slaves[$i].slaveName; _he2 indulges _his2 oral fixation with constant oral sex. _He2 certainly applies _his2 mouth to $slaves[$i].slaveName when _he2 gets the chance, but $slaves[$i].slaveName does most of the sucking. - <<set _oralUse += 20>> - <<set _S.HeadGirl.counter.oral += 10, $oralTotal += 10>> - <<set _S.HeadGirl.counter.penetrative += 10, $penetrativeTotal += 10>> - <<elseif (_S.HeadGirl.fetish == "masochist")>> - _S.HeadGirl.slaveName carefully structures _his2 sexual games with $slaves[$i].slaveName to gratify _his2 deep need to be physically hurt during sex without damaging _his2 leadership. Usually, $slaves[$i].slaveName tortures _S.HeadGirl.slaveName until _he2's quite sated, and then takes a rough <<if canDoAnal($slaves[$i])>>buttfuck<<else>>facefucking<</if>> from the aroused _S.HeadGirl.slaveName's <<if canPenetrate(_S.HeadGirl)>>dick<<else>>strap-on<</if>> to restore their relative positions. - <<if canDoAnal($slaves[$i])>> - <<set _analUse += 10>> - <<if canImpreg($slaves[$i], _S.HeadGirl)>> - <<= knockMeUp($slaves[$i], 10, 1, $HeadGirlID)>> - <</if>> - <<else>> - <<set _oralUse += 10>> - <</if>> - <<set _S.HeadGirl.counter.penetrative += 10, $penetrativeTotal += 10>> - <<elseif (_S.HeadGirl.attrXX > 65)>> - _S.HeadGirl.slaveName expects $slaves[$i].slaveName to be girlish sexually, and $slaves[$i].slaveName spends a lot of time <<if hasBothLegs($slaves[$i])>>on $his knees<<else>>servicing _him2<</if>>. - <<set _oralUse += 6>> - <<if canDoAnal($slaves[$i])>> - <<set _analUse++>> - <<if canImpreg($slaves[$i], _S.HeadGirl)>> - <<= knockMeUp($slaves[$i], 1, 1, $HeadGirlID)>> - <</if>> - <<elseif $slaves[$i] >= 500>> - <<set _mammaryUse++>> - <<else>> - <<set _oralUse++>> - <</if>> - <<if ($slaves[$i].vagina > 0) && canDoVaginal($slaves[$i])>> - <<set _vaginalUse++>> - <<if canImpreg($slaves[$i], _S.HeadGirl)>> - <<= knockMeUp($slaves[$i], 1, 0, $HeadGirlID)>> - <</if>> - <<elseif canDoAnal($slaves[$i])>> - <<set _analUse++>> - <<if canImpreg($slaves[$i], _S.HeadGirl)>> - <<= knockMeUp($slaves[$i], 1, 1, $HeadGirlID)>> - <</if>> - <<else>> - <<set _oralUse++>> - <</if>> - <<set _S.HeadGirl.counter.penetrative += 8, $penetrativeTotal += 8>> - <<else>> - _S.HeadGirl.slaveName takes a dominant sexual role with $slaves[$i].slaveName, mostly getting oral<<if canPenetrate(_S.HeadGirl) && (canDoVaginal($slaves[$i]) || canDoAnal($slaves[$i]))>> and fucking $him in the missionary position<<elseif $slaves[$i] >= 300>> and molesting $his breasts<</if>>. - <<set _oralUse += 4>> - <<if canDoAnal($slaves[$i])>> - <<set _analUse += 3>> - <<if canImpreg($slaves[$i], _S.HeadGirl)>> - <<= knockMeUp($slaves[$i], 3, 1, $HeadGirlID)>> - <</if>> - <<elseif $slaves[$i] >= 300>> - <<set _mammaryUse += 3>> - <<else>> - <<set _oralUse += 3>> - <</if>> - <<if ($slaves[$i].vagina > 0) && canDoVaginal($slaves[$i])>> - <<set _vaginalUse += 3>> - <<if canImpreg($slaves[$i], _S.HeadGirl)>> - <<= knockMeUp($slaves[$i], 3, 0, $HeadGirlID)>> - <</if>> - <<elseif canDoAnal($slaves[$i])>> - <<set _analUse += 3>> - <<if canImpreg($slaves[$i], _S.HeadGirl)>> - <<= knockMeUp($slaves[$i], 3, 1, $HeadGirlID)>> - <</if>> - <<elseif $slaves[$i] >= 300>> - <<set _mammaryUse += 3>> - <<else>> - <<set _oralUse += 3>> - <</if>> - <<set _S.HeadGirl.counter.penetrative += 10, $penetrativeTotal += 10>> - <</if>> -<</if>> - -<<set $slaves[$i].counter.oral += _oralUse, $oralTotal += _oralUse>> -<<set $slaves[$i].counter.anal += _analUse, $analTotal += _analUse>> -<<set $slaves[$i].counter.vaginal += _vaginalUse, $vaginalTotal += _vaginalUse>> -<<set $slaves[$i].counter.mammary += _mammaryUse, $mammaryTotal += _mammaryUse>> -<<set $slaves[$i].counter.penetrative += _penetrativeUse, $penetrativeTotal += _penetrativeUse>> - -<<set _cervixPump = 0>> -<<if $slaves[$i].cervixImplant == 1 || $slaves[$i].cervixImplant == 3>> - <<set _cervixPump += 20*_vaginalUse>> -<</if>> -<<if $slaves[$i].cervixImplant == 2 || $slaves[$i].cervixImplant == 3>> - <<set _cervixPump += 20*_analUse>> -<</if>> - -<<if $slaves[$i].need>> - <<if $slaves[$i].fetishKnown>> - <<switch $slaves[$i].fetish>> - <<case "masochist" "submissive">> - <<if _analUse+_vaginalUse > 0>> - Being someone's submissive toy really satisfies $slaves[$i].slaveName. - <<set $slaves[$i].need = 0>> - <</if>> - <<case "dom" "sadist">> - <<if _penetrativeUse > 0>> - Getting to be on top is precious, and it really satisfies $slaves[$i].slaveName. - <<set $slaves[$i].need = 0>> - <</if>> - <<case "cumslut">> - <<if _oralUse > 0>> - Being someone's oral toy really satisfies $slaves[$i].slaveName. - <<set $slaves[$i].need = 0>> - <</if>> - <<case "buttslut">> - <<if _analUse > 0>> - Having $his butthole serve as someone's toy really satisfies $slaves[$i].slaveName. - <<set $slaves[$i].need = 0>> - <</if>> - <<case "pregnancy">> - <<if _vaginalUse > 0 && $slaves[$i].mpreg == 0>> - Having $his pussy serve as someone's toy really satisfies $slaves[$i].slaveName. - <<set $slaves[$i].need = 0>> - <<elseif _analUse > 0 && $slaves[$i].mpreg == 1>> - Having $his asspussy serve as someone's toy really satisfies $slaves[$i].slaveName. - <<set $slaves[$i].need = 0>> - <</if>> - <<case "humiliation">> - Having all the other slaves see $him in such a humiliating role really satisfies $slaves[$i].slaveName. - <<set $slaves[$i].need = 0>> - <</switch>> - <</if>> -<</if>> - -<<set $slaves[$i].need -= ((_vaginalUse+_penetrativeUse+_analUse)*5)>> -<<set _S.HeadGirl.need = 0>> - -<<if _cervixPump > 0>> - $slaves[$i].slaveName notices $his @@.lime;belly swell@@ after - <<if $slaves[$i].cervixImplant == 1>> - vaginal - <<elseif $slaves[$i].cervixImplant == 2>> - anal - <</if>> - sex throughout the week. - <<set $slaves[$i].bellyImplant += _cervixPump>> -<</if>> - -<<if $slaves[$i].health.tired > 60>> - _S.HeadGirl.slaveName sees $he is becoming exhausted and gives $him lighter duties so $he doesn't break. -<</if>> -<<run tired($slaves[$i])>> - -<<if (_S.HeadGirl.fetishKnown == 1)>> - <<if (_S.HeadGirl.energy > 95)>> - _S.HeadGirl.slaveName keeps $slaves[$i].slaveName naked so _he2 doesn't have to waste any time tearing $his clothes off. - <<set $slaves[$i].clothes = "no clothing">> - <<elseif $slaves[$i].devotion <= 20>> - _S.HeadGirl.slaveName keeps $slaves[$i].slaveName in a torturous habit since $he still clings to $his dignity and remains defiant. - <<set $slaves[$i].clothes = "a penitent nuns habit">> - <<elseif (_S.HeadGirl.fetish == "submissive")>> - _S.HeadGirl.slaveName keeps $slaves[$i].slaveName dressed up in slutty power clothing, since _he2's attracted to competence. - <<set $slaves[$i].clothes = "slutty business attire">> - <<elseif (_S.HeadGirl.fetish == "masochist")>> - _S.HeadGirl.slaveName keeps $slaves[$i].slaveName - <<if isItemAccessible.entry("battledress", "clothing")>> - in battledress, since _he2 likes the fantasy of being raped by a soldier $girl. - <<set $slaves[$i].clothes = "battledress">> - <<else>> - in a scalemail bikini, since _he2 likes the fantasy of being raped by a horny barbarian. - <<set $slaves[$i].clothes = "a scalemail bikini">> - <</if>> - <<elseif (_S.HeadGirl.fetish == "dom")>> - _S.HeadGirl.slaveName keeps $slaves[$i].slaveName dressed up as a school<<= $girl>> - <<if $slaves[$i].physicalAge > 16>> - to infantilize _his2 sub. - <<else>> - to highlight _his2 authority over _his2 young sub. - <</if>> - <<set $slaves[$i].clothes = "a schoolgirl outfit">> - <<elseif (_S.HeadGirl.fetish == "boobs")>> - _S.HeadGirl.slaveName keeps $slaves[$i].slaveName wearing a string bikini, since _he2 likes seeing those tits. - <<set $slaves[$i].clothes = "a string bikini">> - <<elseif (_S.HeadGirl.fetish == "cumslut")>> - _S.HeadGirl.slaveName keeps $slaves[$i].slaveName in restrictive latex, because _he2 likes how it draws attention to $his mouth. - <<set $slaves[$i].clothes = "restrictive latex">> - <<elseif (_S.HeadGirl.fetish == "humiliation")>> - _S.HeadGirl.slaveName keeps $slaves[$i].slaveName in humiliating bondage gear, because _he2 likes to see others blush, too. - <<set $slaves[$i].clothes = "uncomfortable straps">> - <<elseif (_S.HeadGirl.fetish == "sadist")>> - _S.HeadGirl.slaveName keeps $slaves[$i].slaveName in humiliating bondage gear, because it can easily be tightened to cause considerable anguish. - <<set $slaves[$i].clothes = "uncomfortable straps">> - <<elseif (_S.HeadGirl.fetish == "buttslut")>> - _S.HeadGirl.slaveName keeps $slaves[$i].slaveName wearing nothing but slutty bangles, since _he2 likes dressing $him up but wants that butt bare. - <<set $slaves[$i].clothes = "slutty jewelry">> - <<elseif (_S.HeadGirl.fetish == "pregnancy" && isItemAccessible.entry("a huge empathy belly", "bellyAccessory", $slaves[$i]) == true)>> - _S.HeadGirl.slaveName keeps $slaves[$i].slaveName wearing an empathy belly, since _he2 likes _his2 <<= $girl>>s with a bun in the oven. - <<set $slaves[$i].bellyAccessory = "a large empathy belly">> - <<elseif (_S.HeadGirl.fetish == "pregnancy") && ($slaves[$i].preg > 0) && ($slaves[$i].pregSource == $HeadGirlID)>> - _S.HeadGirl.slaveName keeps the pregnant $slaves[$i].slaveName dressed as a slutty maid, since _he2 wants $him to look motherly yet fuckable while _he2 fantasizes about fucking $him pregnant again. - <<set $slaves[$i].clothes = "a slutty maid outfit">> - <<elseif (_S.HeadGirl.fetish == "pregnancy")>> - _S.HeadGirl.slaveName keeps $slaves[$i].slaveName dressed as a slutty maid, since _he2 wants $him to look motherly yet fuckable while _he2 fantasizes about putting a bun in $his oven. - <<set $slaves[$i].clothes = "a slutty maid outfit">> - <<elseif (_S.HeadGirl.attrXX > 85)>> - _S.HeadGirl.slaveName keeps $slaves[$i].slaveName wearing nice lingerie, since girls and girliness turn _him2 on. - <<set $slaves[$i].clothes = "attractive lingerie">> - <<elseif (_S.HeadGirl.attrXY > 85) && ($slaves[$i].dick > 0)>> - _S.HeadGirl.slaveName keeps $slaves[$i].slaveName wearing slutty netting with a hole for $his dick to stick through, since _he2 likes it bare. - <<set $slaves[$i].clothes = "clubslut netting">> - <<else>> - _S.HeadGirl.slaveName keeps $slaves[$i].slaveName dressed as a slutty maid, since _he2 likes seeing $his body as $he looks after their suite. - <<set $slaves[$i].clothes = "a slutty maid outfit">> - <</if>> -<<else>> - _S.HeadGirl.slaveName keeps $slaves[$i].slaveName dressed as a slutty maid, since _he2 likes seeing $his body as $he looks after their suite. - <<set $slaves[$i].clothes = "a slutty maid outfit">> -<</if>> -<<set $slaves[$i].devotion += 1>> - -<<if _S.HeadGirl.energy > 95>> - <<if _S.HeadGirl.bald != 1&& _S.HeadGirl.hLength > 0>> - <<if $slaves[$i].bald != 1>> - <<if !hasHColorRule($slaves[$i],$defaultRules)>> - <<if ($slaves[$i].hColor != _S.HeadGirl.hColor)>> - _S.HeadGirl.slaveName dyes $slaves[$i].slaveName's hair _S.HeadGirl.hColor, just like _his2 own, since with nymphomania comes narcissism. - <<set $slaves[$i].hColor = _S.HeadGirl.hColor>> - <</if>> - <</if>> - <<if !hasHStyleRule($slaves[$i],$defaultRules)>> - <<if ($slaves[$i].hStyle != _S.HeadGirl.hStyle)>> - _S.HeadGirl.slaveName styles $slaves[$i].slaveName's hair just like _his2 own, since with nymphomania comes narcissism. - <<set $slaves[$i].hStyle = _S.HeadGirl.hStyle>> - <<set $slaves[$i].hLength = _S.HeadGirl.hLength>> - <</if>> - <</if>> - <<else>> - <<if !hasHColorRule($slaves[$i],$defaultRules)>> - <<if ($slaves[$i].hColor != _S.HeadGirl.hColor)>> - _S.HeadGirl.slaveName changes $slaves[$i].slaveName's wig to _S.HeadGirl.hColor, just like _his2 own hair, since with nymphomania comes narcissism. - <<set $slaves[$i].hColor = _S.HeadGirl.hColor>> - <</if>> - <</if>> - <<if !hasHStyleRule($slaves[$i],$defaultRules)>> - <<if ($slaves[$i].hStyle != _S.HeadGirl.hStyle)>> - _S.HeadGirl.slaveName changes $slaves[$i].slaveName's wig style to look just like _his2 own hair, since with nymphomania comes narcissism. - <<set $slaves[$i].hStyle = _S.HeadGirl.hStyle>> - <<set $slaves[$i].hLength = _S.HeadGirl.hLength>> - <</if>> - <</if>> - <</if>> - <</if>> - - <<if !hasEyeColorRule($slaves[$i], $defaultRules)>> - /* HG wants sub slave to have same eye color as her */ - /* make sure the sub slave has both eyes, missing ones are replaced with glass */ - <<if !hasLeftEye($slaves[$i])>> - <<run eyeSurgery($slaves[$i], "left", "glass")>> - <</if>> - <<if !hasRightEye($slaves[$i])>> - <<run eyeSurgery($slaves[$i]), "right", "glass">> - <</if>> - - /* get eye colors, HG can be expected to have at least one working eye due to job requirements */ - <<set _left = hasLeftEye(_S.HeadGirl) ? getLeftEyeColor(_S.HeadGirl) : getRightEyeColor(_S.HeadGirl)>> - <<set _right = hasRightEye(_S.HeadGirl) ? getRightEyeColor(_S.HeadGirl) : _left>> - - /* make sure the slave has the same eye color as the HG */ - <<if getLeftEyeColor($slaves[$i]) !== _left>> - <<run setEyeColor($slaves[$i], _left, "left")>> - _S.HeadGirl.slaveName <<if getLeftEyeType($slaves[$i] === 3)>> changes <<else>> gives <</if>> $slaves[$i].slaveName _left <<if getLeftEyeType($slaves[$i]) === 3>> eye lenses <<elseif getLeftEyeType($slaves[$i]) === 2>> glass eyes <<else>> contact lenses <</if>>, to match _his2 own left eye, since with nymphomania comes narcissism. - <</if>> - <<if getRightEyeColor($slaves[$i]) !== _right>> - <<run setEyeColor($slaves[$i], _right, "right")>> - _S.HeadGirl.slaveName <<if getRightEyeType($slaves[$i] === 3)>> changes <<else>> gives <</if>> $slaves[$i].slaveName _right <<if getLeftRightType($slaves[$i]) === 3>> eye lenses <<elseif getLeftRightType($slaves[$i]) === 2>> glass eyes <<else>> contact lenses <</if>>, to match _his2 own right eye, since with nymphomania comes narcissism. - <</if>> - <</if>> -<</if>> - -<<if ($arcologies[0].FSRepopulationFocusPregPolicy == 1 || ($arcologies[0].FSRestart == "unset" && _S.HeadGirl.fetish == "pregnancy")) && canImpreg($slaves[$i], _S.HeadGirl) && ($dietFertility == 1)>> - _S.HeadGirl.slaveName thinks $slaves[$i].slaveName could do with a bigger bump <<if $arcologies[0].FSRepopulationFocusPregPolicy>>since pregnant <<= $girl>>s are all the rage in your arcology <</if>> - <<if _diet != "fertility">> - and assigns $him a diet to promote ovulation. - <<else>> - and keeps $him on $his fertility diet. - <</if>> -<<elseif ($slaves[$i].weight < 100 && $arcologies[0].FSHedonisticDecadence >= 20) || ($slaves[$i].weight < -10)>> - _S.HeadGirl.slaveName thinks $slaves[$i].slaveName could use a little extra weight <<if $arcologies[0].FSHedonisticDecadence >= 20>>since plump <<= $girl>>s are all the rage in your arcology <</if>> - <<if _diet != "fattening">> - and assigns $him a diet to fatten $him up. - <<else>> - and keeps $him on $his fattening diet. - <</if>> -<<elseif $slaves[$i].weight > 30 && $arcologies[0].FSHedonisticDecadence == "unset">> - _S.HeadGirl.slaveName thinks $slaves[$i].slaveName is a little too porky - <<if _diet != "restricted">> - and puts $him on a diet. - <<else>> - and keeps $him on $his diet. - <</if>> -<<elseif - ( - ($slaves[$i].muscles <= 95 && - ( - ($arcologies[0].FSPhysicalIdealist > 0 && $arcologies[0].FSPhysicalIdealistLaw == 0) || - ( - (_S.HeadGirl.fetish == "submissive" || _S.HeadGirl.fetish == "masochist") && - _S.HeadGirl.fetishKnown == 1) - ) - ) - || - ($slaves[$i].muscles <= 45 && - ( - $arcologies[0].FSPhysicalIdealist > 0 && - $arcologies[0].FSPhysicalIdealistLaw == 1) - ) - || - $slaves[$i].muscles <= 5 && - ( - !isAmputee($slaves[$i]) - ) - )>> - _S.HeadGirl.slaveName thinks $slaves[$i].slaveName - <<if _S.HeadGirl.fetish == "submissive">> - could use bigger muscles to better dominate _him2 with in bed - <<elseif _S.HeadGirl.fetish == "masochist">> - could use bigger muscles to better spank _him2 - <<elseif $arcologies[0].FSPhysicalIdealist > 0>> - could use bigger muscles to support your societal goals - <<else>> - could use a bit of muscle - <</if>> - <<if _diet != "muscle building">> - and makes $him work out hard. - <<else>> - and keeps $him working out. - <</if>> -<<elseif $slaves[$i].balls > 0 && _S.HeadGirl.fetish == "cumslut" && _S.HeadGirl.fetishKnown == 1 && $cumProDiet == 1>> - _S.HeadGirl.slaveName loves cum, so _he2 - <<if _diet != "cum production">> - puts - <<else>> - keeps - <</if>> - $slaves[$i].slaveName on a diet designed to make $him cum harder and stronger. -<<else>> - _S.HeadGirl.slaveName thinks $slaves[$i].slaveName is fine as is - <<if _diet != "healthy">> - and puts $him on a normal diet. - <<else>> - and keeps $him on $his healthy diet. - <</if>> -<</if>> - -<<if $HGSuiteHormones != 0 && _hormones != 2>> - _S.HeadGirl.slaveName puts $slaves[$i].slaveName on intensive female hormones, since _he2 expects $him to act as the submissive, feminine partner. -<</if>> - -<<if $HGSuiteDrugs != 0>> - <<if ($slaves[$i].health.condition < 60)>> - _S.HeadGirl.slaveName gives $slaves[$i].slaveName curatives, since _he2 wants a shiningly healthy living partner. - <</if>> - <<if ($slaves[$i].lips <= 20)>> - _S.HeadGirl.slaveName gives $slaves[$i].slaveName lip injections, since _he2 wants to get oral from plump, luscious lips. - <<elseif $arcologies[0].FSSlaveProfessionalismResearch == 1 && $HGSuiteEquality != 0 && canImproveIntelligence($slaves[$i])>> - _S.HeadGirl.slaveName gives $slaves[$i].slaveName psychostimulants, since $him being smarter will benefit them both when $he is in charge. - <<elseif (_S.HeadGirl.fetishKnown == 1) && (_S.HeadGirl.fetish == "buttslut") && $arcologies[0].FSAssetExpansionistResearch == 1 && $slaves[$i].butt < 18>> - _S.HeadGirl.slaveName gives $slaves[$i].slaveName hyper ass injections, since _he2 never once thought it possible to fuck an ass as big as _he2 is. - <<elseif (_S.HeadGirl.fetishKnown == 1) && (_S.HeadGirl.fetish == "buttslut") && $arcologies[0].FSAssetExpansionistResearch == 1 && $slaves[$i].butt < 8>> - _S.HeadGirl.slaveName gives $slaves[$i].slaveName ass injections, since _he2 likes comfortable padding as _he2 fucks a butt. - <<elseif (_S.HeadGirl.fetishKnown == 1) && (_S.HeadGirl.fetish == "cumslut") && $arcologies[0].FSAssetExpansionistResearch == 1 && $slaves[$i].balls < 100 && $slaves[$i].balls > 0 && $slaves[$i].dick > 0>> - _S.HeadGirl.slaveName gives $slaves[$i].slaveName hyper testicle injections, since _he2 wants to swim in a river of cum. - <<elseif (_S.HeadGirl.fetishKnown == 1) && (_S.HeadGirl.fetish == "cumslut") && $slaves[$i].balls < 10 && $slaves[$i].balls > 0 && $slaves[$i].dick > 0>> - _S.HeadGirl.slaveName gives $slaves[$i].slaveName testicle injections, since _he2 wants $slaves[$i].slaveName shooting bigger loads. - <<elseif (_S.HeadGirl.fetishKnown == 1) && (_S.HeadGirl.fetish == "masochist" || _S.HeadGirl.fetish == "submissive") && canImproveHeight($slaves[$i])>> - _S.HeadGirl.slaveName has a subconscious need to be hurt by the biggest, strongest $girl possible, so $he gives $slaves[$i].slaveName injections of growth stimulants to make $him grow taller. - <<elseif (_S.HeadGirl.fetishKnown == 1) && (_S.HeadGirl.fetish == "boobs") && ($slaves[$i].boobs < 8000)>> - _S.HeadGirl.slaveName gives $slaves[$i].slaveName <<if $arcologies[0].FSAssetExpansionistResearch == 1>>hyper <</if>> tit injections, since as far as _he2's concerned there's no such thing as too much boob. - <<elseif ($HGTastes == 4 || _S.HeadGirl.fetish == "pregnancy") && canImpreg($slaves[$i], _S.HeadGirl) && $arcologies[0].FSRestart == "unset">> - _S.HeadGirl.slaveName gives $slaves[$i].slaveName fertility enhancers, since _he2 wants to see $slaves[$i].slaveName heavy with child. - <<elseif $arcologies[0].FSRepopulationFocusPregPolicy == 1 && canImpreg($slaves[$i], _S.HeadGirl)>> - _S.HeadGirl.slaveName gives $slaves[$i].slaveName fertility enhancers, since pregnancy is popular and _he2 wants $slaves[$i].slaveName to look hot. - <<elseif $HGTastes > 1>> - <<if ($slaves[$i].lips <= 70)>> - _S.HeadGirl.slaveName gives $slaves[$i].slaveName lip injections, since _he2 thinks $slaves[$i].slaveName should have lips so big $he can barely speak. - <<elseif ($slaves[$i].boobs > (125*Math.pow($slaves[$i].butt, 2)))>> - _S.HeadGirl.slaveName gives $slaves[$i].slaveName ass injections, since _he2 loves curves and thinks $slaves[$i].slaveName's butt needs the most work. - <<else>> - _S.HeadGirl.slaveName gives $slaves[$i].slaveName boob injections, since _he2 loves curves and thinks $slaves[$i].slaveName's tits need the most work. - <</if>> - <</if>> -<<else>> - <<if ($slaves[$i].health.condition < 100)>> - _S.HeadGirl.slaveName gives $slaves[$i].slaveName curatives, since _his2 assistant could be healthier. - <</if>> -<</if>> - -<<if $HGSuiteSurgery != 0>> - <<if $arcologies[0].FSBodyPurist == "unset">> - _S.HeadGirl.slaveName sends $assistant.name notes on what surgical modifications _he2 wants for $slaves[$i].slaveName. - <<= rulesAutosurgery($slaves[$i])>> - <</if>> - <<if _S.HeadGirl.fetishKnown == 1>> - <<if (_S.HeadGirl.fetish == "sadist") && (_S.HeadGirl.fetishStrength > 95) && ($seeExtreme == 1) && ($slaves[$i].fetish != "mindbroken")>> - <<if ($slaves[$i].health.condition > 40)>> - <<if hasAnyNaturalLimbs($slaves[$i]) && ($slaves[$i].devotion < -20)>> - _S.HeadGirl.slaveName decides to extract the ultimate in sadistic pleasure from $slaves[$i].slaveName, and directs the autosurgery to @@.red;amputate $his <<if hasAnyArms($slaves[$i])>>arm<<if hasBothArms($slaves[$i])>>s<</if>> <<if hasAnyLegs($slaves[$i])>>and<</if>><</if>><<if hasAnyLegs($slaves[$i])>> leg<<if hasBothLegs($slaves[$i])>>s<</if>><</if>>.@@ _He2 carefully describes the entire process to the sobbing slave @@.gold;in minute detail@@ before allowing $him to be sedated. - <<set $slaves[$i].devotion -= 20, $slaves[$i].trust -= 20>> - <<run removeLimbs($slaves[$i], "all"), surgeryDamage($slaves[$i], 40)>> - <</if>> - <<if ($slaves[$i].balls > 0) && ($slaves[$i].devotion <= 50)>> - _S.HeadGirl.slaveName decides to have some once-only sadistic pleasure, and carefully straps $slaves[$i].slaveName into the surgery until $he's completely immobile. _S.HeadGirl.slaveName situates <<if canSee($slaves[$i])>>a mirror so the terrified $girl can see $his own crotch<<else>>$him so that the terrified $girl can sense what part of $his body is being manipulated even through the anesthetics<</if>>, gets behind $him, and carefully sodomizes $him during the entire process of @@.red;castration.@@ $slaves[$i].slaveName is anesthetized down there and can't feel the brutal anal rape, but $his abuser orgasms repeatedly to $him @@.gold;weeping at the <<if canSee($slaves[$i])>>sight<<else>>muted sensation<</if>> of being gelded and raped at once.@@ - <<set $slaves[$i].devotion -= 20, $slaves[$i].trust -= 20, $slaves[$i].balls = 0>> - <<run surgeryDamage($slaves[$i], 20)>> - <</if>> - <</if>> - <<if ($slaves[$i].devotion < -90) && ($slaves[$i].fetish != "mindbroken")>> - _S.HeadGirl.slaveName tires of $slaves[$i].slaveName's protests that _S.HeadGirl.slaveName is a monster for hurting $him this way and $his complaints that $he deserves better. _S.HeadGirl.slaveName decides that it'll be just as much fun and a lot less trouble to mistreat $slaves[$i].slaveName once $he's mindbroken, and sends $him in for @@.red;chemical lobotomization.@@ - <<set $slaves[$i].fetish = "mindbroken">> - <<run surgeryDamage($slaves[$i], 20)>> - <</if>> - <<elseif (_S.HeadGirl.fetish == "dom") && (_S.HeadGirl.fetishStrength > 60) && ($seeExtreme == 1) && ($slaves[$i].fetish != "mindbroken") && ($slaves[$i].devotion <= 50)>> - <<if ($slaves[$i].health.condition > 40)>> - <<if ($slaves[$i].heels == 0) && hasAnyNaturalLegs($slaves[$i])>> - _S.HeadGirl.slaveName is not satisfied with $slaves[$i].slaveName's submissiveness, and directs the autosurgery to @@.red;clip $his Achilles tendons.@@ Once the slave is recovered from surgery, _S.HeadGirl.slaveName removes all shoes from the suite, too, so $slaves[$i].slaveName is forced to crawl like a good little bitch. $slaves[$i].slaveName is @@.gold;angry@@ and @@.gold;frightened.@@ - <<set $slaves[$i].devotion -= 5, $slaves[$i].heels = 1, $slaves[$i].shoes = "none">> - <<run surgeryDamage($slaves[$i], 20)>> - <</if>> - <<if ($slaves[$i].balls > 0)>> - _S.HeadGirl.slaveName decides that it's counterproductive for $slaves[$i].slaveName to be able to get hard, and sends $him in to have $his @@.red;balls removed.@@ $slaves[$i].slaveName is horrified, but _S.HeadGirl.slaveName uses $his anus with such persistence and mercilessness that the poor gelding doesn't have much time to mourn. $slaves[$i].slaveName is badly @@.gold;frightened@@ by $his new role as nothing but a recipient of anal. - <<set $slaves[$i].trust -= 10, $slaves[$i].balls = 0>> - <<run surgeryDamage($slaves[$i], 20)>> - <</if>> - <</if>> - <<elseif _S.HeadGirl.energy > 95>> - <<if ($slaves[$i].health.condition > 40) && ($slaves[$i].heels == 0) && hasAnyNaturalLegs($slaves[$i]) && ($slaves[$i].devotion <= 50) && ($slaves[$i].fetish != "mindbroken")>> - _S.HeadGirl.slaveName wants a good little bimbo who sticks $his butt out all the time, and directs the autosurgery to @@.red;clip $slaves[$i].slaveName's Achilles tendons.@@ Once the slave is recovered from surgery, _S.HeadGirl.slaveName presents $slaves[$i].slaveName with a new pair of extra-tall heels to totter around in like a good little slut. $slaves[$i].slaveName is @@.gold;angry@@ and @@.gold;frightened.@@ - <<set $slaves[$i].devotion -= 5, $slaves[$i].trust -= 5, $slaves[$i].heels = 1, $slaves[$i].shoes = "heels">> - <<run surgeryDamage($slaves[$i], 20)>> - <</if>> - <<elseif _S.HeadGirl.fetish == "masochist">> - <<if ($slaves[$i].health.condition > 40) && ($slaves[$i].heightImplant == 0) && ($slaves[$i].height < 185) && hasAllLimbs($slaves[$i])>> - _S.HeadGirl.slaveName has a subconscious need to be hurt by the biggest, strongest $girl possible, and directs the autosurgery to extend $slaves[$i].slaveName's arm and leg bones to make $him a little @@.lime;taller.@@ - <<set $slaves[$i].heightImplant = 1, $slaves[$i].height += 10>> - <<run surgeryDamage($slaves[$i], 20)>> - <</if>> - <<elseif _S.HeadGirl.fetish == "submissive">> - <<if ($slaves[$i].health.condition > 40) && ($slaves[$i].heightImplant == 0) && ($slaves[$i].height < 185) && hasAllLimbs($slaves[$i])>> - _S.HeadGirl.slaveName wants to be topped by the biggest, strongest $girl possible, and directs the autosurgery to extend $slaves[$i].slaveName's arm and leg bones to make $him a little @@.lime;taller.@@ - <<set $slaves[$i].heightImplant = 1, $slaves[$i].height += 10>> - <<run surgeryDamage($slaves[$i], 20)>> - <</if>> - <</if>> - <</if>> -<</if>> - -<<if $HGSuiteEquality != 0>> - <<if $slaves[$i].devotion > 50>> - _S.HeadGirl.slaveName and $slaves[$i].slaveName @@.hotpink;really appreciate@@ the equal, alternating Head Girl system, and @@.yellow;switch places at the end of the week.@@ - <<set _S.HeadGirl.devotion += 1, $slaves[$i].devotion += 1>> - <<else>> - $slaves[$i].slaveName is not a decent Head Girl candidate, so _S.HeadGirl.slaveName keeps the position for now. - <</if>> -<<else>> - <<set _hgEnjoyment = $HGSuiteSurgery + $HGSuiteDrugs + $HGSuiteHormones>> - <<if _hgEnjoyment > 2>> - Your Head Girl @@.hotpink;really enjoys@@ being given total freedom to customize _his2 very own bitch. - <<set _S.HeadGirl.devotion += 2>> - <<elseif _hgEnjoyment == 2>> - Your Head Girl @@.hotpink;enjoys@@ being given freedom to customize _his2 very own $girl. - <<set _S.HeadGirl.devotion += 1>> - <<elseif _hgEnjoyment == 1>> - Your Head Girl @@.hotpink;appreciates@@ being given some freedom to customize _his2 own servant. - <<set _S.HeadGirl.devotion += 1>> - <</if>> -<</if>> - -<<if (_S.HeadGirl.relationshipTarget == $slaves[$i].ID)>> - <<set (_S.HeadGirl.relationship = $slaves[$i].relationship)>> -<</if>> - -<<if $showEWD == 0>> - /*<<run App.SlaveAssignment.choosesOwnClothes($slaves[$i])>>*/ - <<run App.SlaveAssignment.rules($slaves[$i])>> - <<run App.SlaveAssignment.diet($slaves[$i])>> - <<run App.SlaveAssignment.longTermEffects($slaves[$i])>> - <<run App.SlaveAssignment.drugs($slaves[$i])>> - <<run App.SlaveAssignment.relationships($slaves[$i])>> - <<run App.SlaveAssignment.rivalries($slaves[$i])>> - <<run App.SlaveAssignment.devotion($slaves[$i])>> -<<else>> - /*<<= App.SlaveAssignment.choosesOwnClothes($slaves[$i])>>*/ - <<includeDOM App.SlaveAssignment.rules($slaves[$i])>> - <<= App.SlaveAssignment.diet($slaves[$i])>> - <<includeDOM App.SlaveAssignment.longTermEffects($slaves[$i])>> - <<= App.SlaveAssignment.drugs($slaves[$i])>> - <<= App.SlaveAssignment.relationships($slaves[$i])>> - <<= App.SlaveAssignment.rivalries($slaves[$i])>> - <br> <<= App.SlaveAssignment.devotion($slaves[$i])>> -<</if>> - -<<unset $HGTastes>>