From 15c0b8a18b2a3d13dc477bf757a9f8233494a27e Mon Sep 17 00:00:00 2001 From: Svornost <11434-svornost@users.noreply.gitgud.io> Date: Tue, 16 Jun 2020 13:58:22 -0700 Subject: [PATCH] Always use assignJob/removeJob to manipulate $fighterIDs so that the Job ID Map doesn't get out of sync. --- src/endWeek/slaveAssignmentReport.js | 4 ++-- src/js/DefaultRules.js | 8 +++----- src/js/assignJS.js | 4 +++- src/uncategorized/surgeryDegradation.tw | 5 ++--- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/endWeek/slaveAssignmentReport.js b/src/endWeek/slaveAssignmentReport.js index 62721203d63..504fc7d7288 100644 --- a/src/endWeek/slaveAssignmentReport.js +++ b/src/endWeek/slaveAssignmentReport.js @@ -789,11 +789,11 @@ App.EndWeek.slaveAssignmentReport = function() { if (!canWalk(slave)) { _printSlaveUnassignedNote(slave, "is no longer independently mobile", `and cannot fight any more. ${getPronouns(slave).he} has been removed from ${App.Entity.facilities.pit.name} roster`); - V.fighterIDs.delete(slave.ID); + removeJob(slave, Job.PIT, true); } else if (!canHold(slave)) { _printSlaveUnassignedNote(slave, "is no longer able to strike", `and cannot fight any more. ${getPronouns(slave).he} has been removed from ${App.Entity.facilities.pit.name} roster`); - V.fighterIDs.delete(slave.ID); + removeJob(slave, Job.PIT, true); } } } diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js index 03933f6408e..64098f25463 100644 --- a/src/js/DefaultRules.js +++ b/src/js/DefaultRules.js @@ -1552,16 +1552,14 @@ globalThis.DefaultRules = (function() { if (rule.pitRules !== undefined && rule.pitRules !== null) { if (V.pit > 0) { if (rule.pitRules === 0) { - V.fighterIDs = V.fighterIDs.filter(e => e !== slave.ID); + removeJob(slave, Job.PIT, true); r += `<br>${slave.slaveName} has been removed from the pit.`; } else { if (App.Entity.facilities.pit.job().checkRequirements(slave).length !== 0) { - V.fighterIDs = V.fighterIDs.filter(e => e !== slave.ID); + removeJob(slave, Job.PIT, true); r += `<br>${slave.slaveName} is not eligible to fight.`; } else { - if (!V.fighterIDs.includes(slave.ID)) { - V.fighterIDs.push(slave.ID); - } + assignJob(slave, Job.PIT); r += `<br>${slave.slaveName} has been automatically assigned to fight in the pit.`; } } diff --git a/src/js/assignJS.js b/src/js/assignJS.js index 130bd855d40..3572b229856 100644 --- a/src/js/assignJS.js +++ b/src/js/assignJS.js @@ -12,7 +12,9 @@ globalThis.assignJob = function(slave, job) { // handle non-exclusive pseudo-assignments as special cases if (job === Job.PIT) { - V.fighterIDs.push(slave.ID); + if (!V.fighterIDs.includes(slave.ID)) { + V.fighterIDs.push(slave.ID); + } V.JobIDMap[Job.PIT].add(slave.ID); return r; } else if (job === Job.LURCHER) { diff --git a/src/uncategorized/surgeryDegradation.tw b/src/uncategorized/surgeryDegradation.tw index d84b1445024..b05da6946cf 100644 --- a/src/uncategorized/surgeryDegradation.tw +++ b/src/uncategorized/surgeryDegradation.tw @@ -110,9 +110,8 @@ <<switch $surgeryType>> <<case "amp" "amp1" "ampA2" "ampL2" "blind" "fuckdoll" "mindbreak" "PLimb interface1" "PLimb interface2" "PLimb interface3" "remove eyes" "removeLimbs">> /* unassign if necessary */ - <<set _ID = getSlave($AS).ID>> - <<if _ID == $LurcherID>><<set $LurcherID = 0>><</if>> - <<run $fighterIDs.deleteWith((f) => f === _ID)>> + <<= removeJob(getSlave($AS), Job.LURCHER, true)>> + <<= removeJob(getSlave($AS), Job.PIT, true)>> <<= removeJob(getSlave($AS), getSlave($AS).assignment)>> <</switch>> -- GitLab