260 lines
8.5 KiB
JavaScript
260 lines
8.5 KiB
JavaScript
//aircrafts
|
|
elements.bomb.ignore = ["super_bomber_left","super_bomber_right"],
|
|
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
|
|
},
|
|
elements.super_bomber_left = {
|
|
color: "#000000",
|
|
category: "aircrafts",
|
|
behavior: [
|
|
"XX|XX|XX",
|
|
"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 CR:bomb|CR:bomb|CR:smoke%10 AND CR:bomb",
|
|
"CR:bomb|CR:bomb|CR:bomb",
|
|
],
|
|
ignore: "bomb",
|
|
burnTime: 1000,
|
|
burn: 40,
|
|
burnInto: "metal_scrap",
|
|
breakInto: "metal_scrap",
|
|
conduct: 1
|
|
},
|
|
elements.super_bomber_right = {
|
|
color: "#000000",
|
|
category: "aircrafts",
|
|
behavior: [
|
|
"XX|XX|XX",
|
|
"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|CR:bomb|M1%3 AND CR:bomb",
|
|
"CR:bomb|CR:bomb|CR:bomb",
|
|
],
|
|
ignore: "bomb",
|
|
burnTime: 1000,
|
|
burn: 40,
|
|
burnInto: "metal_scrap",
|
|
breakInto: "metal_scrap",
|
|
conduct: 1
|
|
} |