diff --git a/src/Mods/DinnerParty.js b/src/Mods/DinnerParty.js index aae43738851f3f958b3909c728b4809042ae67ac..8289687b96e4276d0715ca09ec750375270afdfa 100644 --- a/src/Mods/DinnerParty.js +++ b/src/Mods/DinnerParty.js @@ -135,6 +135,153 @@ App.Mods.DinnerParty.Execution = function() { App.Events.addNode(t, [`You have earned the 20 stars required for the title of`, App.UI.DOM.makeElement("span", `${V.PC.title > 0 ? 'Master' : 'Mistress'} of The Culinary Arts.`, ["yellow"])], "p"); // V.MOD_DinnerPartyTitleAchievement = 1; } + + App.Events.addNode(t, [], "p"); + // Clean up and slaves reactions + App.Events.addNode(t, ["When the last of your guests has stumbled drunkenly out your door, your slaves begin the daunting task of cleanup."], "div"); + for (const aliveSlave of V.slaves.filter(s => s.fetish !== Fetish.MINDBROKEN && s.devotion < 50)) { + let relation; + let feeling; + const {his3, sister3, daughter3, He3} = getPronouns(aliveSlave).appendSuffix("3"); + if (slave.mother === aliveSlave.ID || slave.father === aliveSlave.ID) { + relation = `${daughter3}`; + feeling = "distraught"; + aliveSlave.devotion -= (slave.mother === aliveSlave.ID ? 20 : 10); + aliveSlave.trust -= (slave.mother === aliveSlave.ID ? 20 : 10); + } + if (slave.ID === aliveSlave.father || slave.ID === aliveSlave.mother) { + relation = (slave.ID === aliveSlave.father ? "father" : "mother"); + feeling = "grieved"; + aliveSlave.devotion -= (slave.ID === aliveSlave.father ? 10 : 20); + aliveSlave.trust -= (slave.ID === aliveSlave.father ? 10 : 20); + } + switch (areSisters(slave, aliveSlave)) { + case 1: + relation = "twin"; + feeling = "devastated"; + aliveSlave.devotion -= 30; + aliveSlave.trust -= 30; + break; + case 2: + relation = `${sister3}`; + feeling = "grieved"; + aliveSlave.devotion -= 20; + aliveSlave.trust -= 20; + break; + case 3: + relation = `half-${sister3}`; + feeling = "disheartened"; + aliveSlave.devotion -= 10; + aliveSlave.trust -= 10; + break; + } + if (relation) { + App.Events.addNode(t, [`${aliveSlave.slaveName} is`, App.UI.DOM.makeElement("span", feeling, ["mediumorchid"]), `that you ate ${his3} ${relation} and also`, App.UI.DOM.makeElement("span", "fears", ["gold"]), `that ${his3} turn will be next.`], "div"); + } + } + + for (const aliveSlave of V.slaves.filter(s => s.fetish !== Fetish.MINDBROKEN && s.devotion >= 85)) { + let relation; + let feeling; + const {his3, sister3, daughter3, He3} = getPronouns(aliveSlave).appendSuffix("3"); + if (slave.mother === aliveSlave.ID || slave.father === aliveSlave.ID) { + relation = `${daughter3}`; + feeling = "honored"; + aliveSlave.devotion += (slave.mother === aliveSlave.ID ? 20 : 10); + aliveSlave.trust += (slave.mother === aliveSlave.ID ? 20 : 10); + } + if (slave.ID === aliveSlave.father || slave.ID === aliveSlave.mother) { + relation = (slave.ID === aliveSlave.father ? "father" : "mother"); + feeling = "honored"; + aliveSlave.devotion += (slave.ID === aliveSlave.father ? 10 : 20); + aliveSlave.trust += (slave.ID === aliveSlave.father ? 10 : 20); + } + switch (areSisters(slave, aliveSlave)) { + case 1: + relation = "twin"; + feeling = "honored"; + aliveSlave.devotion += 30; + aliveSlave.trust += 30; + break; + case 2: + relation = `${sister3}`; + feeling = "honored"; + aliveSlave.devotion += 20; + aliveSlave.trust += 20; + break; + case 3: + relation = `half-${sister3}`; + feeling = "honored"; + aliveSlave.devotion += 10; + aliveSlave.trust += 10; + break; + } + if (relation) { + App.Events.addNode(t, [`${aliveSlave.slaveName} is your faithful slut she's`, App.UI.DOM.makeElement("span", feeling, ["hotpink"]), `that you ate ${his3} ${relation} and also`, App.UI.DOM.makeElement("span", "pray", ["mediumaquamarine"]), `that ${his3} turn be next to prove her devotion.`], "div"); + } + } + + let aliveSlave = V.slaves.find(s => s.ID === slave.relationshipTarget && s.fetish !== Fetish.MINDBROKEN); + if (slave.relationship !== 0 && aliveSlave) { + const {his3} = getPronouns(aliveSlave).appendSuffix("3"); + App.Events.addNode(t, [`${aliveSlave.slaveName} is`, App.UI.DOM.makeElement("span", "distraught", ["mediumorchid"]), `that you ate ${his3} best source of comfort and companionship in a life of bondage.`], "div"); + aliveSlave.devotion -= aliveSlave.relationship * 5; + aliveSlave.devotion -= 20; + } + + aliveSlave = V.slaves.find(s => s.ID === slave.rivalryTarget && s.fetish !== Fetish.MINDBROKEN); + if (slave.rivalry !== 0 && aliveSlave) { + const {his3, He3} = getPronouns(aliveSlave).appendSuffix("3"); + App.Events.addNode(t, [`${aliveSlave.slaveName} is`, App.UI.DOM.makeElement("span", "pleased", ["hotpink"]), `that ${He3} won't have to see ${his3} rival any more.`], "div"); + aliveSlave.devotion += aliveSlave.rivalry * 5; + } + + r = []; + r.push(`The slaves who do not already worship you`, App.UI.DOM.makeElement("span", "resent", ["mediumorchid"]), "your monstrous appetite and", App.UI.DOM.makeElement("span", "fear", ["mediumaquamarine"]), "a similar fate awaits them."); + r.push(`The fat slaves are`, App.UI.DOM.makeElement("span", "worried", ["gold"]), "they are being fattened for consumption."); + r.push(`But your worshipful chattel are`, App.UI.DOM.makeElement("span", "pleased", ["hotpink"]), "that you could find a use for them even in death and", App.UI.DOM.makeElement("span", "hope", ["mediumaquamarine"]), "a similar fate awaits them."); + App.Events.addNode(t, r, "p"); + for (const aliveSlave of V.slaves.filter(s => s.fetish !== Fetish.MINDBROKEN && s.devotion < 50)) { + aliveSlave.devotion -= 5; + aliveSlave.trust -= (aliveSlave.diet === "fattening" || aliveSlave.weight > 10 ? 10 : 5); + } + + for (const aliveSlave of V.slaves.filter(s => s.fetish !== Fetish.MINDBROKEN && s.devotion >= 85)) { + aliveSlave.devotion += 5; + aliveSlave.trust += 5; + } + + if (isShelterSlave(slave)) { + V.shelterAbuse++; + } + removeSlave(slave); + /* + if (generateEnemies === 1) { + V.MOD_enemyList = V.MOD_enemyList || []; + for (let i = 0; i < 6; i++) { + const pram = {minAge: 38, maxAge: 44, ageOverridesPedoMode: 1, disableDisability: 1}; + slave = GenerateNewSlave(V.seeDicks === 0 ? "XX" : "XY", pram); + slave.devotion = -20; + slave.trust = -2; + slave.oldDevotion = -20; + slave.origin = "$He was once an arcology owner like yourself, who made the mistake of insulting you."; + slave.career = "a slave"; + slave.prestige = 3; + slave.prestigeDesc = "You stormed $his arcology, killed $his guards, and enslaved $him in revenge for insulting you at a dinner party."; + setHealth(_slave, 20, random(5, 15), 0, 0, 0); + slave.dick = 5; + slave.balls = 5; + slave.intelligenceImplant = 1; + V.MOD_enemy = {leader: 0, numSlave: 0, slaveTotalHP: 0, numDrone: 0, droneTotalHP: 0, numMerc: 0, mercTotalHP: 0, weekCreated: 0, enemyIndex: -1, hostility: 0}; + V.MOD_enemy.leader = _slave; + V.MOD_enemy.weekCreated = V.week; + V.MOD_enemy.numSlave = random(Math.trunc(V.slaves.length * 0.7), Math.trunc(V.slaves.length * 1.3)); + V.MOD_enemy.numDrone = random(25, 75); + V.MOD_enemy.numMerc = random(10, 60); + V.MOD_enemyList.push(V.MOD_enemy); + } + } + */ } else { // failed evening r.push(`With most of your dishes earning a poor rating, your guests are`, App.UI.DOM.makeElement("span", "dissatisfied.", ["red"])); r.push(`They take out their frustrations on your slaves. Your slaves are being fucked roughly and abused. Cries of pain and pleads of mercy echoes through your dining hall. You decide to allow the abuse to continue as you do not want to antagonize your guests further. You watch with a forced smile as your favorite slaves are being slapped, whipped, choked and burned with cigarettes.`); @@ -199,7 +346,7 @@ App.Mods.DinnerParty.Execution = function() { App.Events.addNode(t, [], "p"); // Clean up and slaves reactions App.Events.addNode(t, ["When the last of your guests has stumbled drunkenly out your door, your slaves begin the daunting task of cleanup."], "div"); - for (const aliveSlave of V.slaves) { + for (const aliveSlave of V.slaves.filter(s => s.fetish !== Fetish.MINDBROKEN && s.devotion < 50)) { let relation; let feeling; const {his3, sister3, daughter3, He3} = getPronouns(aliveSlave).appendSuffix("3"); @@ -236,7 +383,48 @@ App.Mods.DinnerParty.Execution = function() { break; } if (relation) { - App.Events.addNode(t, [`${aliveSlave.slaveName} is`, App.UI.DOM.makeElement("span", feeling, ["mediumorchid"]), `that you ate ${his3} ${relation} and also`, App.UI.DOM.makeElement("span", "fears", ["gold"]), `that ${He3} will be next.`], "div"); + App.Events.addNode(t, [`${aliveSlave.slaveName} is`, App.UI.DOM.makeElement("span", feeling, ["mediumorchid"]), `that you ate ${his3} ${relation} and also`, App.UI.DOM.makeElement("span", "fears", ["gold"]), `that ${his3} turn will be next.`], "div"); + } + } + + for (const aliveSlave of V.slaves.filter(s => s.fetish !== Fetish.MINDBROKEN && s.devotion >= 85)) { + let relation; + let feeling; + const {his3, sister3, daughter3, He3} = getPronouns(aliveSlave).appendSuffix("3"); + if (slave.mother === aliveSlave.ID || slave.father === aliveSlave.ID) { + relation = `${daughter3}`; + feeling = "honored"; + aliveSlave.devotion += (slave.mother === aliveSlave.ID ? 20 : 10); + aliveSlave.trust += (slave.mother === aliveSlave.ID ? 20 : 10); + } + if (slave.ID === aliveSlave.father || slave.ID === aliveSlave.mother) { + relation = (slave.ID === aliveSlave.father ? "father" : "mother"); + feeling = "honored"; + aliveSlave.devotion += (slave.ID === aliveSlave.father ? 10 : 20); + aliveSlave.trust += (slave.ID === aliveSlave.father ? 10 : 20); + } + switch (areSisters(slave, aliveSlave)) { + case 1: + relation = "twin"; + feeling = "honored"; + aliveSlave.devotion += 30; + aliveSlave.trust += 30; + break; + case 2: + relation = `${sister3}`; + feeling = "honored"; + aliveSlave.devotion += 20; + aliveSlave.trust += 20; + break; + case 3: + relation = `half-${sister3}`; + feeling = "honored"; + aliveSlave.devotion += 10; + aliveSlave.trust += 10; + break; + } + if (relation) { + App.Events.addNode(t, [`${aliveSlave.slaveName} is your faithful slut she's`, App.UI.DOM.makeElement("span", feeling, ["hotpink"]), `that you ate ${his3} ${relation} and also`, App.UI.DOM.makeElement("span", "pray", ["mediumaquamarine"]), `that ${his3} turn be next to prove her devotion.`], "div"); } } @@ -257,12 +445,18 @@ App.Mods.DinnerParty.Execution = function() { r = []; r.push(`The slaves who do not already worship you`, App.UI.DOM.makeElement("span", "resent", ["mediumorchid"]), "your monstrous appetite and", App.UI.DOM.makeElement("span", "fear", ["mediumaquamarine"]), "a similar fate awaits them."); - r.push(`The fat slaves are`, App.UI.DOM.makeElement("span", "worried", ["mediumaquamarine"]), "they are being fattened for consumption."); + r.push(`The fat slaves are`, App.UI.DOM.makeElement("span", "worried", ["gold"]), "they are being fattened for consumption."); + r.push(`But your worshipful chattel are`, App.UI.DOM.makeElement("span", "pleased", ["hotpink"]), "that you could find a use for them even in death and", App.UI.DOM.makeElement("span", "hope", ["mediumaquamarine"]), "a similar fate awaits them."); App.Events.addNode(t, r, "p"); - for (const aliveSlave of V.slaves.filter(s => s.fetish !== Fetish.MINDBROKEN && s.devotion > 20)) { + for (const aliveSlave of V.slaves.filter(s => s.fetish !== Fetish.MINDBROKEN && s.devotion < 50)) { aliveSlave.devotion -= 5; aliveSlave.trust -= (aliveSlave.diet === "fattening" || aliveSlave.weight > 10 ? 10 : 5); } + + for (const aliveSlave of V.slaves.filter(s => s.fetish !== Fetish.MINDBROKEN && s.devotion >= 85)) { + aliveSlave.devotion += 5; + aliveSlave.trust += 5; + } if (isShelterSlave(slave)) { V.shelterAbuse++; @@ -359,6 +553,11 @@ App.Mods.DinnerParty.Execution = function() { } else if (slave.clit >= 1) { r.push(`${His} large clit sticking out of the camel toe makes this dish aesthetically pleasing.`); dishRating -= 0.5; + } else if (slave.dick >= 5) { + r.push(`${His} large cock head cut in two and positioned on each side of the camel toe makes it the cherry on top for this dish.`); + } else if (slave.dick < 5) { + r.push(`${His} tiny cock head cut in two and positioned on each side of the camel toe makes this dish aesthetically pleasing.`); + dishRating -= 0.5; } else { r.push(`${His} small clit is hiding inside of the camel toe. It does not add to the scheme of this dish.`); dishRating -= 2;