sandboxels/mods/drills.js

605 lines
14 KiB
JavaScript

/* Made by: NecroticPhantom
With help from: voidapex11 */
// For change log: "+" = addition, "-" = removal and "~" = change. L, R, U, D corresponds to LEFT, RIGHT, UP and DOWN
/*
===CHANGE LOG===
Version: 1.0.0 (Drills.js)
@Necrotic_Phantom & @voidapex11
+ steel drill L, R, U & D
+ steel drill missile L, R, U & D
+ diamond drill L, R, U & D
+ diamond drill missile L, R, U & D
+ void drill L, R, U & D
+ void drill missile L, R, U & D
+ drills.js info (drills_info) element to 'mods' category
~ fixed steel/diamond/void drill R & steel/diamond/void drill missile R crashing upon border collision
~ made steel/diamond/void drill missile L, R, U & D explode upon border contact
~ committed
Version: 1.0.1
@NecroticPhantom
~ fixed steel/diamond/void drill L, R, U & D + steel/diamond/void drill missile L, R, U & D not breaking pixels with no listed hardness
*/
drills_mod_desc_Colour = "#000000"
steel_drill_Colour = "#71797e"
steel_drill_missile_Colour = ["#71797e", "#ff0000"];
diamond_drill_Colour = "#03fcec"
diamond_drill_missile_Colour = ["#03fcec", "#ff0000"];
void_drill_Colour = "#262626"
void_drill_missile_Colour = ["#262626", "#ff0000"];
behaviors.SELFDELETE = [
"XX|XX|XX",
"XX|DL|XX",
"XX|XX|XX",
];
elements.drills_info = {
color: drills_mod_desc_Colour,
name: "drills.js_info",
category: "Mods",
behavior: behaviors.SELFDELETE,
maxSize: 1,
tool: function(pixel) {},
onSelect: function(pixel) {
let info1stMod = "The drills.js mod adds different kinds of drills to a new 'drills' category.\n\nMod made by: Necrotic_Phantom. \n With help from: voidapex11."
alert(info1stMod)
return
},
};
steel_drill_function = function(pixel, dif_x, dif_y) {
dif_x = dif_x-pixel.x
dif_y = dif_y-pixel.y
if (!outOfBounds(pixel.x+dif_x,pixel.y+dif_y)) {
pxl = pixelMap[pixel.x+dif_x][pixel.y+dif_y]
if (!isEmpty(pixel.x+dif_x,pixel.y+dif_y)) {
if (elements[pxl.element].hardness <= 0.8) {
delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
}
else if (elements[pxl.element].hardness == undefined) {
delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
};
};
tryMove(pixel,pixel.x+dif_x,pixel.y+dif_y);
};
doDefaults(pixel);
}
elements.steel_drill_LEFT = {
color: steel_drill_Colour,
tick: function(pixel) {
steel_drill_function(pixel,pixel.x-1,pixel.y);
},
category: "Drills",
breakInto: ["metal_scrap", "steel", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_steel", "molten_iron", "molten_tin"],
density: 10000,
hardness: 0.8,
conduct: 1,
state: "solid",
}
elements.steel_drill_RIGHT = {
color: steel_drill_Colour,
tick: function(pixel) {
steel_drill_function(pixel,pixel.x+1,pixel.y);
},
category: "Drills",
breakInto: ["metal_scrap", "steel", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_aluminum", "molten_steel", "molten_iron", "molten_tin"],
density: 10000,
hardness: 0.8,
conduct: 1,
state: "solid",
}
elements.steel_drill_UP = {
color: steel_drill_Colour,
tick: function(pixel) {
steel_drill_function(pixel,pixel.x,pixel.y-1);
},
category: "Drills",
breakInto: ["metal_scrap", "steel", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_aluminum", "molten_steel", "molten_iron", "molten_tin"],
density: 10000,
hardness: 0.8,
conduct: 1,
state: "solid",
}
elements.steel_drill_DOWN = {
color: steel_drill_Colour,
tick: function(pixel) {
steel_drill_function(pixel,pixel.x,pixel.y+1);
},
category: "Drills",
breakInto: ["metal_scrap", "steel", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_aluminum", "molten_steel", "molten_iron", "molten_tin"],
density: 10000,
hardness: 0.8,
conduct: 1,
state: "solid",
}
steel_drill_missile_function = function(pixel, dif_x, dif_y) {
dif_x = dif_x-pixel.x
dif_y = dif_y-pixel.y
if (pixel.die <= 0) {
deletePixel(pixel.x, pixel.y)
explodeAt(pixel.x, pixel.y, 15);
return true
};
if (!outOfBounds(pixel.x+dif_x,pixel.y+dif_y)) {
pxl = pixelMap[pixel.x+dif_x][pixel.y+dif_y]
if (!isEmpty(pixel.x+dif_x,pixel.y+dif_y)) {
pixel.primed = true
if (elements[pxl.element].hardness <= 0.8) {
delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
}
else if (elements[pxl.element].hardness == undefined) {
delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
};
}
else if (pixel.primed) {
pixel.die--
return true
};
tryMove(pixel,pixel.x+dif_x,pixel.y+dif_y);
}
else if (outOfBounds(pixel.x+dif_x, pixel.y+dif_y)) {
deletePixel(pixel.x, pixel.y)
explodeAt(pixel.x, pixel.y, 15);
};
doDefaults(pixel);
}
elements.steel_drill_missile_LEFT = {
color: steel_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
steel_drill_missile_function(pixel,pixel.x-1,pixel.y);
},
category: "Drills",
density: 10000,
hardness: 0.8,
conduct: 1,
state: "solid",
maxSize: 1,
}
elements.steel_drill_missile_RIGHT = {
color: steel_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
steel_drill_missile_function(pixel,pixel.x+1,pixel.y);
},
category: "Drills",
density: 10000,
hardness: 0.8,
conduct: 1,
state: "solid",
maxSize: 1,
}
elements.steel_drill_missile_UP = {
color: steel_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
steel_drill_missile_function(pixel,pixel.x,pixel.y-1);
},
category: "Drills",
density: 10000,
hardness: 0.8,
conduct: 1,
state: "solid",
maxSize: 1,
}
elements.steel_drill_missile_DOWN = {
color: steel_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
steel_drill_missile_function(pixel,pixel.x,pixel.y+1);
},
category: "Drills",
density: 10000,
hardness: 0.8,
conduct: 1,
state: "solid",
maxSize: 1,
}
diamond_drill_function = function(pixel, dif_x, dif_y) {
dif_x = dif_x-pixel.x
dif_y = dif_y-pixel.y
if (!outOfBounds(pixel.x+dif_x,pixel.y+dif_y)) {
pxl = pixelMap[pixel.x+dif_x][pixel.y+dif_y]
if (!isEmpty(pixel.x+dif_x,pixel.y+dif_y)) {
if (elements[pxl.element].hardness <= 0.99) {
delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
}
else if (elements[pxl.element].hardness == undefined) {
delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
};
};
tryMove(pixel,pixel.x+dif_x,pixel.y+dif_y);
};
doDefaults(pixel);
}
elements.diamond_drill_LEFT = {
color: diamond_drill_Colour,
tick: function(pixel) {
diamond_drill_function(pixel,pixel.x-1,pixel.y);
},
category: "Drills",
breakInto: ["metal_scrap", "diamond", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_aluminum", "carbon_dioxide", "molten_iron", "molten_tin"],
density: 10000,
hardness: 0.99,
conduct: 1,
state: "solid",
}
elements.diamond_drill_RIGHT = {
color: diamond_drill_Colour,
tick: function(pixel) {
diamond_drill_function(pixel,pixel.x+1,pixel.y);
},
category: "Drills",
breakInto: ["metal_scrap", "diamond", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_aluminum", "carbon_dioxide", "molten_iron", "molten_tin"],
density: 10000,
hardness: 0.99,
conduct: 1,
state: "solid",
}
elements.diamond_drill_UP = {
color: diamond_drill_Colour,
tick: function(pixel) {
diamond_drill_function(pixel,pixel.x,pixel.y-1);
},
category: "Drills",
breakInto: ["metal_scrap", "diamond", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_aluminum", "carbon_dioxide", "molten_iron", "molten_tin"],
density: 10000,
hardness: 0.99,
conduct: 1,
state: "solid",
}
elements.diamond_drill_DOWN = {
color: diamond_drill_Colour,
tick: function(pixel) {
diamond_drill_function(pixel,pixel.x,pixel.y+1);
},
category: "Drills",
breakInto: ["metal_scrap", "diamond", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_aluminum", "carbon_dioxide", "molten_iron", "molten_tin"],
density: 10000,
hardness: 0.99,
conduct: 1,
state: "solid",
}
diamond_drill_missile_function = function(pixel, dif_x, dif_y) {
dif_x = dif_x-pixel.x
dif_y = dif_y-pixel.y
if (pixel.die <= 0) {
deletePixel(pixel.x, pixel.y)
explodeAt(pixel.x, pixel.y, 15);
return true
};
if (!outOfBounds(pixel.x+dif_x,pixel.y+dif_y)) {
pxl = pixelMap[pixel.x+dif_x][pixel.y+dif_y]
if (!isEmpty(pixel.x+dif_x,pixel.y+dif_y)) {
pixel.primed = true
if (elements[pxl.element].hardness <= 0.99) {
delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
}
else if (elements[pxl.element].hardness == undefined) {
delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
};
}
else if (pixel.primed) {
pixel.die--
return true
};
tryMove(pixel,pixel.x+dif_x,pixel.y+dif_y);
}
else if (outOfBounds(pixel.x+dif_x, pixel.y+dif_y)) {
deletePixel(pixel.x, pixel.y)
explodeAt(pixel.x, pixel.y, 15);
};
doDefaults(pixel);
}
elements.diamond_drill_missile_LEFT = {
color: diamond_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
diamond_drill_missile_function(pixel,pixel.x-1,pixel.y);
},
category: "Drills",
density: 10000,
hardness: 0.99,
conduct: 1,
state: "solid",
maxSize: 1,
}
elements.diamond_drill_missile_RIGHT = {
color: diamond_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
diamond_drill_missile_function(pixel,pixel.x+1,pixel.y);
},
category: "Drills",
density: 10000,
hardness: 0.99,
conduct: 1,
state: "solid",
maxSize: 1,
}
elements.diamond_drill_missile_UP = {
color: diamond_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
diamond_drill_missile_function(pixel,pixel.x,pixel.y-1);
},
category: "Drills",
density: 10000,
hardness: 0.99,
conduct: 1,
state: "solid",
maxSize: 1,
}
elements.diamond_drill_missile_DOWN = {
color: diamond_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
diamond_drill_missile_function(pixel,pixel.x,pixel.y+1);
},
category: "Drills",
density: 10000,
hardness: 0.99,
conduct: 1,
state: "solid",
maxSize: 1,
}
void_drill_function = function(pixel, dif_x, dif_y) {
dif_x = dif_x-pixel.x
dif_y = dif_y-pixel.y
if (!outOfBounds(pixel.x+dif_x,pixel.y+dif_y)) {
pxl = pixelMap[pixel.x+dif_x][pixel.y+dif_y]
if (!isEmpty(pixel.x+dif_x,pixel.y+dif_y)) {
if (elements[pxl.element].hardness <= 1) {
delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
}
else if (elements[pxl.element].hardness == undefined) {
delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
};
};
tryMove(pixel,pixel.x+dif_x,pixel.y+dif_y);
};
doDefaults(pixel);
}
elements.void_drill_LEFT = {
color: void_drill_Colour,
tick: function(pixel) {
void_drill_function(pixel,pixel.x-1,pixel.y);
},
category: "Drills",
breakInto: ["metal_scrap", "void", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_aluminum", "void", "molten_iron", "molten_tin"],
density: 10000,
hardness: 1,
conduct: 1,
state: "solid",
}
elements.void_drill_RIGHT = {
color: void_drill_Colour,
tick: function(pixel) {
void_drill_function(pixel,pixel.x+1,pixel.y);
},
category: "Drills",
breakInto: ["metal_scrap", "void", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_aluminum", "void", "molten_iron", "molten_tin"],
density: 10000,
hardness: 1,
conduct: 1,
state: "solid",
}
elements.void_drill_UP = {
color: void_drill_Colour,
tick: function(pixel) {
void_drill_function(pixel,pixel.x,pixel.y-1);
},
category: "Drills",
breakInto: ["metal_scrap", "void", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_aluminum", "void", "molten_iron", "molten_tin"],
density: 10000,
hardness: 1,
conduct: 1,
state: "solid",
}
elements.void_drill_DOWN = {
color: void_drill_Colour,
tick: function(pixel) {
void_drill_function(pixel,pixel.x,pixel.y+1);
},
category: "Drills",
breakInto: ["metal_scrap", "void", "iron", "tin"],
tempHigh: 10000,
stateHigh: ["molten_aluminum", "void", "molten_iron", "molten_tin"],
density: 10000,
hardness: 1,
conduct: 1,
state: "solid",
}
void_drill_missile_function = function(pixel, dif_x, dif_y) {
dif_x = dif_x-pixel.x
dif_y = dif_y-pixel.y
if (pixel.die <= 0) {
deletePixel(pixel.x, pixel.y)
explodeAt(pixel.x, pixel.y, 15);
return true
};
if (!outOfBounds(pixel.x+dif_x,pixel.y+dif_y)) {
pxl = pixelMap[pixel.x+dif_x][pixel.y+dif_y]
if (!isEmpty(pixel.x+dif_x,pixel.y+dif_y)) {
pixel.primed = true
if (elements[pxl.element].hardness <= 1) {
delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
}
else if (elements[pxl.element].hardness == undefined) {
delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
};
}
else if (pixel.primed) {
pixel.die--
return true
};
tryMove(pixel,pixel.x+dif_x,pixel.y+dif_y);
}
else if (outOfBounds(pixel.x+dif_x, pixel.y+dif_y)) {
deletePixel(pixel.x, pixel.y)
explodeAt(pixel.x, pixel.y, 15);
};
doDefaults(pixel);
}
elements.void_drill_missile_LEFT = {
color: void_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
void_drill_missile_function(pixel,pixel.x-1,pixel.y);
},
category: "Drills",
density: 10000,
hardness: 1,
conduct: 1,
state: "solid",
maxSize: 1,
}
elements.void_drill_missile_RIGHT = {
color: void_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
void_drill_missile_function(pixel,pixel.x+1,pixel.y);
},
category: "Drills",
density: 10000,
hardness: 1,
conduct: 1,
state: "solid",
maxSize: 1,
}
elements.void_drill_missile_UP = {
color: void_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
void_drill_missile_function(pixel,pixel.x,pixel.y-1);
},
category: "Drills",
density: 10000,
hardness: 1,
conduct: 1,
state: "solid",
maxSize: 1,
}
elements.void_drill_missile_DOWN = {
color: void_drill_missile_Colour,
properties: {
die: 5,
primed: false,
},
tick: function(pixel) {
void_drill_missile_function(pixel,pixel.x,pixel.y+1);
},
category: "Drills",
density: 10000,
hardness: 1,
conduct: 1,
state: "solid",
maxSize: 1,
}