diff --git a/src/interaction/main/walkPast.js b/src/interaction/main/walkPast.js index 517c347277b5f70bd4121365de55e682f6b49b0a..97c9ab0b757a7821b4bbf7ac1abd6062a274adb2 100644 --- a/src/interaction/main/walkPast.js +++ b/src/interaction/main/walkPast.js @@ -42,26 +42,6 @@ window.walkPast = (function() { name = activeSlave.slaveName; if (V.familyTesting === 1 && totalRelatives(activeSlave) > 0 && ((fixed && V.target === "FRelation") || (!fixed && jsRandom(1, 100) > 80))) { - V.relation = randomRelatedSlave(activeSlave); - if (V.relation.mother === activeSlave.ID || V.relation.father === activeSlave.ID) { - V.relationType = "daughter"; - } else if (activeSlave.mother === V.relation.ID) { - V.relationType = "mother"; - } else if (activeSlave.father === V.relation.ID) { - V.relationType = "father"; - } else { - switch (areSisters(activeSlave, V.relation)) { - case 1: - V.relationType = "twin"; - break; - case 2: - V.relationType = "sister"; - break; - case 3: - V.relationType = "half-sister"; - break; - } - } flag = 110; V.partner = "relation"; } else if (V.familyTesting === 0 && activeSlave.relation !== 0 && ((fixed && V.target === "FRelation") || (!fixed && jsRandom(1, 100) > 80))) { @@ -185,11 +165,8 @@ window.walkPast = (function() { } else if (watch === "vaginaWatch" && activeSlave.chastityVagina) { output += ` If you wish to have vanilla intercourse with ${him} you must order ${him} to remove ${his} chastity belt.`; } else if (flag > 100) { - if (V.familyTesting === 1 && flag === 110) { - /* No content yet */ - } else { - output += ` <span id="walkpast"><<link "Summon them both">><<replace "#walk">><<include $target>><</replace>><</link>></span>`; - } + const setter = (flag === 110) ? `<<set $partner="${V.partner}", $relation=${V.relation}>>` : `<<set $partner="${V.partner}">>`; + output += ` <span id="walkpast"><<link "Summon them both">>${setter}<<replace "#walk">><<include $target>><</replace>><</link>></span>`; } else if (activeSlave.assignment === "stay confined") { output += ` <span id="walkpast"><<link "Have ${him} brought out of ${his} cell">><<replace "#walk">><<include $target>><</replace>><</link>></span>`; } else if (activeSlave.assignment === "work in the dairy" && V.dairyRestraintsSetting > 1) { @@ -1467,10 +1444,11 @@ window.walkPast = (function() { if (V.partner === "relation") { if (V.familyTesting === 1) { - partnerSlave = V.relation; + partnerSlave = randomRelatedSlave(activeSlave); } else { partnerSlave = getSlave(activeSlave.relationTarget); } + V.relation = partnerSlave.ID; } else { activeSlaveRel = relationshipTerm(activeSlave); partnerSlave = getSlave(activeSlave.relationshipTarget); @@ -1480,7 +1458,7 @@ window.walkPast = (function() { r += ` ${His} `; if (V.partner === "relation") { if (V.familyTesting === 1) { - r += `${V.relationType} `; + r += `${relativeTerm(V.activeSlave, partnerSlave)} `; } else { r += `${partnerSlave.relation} `; } diff --git a/src/npc/interaction/fRelation.tw b/src/npc/interaction/fRelation.tw index a83c424be19d62064efee5a341eaeaa24e39e141..f02f48bae408c9bc94aba0fccbe39658e91906af 100644 --- a/src/npc/interaction/fRelation.tw +++ b/src/npc/interaction/fRelation.tw @@ -4,32 +4,19 @@ <<if ($partner == "mother")>> <<set $partner = $slaveIndices[getSlave($AS).mother]>> - <<set _activeSlaveRel = "daughter", _partnerRel = "mother">> + <<set _activeSlaveRel = relativeTerm($slaves[$partner], getSlave($AS)), _partnerRel = relativeTerm(getSlave($AS), $slaves[$partner])>> <<elseif ($partner == "father")>> <<set $partner = $slaveIndices[getSlave($AS).father]>> - <<set _activeSlaveRel = "daughter", _partnerRel = "father">> + <<set _activeSlaveRel = relativeTerm($slaves[$partner], getSlave($AS)), _partnerRel = relativeTerm(getSlave($AS), $slaves[$partner])>> <<elseif ($partner == "daughter")>> - <<set $partner = randomAvailableDaughter(getSlave($AS))>> - <<set $partner = $slaveIndices[$partner.ID]>> - <<if getSlave($AS).ID == $slaves[$partner].father>> - <<set _activeSlaveRel = "father", _partnerRel = "daughter">> - <<elseif getSlave($AS).ID == $slaves[$partner].mother>> - <<set _activeSlaveRel = "mother", _partnerRel = "daughter">> - <</if>> + <<set $partner = $slaveIndices[randomAvailableDaughter(getSlave($AS)).ID]>> + <<set _activeSlaveRel = relativeTerm($slaves[$partner], getSlave($AS)), _partnerRel = relativeTerm(getSlave($AS), $slaves[$partner])>> <<elseif ($partner == "sister")>> - <<set $partner = randomAvailableSister(getSlave($AS))>> - <<set $partner = $slaveIndices[$partner.ID]>> - <<switch areSisters(getSlave($AS), $slaves[$partner])>> - <<case 3>> - <<set _activeSlaveRel = "half-sister", _partnerRel = "half-sister">> - <<case 2>> - <<set _activeSlaveRel = "sister", _partnerRel = "sister">> - <<case 1>> - <<set _activeSlaveRel = "twin", _partnerRel = "twin">> - <</switch>> + <<set $partner = $slaveIndices[randomAvailableSister(getSlave($AS)).ID]>> + <<set _activeSlaveRel = relativeTerm($slaves[$partner], getSlave($AS)), _partnerRel = relativeTerm(getSlave($AS), $slaves[$partner])>> <<elseif ($partner == "relation")>> - <<set $partner = $slaveIndices[getSlave($AS).relationTarget]>> - <<set _activeSlaveRel = getSlave($AS).relation, _partnerRel = $slaves[$partner].relation>> + <<set $partner = $slaveIndices[$relation]>> + <<set _activeSlaveRel = relativeTerm($slaves[$partner], getSlave($AS)), _partnerRel = relativeTerm(getSlave($AS), $slaves[$partner])>> <<else>> <<set $partner = $slaveIndices[getSlave($AS).relationshipTarget]>> <<switch getSlave($AS).relationship>> @@ -63,12 +50,12 @@ You call both <<= getSlave($AS).slaveName>> and $slaves[$partner].slaveName to y <<= getSlave($AS).slaveName>> is a lot more ready and willing for this than $slaves[$partner].slaveName, so<<if ($PC.dick == 0)>>while getting into a strap-on,<</if>> you sit $him on the couch and make $slaves[$partner].slaveName sit on $his lap, facing $him. In this position, <<= getSlave($AS).slaveName>> can reach around and spread $his _partnerRel's <<if $seeRace == 1>>$slaves[$partner].race <</if>>buttocks for _him2, controlling _him2 all the while in case _he2 has hesitations about this. $slaves[$partner].slaveName knows that _he2's trapped, and lets _his2 _activeSlaveRel hold _his2 ass wide so you can use _him2. They're face to face, and it's not hard to tell that $slaves[$partner].slaveName is glaring daggers at <<= getSlave($AS).slaveName>>. You reward <<= getSlave($AS).slaveName>> for $his obedience and punish $slaves[$partner].slaveName for _his2 resistance by forcing _him2 to suck <<= getSlave($AS).slaveName>> off while you finish using $slaves[$partner].slaveName. <<set getSlave($AS).counter.oral++, $slaves[$partner].counter.oral++, $oralTotal++>> <<= VCheck.Partner()>> -<<elseif canWalk(getSlave($AS)) && canWalk($slaves[$partner]) && (getSlave($AS).devotion > 50) && ($slaves[$partner].devotion > 20) && (hasAnyArms(getSlave($AS))) && (_activeSlaveRel == "mother" || _activeSlaveRel == "father")>> +<<elseif canWalk(getSlave($AS)) && canWalk($slaves[$partner]) && (getSlave($AS).devotion > 50) && ($slaves[$partner].devotion > 20) && (hasAnyArms(getSlave($AS))) && (["mother", "father", "sole parent"].includes(_activeSlaveRel))>> <<= getSlave($AS).slaveName>> gives you a little smile when $he <<if canHear(getSlave($AS))>>hears<<else>>learns<</if>> you wish to fuck $him and $his _daughter2 $slaves[$partner].slaveName<<if ($PC.dick == 0)>> and <<if canSee(getSlave($AS))>>sees<<else>>acknowledges<</if>> your strap-on<</if>>. On your direction, <<= getSlave($AS).slaveName>> sits on the couch. When $slaves[$partner].slaveName enters, _his2 _activeSlaveRel spreads $his arms and tells _him2 to sit on $his lap. $slaves[$partner].slaveName gets the idea and straddles $him so they're face to face. You take $slaves[$partner].slaveName from behind; _he2 gasps as _he2 feels _his2 _activeSlaveRel's hand<<if (hasBothArms($slaves[$partner]))>>s<</if>> stimulate _him2 from the front. They make out shamelessly while you take your pleasure. When you finish, <<= getSlave($AS).slaveName>> lies down on the couch so $slaves[$partner].slaveName can ride $his <<if $seeRace == 1>><<= getSlave($AS).race>> <</if>>face. As $he sucks the cum out of $his _daughter2's sopping fuckhole, $slaves[$partner].slaveName sucks you hard again. In the mood for something harder this time, you jam yourself into the older <<= getSlave($AS).slaveName>>. $slaves[$partner].slaveName gets off <<= getSlave($AS).slaveName>>'s face so _he2 can offer _himself2 for fondling and groping while you pound <<= getSlave($AS).slaveName>>. After you're done, $slaves[$partner].slaveName returns _his2 _activeSlaveRel's affection and gives $him some gentle oral as the older slave lies there exhausted. <<set getSlave($AS).counter.oral += 2, $slaves[$partner].counter.oral += 2, $oralTotal += 2>> <<= VCheck.Both()>> <<= VCheck.Partner()>> -<<elseif canWalk(getSlave($AS)) && canWalk($slaves[$partner]) && (getSlave($AS).devotion > 50) && ($slaves[$partner].devotion > 20) && (_activeSlaveRel == "daughter")>> +<<elseif canWalk(getSlave($AS)) && canWalk($slaves[$partner]) && (getSlave($AS).devotion > 50) && ($slaves[$partner].devotion > 20) && (["daughter", "son"].includes(_activeSlaveRel))>> <<= getSlave($AS).slaveName>> is enthusiastic when $he <<if canHear(getSlave($AS))>>hears<<else>>notices<</if>> you order $slaves[$partner].slaveName to come over. $His total immersion in sexual slavery has clearly uncovered a willingness to get very close to $his _partnerRel. You<<if ($PC.dick == 0)>> don a strap-on,<</if>> lie on the floor and instruct $slaves[$partner].slaveName to ride you. _He2 complies, and finds _his2 $daughter <<= getSlave($AS).slaveName>> <<if ($slaves[$partner].dick > 0)>> stroking _his2 cock while _he2 humps _his2 <<if $seeRace == 1>><<= getSlave($AS).race>> <</if>>butt up and down on your cock. @@ -78,17 +65,17 @@ You call both <<= getSlave($AS).slaveName>> and $slaves[$partner].slaveName to y Your use of $slaves[$partner].slaveName's <<if $slaves[$partner].physicalAge >= 24>>mature<<else>>surprisingly young<</if>> body is the focus. _He2 finds _himself2 caught up in a miasma of sexual pleasure and perversion, moaning and blushing as your <<if ($PC.dick == 0)>>strap-on and fingers<<else>>cock<</if>> and <<= getSlave($AS).slaveName>>'s mouth tour _his2 body. When you finish in _his2 <<if ($slaves[$partner].dick > 0)>>asshole, _his2 $daughter hastens to lavish attention on $his _partnerRel's well fucked, cum filled butt.<<else>>pussy, _his2 $daughter hastens to lavish attention on $his _partnerRel's well fucked, cum filled cunt.<</if>> <<set getSlave($AS).counter.oral += 2, $slaves[$partner].counter.oral += 2, $oralTotal += 2>> <<= VCheck.Partner()>> -<<elseif canDoVaginal(getSlave($AS)) && canDoVaginal($slaves[$partner]) && canWalk(getSlave($AS)) && canWalk($slaves[$partner]) && (getSlave($AS).devotion > 50) && ($slaves[$partner].devotion > 50) && (_activeSlaveRel == "twin")>> - <<= getSlave($AS).slaveName>> and $slaves[$partner].slaveName are such devoted sex slaves that they've long since lost any hesitations about their partnership, and generally approach sex as though their bodies were interchangeable. (This means that they almost never masturbate, for one thing, preferring to have sex with each other, instead.) Giggling and kissing each other, they eagerly kneel before your chair and give you simultaneous oral sex, making an effort to play with their symmetry. They kiss around your <<if ($PC.dick == 0)>>pussy<<else>>cock, making a complete seal around you with their lips<</if>>, one on each side. Then they jump up on your desk and press their <<if (getSlave($AS).dick > 0) && ($slaves[$partner].dick > 0)>>cocks<<elseif (getSlave($AS).dick > 0) || ($slaves[$partner].dick > 0)>>cock and pussy<<else>>pussies<</if>> against one another<<if ($PC.dick == 0)>> while you don a strap-on<</if>>, spreading their legs to offer you everything. You switch back and forth, with the twin you're not in rubbing and grinding against their <<print relativeTerm(getSlave($AS), $slaves[$partner])>>, until both of $slaves[$partner].slaveName and <<= getSlave($AS).slaveName>> are lying on the desk<<if ($PC.dick != 0)>> with cum dripping out of them<</if>>, making out tiredly. +<<elseif canDoVaginal(getSlave($AS)) && canDoVaginal($slaves[$partner]) && canWalk(getSlave($AS)) && canWalk($slaves[$partner]) && (getSlave($AS).devotion > 50) && ($slaves[$partner].devotion > 50) && (["twin brother", "twin sister"].includes(_activeSlaveRel))>> + <<= getSlave($AS).slaveName>> and $slaves[$partner].slaveName are such devoted sex slaves that they've long since lost any hesitations about their partnership, and generally approach sex as though their bodies were interchangeable. (This means that they almost never masturbate, for one thing, preferring to have sex with each other, instead.) Giggling and kissing each other, they eagerly kneel before your chair and give you simultaneous oral sex, making an effort to play with their symmetry. They kiss around your <<if ($PC.dick == 0)>>pussy<<else>>cock, making a complete seal around you with their lips<</if>>, one on each side. Then they jump up on your desk and press their <<if (getSlave($AS).dick > 0) && ($slaves[$partner].dick > 0)>>cocks<<elseif (getSlave($AS).dick > 0) || ($slaves[$partner].dick > 0)>>cock and pussy<<else>>pussies<</if>> against one another<<if ($PC.dick == 0)>> while you don a strap-on<</if>>, spreading their legs to offer you everything. You switch back and forth, with the twin you're not in rubbing and grinding against the one you are, until both of $slaves[$partner].slaveName and <<= getSlave($AS).slaveName>> are lying on the desk<<if ($PC.dick != 0)>> with cum dripping out of them<</if>>, making out tiredly. <<set $slaves[$partner].counter.oral++, getSlave($AS).counter.oral++, $oralTotal++>> <<= VCheck.Both()>> <<= VCheck.Partner()>> -<<elseif canWalk(getSlave($AS)) && canWalk($slaves[$partner]) && (getSlave($AS).devotion > 50) && ($slaves[$partner].devotion > 20) && (_activeSlaveRel == "sister" || _activeSlaveRel == "half-sister")>> - You call <<= getSlave($AS).slaveName>>'s _activeSlaveRel $slaves[$partner].slaveName in for some incestuous fun, but see no reason to wait for _him2. When _he2 arrives, it's to the <<if canSee($slaves[$partner])>>sight<<else>>scene<</if>> of <<= getSlave($AS).slaveName>> sitting on the couch with $his legs spread with you <<if (getSlave($AS).vagina > -1)>>gently fucking $his pussy<<else>>using $his asshole<</if>><<if ($PC.dick == 0)>> with a strap-on<</if>>. You pull out and order $slaves[$partner].slaveName to orally service _his2 <<print relativeTerm($slaves[$partner], getSlave($AS))>>. _He2 gets down before the spread-eagled slave $girl to get to work. After watching <<= getSlave($AS).slaveName>> enjoy the attention for a while, you move behind the busy $slaves[$partner].slaveName and pull _him2 into a good position so you can fuck _him2 while _he2 sucks. After a few thrusts, <<= getSlave($AS).slaveName>>'s eyes roll back. <<if (getSlave($AS).voice == 0) || (getSlave($AS).accent >= 3)>>$He gestures that it feels really good when you make $his <<print relativeTerm(getSlave($AS), $slaves[$partner])>> moan into $him.<<else>>"Oh <<Master>>," $he squeals, "it feel<<s>> <<s>>o good when you make _him2 moan into me!"<</if>> +<<elseif canWalk(getSlave($AS)) && canWalk($slaves[$partner]) && (getSlave($AS).devotion > 50) && ($slaves[$partner].devotion > 20) && (["sister", "brother", "half-sister", "half-brother", "twin sister", "twin brother"].includes(_activeSlaveRel))>> + You call <<= getSlave($AS).slaveName>>'s _partnerRel $slaves[$partner].slaveName in for some incestuous fun, but see no reason to wait for _him2. When _he2 arrives, it's to the <<if canSee($slaves[$partner])>>sight<<else>>scene<</if>> of <<= getSlave($AS).slaveName>> sitting on the couch with $his legs spread with you <<if (getSlave($AS).vagina > -1)>>gently fucking $his pussy<<else>>using $his asshole<</if>><<if ($PC.dick == 0)>> with a strap-on<</if>>. You pull out and order $slaves[$partner].slaveName to orally service _his2 _activeSlaveRel. _He2 gets down before the spread-eagled slave $girl to get to work. After watching <<= getSlave($AS).slaveName>> enjoy the attention for a while, you move behind the busy $slaves[$partner].slaveName and pull _him2 into a good position so you can fuck _him2 while _he2 sucks. After a few thrusts, <<= getSlave($AS).slaveName>>'s eyes roll back. <<if (getSlave($AS).voice == 0) || (getSlave($AS).accent >= 3)>>$He gestures that it feels really good when you make $his _partnerRel moan into $him.<<else>>"Oh <<Master>>," $he squeals, "it feel<<s>> <<s>>o good when you make _him2 moan into me!"<</if>> <<set $slaves[$partner].counter.oral++, getSlave($AS).counter.oral++, $oralTotal++>> <<= VCheck.Both()>> <<= VCheck.Partner()>> -<<elseif ["daughter", "father", "half-sister", "mother", "sister", "twin"].includes(_activeSlaveRel)>> +<<elseif ["daughter", "son", "father", "mother", "sole parent", "half-sister", "half-brother", "sister", "brother", "twin brother", "twin sister"].includes(_activeSlaveRel)>> Since between them they aren't able to enthusiastically perform an incestuous threesome, you simply line <<= getSlave($AS).slaveName>> and $slaves[$partner].slaveName up next to one another on the couch next to your desk,<<if ($PC.dick == 0)>> don a strap-on,<</if>> and fuck <<if $seeRace == 1>><<= getSlave($AS).race>> holes <</if>>at will. Whenever a hole begins to pall you just switch to another. <<= getSlave($AS).slaveName>> tries hard to ignore the fact that $he's getting fucked next to $his _partnerRel, and $slaves[$partner].slaveName pretends the cock getting shoved into _him2 isn't slick from _his2 _activeSlaveRel's fuckhole. <<= VCheck.Both()>> <<= VCheck.Partner()>> @@ -119,5 +106,4 @@ You call both <<= getSlave($AS).slaveName>> and $slaves[$partner].slaveName to y <</if>> <<set $partner = 0>> -<<set $relation = "">> -<<set $relationType = "">> +<<set $relation = 0>>