From bacbcdab110d951a62260c88154a275bb221d7f9 Mon Sep 17 00:00:00 2001 From: Svornost <11434-svornost@users.noreply.gitgud.io> Date: Wed, 20 Oct 2021 12:20:53 -0700 Subject: [PATCH] Don't allow a slave to be picked for RIE twice in the same week. Show RIE count details in manual event selection. --- js/003-data/gameVariableData.js | 2 ++ src/endWeek/nextWeek/nextWeek.js | 1 + src/events/randomEvent.js | 7 +++++++ src/js/utilsSlaves.js | 5 ++++- 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js index 493ef0cea96..692bf16d9da 100644 --- a/js/003-data/gameVariableData.js +++ b/js/003-data/gameVariableData.js @@ -111,6 +111,8 @@ App.Data.defaultGameStateVariables = { retainCareer: 1, RIERemaining: 0, RIEPerWeek: 1, + /** @type {number[]} */ + RIESkip: [], rulesAssistantAuto: 0, rulesAssistantMain: 1, seeAge: 1, diff --git a/src/endWeek/nextWeek/nextWeek.js b/src/endWeek/nextWeek/nextWeek.js index a3371a95011..8814ed472cb 100644 --- a/src/endWeek/nextWeek/nextWeek.js +++ b/src/endWeek/nextWeek/nextWeek.js @@ -324,6 +324,7 @@ App.EndWeek.nextWeek = function() { V.prisonCircuitIndex = 0; } + V.RIESkip = []; V.independenceDay = 1; V.coursed = 0; V.JFC.reorder = 0; diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js index 6b593264017..9968c6ce98a 100644 --- a/src/events/randomEvent.js +++ b/src/events/randomEvent.js @@ -439,6 +439,7 @@ App.Events.playRandomIndividualEvent = function() { if (V.event instanceof App.Events.BaseEvent) { // we've deserialized a saved game with an event active, or a player has picked one, so just play it immediately V.event.execute(d); + V.RIESkip.push(V.event.actors[0]); V.passageSwitchHandler = clearEvent; } else { const eligibleSlaves = getRieEligibleSlaves(); @@ -448,9 +449,14 @@ App.Events.playRandomIndividualEvent = function() { } else if (V.debugMode > 0 && V.debugModeEventSelection > 0) { V.nextButton = "Refresh"; V.nextLink = passage(); + V.RIERemaining++; // we've consumed one of our event possibilities already, but we haven't played the event yet, so put it back // show all the possible random individual events App.UI.DOM.appendNewElement("h2", d, "Random Individual Events"); + const countPara = App.UI.DOM.appendNewElement("p", d, `At most ${numberWithPluralOne(V.RIEPerWeek, "slave")} will get Random Individual Events per week, and you have ${num(V.RIERemaining)} left.`); + if (V.RIESkip.length > 0) { + countPara.append(` An event has already played for ${toSentence(V.RIESkip.map(s => SlaveFullName(getSlave(s))))}, so they are not eligible to play another.`); + } const slaveDiv = App.UI.DOM.appendNewElement("div", d, "Show events for this slave: "); const slaveDropdown = App.UI.DOM.appendNewElement("select", slaveDiv); const startingSlave = eligibleSlaves.random(); @@ -497,6 +503,7 @@ App.Events.playRandomIndividualEvent = function() { // @ts-ignore - under-defined object State.current.variables.event = V.event = event; event.execute(d); + V.RIESkip.push(event.actors[0]); V.passageSwitchHandler = clearEvent; } } diff --git a/src/js/utilsSlaves.js b/src/js/utilsSlaves.js index 5047bb64333..ff2af07ed4c 100644 --- a/src/js/utilsSlaves.js +++ b/src/js/utilsSlaves.js @@ -6,7 +6,10 @@ globalThis.fuckSlavesLength = function() { }; globalThis.getRieEligibleSlaves = function() { - return V.slaves.filter(s => assignmentVisible(s) || ["serve in the master suite", "be your Concubine", "work as a servant"].includes(s.assignment) && s.fuckdoll === 0); + return V.slaves.filter(s => s.fuckdoll === 0 && + (assignmentVisible(s) || [Job.MASTERSUITE, Job.CONCUBINE, Job.QUARTER].includes(s.assignment)) && + !V.RIESkip.includes(s.ID) + ); }; globalThis.SlaveSort = function() { -- GitLab