From eaeb8607cb5ae6eb00c39ba423364742d1f283bf Mon Sep 17 00:00:00 2001 From: slweeb <91897291+slweeb@users.noreply.github.com> Date: Mon, 17 Jan 2022 11:11:26 -0500 Subject: [PATCH] mods can now work together --- changelog.txt | 3 ++ index.html | 109 +++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 97 insertions(+), 15 deletions(-) diff --git a/changelog.txt b/changelog.txt index fa89a58c..61e82aae 100644 --- a/changelog.txt +++ b/changelog.txt @@ -3,6 +3,9 @@ + Explosives Update + Machines Update +[Version 0.9.1] + ~ Mods can now work together (e.g. having reactions with elements from other mods, stateHighs, etc.) + [Version 0.9 - Mod Manager Update] + Mod Manager Menu + Clay Soil diff --git a/index.html b/index.html index 755dadb5..1b163c0e 100644 --- a/index.html +++ b/index.html @@ -3888,16 +3888,18 @@ if (argto.includes(",")) { var argto = argto.split(",")[Math.floor(Math.random()*argto.split(",").length)]; } - if ((newPixel.element != argto) && (argfrom == null || argfrom == newPixel.element)) { - newPixel.element = argto; - newPixel.color = pixelColorPick(newPixel); - newPixel.start = pixelTicks; - if (elements[argto].burning != true) { - newPixel.burning = false; - } - else { - newPixel.burning = true; - newPixel.burnStart = pixelTicks; + if (elements[argto]) { + if ((newPixel.element != argto) && (argfrom == null || argfrom == newPixel.element)) { + newPixel.element = argto; + newPixel.color = pixelColorPick(newPixel); + newPixel.start = pixelTicks; + if (elements[argto].burning != true) { + newPixel.burning = false; + } + else { + newPixel.burning = true; + newPixel.burnStart = pixelTicks; + } } } } @@ -3926,8 +3928,10 @@ else if (arg.includes(",")) { arg = arg.split(",")[Math.floor(Math.random()*arg.split(",").length)]; } - createPixel(arg,newCoords.x,newCoords.y); - pixelMap[newCoords.x][newCoords.y].temp = pixel.temp + if (elements[arg]) { + createPixel(arg,newCoords.x,newCoords.y); + pixelMap[newCoords.x][newCoords.y].temp = pixel.temp + } } } // Clone self @@ -3988,9 +3992,11 @@ if (arg != null && arg.includes(",")) { arg = arg.split(",")[Math.floor(Math.random()*arg.split(",").length)]; } - if (b=="LB") {leaveBehind = arg;} - else if (b=="L1") {leaveBehind1 = arg;} - else if (b=="L2") {leaveBehind2 = arg;} + if (elements[arg]) { + if (b=="LB") {leaveBehind = arg;} + else if (b=="L1") {leaveBehind1 = arg;} + else if (b=="L2") {leaveBehind2 = arg;} + } } //Change color else if (b == "CC") { @@ -5210,6 +5216,79 @@ for (var k = 0; k < b0.split(" AND ").length; k++) { if (elements[key].behavior[1][1].includes("RT")) { elements[key].rotatable = true; } + + // If the element has reactions, loop through each one (it is an object), if the value for elem1 or elem2 is not an element, remove that key + if (elements[key].reactions) { + for (var reaction in elements[key].reactions) { + if (!elements[elements[key].reactions[reaction].elem1]) { + delete elements[key].reactions[reaction].elem1; + } + if (!elements[elements[key].reactions[reaction].elem2]) { + delete elements[key].reactions[reaction].elem2; + } + } + } + + // If the element's stateHigh or stateLow is not an element, remove it and tempHigh/Low + if (elements[key].stateHigh) { + // If it's an array, do it for each item, otherwise, just do it once + if (Array.isArray(elements[key].stateHigh)) { + for (var i = 0; i < elements[key].stateHigh.length; i++) { + if (!elements[elements[key].stateHigh[i]]) { + elements[key].stateHigh.splice(i,1); + } + } + if (elements[key].stateHigh.length == 0) { + delete elements[key].stateHigh; + delete elements[key].tempHigh; + } + } + else { + if (!elements[elements[key].stateHigh]) { + delete elements[key].stateHigh; + delete elements[key].tempHigh; + } + } + } + if (elements[key].stateLow) { + if (Array.isArray(elements[key].stateLow)) { + for (var i = 0; i < elements[key].stateLow.length; i++) { + if (!elements[elements[key].stateLow[i]]) { + elements[key].stateLow.splice(i,1); + } + } + if (elements[key].stateLow.length == 0) { + delete elements[key].stateLow; + delete elements[key].tempLow; + } + } + else { + if (!elements[elements[key].stateLow]) { + delete elements[key].stateLow; + delete elements[key].tempLow; + } + } + } + // same for burnInto + if (elements[key].burnInto) { + if (Array.isArray(elements[key].burnInto)) { + for (var i = 0; i < elements[key].burnInto.length; i++) { + if (!elements[elements[key].burnInto[i]]) { + delete elements[key].burnInto[i]; + } + } + if (elements[key].burnInto.length == 0) { + delete elements[key].burnInto; + } + } + else { + if (!elements[elements[key].burnInto]) { + delete elements[key].burnInto; + } + } + } + + } // While the mouse is down, run mouseDown()