diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js index a447a6695175cfcca8476cd7a6429ccee18d22f9..026c65e29eced2edfa9a37d88c829d697530cc61 100644 --- a/js/003-data/gameVariableData.js +++ b/js/003-data/gameVariableData.js @@ -588,7 +588,6 @@ App.Data.resetOnNGPlus = { incubator: 0, incubatorBulkRelease: 0, incubatorOrgans: [], - incubatorOldID: 0, incubatorUpgradeSpeed: 5, incubatorUpgradeWeight: 0, incubatorUpgradeMuscles: 0, diff --git a/src/facilities/incubator/incubatorInteract.js b/src/facilities/incubator/incubatorInteract.js index 1469610c2f7442d99c92362b963d14807dcca334..a56943dfd9a528dbbde10c27cf181e20deecbb88 100644 --- a/src/facilities/incubator/incubatorInteract.js +++ b/src/facilities/incubator/incubatorInteract.js @@ -951,7 +951,6 @@ App.UI.incubator = function() { App.UI.DOM.link( "Retrieve immediately", () => { - V.incubatorOldID = V.tanks[i].ID; V.readySlave = V.tanks[i]; V.tanks.splice(i, 1); }, @@ -1673,35 +1672,24 @@ App.UI.incubator = function() { } function release() { + const multiple = (V.incubatorBulkRelease === 1) && V.tanks.filter(t => t.growTime <= 0).length > 1; + + const singleRelease = () => { + const baby = V.tanks.find(t => t.growTime <= 0); + V.tanks.delete(baby); + V.readySlave = baby; + }; + + const multipleRelease = () => { + V.newSlavePool = V.tanks.deleteWith(t => t.growTime <= 0); + }; + if (V.readySlaves === 1) { - if (V.incubatorBulkRelease === 1) { - V.newSlavePool = []; - for (let _inc = 0; _inc < V.tanks.length; _inc++) { - if (V.tanks[_inc].growTime <= 0) { - V.incubatorOldID = V.tanks[_inc].ID; - /* single slave case */ - const _tempObject = {object: V.tanks[_inc], ID: V.tanks[_inc].ID}; - V.newSlavePool.push(clone(_tempObject)); - V.tanks.splice(_inc, 1); - _inc--; - } - } - if (V.newSlavePool.length === 1) { - V.readySlave = V.newSlavePool[0].object; - V.newSlavePool = 0; - return App.UI.DOM.passageLink(`Release ready tank`, "Incubator Retrieval Workaround"); - } + if (multiple) { + return App.UI.DOM.passageLink(`Release ready tanks`, "Incubator Retrieval Workaround", multipleRelease); } else { - for (let _inc = 0; _inc < incubatorSlaves; _inc++) { - if (V.tanks[_inc].growTime <= 0) { - V.incubatorOldID = V.tanks[_inc].ID; - V.readySlave = V.tanks[_inc]; - V.tanks.splice(_inc, 1); - break; - } - } + return App.UI.DOM.passageLink(`Release ready tank`, "Incubator Retrieval Workaround", singleRelease); } - return App.UI.DOM.passageLink(`Release ready tanks`, "Incubator Retrieval Workaround"); } return new DocumentFragment(); } @@ -1753,8 +1741,8 @@ App.UI.incubator = function() { /** * * @param {string} id - * @param {HTMLElement} element - * @returns {HTMLElement} + * @param {Node} element + * @returns {HTMLSpanElement} */ function makeSpanIded(id, element) { const span = document.createElement("span"); diff --git a/src/facilities/incubator/incubatorRetrievalWorkaround.tw b/src/facilities/incubator/incubatorRetrievalWorkaround.tw index cb888d4f58ab71df898d6f576e4ad3c6c794465a..f89e5c3590663bb5c82b66ea1882a1c46b7759aa 100644 --- a/src/facilities/incubator/incubatorRetrievalWorkaround.tw +++ b/src/facilities/incubator/incubatorRetrievalWorkaround.tw @@ -15,7 +15,7 @@ <<if $readySlave.tankBaby != 3>> <<if $incubatorOrgans.length > 0>> <<for _irw = 0; _irw < $incubatorOrgans.length; _irw++>> - <<if $incubatorOrgans[_irw].ID == $incubatorOldID>> + <<if $incubatorOrgans[_irw].ID == $readySlave.ID>> <<set _newOrgan = {type: $incubatorOrgans[_irw].type, weeksToCompletion: $incubatorOrgans[_irw].weeksToCompletion, ID: $activeSlave.ID}>> <<if _newOrgan.weeksToCompletion <= 0>> <<set $completedOrgans.push($incubatorOrgans[_irw])>> @@ -47,7 +47,7 @@ <<for _irw = 0; _irw < $newSlavePool.length; _irw++>> <br><br> - <<set _newSlave = $newSlavePool[_irw].object>> + <<set _newSlave = $newSlavePool[_irw]>> Name: <<= SlaveFullName(_newSlave)>> <br>Mother: