From a6ef8452c8f93d0b0f6d2ab58cf3ca0cf4427831 Mon Sep 17 00:00:00 2001 From: O-01-67 <68935009+O-01-67@users.noreply.github.com> Date: Fri, 2 Sep 2022 10:32:23 -0400 Subject: [PATCH] Mod with state-specific voids drain removes liquids, vent removes gases, chute removes solids... --- mods/state_voids.js | 347 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 347 insertions(+) create mode 100644 mods/state_voids.js diff --git a/mods/state_voids.js b/mods/state_voids.js new file mode 100644 index 00000000..21aba860 --- /dev/null +++ b/mods/state_voids.js @@ -0,0 +1,347 @@ +//Deletion code mostly by R74n + +elements.drain = { + color: "#888888", + behavior: behaviors.WALL, + tick: function(pixel) { + var coordsToCheck = [ + [pixel.x-1,pixel.y], + [pixel.x+1,pixel.y], + [pixel.x,pixel.y-1], + [pixel.x,pixel.y+1], + ]; + for (var i = 0; i < coordsToCheck.length; i++) { + var coord = coordsToCheck[i]; + if (!isEmpty(coord[0],coord[1],true)) { + var newPixel = pixelMap[coord[0]][coord[1]]; + if (elements[newPixel.element].state === "liquid") { + deletePixel(coord[0],coord[1]); + } + } + } + }, + category: "special", + tempHigh: 1455.5, + stateHigh: "molten_steel", + state: "solid", + density: 2000, + breakInto: ["metal_scrap"], + desc: "A drain that removes any liquid.", + hardness: 0.8, + insulate: true, + +}; + +elements.vent = { + color: "#e6e6e6", + behavior: behaviors.WALL, + tick: function(pixel) { + var coordsToCheck = [ + [pixel.x-1,pixel.y], + [pixel.x+1,pixel.y], + [pixel.x,pixel.y-1], + [pixel.x,pixel.y+1], + ]; + for (var i = 0; i < coordsToCheck.length; i++) { + var coord = coordsToCheck[i]; + if (!isEmpty(coord[0],coord[1],true)) { + var newPixel = pixelMap[coord[0]][coord[1]]; + if (elements[newPixel.element].state === "gas") { + deletePixel(coord[0],coord[1]); + } + } + } + }, + category: "special", + tempHigh: 1455.5, + stateHigh: "molten_steel", + state: "solid", + density: 2000, + breakInto: ["metal_scrap"], + desc: "A vent that removes any gas. Remarkably sussy.", + hardness: 0.8, + insulate: true, +}; elements.wall.movable = false; chuteExcludedElements = ["wall","drain","vent","chute","hole_of_miscellanea","drent","drute","vute","drolent","drolute","volute","void"]; elements.acid.ignore.push("drain"); elements.acid_gas.ignore.push("vent"); + +elements.chute = { + color: "#636363", + behavior: behaviors.WALL, + tick: function(pixel) { + var coordsToCheck = [ + [pixel.x-1,pixel.y], + [pixel.x+1,pixel.y], + [pixel.x,pixel.y-1], + [pixel.x,pixel.y+1], + ]; + for (var i = 0; i < coordsToCheck.length; i++) { + var coord = coordsToCheck[i]; + if (!isEmpty(coord[0],coord[1],true)) { + var newPixel = pixelMap[coord[0]][coord[1]]; + if (elements[newPixel.element].state === "solid" && elements[newPixel.element].movable === true && !chuteExcludedElements.includes(newPixel.element)) { + deletePixel(coord[0],coord[1]); + } + } + } + }, + category: "special", + tempHigh: 1455.5, + stateHigh: "molten_steel", + state: "solid", + density: 2000, + breakInto: ["metal_scrap"], + desc: "A chute that removes any powder.", + movable: false, + hardness: 0.8, + insulate: true, + +}; mainStateArray = ["solid","liquid","gas"]; + +elements.hole_of_miscellanea = { + color: "#69606b", + behavior: behaviors.WALL, + tick: function(pixel) { + var coordsToCheck = [ + [pixel.x-1,pixel.y], + [pixel.x+1,pixel.y], + [pixel.x,pixel.y-1], + [pixel.x,pixel.y+1], + ]; + for (var i = 0; i < coordsToCheck.length; i++) { + var coord = coordsToCheck[i]; + if (!isEmpty(coord[0],coord[1],true)) { + var newPixel = pixelMap[coord[0]][coord[1]]; + if (elements[newPixel.element].movable && !mainStateArray.includes(elements[newPixel.element].state)) { + deletePixel(coord[0],coord[1]); + } + } + } + }, + category: "special", + tempHigh: 1455.5, + stateHigh: "molten_steel", + state: "solid", + density: 2000, + breakInto: ["metal_scrap"], + desc: "A mysterious hole that removes the other states of matter.", + movable: false, + insulate: true, +}; + +elements.drent = { + color: "#B7B7B7", + behavior: behaviors.WALL, + tick: function(pixel) { + var coordsToCheck = [ + [pixel.x-1,pixel.y], + [pixel.x+1,pixel.y], + [pixel.x,pixel.y-1], + [pixel.x,pixel.y+1], + ]; + for (var i = 0; i < coordsToCheck.length; i++) { + var coord = coordsToCheck[i]; + if (!isEmpty(coord[0],coord[1],true)) { + var newPixel = pixelMap[coord[0]][coord[1]]; + if (elements[newPixel.element].state === "liquid" || elements[newPixel.element].state === "gas") { + deletePixel(coord[0],coord[1]); + } + } + } + }, + category: "special", + tempHigh: 1455.5, + stateHigh: "molten_steel", + state: "solid", + density: 2000, + breakInto: ["metal_scrap"], + desc: "A combined drain and vent that removes any liquid or gas. Slightly sussy.", + hardness: 0.8, + insulate: true, + +}; + +elements.drute = { + color: "#767676", + behavior: behaviors.WALL, + tick: function(pixel) { + var coordsToCheck = [ + [pixel.x-1,pixel.y], + [pixel.x+1,pixel.y], + [pixel.x,pixel.y-1], + [pixel.x,pixel.y+1], + ]; + for (var i = 0; i < coordsToCheck.length; i++) { + var coord = coordsToCheck[i]; + if (!isEmpty(coord[0],coord[1],true)) { + var newPixel = pixelMap[coord[0]][coord[1]]; + if (elements[newPixel.element].state === "liquid") { + deletePixel(coord[0],coord[1]); + } else if (elements[newPixel.element].state === "solid" && elements[newPixel.element].movable === true && !chuteExcludedElements.includes(newPixel.element)) { + deletePixel(coord[0],coord[1]); + } + } + } + }, + category: "special", + tempHigh: 1455.5, + stateHigh: "molten_steel", + state: "solid", + density: 2000, + breakInto: ["metal_scrap"], + desc: "A combined drain and chute that removes any liquid or powder.", + hardness: 0.8, + insulate: true, + +}; + +elements.vute = { + color: "#9d8aa1", + behavior: behaviors.WALL, + tick: function(pixel) { + var coordsToCheck = [ + [pixel.x-1,pixel.y], + [pixel.x+1,pixel.y], + [pixel.x,pixel.y-1], + [pixel.x,pixel.y+1], + ]; + for (var i = 0; i < coordsToCheck.length; i++) { + var coord = coordsToCheck[i]; + if (!isEmpty(coord[0],coord[1],true)) { + var newPixel = pixelMap[coord[0]][coord[1]]; + if (elements[newPixel.element].state === "gas") { + deletePixel(coord[0],coord[1]); + } else if (elements[newPixel.element].state === "solid" && elements[newPixel.element].movable === true && !chuteExcludedElements.includes(newPixel.element)) { + deletePixel(coord[0],coord[1]); + } + } + } + }, + category: "special", + tempHigh: 1455.5, + stateHigh: "molten_steel", + state: "solid", + density: 2000, + breakInto: ["metal_scrap"], + desc: "A vent that removes any gas. Somewhat sussy.", + hardness: 0.8, + insulate: true, +}; + +elements.drolent = { + color: "#b8afba", + behavior: behaviors.WALL, + tick: function(pixel) { + var coordsToCheck = [ + [pixel.x-1,pixel.y], + [pixel.x+1,pixel.y], + [pixel.x,pixel.y-1], + [pixel.x,pixel.y+1], + ]; + for (var i = 0; i < coordsToCheck.length; i++) { + var coord = coordsToCheck[i]; + if (!isEmpty(coord[0],coord[1],true)) { + var newPixel = pixelMap[coord[0]][coord[1]]; + if (elements[newPixel.element].state !== "solid") { + deletePixel(coord[0],coord[1]); + } + } + } + }, + category: "special", + tempHigh: 1455.5, + stateHigh: "molten_steel", + state: "solid", + density: 2000, + breakInto: ["metal_scrap"], + desc: "A combined drain, hole, and vent removes anything but powders. Slightly sussy.", + hardness: 0.8, + insulate: true, + +}; + +elements.drolute = { + color: "#786c7a", + behavior: behaviors.WALL, + tick: function(pixel) { + var coordsToCheck = [ + [pixel.x-1,pixel.y], + [pixel.x+1,pixel.y], + [pixel.x,pixel.y-1], + [pixel.x,pixel.y+1], + ]; + for (var i = 0; i < coordsToCheck.length; i++) { + var coord = coordsToCheck[i]; + if (!isEmpty(coord[0],coord[1],true)) { + var newPixel = pixelMap[coord[0]][coord[1]]; + if (elements[newPixel.element].state === "solid" && elements[newPixel.element].movable === true && !chuteExcludedElements.includes(newPixel.element)) { + deletePixel(coord[0],coord[1]); + } else { + if (elements[newPixel.element].state !== "solid" && elements[newPixel.element].state !== "gas") { + deletePixel(coord[0],coord[1]); + } + } + } + } + }, + category: "special", + tempHigh: 1455.5, + stateHigh: "molten_steel", + state: "solid", + density: 2000, + breakInto: ["metal_scrap"], + desc: "A combined drain, hole, and chute removes anything but gases.", + hardness: 0.8, + insulate: true, + +}; + +elements.volute = { + color: "#b8afba", + behavior: behaviors.WALL, + tick: function(pixel) { + var coordsToCheck = [ + [pixel.x-1,pixel.y], + [pixel.x+1,pixel.y], + [pixel.x,pixel.y-1], + [pixel.x,pixel.y+1], + ]; + for (var i = 0; i < coordsToCheck.length; i++) { + var coord = coordsToCheck[i]; + if (!isEmpty(coord[0],coord[1],true)) { + var newPixel = pixelMap[coord[0]][coord[1]]; + if (elements[newPixel.element].state === "solid" && elements[newPixel.element].movable === true && !chuteExcludedElements.includes(newPixel.element)) { + deletePixel(coord[0],coord[1]); + } else { + if (elements[newPixel.element].state !== "solid" && elements[newPixel.element].state !== "liquid") { + deletePixel(coord[0],coord[1]); + } + } + } + } + }, + category: "special", + tempHigh: 1455.5, + stateHigh: "molten_steel", + state: "solid", + density: 2000, + breakInto: ["metal_scrap"], + desc: "A combined vent, hole, and chute removes anything but liquids.", + hardness: 0.8, + insulate: true, + +}; + +//The all-combination is called void. + +if(enabledMods.includes("mods/more_breaking.js")) { + elements.drain.breakInto = ["steel_scrap"]; + elements.vent.breakInto = ["steel_scrap"]; + elements.chute.breakInto = ["steel_scrap"]; + elements.hole_of_miscellanea.breakInto = ["steel_scrap"]; +}; + +if(enabledMods.includes("mods/fey_and_more.js")) { + elements.drain.breakInto.push("magic"); + elements.vent.breakInto.push("magic"); + elements.chute.breakInto.push("magic"); + elements.hole_of_miscellanea.breakInto.push("magic"); +};