diff --git a/src/interaction/useSlave/useSlave.js b/src/interaction/useSlave/useSlave.js index 116c86e6f40eedc74ef7412323f19e9c340e2041..e9ab9ef2b5f548563bae9e8a02a0216ad642fdd0 100644 --- a/src/interaction/useSlave/useSlave.js +++ b/src/interaction/useSlave/useSlave.js @@ -96,7 +96,7 @@ App.UI.SlaveInteract.useSlave = function(slave) { // Generator Functions function options() { const optionsDiv = document.createElement("div"); - const options = App.UI.SlaveInteract.useSlave.options(PC, slave, playerState, slaveState); + const options = App.UI.SlaveInteract.useSlave.options(PC, tempSlave, slave, playerState, slaveState); const contextual = generateOptions(options.contextual, optionsDiv); const face = generateOptions(options.face, optionsDiv); diff --git a/src/interaction/useSlave/useSlaveOptions.js b/src/interaction/useSlave/useSlaveOptions.js index 005a7cc37a92e0a212f2de9a015b8bf3b02cc33a..d97d2cb2683e49373bf2518a8729e7a375e6edc2 100644 --- a/src/interaction/useSlave/useSlaveOptions.js +++ b/src/interaction/useSlave/useSlaveOptions.js @@ -1,13 +1,14 @@ /** * @param {FC.PlayerState} player + * @param {FC.SlaveState} clone * @param {FC.SlaveState} slave * @param {App.UI.SlaveInteract.CharacterState} playerState * @param {App.UI.SlaveInteract.CharacterState} slaveState */ -App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, slaveState) { - const refreshArt = () => App.Events.refreshEventArt(slave); +App.UI.SlaveInteract.useSlave.options = function(player, clone, slave, playerState, slaveState) { + const refreshArt = () => App.Events.refreshEventArt(clone); - const {He, he, him, his, hers} = getPronouns(slave); + const {He, he, him, his, hers} = getPronouns(clone); /** @enum {string} */ const Fetish = { @@ -61,21 +62,21 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla const contextual = [ { link: `Keep kissing ${him}`, - desc: contextualText.keepKissing(slave), + desc: contextualText.keepKissing(clone), tooltip: `Because why stop?`, prereq: () => - slave.mouthAccessory === none && + clone.mouthAccessory === none && playerState.action === Action.KISSING && slaveState.action === Action.KISSING, effect: () => { playerState.lust++; slaveState.lust++; }, - reaction: this.reactionText.keepKissing(slave), + reaction: this.reactionText.keepKissing(clone), }, { link: `Keep fucking ${him}`, - desc: contextualText.keepFucking(slave), + desc: contextualText.keepFucking(clone), tooltip: `It feels too good to stop now.`, prereq: () => playerState.action === Action.PENETRATING && @@ -85,11 +86,11 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla playerState.lust += 2; slaveState.lust++; }, - reaction: this.reactionText.keepFucking(slave), + reaction: this.reactionText.keepFucking(clone), }, { link: `Hold ${him} down`, - desc: contextualText.holdDown(slave), + desc: contextualText.holdDown(clone), tooltip: `${He}'s not going anywhere if you can help it.`, prereq: () => playerState.action === Action.PENETRATING && @@ -99,11 +100,11 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla playerState.lust += 2; slaveState.lust++; }, - reaction: this.reactionText.holdDown(slave), + reaction: this.reactionText.holdDown(clone), }, { link: `Pull out of ${him}`, - desc: contextualText.stopFucking(slave), + desc: contextualText.stopFucking(clone), tooltip: `You can always put it back in. ${He} can't stop you.`, prereq: () => playerState.action === Action.PENETRATING && @@ -113,11 +114,11 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla playerState.action = null; slaveState.action = null; }, - reaction: this.reactionText.stopFucking(slave), + reaction: this.reactionText.stopFucking(clone), }, { link: `Let ${him} keep pleasuring you`, - desc: contextualText.continueOral(slave), + desc: contextualText.continueOral(clone), tooltip: `Lay back and enjoy ${his} service.`, prereq: () => playerState.action === Action.RECEIVING && @@ -126,11 +127,11 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla playerState.lust += 2; slaveState.lust++; }, - reaction: this.reactionText.continueOral(slave), + reaction: this.reactionText.continueOral(clone), }, { link: `Hold ${his} head down`, - desc: contextualText.holdHeadDown(slave), + desc: contextualText.holdHeadDown(clone), tooltip: `${He} can breathe when you've cum.`, prereq: () => playerState.action === Action.RECEIVING && @@ -139,22 +140,22 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla playerState.lust += 2; slaveState.lust++; }, - reaction: this.reactionText.holdHeadDown(slave), + reaction: this.reactionText.holdHeadDown(clone), }, { link: `Order ${him} to stop pleasuring you`, - desc: contextualText.stopOral(slave), + desc: contextualText.stopOral(clone), tooltip: `Time for ${him} to please you another way.`, prereq: () => slaveState.action === Action.ORAL, effect: () => { playerState.action = null; slaveState.action = null; }, - reaction: this.reactionText.stopOral(slave), + reaction: this.reactionText.stopOral(clone), }, { link: `Cum on ${his} face`, - desc: contextualText.cumOnFace(slave), + desc: contextualText.cumOnFace(clone), tooltip: `Let it all out on ${his} face.`, prereq: () => playerState.lust - playerState.previousOrgasm >= 25 && slaveState.action === Action.ORAL, @@ -165,11 +166,11 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla playerState.action = null; slaveState.action = null; }, - reaction: this.reactionText.cumOnFace(slave), + reaction: this.reactionText.cumOnFace(clone), }, { link: `${V.PC.dick !== 0 ? `Cum in ${his} mouth` : `Have ${him} finish you with ${his} mouth`}`, - desc: contextualText.cumInMouth(slave), + desc: contextualText.cumInMouth(clone), tooltip: `${V.PC.dick !== 0 ? `Shoot your cum down ${his} throat.` : `${He} won't dare stop until you're satisfied.`}`, prereq: () => playerState.lust - playerState.previousOrgasm >= 25 && slaveState.action === Action.ORAL, @@ -180,11 +181,11 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla playerState.action = null; slaveState.action = null; }, - reaction: this.reactionText.cumInMouth(slave), + reaction: this.reactionText.cumInMouth(clone), }, { link: `Cum in ${his} pussy`, - desc: contextualText.cumInPussy(slave), + desc: contextualText.cumInPussy(clone), tooltip: `Cum deep inside ${him}. Fill ${him} up. You know it'll feel amazing.`, prereq: () => playerState.lust - playerState.previousOrgasm >= 25 && @@ -202,11 +203,11 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla playerState.action = null; slaveState.action = null; }, - reaction: this.reactionText.cumInPussy(slave), + reaction: this.reactionText.cumInPussy(clone), }, { link: `Cum in ${his} ass`, - desc: contextualText.cumInAnus(slave), + desc: contextualText.cumInAnus(clone), tooltip: `Make a mess of ${his} ass. Show ${him} ${his} place.`, prereq: () => playerState.lust - playerState.previousOrgasm >= 25 && @@ -224,11 +225,11 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla playerState.action = null; slaveState.action = null; }, - reaction: this.reactionText.cumInAnus(slave), + reaction: this.reactionText.cumInAnus(clone), }, { link: `Make ${him} cum`, - desc: contextualText.makeSlaveCum(slave), + desc: contextualText.makeSlaveCum(clone), tooltip: `${He}'s been a good slave, and deserves a reward.`, prereq: () => slaveState.lust - slaveState.previousOrgasm >= 25 && @@ -243,19 +244,19 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla playerState.action = null; slaveState.action = null; }, - reaction: this.reactionText.makeSlaveCum(slave), + reaction: this.reactionText.makeSlaveCum(clone), }, ]; - let clothes = slave.clothes; + let clothes = clone.clothes; const faceText = App.UI.SlaveInteract.useSlave.faceText; /** @type {FC.UseSlave.Option[]} */ const face = [ { link: `Kiss ${him}`, - desc: faceText.regularKiss(slave), + desc: faceText.regularKiss(clone), tooltip: `Press your lips to ${hers} and kiss ${him}.`, - prereq: () => slave.mouthAccessory === none, + prereq: () => clone.mouthAccessory === none, effect: () => { playerState.lust++; slaveState.lust++; @@ -263,13 +264,13 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla playerState.action = Action.KISSING; slaveState.action = Action.KISSING; }, - reaction: this.reactionText.regularKiss(slave), + reaction: this.reactionText.regularKiss(clone), }, { link: `Kiss ${him} passionately`, - desc: faceText.passionateKiss(slave), + desc: faceText.passionateKiss(clone), tooltip: `Press ${his} body to yours and kiss ${him}.`, - prereq: () => slave.mouthAccessory === none, + prereq: () => clone.mouthAccessory === none, effect: () => { playerState.lust++; slaveState.lust++; @@ -277,13 +278,13 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla playerState.action = Action.KISSING; slaveState.action = Action.KISSING; }, - reaction: this.reactionText.passionateKiss(slave), + reaction: this.reactionText.passionateKiss(clone), }, { link: `Kiss ${him} intimately`, - desc: faceText.intimateKiss(slave), + desc: faceText.intimateKiss(clone), tooltip: `Share a romantic kiss.`, - prereq: () => slave.mouthAccessory === none, + prereq: () => clone.mouthAccessory === none, effect: () => { playerState.lust++; slaveState.lust++; @@ -291,14 +292,14 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla playerState.action = Action.KISSING; slaveState.action = Action.KISSING; }, - reaction: this.reactionText.intimateKiss(slave), + reaction: this.reactionText.intimateKiss(clone), }, { link: `Have ${him} go down on you`, - desc: faceText.slaveGivesOral(slave), + desc: faceText.slaveGivesOral(clone), tooltip: `Have ${him} give you oral.`, prereq: () => - (slave.mouthAccessory === none || slave.mouthAccessory === "ring gag") && + (clone.mouthAccessory === none || clone.mouthAccessory === "ring gag") && playerState.bottomFree && !playerState.clothing.underwear && !playerState.isKneeling && @@ -314,11 +315,11 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla recordSex(slaveState.action); }, - reaction: this.reactionText.slaveGivesOral(slave), + reaction: this.reactionText.slaveGivesOral(clone), }, { link: `Go down on ${him}`, - desc: faceText.playerGivesOral(slave), + desc: faceText.playerGivesOral(clone), tooltip: `Give ${him} oral.`, prereq: () => slaveState.clothing.bottom.isOff && @@ -338,7 +339,7 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla recordSex(playerState.action); }, - reaction: this.reactionText.playerGivesOral(slave), + reaction: this.reactionText.playerGivesOral(clone), }, ]; @@ -347,62 +348,62 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla const chest = [ { link: `Grope ${his} chest`, - desc: chestText.grope(slave), + desc: chestText.grope(clone), tooltip: slave.boobs >= 300 ? `Play with ${his} tits a bit.` : `Stroke ${his} chest a bit.`, prereq: () => slaveState.topFree, effect: () => { playerState.lust += 2; - slaveState.lust += slave.fetish === Fetish.BOOBS ? 7 : 4; + slaveState.lust += clone.fetish === Fetish.BOOBS ? 7 : 4; playerState.action = Action.TOUCHING; slaveState.action = Action.RECEIVING; }, - reaction: this.reactionText.grope(slave), + reaction: this.reactionText.grope(clone), }, { - link: `Lick ${his} ${slave.boobs >= 300 ? `tits` : `chest`}`, - desc: chestText.lick(slave), - tooltip: slave.boobs >= 300 ? `Give ${his} boobs a taste.` : `Run your tongue along ${his} chest.`, + link: `Lick ${his} ${clone.boobs >= 300 ? `tits` : `chest`}`, + desc: chestText.lick(clone), + tooltip: clone.boobs >= 300 ? `Give ${his} boobs a taste.` : `Run your tongue along ${his} chest.`, prereq: () => slaveState.topFree && !slaveState.clothing.bra, effect: () => { playerState.lust += 2; - slaveState.lust += slave.fetish === Fetish.BOOBS ? 8 : 5; + slaveState.lust += clone.fetish === Fetish.BOOBS ? 8 : 5; playerState.action = Action.KISSING; slaveState.action = Action.RECEIVING; }, - reaction: this.reactionText.lick(slave), + reaction: this.reactionText.lick(clone), }, { link: `Suck on ${his} nipples`, - desc: chestText.suck(slave), + desc: chestText.suck(clone), tooltip: `See if you can't get any milk.`, prereq: () => slaveState.topFree && !slaveState.clothing.bra, effect: () => { playerState.lust += 2; - slaveState.lust += slave.fetish === Fetish.BOOBS ? 9 : 5; + slaveState.lust += clone.fetish === Fetish.BOOBS ? 9 : 5; playerState.action = Action.KISSING; slaveState.action = Action.RECEIVING; }, - reaction: this.reactionText.suck(slave), + reaction: this.reactionText.suck(clone), }, { link: `Bite ${his} nipples`, - desc: chestText.bite(slave), + desc: chestText.bite(clone), tooltip: `Give them a little nibble.`, prereq: () => slaveState.topFree && !slaveState.clothing.bra, effect: () => { playerState.lust += 2; - slaveState.lust += slave.fetish === Fetish.BOOBS ? 8 : 5; + slaveState.lust += clone.fetish === Fetish.BOOBS ? 8 : 5; playerState.action = Action.KISSING; slaveState.action = Action.RECEIVING; }, - reaction: this.reactionText.bite(slave), + reaction: this.reactionText.bite(clone), }, ]; @@ -411,11 +412,11 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla const crotch = [ { link: `Grope ${his} pussy`, - desc: crotchText.gropePussy(slave), + desc: crotchText.gropePussy(clone), tooltip: `Fondle and play with ${his} crotch a bit.`, prereq: () => - slave.vagina > -1 && - !slave.chastityVagina && + clone.vagina > -1 && + !clone.chastityVagina && slaveState.bottomFree, effect: () => { playerState.lust++; @@ -424,15 +425,15 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla playerState.action = Action.TOUCHING; slaveState.action = Action.RECEIVING; }, - reaction: this.reactionText.gropePussy(slave), + reaction: this.reactionText.gropePussy(clone), }, { link: `Grope ${his} dick`, - desc: crotchText.gropeDick(slave), + desc: crotchText.gropeDick(clone), tooltip: `Rub ${his} cock a little.`, prereq: () => - slave.dick > 0 && - !slave.chastityPenis && + clone.dick > 0 && + !clone.chastityPenis && slaveState.bottomFree, effect: () => { playerState.lust++; @@ -441,11 +442,11 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla playerState.action = Action.TOUCHING; slaveState.action = Action.RECEIVING; }, - reaction: this.reactionText.gropeDick(slave), + reaction: this.reactionText.gropeDick(clone), }, { link: `Grope ${his} ass`, - desc: crotchText.gropeAss(slave), + desc: crotchText.gropeAss(clone), tooltip: `Grab ${his} ass and give it a good fondle.`, prereq: () => slaveState.bottomFree, effect: () => { @@ -455,17 +456,17 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla playerState.action = Action.TOUCHING; slaveState.action = Action.RECEIVING; }, - reaction: this.reactionText.gropeAss(slave), + reaction: this.reactionText.gropeAss(clone), }, { link: `Finger ${his} pussy`, - desc: crotchText.fingerPussy(slave), + desc: crotchText.fingerPussy(clone), tooltip: `Play with ${his} clit a little, maybe slide a finger in there. Go on, you know you want to.`, prereq: () => - slave.vagina > -1 && + clone.vagina > -1 && (slaveState.bottomFree || clothes.includes("dress")) && !slaveState.clothing.underwear && - !slave.chastityVagina, + !clone.chastityVagina, effect: () => { playerState.lust += 2; slaveState.lust += 5; @@ -473,34 +474,34 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla playerState.action = Action.FINGERING; slaveState.action = Action.VAGINAL; }, - reaction: this.reactionText.fingerPussy(slave), + reaction: this.reactionText.fingerPussy(clone), }, { link: `Finger ${his} asshole`, - desc: crotchText.fingerAnus(slave), + desc: crotchText.fingerAnus(clone), tooltip: `Play with ${his} backdoor a little. Go on, you know you want to.`, prereq: () => (slaveState.bottomFree || clothes.includes("dress")) && !slaveState.clothing.underwear && - !slave.chastityAnus, + !clone.chastityAnus, effect: () => { playerState.lust += 2; - slaveState.lust += slave.fetish === Fetish.BUTTSLUT ? 7 : 4; + slaveState.lust += clone.fetish === Fetish.BUTTSLUT ? 7 : 4; playerState.action = Action.FINGERING; slaveState.action = Action.ANAL; }, - reaction: this.reactionText.fingerAnus(slave), + reaction: this.reactionText.fingerAnus(clone), }, { link: `Take ${his} virginity`, - desc: crotchText.takeVirginity(slave), + desc: crotchText.takeVirginity(clone), tooltip: `Make ${him} remember ${his} first time being used as a proper sex slave.`, prereq: () => slave.vagina === 0 && slaveState.bottomFree && !slaveState.clothing.underwear && - !slave.chastityVagina && + !clone.chastityVagina && playerState.bottomFree && !playerState.clothing.underwear && slaveState.action !== Action.VAGINAL && @@ -525,17 +526,17 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla recordSex(slaveState.action); }, - reaction: this.reactionText.takeVirginity(slave), + reaction: this.reactionText.takeVirginity(clone), }, { link: `Fuck ${his} pussy`, - desc: crotchText.fuckPussy(slave), + desc: crotchText.fuckPussy(clone), tooltip: `Push your ${player.dick ? `dick` : `strapon`} into ${his} pussy.`, prereq: () => slave.vagina > 0 && slaveState.bottomFree && !slaveState.clothing.underwear && - !slave.chastityVagina && + !clone.chastityVagina && playerState.bottomFree && !playerState.clothing.underwear && slaveState.action !== Action.VAGINAL && @@ -549,24 +550,24 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla recordSex(slaveState.action); }, - reaction: this.reactionText.fuckPussy(slave), + reaction: this.reactionText.fuckPussy(clone), }, { link: `Take ${his} anal virginity`, - desc: crotchText.takeAnalVirginity(slave), + desc: crotchText.takeAnalVirginity(clone), tooltip: `Use ${his} butt for the first of surely many times.`, prereq: () => slave.anus === 0 && slaveState.bottomFree && !slaveState.clothing.underwear && - !slave.chastityAnus && + !clone.chastityAnus && playerState.bottomFree && !playerState.clothing.underwear && slaveState.action !== Action.ANAL && playerState.lust - playerState.previousOrgasm > 5, effect: () => { playerState.lust += 10; - slaveState.lust += slave.fetish === Fetish.BUTTSLUT ? 10 : 5; + slaveState.lust += clone.fetish === Fetish.BUTTSLUT ? 10 : 5; slave.anus++; if (slave.devotion > 20) { @@ -583,35 +584,35 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla recordSex(slaveState.action); }, - reaction: this.reactionText.takeAnalVirginity(slave), + reaction: this.reactionText.takeAnalVirginity(clone), }, { link: `Fuck ${his} asshole`, - desc: crotchText.fuckAnus(slave), + desc: crotchText.fuckAnus(clone), tooltip: `Push your ${player.dick ? `dick` : `strapon`} into ${his} asshole.`, prereq: () => slave.anus > 0 && slaveState.bottomFree && !slaveState.clothing.underwear && - !slave.chastityAnus && + !clone.chastityAnus && playerState.bottomFree && !playerState.clothing.underwear && slaveState.action !== Action.ANAL && playerState.lust - playerState.previousOrgasm > 5, effect: () => { playerState.lust += 8; - slaveState.lust += slave.fetish === Fetish.BUTTSLUT ? 8 : 5; + slaveState.lust += clone.fetish === Fetish.BUTTSLUT ? 8 : 5; playerState.action = Action.PENETRATING; slaveState.action = Action.ANAL; recordSex(slaveState.action); }, - reaction: this.reactionText.fuckAnus(slave), + reaction: this.reactionText.fuckAnus(clone), }, { link: `Start a sixty-nine`, - desc: crotchText.sixtyNine(slave), + desc: crotchText.sixtyNine(clone), tooltip: `Show each other some mutual affection.`, prereq: () => slaveState.bottomFree && @@ -631,7 +632,7 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla recordSex(slaveState.action); }, - reaction: this.reactionText.sixtyNine(slave), + reaction: this.reactionText.sixtyNine(clone), }, ]; @@ -640,25 +641,25 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla const general = [ { link: `Have ${him} dance for you`, - desc: generalText.dance(slave), + desc: generalText.dance(clone), tooltip: `Make ${him} give you a sensual dance.`, prereq: () => !slaveState.isKneeling && !slaveState.isLaying, effect: () => { playerState.lust += 4; slaveState.lust += 3; }, - reaction: this.reactionText.dance(slave), + reaction: this.reactionText.dance(clone), }, { link: `Have ${him} perform a striptease for you`, - desc: generalText.striptease(slave), + desc: generalText.striptease(clone), tooltip: `Make ${him} strip for you.`, prereq: () => !slaveState.isKneeling && !slaveState.isLaying && clothes !== "no clothing", effect: () => { - slave.clothes = "no clothing"; + clone.clothes = "no clothing"; slaveState.clothing.top.isOff = true; slaveState.clothing.bottom.isOff = true; slaveState.clothing.bra = false; @@ -668,99 +669,99 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla refreshArt(); }, - reaction: this.reactionText.striptease(slave), + reaction: this.reactionText.striptease(clone), }, { link: `Push ${him} down`, - desc: generalText.pushDown(slave), + desc: generalText.pushDown(clone), tooltip: `Put ${him} on ${his} knees.`, prereq: () => !slaveState.isKneeling, effect: () => { slaveState.position = Position.KNEELING; }, - reaction: this.reactionText.pushDown(slave), + reaction: this.reactionText.pushDown(clone), }, { link: `Pull ${him} up`, - desc: generalText.pullUp(slave), + desc: generalText.pullUp(clone), tooltip: `Have ${him} stand up.`, prereq: () => slaveState.isKneeling, effect: () => { slaveState.position = Position.STANDING; }, - reaction: this.reactionText.pullUp(slave), + reaction: this.reactionText.pullUp(clone), }, { link: `Pull ${him} in close`, - desc: generalText.pullClose(slave), + desc: generalText.pullClose(clone), tooltip: `Pull ${his} body in close to yours.`, prereq: () => !slaveState.close, effect: () => { slaveState.close = true; }, - reaction: this.reactionText.pullClose(slave), + reaction: this.reactionText.pullClose(clone), }, { link: `Push ${him} away`, - desc: generalText.pushAway(slave), + desc: generalText.pushAway(clone), tooltip: `Put some distance between you two.`, prereq: () => slaveState.close, effect: () => { slaveState.close = false; }, - reaction: this.reactionText.pushAway(slave), + reaction: this.reactionText.pushAway(clone), }, { link: `Put ${him} on your lap`, - desc: generalText.putOnLap(slave), + desc: generalText.putOnLap(clone), tooltip: `Ask ${him} if ${he}'s been naughty or nice.`, prereq: () => !slaveState.onLap && !playerState.onLap, effect: () => { slaveState.onLap = true; }, - reaction: this.reactionText.putOnLap(slave), + reaction: this.reactionText.putOnLap(clone), }, { link: `Get ${him} off your lap`, - desc: generalText.getOffLap(slave), + desc: generalText.getOffLap(clone), tooltip: `That's enough of that.`, prereq: () => slaveState.onLap, effect: () => { slaveState.onLap = false; }, - reaction: this.reactionText.getOffLap(slave), + reaction: this.reactionText.getOffLap(clone), }, { link: `Take ${him} to bed`, - desc: generalText.goToBed(slave), + desc: generalText.goToBed(clone), tooltip: `Take ${him} somewhere a bit more comfortable.`, prereq: () => !playerState.isLaying && !slaveState.isLaying, effect: () => { playerState.position = Position.LAYING; slaveState.position = Position.LAYING; }, - reaction: this.reactionText.goToBed(slave), + reaction: this.reactionText.goToBed(clone), }, { link: `Get out of bed`, - desc: generalText.getOutOfBed(slave), + desc: generalText.getOutOfBed(clone), tooltip: `In case you need a little more maneuverability.`, prereq: () => playerState.isLaying && slaveState.isLaying, effect: () => { playerState.position = Position.STANDING; slaveState.position = Position.STANDING; }, - reaction: this.reactionText.getOutOfBed(slave), + reaction: this.reactionText.getOutOfBed(clone), }, { link: `Bring in another slave`, - desc: generalText.bringInSlave(slave), + desc: generalText.bringInSlave(clone), tooltip: `Have another slave join the two of you.`, prereq: () => V.slaves.length > 1, effect: () => { return; // temporarily disabled }, - reaction: this.reactionText.bringInSlave(slave), + reaction: this.reactionText.bringInSlave(clone), }, ]; @@ -768,39 +769,39 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla if (V.active.canine) { general.push({ link: `Bring in ${getAnimal(V.active.canine).articleAn} ${V.active.canine}`, - desc: generalText.bringInCanine(slave), + desc: generalText.bringInCanine(clone), tooltip: `Spice things up with ${getAnimal(V.active.canine).species === 'dog' ? `man's best friend` : `a four-legged friend`}.`, prereq: () => V.seeBestiality && !!V.active.canine, effect: () => { return; // temporarily disabled }, - reaction: this.reactionText.bringInCanine(slave), + reaction: this.reactionText.bringInCanine(clone), }); } if (V.active.hooved) { general.push({ link: `Bring in ${getAnimal(V.active.hooved).articleAn} ${V.active.hooved}`, - desc: generalText.bringInHooved(slave), + desc: generalText.bringInHooved(clone), tooltip: `Make things more interesting with something a bit larger.`, prereq: () => V.active.hooved !== null, effect: () => { return; // temporarily disabled }, - reaction: this.reactionText.bringInHooved(slave), + reaction: this.reactionText.bringInHooved(clone), }); } if (V.active.feline) { general.push({ link: `Bring in ${getAnimal(V.active.feline).articleAn} ${V.active.feline}`, - desc: generalText.bringInFeline(slave), + desc: generalText.bringInFeline(clone), tooltip: `Have some fun with a furry ${getAnimal(V.active.feline).species === 'cat' ? `little` : ``} friend.`, prereq: () => V.active.feline !== null, effect: () => { return; // temporarily disabled }, - reaction: this.reactionText.bringInFeline(slave), + reaction: this.reactionText.bringInFeline(clone), }); } } @@ -810,7 +811,7 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla const clothing = [ { link: `Pull up ${his} dress`, - desc: clothingText.pullUpDress(slave), + desc: clothingText.pullUpDress(clone), tooltip: `For easier access.`, prereq: () => clothes.includes("dress") && !slaveState.clothing.bottom.pulledDown, effect: () => { @@ -821,18 +822,18 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla refreshArt(); }, - reaction: this.reactionText.pullUpDress(slave), + reaction: this.reactionText.pullUpDress(clone), }, { - link: `Take off ${his} ${slave.clothes.replace('a ', '')}`, - desc: clothingText.removeClothing(slave), + link: `Take off ${his} ${clone.clothes.replace('a ', '')}`, + desc: clothingText.removeClothing(clone), tooltip: `Have ${him} take off ${his} outermost layer.`, prereq: () => clothes !== "no clothing" && !slaveState.clothing.top.isOff && !slaveState.clothing.bottom.isOff, effect: () => { - slave.clothes = "no clothing"; + clone.clothes = "no clothing"; slaveState.clothing.top.isOff = true; slaveState.clothing.bottom.isOff = true; @@ -841,17 +842,17 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla refreshArt(); }, - reaction: this.reactionText.removeClothing(slave), + reaction: this.reactionText.removeClothing(clone), }, { link: `Take off ${his} top`, - desc: clothingText.removeTop(slave), - tooltip: `For easier access to ${his} ${slave.boobs >= 300 ? `tits` : `chest`}.`, + desc: clothingText.removeTop(clone), + tooltip: `For easier access to ${his} ${clone.boobs >= 300 ? `tits` : `chest`}.`, prereq: () => !clothes.includes("dress") && !slaveState.clothing.top.isOff, effect: () => { slaveState.clothing.top.isOff = true; if (slaveState.clothing.bottom.isOff) { - slave.clothes = "no clothing"; + clone.clothes = "no clothing"; } playerState.lust++; @@ -859,17 +860,17 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla refreshArt(); }, - reaction: this.reactionText.removeTop(slave), + reaction: this.reactionText.removeTop(clone), }, { link: `Take off ${his} bottoms`, - desc: clothingText.removeBottom(slave), + desc: clothingText.removeBottom(clone), tooltip: `For easier access to ${his} crotch.`, prereq: () => !clothes.includes("dress") && !slaveState.clothing.bottom.isOff, effect: () => { slaveState.clothing.bottom.isOff = true; if (slaveState.clothing.top.isOff) { - slave.clothes = "no clothing"; + clone.clothes = "no clothing"; } playerState.lust++; @@ -877,17 +878,17 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla refreshArt(); }, - reaction: this.reactionText.removeBottom(slave), + reaction: this.reactionText.removeBottom(clone), }, { link: `Take off ${his} bra`, - desc: clothingText.removeBra(slave), + desc: clothingText.removeBra(clone), tooltip: `Get ${his} bra out of the way.`, prereq: () => slaveState.topFree && slaveState.clothing.bra, effect: () => { slaveState.clothing.bra = false; if (!slaveState.clothing.underwear) { - slave.clothes = "no clothing"; + clone.clothes = "no clothing"; } playerState.lust++; @@ -895,17 +896,17 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla refreshArt(); }, - reaction: this.reactionText.removeBra(slave), + reaction: this.reactionText.removeBra(clone), }, { link: `Take off ${his} underwear`, - desc: clothingText.removeUnderwear(slave), - tooltip: `Get ${his} ${slave.vagina > -1 ? `panties` : `underwear`} out of the way.`, + desc: clothingText.removeUnderwear(clone), + tooltip: `Get ${his} ${clone.vagina > -1 ? `panties` : `underwear`} out of the way.`, prereq: () => slaveState.bottomFree && slaveState.clothing.underwear, effect: () => { slaveState.clothing.underwear = false; if (!slaveState.clothing.bra) { - slave.clothes = "no clothing"; + clone.clothes = "no clothing"; } playerState.lust++; @@ -913,97 +914,97 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla refreshArt(); }, - reaction: this.reactionText.removeUnderwear(slave), + reaction: this.reactionText.removeUnderwear(clone), }, { link: `Pull aside ${his} underwear`, - desc: clothingText.pullAsideUnderwear(slave), - tooltip: `Move ${his} ${slave.vagina > -1 ? `panties` : `underwear`} out of the way for easier access to what's underneath.`, + desc: clothingText.pullAsideUnderwear(clone), + tooltip: `Move ${his} ${clone.vagina > -1 ? `panties` : `underwear`} out of the way for easier access to what's underneath.`, prereq: () => slaveState.bottomFree && slaveState.clothing.underwear, effect: () => { playerState.lust++; slaveState.lust++; }, - reaction: this.reactionText.pullAsideUnderwear(slave), + reaction: this.reactionText.pullAsideUnderwear(clone), }, { link: `Give ${him} a ball gag`, - desc: clothingText.addMouthAccessory(slave), + desc: clothingText.addMouthAccessory(clone), tooltip: `In case ${he}'s being too mouthy – or just for fun.`, - prereq: () => slave.mouthAccessory === none, + prereq: () => clone.mouthAccessory === none, effect: () => { - slave.mouthAccessory = "ball gag"; + clone.mouthAccessory = "ball gag"; refreshArt(); }, - reaction: this.reactionText.addMouthAccessory(slave), + reaction: this.reactionText.addMouthAccessory(clone), }, { link: `Give ${him} a ring gag`, - desc: clothingText.addMouthAccessory(slave), + desc: clothingText.addMouthAccessory(clone), tooltip: `In case ${he}'s being too mouthy, but you still want access to ${his} throat.`, - prereq: () => slave.mouthAccessory === none, + prereq: () => clone.mouthAccessory === none, effect: () => { - slave.mouthAccessory = "ring gag"; + clone.mouthAccessory = "ring gag"; refreshArt(); }, - reaction: this.reactionText.addMouthAccessory(slave), + reaction: this.reactionText.addMouthAccessory(clone), }, { - link: `Take ${slave.mouthAccessory.includes("dildo") ? `out` : `off`} ${his} ${slave.mouthAccessory}`, - desc: clothingText.removeMouthAccessory(slave), + link: `Take ${clone.mouthAccessory.includes("dildo") ? `out` : `off`} ${his} ${clone.mouthAccessory}`, + desc: clothingText.removeMouthAccessory(clone), tooltip: `Give ${him} some respite.`, - prereq: () => slave.mouthAccessory !== none, + prereq: () => clone.mouthAccessory !== none, effect: () => { - slave.mouthAccessory = none; + clone.mouthAccessory = none; refreshArt(); }, - reaction: this.reactionText.removeMouthAccessory(slave), + reaction: this.reactionText.removeMouthAccessory(clone), }, { link: `Take off ${his} vaginal chastity device`, - desc: clothingText.removeChastityVaginal(slave), + desc: clothingText.removeChastityVaginal(clone), tooltip: `${He} won't be needing it.`, prereq: () => (clothes === "no clothing" || clothes.includes("dress")) && - slave.chastityVagina === 1, + clone.chastityVagina === 1, effect: () => { - slave.chastityVagina = 0; + clone.chastityVagina = 0; refreshArt(); }, - reaction: this.reactionText.removeChastityVaginal(slave), + reaction: this.reactionText.removeChastityVaginal(clone), }, { link: `Take off ${his} anal chastity device`, - desc: clothingText.removeChastityAnal(slave), + desc: clothingText.removeChastityAnal(clone), tooltip: `${He} won't be needing it.`, prereq: () => (clothes === "no clothing" || clothes.includes("dress")) && - slave.chastityAnus === 1, + clone.chastityAnus === 1, effect: () => { - slave.chastityAnus = 0; + clone.chastityAnus = 0; refreshArt(); }, - reaction: this.reactionText.removeChastityAnal(slave), + reaction: this.reactionText.removeChastityAnal(clone), }, { link: `Take the chastity device off of ${his} dick`, - desc: clothingText.removeChastityPenis(slave), + desc: clothingText.removeChastityPenis(clone), tooltip: `${He} won't be needing it.`, prereq: () => (clothes === "no clothing" || clothes.includes("dress")) && - slave.chastityPenis === 1, + clone.chastityPenis === 1, effect: () => { - slave.chastityPenis = 0; + clone.chastityPenis = 0; refreshArt(); }, - reaction: this.reactionText.removeChastityPenis(slave), + reaction: this.reactionText.removeChastityPenis(clone), }, { link: `Take your shirt off`, - desc: clothingText.removePlayerTop(slave), + desc: clothingText.removePlayerTop(clone), tooltip: `You won't be needing this.`, prereq: () => !player.clothes.includes("dress") && !playerState.clothing.top.isOff, effect: () => { @@ -1012,11 +1013,11 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla playerState.lust++; slaveState.lust++; }, - reaction: this.reactionText.removePlayerTop(slave), + reaction: this.reactionText.removePlayerTop(clone), }, { link: `Take your pants off`, - desc: clothingText.removePlayerBottom(slave), + desc: clothingText.removePlayerBottom(clone), tooltip: `These will just get in the way.`, prereq: () => !player.clothes.includes("dress") && !playerState.clothing.bottom.isOff, effect: () => { @@ -1025,7 +1026,7 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla playerState.lust++; slaveState.lust++; }, - reaction: this.reactionText.removePlayerBottom(slave), + reaction: this.reactionText.removePlayerBottom(clone), }, { link: `Take off your bra`, @@ -1042,7 +1043,7 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla }, { link: `Take off your underwear`, - desc: clothingText.removePlayerUnderwear(slave), + desc: clothingText.removePlayerUnderwear(clone), tooltip: `For easier access.`, prereq: () => playerState.clothing.underwear && playerState.clothing.bottom.isOff, effect: () => { @@ -1051,7 +1052,7 @@ App.UI.SlaveInteract.useSlave.options = function(player, slave, playerState, sla playerState.lust++; slaveState.lust++; }, - reaction: this.reactionText.removePlayerUnderwear(slave), + reaction: this.reactionText.removePlayerUnderwear(clone), }, ];