diff --git a/mods/conveyance.js b/mods/conveyance.js new file mode 100644 index 00000000..e4a51dde --- /dev/null +++ b/mods/conveyance.js @@ -0,0 +1,95 @@ +// Sandboxels: Conveyance Mod, v1.0 +// Author: MelecieDiancie + +elements.r_conveyor = { + name: "Right Conveyor", + color: "#2a2a36", + colorOn: "#3b3b4a", + state: "solid", + category: "machines", + conduct: 1, + tick: function(pixel) { + doHeat(pixel) + doBurning(pixel) + doElectricity(pixel) + + let pixelAbove = pixelMap[pixel.x][pixel.y-1] + + if (!isEmpty(pixel.x, pixel.y-1) && pixel.charge > 0.5 && elements[pixelAbove.element].movable == true ) { + tryMove(pixelAbove,pixel.x+1,pixel.y-1) + } + } +}; +elements.l_conveyor = { + name: "Left Conveyor", + color: "#2a2a36", + colorOn: "#3b3b4a", + state: "solid", + category: "machines", + conduct: 1, + tick: function(pixel) { + doHeat(pixel) + doBurning(pixel) + doElectricity(pixel) + + let pixelAbove = pixelMap[pixel.x][pixel.y-1] + + if (!isEmpty(pixel.x, pixel.y-1) && pixel.charge > 0.5 && elements[pixelAbove.element].movable == true ) { + tryMove(pixelAbove,pixel.x-1,pixel.y-1) + } + } +}; +elements.r_autoconveyor = { + name: "Right Autoconveyor", + color: "#3b3b4a", + state: "solid", + category: "machines", + tick: function(pixel) { + doHeat(pixel) + doBurning(pixel) + doElectricity(pixel) + + let pixelAbove = pixelMap[pixel.x][pixel.y-1] + + if (!isEmpty(pixel.x, pixel.y-1) && elements[pixelAbove.element].movable == true ) { + tryMove(pixelAbove,pixel.x+1,pixel.y-1) + } + } +}; +elements.l_autoconveyor = { + name: "Left Autoconveyor", + color: "#3b3b4a", + state: "solid", + category: "machines", + tick: function(pixel) { + doHeat(pixel) + doBurning(pixel) + doElectricity(pixel) + + let pixelAbove = pixelMap[pixel.x][pixel.y-1] + + if (!isEmpty(pixel.x, pixel.y-1) && elements[pixelAbove.element].movable == true ) { + tryMove(pixelAbove,pixel.x-1,pixel.y-1) + } + } +}; + +runAfterLoad(function() { + for (element in elements) { + let behavior = elements[element].behavior + let movable = false + for (line in behavior) { // check if element has a M1 or M2 in their behavior + line = behavior[line] + if (line.includes("M1") || line.includes("M2")) { + movable = true + } + else { + } + } + + if (movable != false) { // if element has M1 or M2, set movable to true, makes them movable by conveyors + elements[element].movable = true + } + + } +});