sandboxels/mods/aircrafts.js

225 lines
7.5 KiB
JavaScript

//aircrafts
elements.fast_bullet_left = {
color: "#4c4e42",
behavior: [
"XX|DL|XX",
"XX|XX|XX",
"XX|DL|XX",
],
tick: function(pixel) {
for (var i=0; i<3; i++) {
if (!tryMove(pixel, pixel.x-3, pixel.y)) {
if (!isEmpty(pixel.x-3, pixel.y,true)) {
var newPixel = pixelMap[pixel.x-3][pixel.y];
if (newPixel.element === "fast_bullet_left") { break; }
if (elements[newPixel.element].state == "solid") {
if (Math.random() > (elements[newPixel.element].hardness || 0)) {
if (elements[newPixel.element].breakInto) {
breakPixel(newPixel);
}
else {
deletePixel(newPixel.x, newPixel.y);
}}}}
deletePixel(pixel.x,pixel.y);
break;
}}},
category: "ammunition",
state: "solid",
insulate: true,
},
elements.fast_bullet_right = {
color: "#4c4e42",
behavior: [
"XX|DL|XX",
"XX|XX|XX",
"XX|DL|XX",
],
tick: function(pixel) {
for (var i=0; i<3; i++) {
if (!tryMove(pixel, pixel.x+3, pixel.y)) {
if (!isEmpty(pixel.x+3, pixel.y,true)) {
var newPixel = pixelMap[pixel.x+3][pixel.y];
if (newPixel.element === "fast_bullet_right") { break; }
if (elements[newPixel.element].state == "solid") {
if (Math.random() > (elements[newPixel.element].hardness || 0)) {
if (elements[newPixel.element].breakInto) {
breakPixel(newPixel);
}
else {
deletePixel(newPixel.x, newPixel.y);
}}}}
deletePixel(pixel.x,pixel.y);
break;
}}},
category: "ammunition",
state: "solid",
insulate: true,
},
elements.flak_cannon = {
color: "#C0C0C0",
behavior: behaviors.WALL,
behaviorOn: [
"XX|CR:flak|XX",
"XX|XX|XX",
"XX|XX|XX",
],
category: "weapons",
state: "solid",
density: 1300,
conduct: 1,
},
elements.flak = {
color: "#f0f0f0",
tick: function(pixel) {
if ((pixel.temp > 10 || pixel.charge) && !pixel.burning) {
pixel.burning = true;
pixel.burnStart = pixelTicks;
}
if (pixel.burning) {
if (!tryMove(pixel, pixel.x, pixel.y-1)) {
// tryMove again to the top left or top right
tryMove(pixel, pixel.x+(Math.random() < 0.5 ? -1 : 1), pixel.y-1);
}
if (pixelTicks-pixel.burnStart > 50 && Math.random() < 0.005) {
explodeAt(pixel.x, pixel.y, 10, "flak_shrapnel");
}
}
else {
if (!tryMove(pixel, pixel.x, pixel.y+1)) {
// tryMove again to the bottom left or bottom right
tryMove(pixel, pixel.x+(Math.random() < 0.5 ? -1 : 1), pixel.y+1);
}
}
doDefaults(pixel);
},
burn: 90,
burnTime: 100,
density: 2000,
conduct: 1,
state: "solid",
category: "ammunition"
},
elements.flak_shrapnel = {
color: "#71797E",
behavior: [
"XX|XX|XX",
"XX|EX:5 %10|XX",
"M2|M1|M2",
],
burn: 90,
burnTime: 100,
density: 2000,
conduct: 1,
state: "solid",
category: "ammunition"
},
elements.fighter_jet_left = {
color: "#bcc6cc",
behavior: [
"M1%0.2|M2%0.005 AND EX:5>metal_scrap|M2%0.005 AND EX:5>metal_scrap",
"M1 AND CR:fast_bullet_left|XX|CR:smoke AND EX:5>metal_scrap",
"M1%0.2|M2%0.005 AND EX:5>metal_scrap|M2%0.005 AND EX:5>metal_scrap",
],
tick: function(pixel) {
for (var i=0; i<2; i++) {
if (!tryMove(pixel, pixel.x-1, pixel.y)) {
if (!isEmpty(pixel.x-1, pixel.y,true)) {
var newPixel = pixelMap[pixel.x-1][pixel.y];
if (newPixel.element === "fast_bullet_left") { break; }
if (elements[newPixel.element].state == "solid") {
if (Math.random() > (elements[newPixel.element].hardness || 0)) {
if (elements[newPixel.element].breakInto) {
breakPixel(newPixel);
}
else {
deletePixel(newPixel.x, newPixel.y);
}}}}
deletePixel(pixel.x,pixel.y);
break;
}}},
category: "aircrafts",
breakInto: "metal_scrap"
},
elements.fighter_jet_right = {
color: "#bcc6cc",
behavior: [
"M2%0.005 AND EX:5>metal_scrap|M2%0.005 AND EX:5>metal_scrap|M1%0.2",
"CR:smoke AND EX:5>metal_scrap|XX|M1 AND CR:fast_bullet_right",
"M2%0.005 AND EX:5>metal_scrap|M2%0.005 AND EX:5>metal_scrap|M1%0.2",
],
tick: function(pixel) {
for (var i=0; i<2; i++) {
if (!tryMove(pixel, pixel.x+1, pixel.y)) {
if (!isEmpty(pixel.x+1, pixel.y,true)) {
var newPixel = pixelMap[pixel.x+1][pixel.y];
if (newPixel.element === "fast_bullet_right") { break; }
if (elements[newPixel.element].state == "solid") {
if (Math.random() > (elements[newPixel.element].hardness || 0)) {
if (elements[newPixel.element].breakInto) {
breakPixel(newPixel);
}
else {
deletePixel(newPixel.x, newPixel.y);
}}}}
deletePixel(pixel.x,pixel.y);
break;
}}},
category: "aircrafts",
breakInto: "metal_scrap"
},
elements.airliner_left = {
color: "#fafafa",
category: "aircrafts",
behavior: [
"M1%3 AND EX:7>fire,fire,fire,metal_scrap|XX|XX",
"M1 AND EX:7>fire,fire,fire,metal_scrap|XX|XX",
"M1%3 AND EX:7>fire,fire,fire,metal_scrap|XX|CR:smoke%10",
],
burnTime: 1000,
burn: 40,
burnInto: "metal_scrap",
breakInto: "metal_scrap",
conduct: 1
},
elements.airliner_right = {
color: "#fafafa",
category: "aircrafts",
behavior: [
"XX|XX|M1%3 AND EX:7>fire,fire,fire,metal_scrap",
"XX|XX|M1 AND EX:7>fire,fire,fire,metal_scrap",
"CR:smoke%10|XX|M1%3 AND EX:7>fire,fire,fire,metal_scrap",
],
burnTime: 1000,
burn: 40,
burnInto: "metal_scrap",
breakInto: "metal_scrap",
conduct: 1
},
elements.bomber_left = {
color: "#fafafa",
category: "aircrafts",
behavior: [
"M1%3 AND EX:7>fire,fire,fire,metal_scrap|XX|XX",
"M1 AND EX:7>fire,fire,fire,metal_scrap|XX|XX",
"M1%3 AND EX:7>fire,fire,fire,metal_scrap|XX|CR:smoke%10 AND CR:bomb",
],
burnTime: 1000,
burn: 40,
burnInto: "metal_scrap",
breakInto: "metal_scrap",
conduct: 1
},
elements.bomber_right = {
color: "#fafafa",
category: "aircrafts",
behavior: [
"XX|XX|M1%3 AND EX:7>fire,fire,fire,metal_scrap",
"XX|XX|M1 AND EX:7>fire,fire,fire,metal_scrap",
"CR:smoke%10 AND CR:bomb|XX|M1%3 AND EX:7>fire,fire,fire,metal_scrap",
],
burnTime: 1000,
burn: 40,
burnInto: "metal_scrap",
breakInto: "metal_scrap",
conduct: 1
}