diff --git a/src/endWeek/saServant.js b/src/endWeek/saServant.js index 73b11a4b5d90dcab1bd124f1e1416dc6a352aa84..2c2ec8d7069a5df035a1bd99c2ac075e398a6176 100644 --- a/src/endWeek/saServant.js +++ b/src/endWeek/saServant.js @@ -91,8 +91,7 @@ window.saServant = function saServant(slave) { // who is she serving and why aren't they benefiting? // is the current number of servants correct to accomplish this task? // why can't the player prevent this on-assignment sex while still getting the other benefits of having a servant? - const _oral = jsRandom(5, 10); - actX(slave, "oral", _oral); + actX(slave, "oral", jsRandom(5, 10)); if (slave.relationship === -2) { t += ` ${He} does ${his} best to perfect your domesticity due to ${his} emotional bond to you.`; diff --git a/src/endWeek/saServeThePublic.js b/src/endWeek/saServeThePublic.js index 46e6925734d63445ba6147cac384c6fdaf524885..ea5bb6298b446969cbfcf342bb1654f51ad1c31f 100644 --- a/src/endWeek/saServeThePublic.js +++ b/src/endWeek/saServeThePublic.js @@ -1419,12 +1419,11 @@ window.saServeThePublic = (function saServeThePublic() { mammaryUse = Math.trunc((mammaryUse / demand) * slave.sexAmount); penetrativeUse = Math.trunc((penetrativeUse / demand) * slave.sexAmount); - actX(slave, "oral", oralUse); - actX(slave, "anal", analUse); - actX(slave, "vaginal", vaginalUse); - actX(slave, "mammary", mammaryUse); - actX(slave, "penetrative", penetrativeUse); - actX(slave, "publicUse", (oralUse + analUse + vaginalUse + mammaryUse + penetrativeUse)); + seX(slave, "oral", "public", "penetrative", oralUse); + seX(slave, "anal", "public", "penetrative", analUse); + seX(slave, "vaginal", "public", "penetrative", vaginalUse); + seX(slave, "mammary", "public", "penetrative", mammaryUse); + seX(slave, "penetrative", "public", "penetrative", penetrativeUse); cervixPump = 0; if (slave.cervixImplant === 1 || slave.cervixImplant === 3) { diff --git a/src/endWeek/saWhore.js b/src/endWeek/saWhore.js index f996c8a1bd5a79f8f97c84c1d755dca2723eb23e..bbcdf82799c596914266c0b43567974dd6a5de7f 100644 --- a/src/endWeek/saWhore.js +++ b/src/endWeek/saWhore.js @@ -1501,12 +1501,11 @@ window.saWhore = (function saWhore() { mammaryUse = Math.trunc((mammaryUse / demand) * beauty); penetrativeUse = Math.trunc((penetrativeUse / demand) * beauty); - actX(slave, "oral", oralUse); - actX(slave, "anal", analUse); - actX(slave, "vaginal", vaginalUse); - actX(slave, "mammary", mammaryUse); - actX(slave, "penetrative", penetrativeUse); - actX(slave, "publicUse", (oralUse + analUse + vaginalUse + mammaryUse + penetrativeUse)); + seX(slave, "oral", "public", "penetrative", oralUse); + seX(slave, "anal", "public", "penetrative", analUse); + seX(slave, "vaginal", "public", "penetrative", vaginalUse); + seX(slave, "mammary", "public", "penetrative", mammaryUse); + seX(slave, "penetrative", "public", "penetrative", penetrativeUse); cervixPump = 0; if (slave.cervixImplant === 1 || slave.cervixImplant === 3) { diff --git a/src/endWeek/saWorkAGloryHole.js b/src/endWeek/saWorkAGloryHole.js index d7fefd1a706696b0e006364b09a7c4273a4c695c..ec081f3da82542ecceebf933a27ca6203ea6f340 100644 --- a/src/endWeek/saWorkAGloryHole.js +++ b/src/endWeek/saWorkAGloryHole.js @@ -402,10 +402,9 @@ window.saWorkAGloryHole = (function saWorkAGloryHole() { slave.need -= ((analUse + vaginalUse) / 4); - actX(slave, "oral", oralUse); - actX(slave, "anal", analUse); - actX(slave, "vaginal", vaginalUse); - actX(slave, "publicUse", (oralUse + analUse + vaginalUse)); + seX(slave, "oral", "public", "penetrative", oralUse); + seX(slave, "anal", "public", "penetrative", analUse); + seX(slave, "vaginal", "public", "penetrative", vaginalUse); if (slave.cervixImplant === 1 || slave.cervixImplant === 3) { cervixPump += (20 * vaginalUse); diff --git a/src/js/sexActsJS.js b/src/js/sexActsJS.js index 3375204a38707d61a7f4185c72c92188403ca894..28a430801fb3b847c923f69673a8ed269eb6a147 100644 --- a/src/js/sexActsJS.js +++ b/src/js/sexActsJS.js @@ -378,59 +378,68 @@ window.SimpleSexAct = (function() { function SimpleSlaveSlaveFucking(subslave, domslave, fuckCount = 1) { let fuckTarget = 0; let r = ""; + let slave1ID; + let slave2ID; + let sex = ""; for (let j = 0; j < fuckCount; j++) { // there is a reason randomization happens inside cycle - to spread fuck around, otherwise cycle isn't even needed fuckTarget = jsRandom(1, 100); if (subslave.nipples === "fuckable" && canPenetrate(domslave) && fuckTarget > 80) { + sex = "mammary"; if (passage() === "SA serve your other slaves") { if (subslave.ID === V.slaves[V.i].ID) { - actX(V.slaves[V.i], "mammary"); - actX(domslave, "penetrative"); + slave1ID = V.slaves[V.i].ID; + slave2ID = domslave.ID; } else { - actX(subslave, "mammary"); - actX(V.slaves[V.i], "penetrative"); + slave1ID = subslave.ID; + slave2ID = V.slaves[V.i].ID; } } else { - actX(subslave, "mammary"); - actX(domslave, "penetrative"); + slave1ID = subslave.ID; + slave2ID = domslave.ID; } } else if (canDoVaginal(subslave) && subslave.vagina > 0 && canPenetrate(domslave) && fuckTarget > 33) { + sex = "vaginal"; if (passage() === "SA serve your other slaves") { if (subslave.ID === V.slaves[V.i].ID) { - actX(V.slaves[V.i], "vaginal"); - actX(domslave, "penetrative"); + slave1ID = V.slaves[V.i].ID; + slave2ID = domslave.ID; } else { - actX(subslave, "vaginal"); - actX(V.slaves[V.i], "penetrative"); + slave1ID = subslave.ID; + slave2ID = V.slaves[V.i].ID; } } else { - actX(subslave, "vaginal"); - actX(domslave, "penetrative"); + slave1ID = subslave.ID; + slave2ID = domslave.ID; } if (canImpreg(subslave, domslave)) { r += knockMeUp(subslave, 3, 0, domslave.ID, 1); } } else if (canDoAnal(subslave) && subslave.anus > 0 && canPenetrate(domslave) && fuckTarget > 10) { - // i think would impregnate from anal here even without .mpreg? same in original widget too + // i think would impregnate from anal here even without .mpreg? same in original widget too + sex = "anal"; if (canImpreg(subslave, domslave) && subslave.mpreg === 1) { r += knockMeUp(subslave, 3, 1, domslave.ID, 1); } if (passage() === "SA serve your other slaves") { if (subslave.ID === V.slaves[V.i].ID) { - actX(V.slaves[V.i], "anal"); - actX(domslave, "penetrative"); + slave1ID = V.slaves[V.i].ID; + slave2ID = domslave.ID; } else { - actX(subslave, "anal"); - actX(slave[V.i], "penetrative"); + slave1ID = subslave.ID; + slave2ID = V.slaves[V.i].ID; } } else { - actX(subslave, "anal"); - actX(domslave, "penetrative"); + slave1ID = subslave.ID; + slave2ID = domslave.ID; } } else { actX(subslave, "oral"); } + if (typeof slave1ID === Number && typeof slave2ID === Number) { + seX(V.slaves[slave1ID], sex, V.slaves[slave2ID], "penetrative"); + } } return r; } @@ -494,3 +503,23 @@ window.actX = function actX(slave, act, count = 1) { } slave.counter[act] += count; }; + +/** + * Sex is between two. This is a handy wrapper for actX that emphasizes that. + * @param {App.Entity.SlaveState} slave1 always a slave + * @param {string} act1 oral, anal, etc + * @param {App.Entity.SlaveState || string} slave2 slave or PC or "public" + * @param {string} act2 oral, anal, etc + * @param {number} count + */ +window.seX = function seX(slave1, act1, slave2, act2, count = 1) { + // Slave 1 does their normal thing + actX(slave1, act1, count); + + // Slave 2 does their normal thing. If "Slave 2" is the public, then increment the public counter for slave 1 instead. + if (slave2 === "public") { + actX(slave1, "publicUse", count); + } else { + actX(slave2, act2, count); + } +};