From 613ec671192490209422490bc2849dc2f54ba8e8 Mon Sep 17 00:00:00 2001 From: Svornost <11434-svornost@users.noreply.gitgud.io> Date: Tue, 2 Mar 2021 17:02:28 -0800 Subject: [PATCH] 1. Make seX a bit more flexible about where the PC is positioned, since it keeps coming up. 2. Make addPartner work on the PC in either position, and accept either a partner object or ID, instead of requiring an ID specifically. 3. Fix some misplaced parentheses in RE Arcology Inspection. --- src/events/reArcologyInspection.js | 14 ++++---- src/js/sexActsJS.js | 4 +-- src/js/utilsSlave.js | 32 +++++++++++++------ .../passage/fSlaveSlaveDickConsummate.tw | 2 +- 4 files changed, 33 insertions(+), 19 deletions(-) diff --git a/src/events/reArcologyInspection.js b/src/events/reArcologyInspection.js index 0782bea6528..39e794b36a9 100644 --- a/src/events/reArcologyInspection.js +++ b/src/events/reArcologyInspection.js @@ -249,9 +249,9 @@ App.Events.REArcologyInspection = class REArcologyInspection extends App.Events. t.push(`Both of you know, of course, that you can't actually get ${him} pregnant, but the fantasy is fun anyway.`); } if (agent.mpreg === 1) { - t.push(VCheck.Anal(agent), 4); + t.push(VCheck.Anal(agent, 4)); } else { - t.push(VCheck.Vaginal(agent), 4); + t.push(VCheck.Vaginal(agent, 4)); } } else if (canPenetrate(agent) && V.PC.vagina > 0) { t.push(`Impatient, you push ${agent.slaveName} back on the bed and slide ${his} dick into your wet pussy. ${He} begs you to let ${him} put a baby in you${V.PC.bellyPreg >= 1500 ? `, even as ${he} eagerly paws at your current pregnancy` : ""}, and over the course of the evening ${he} fills you up several times, with ${agentLover.slaveName} "helping."`); @@ -348,7 +348,7 @@ App.Events.REArcologyInspection = class REArcologyInspection extends App.Events. } } else if (agent.fetish === "buttslut") { t.push(`Impatient, you bend ${him} over the end of the bed and start by sliding ${V.PC.dick > 0 ? "your hard cock" : `a strapon you found in ${his} nightstand`} into ${his} ass.`); - t.push(VCheck.Anal(agent), 2); + t.push(VCheck.Anal(agent, 2)); } else if (agent.fetish === "boobs") { if (agent.nipples === "fuckable" && V.PC.dick > 0) { t.push(`Impatient, you push ${him} back on ${his} bed and kneel over ${him}, sliding your hard cock into ${his} soft breast, making good use of ${his} fuckable nipple.`); @@ -372,9 +372,9 @@ App.Events.REArcologyInspection = class REArcologyInspection extends App.Events. t.push(`Both of you know, of course, that you can't actually get ${him} pregnant, but the fantasy is fun anyway.`); } if (agent.mpreg === 1) { - t.push(VCheck.Anal(agent), 4); + t.push(VCheck.Anal(agent, 4)); } else { - t.push(VCheck.Vaginal(agent), 4); + t.push(VCheck.Vaginal(agent, 4)); } } else if (canPenetrate(agent) && V.PC.vagina > 0) { t.push(`Impatient, you push ${him} back on the bed and slide ${his} dick into your wet pussy. ${He} begs you to let ${him} put a baby in you, and over the course of the evening ${he} fills you up several times.`); @@ -402,9 +402,9 @@ App.Events.REArcologyInspection = class REArcologyInspection extends App.Events. if (V.PC.dick > 0) { t.push(`slides onto your hard dick.`); if (agent.vagina >= 0) { - t.push(VCheck.Vaginal(agent), 2); + t.push(VCheck.Vaginal(agent, 2)); } else { - t.push(VCheck.Anal(agent), 2); + t.push(VCheck.Anal(agent, 2)); } } else if (canPenetrate(agent) && (V.PC.vagina > 0 || V.PC.anus > 0)) { t.push(`mounts you.`); diff --git a/src/js/sexActsJS.js b/src/js/sexActsJS.js index cfa4874d5db..0cade952c25 100644 --- a/src/js/sexActsJS.js +++ b/src/js/sexActsJS.js @@ -478,7 +478,7 @@ globalThis.actX = function(slave, act, count = 1) { /** * Sex is between two. This is a handy wrapper for actX that emphasizes that. - * @param {App.Entity.SlaveState} slave1 always a slave + * @param {FC.HumanState} slave1 slave or PC * @param {FC.SlaveActs} act1 oral, anal, etc * @param {FC.HumanState | "public" | "slaves"} slave2 slave or PC or "public" * @param {FC.SlaveActs} act2 oral, anal, etc @@ -496,6 +496,6 @@ globalThis.seX = function(slave1, act1, slave2, act2, count = 1) { // someday we may track "slaves" and "assistant" } else { actX(slave2, act2, count); - addPartner(slave1, slave2.ID); + addPartner(slave1, slave2); } }; diff --git a/src/js/utilsSlave.js b/src/js/utilsSlave.js index 94f6f00481f..7c2ba4ede39 100644 --- a/src/js/utilsSlave.js +++ b/src/js/utilsSlave.js @@ -3522,8 +3522,8 @@ globalThis.randomRapeRivalryTarget = function(slave, predicate) { /** * TODO: move this into seX() once interact scenes are converted - * @param {App.Entity.SlaveState} slave - * @param {number} partner The ID of the slave's partner. + * @param {FC.HumanState} slave + * @param {FC.HumanState|number} partner The slave's partner, or the ID of the slave's partner. * * | ***ID*** | **Type** | * |---------:|:----------------------| @@ -3536,15 +3536,29 @@ globalThis.randomRapeRivalryTarget = function(slave, predicate) { * | *-9* | Futanari Sister | */ globalThis.addPartner = function(slave, partner) { + /** @returns {FC.HumanState} */ + function getPartnerState() { + if (typeof partner === "number") { + if (partner === -1) { + return V.PC; + } else if (partner > 0) { + return getSlave(partner); + } + } else if ("partners" in partner) { + return partner; + } + return null; + } + if (typeof partner === "number") { slave.partners.add(partner); - - const partnerSlave = partner > 0 ? getSlave(partner) : null; - if (partnerSlave) { - partnerSlave.partners.add(slave.ID); - } + } else if ("ID" in partner) { + slave.partners.add(partner.ID); } else { - console.trace(); - throw `Partner is not a number. Type of partner is ${typeof partner}, value is "${partner}"`; + throw new TypeError(`partner must be an object or ID, not "${partner}"`); + } + const partnerState = getPartnerState(); + if (partnerState) { + partnerState.partners.add(slave.ID); } }; diff --git a/src/npc/interaction/passage/fSlaveSlaveDickConsummate.tw b/src/npc/interaction/passage/fSlaveSlaveDickConsummate.tw index 319d6068e04..4b3669575a5 100644 --- a/src/npc/interaction/passage/fSlaveSlaveDickConsummate.tw +++ b/src/npc/interaction/passage/fSlaveSlaveDickConsummate.tw @@ -616,7 +616,7 @@ You call $slaverapistx.slaveName into the room. <br><br> <<set getSlave($AS).counter.penetrative += 1, $penetrativeTotal += 1, $slaverapistx.counter.vaginal += 1, $vaginalTotal += 1>> -<<run addPartner(getSlave($AS), $slaverapistx.ID)>> +<<run addPartner(getSlave($AS), $slaverapistx)>> /% Friendship/lust? %/ <<if ([2].includes(getSlave($AS).relationship) && getSlave($AS).relationshipTarget == $slaverapistx.ID) && ([2].includes($slaverapistx.relationship) && $slaverapistx.relationshipTarget == $AS)>> -- GitLab