commit
fa8ad83732
261
mods/weapons.js
261
mods/weapons.js
|
|
@ -1,4 +1,3 @@
|
||||||
//weapons.js by Jayd also know as JaydRubies
|
|
||||||
elements.tsar_bomba = {
|
elements.tsar_bomba = {
|
||||||
color: "#524C41",
|
color: "#524C41",
|
||||||
behavior: [
|
behavior: [
|
||||||
|
|
@ -168,7 +167,7 @@ elements.left_bullet = {
|
||||||
color: "#4c4e42",
|
color: "#4c4e42",
|
||||||
behavior: [
|
behavior: [
|
||||||
"M2|XX|XX",
|
"M2|XX|XX",
|
||||||
"M1 AND EX:5|XX|XX",
|
"M1 AND DB|XX|XX",
|
||||||
"M2|XX|XX",
|
"M2|XX|XX",
|
||||||
],
|
],
|
||||||
state: "solid",
|
state: "solid",
|
||||||
|
|
@ -181,7 +180,7 @@ elements.left_bullet = {
|
||||||
color: "#4c4e42",
|
color: "#4c4e42",
|
||||||
behavior: [
|
behavior: [
|
||||||
"XX|XX|M2",
|
"XX|XX|M2",
|
||||||
"XX|XX|M1 AND EX:5",
|
"XX|XX|M1 AND DB",
|
||||||
"XX|XX|M2",
|
"XX|XX|M2",
|
||||||
],
|
],
|
||||||
state: "solid",
|
state: "solid",
|
||||||
|
|
@ -997,4 +996,260 @@ elements.railgun_right = {
|
||||||
color: "#71797E",
|
color: "#71797E",
|
||||||
conduct: 1,
|
conduct: 1,
|
||||||
hardness: 1,
|
hardness: 1,
|
||||||
|
},
|
||||||
|
elements.static_bomb = {
|
||||||
|
color: "#524c41",
|
||||||
|
behavior: [
|
||||||
|
"XX|EX:10|XX",
|
||||||
|
"EX:10|XX|EX:10",
|
||||||
|
"XX|EX:10|XX",
|
||||||
|
],
|
||||||
|
category: "weapons",
|
||||||
|
state: "solid",
|
||||||
|
density: 1300,
|
||||||
|
excludeRandom: true,
|
||||||
|
cooldown: defaultCooldown
|
||||||
|
}
|
||||||
|
var target =[,];
|
||||||
|
var tgt = "head";
|
||||||
|
elements.tracking_missile = {
|
||||||
|
color: "#323232",
|
||||||
|
category: "weapons",
|
||||||
|
behavior: [
|
||||||
|
"XX|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|XX",
|
||||||
|
"EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel",
|
||||||
|
"EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel",
|
||||||
|
"EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|XX|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel",
|
||||||
|
"EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel",
|
||||||
|
"EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel",
|
||||||
|
"XX|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|XX",
|
||||||
|
],
|
||||||
|
onSelect: function() {
|
||||||
|
var answer1 = prompt("Please input the target element.",(tgt||undefined));
|
||||||
|
if (!answer1) {return}
|
||||||
|
tgt = answer1;
|
||||||
|
},
|
||||||
|
tick: (pixel) => {
|
||||||
|
for (var x = 1; x < width; x++) {
|
||||||
|
for (var y = 1; y < height; y++) {
|
||||||
|
if (!isEmpty(x,y)) {
|
||||||
|
if (pixelMap[x][y].element===tgt) {
|
||||||
|
target = [pixelMap[x][y].x, pixelMap[x][y].y];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (pixel.x != target[0] || pixel.y != target[1]) {
|
||||||
|
let {x, y} = pixel;
|
||||||
|
const empty = checkForEmptyPixels(x, y);
|
||||||
|
const [tX, tY] = target;
|
||||||
|
let bestVal = Math.sqrt(Math.pow(tX - x, 2) + Math.pow(tY - y, 2));
|
||||||
|
let best = null;
|
||||||
|
for (const pixelPair of empty) {
|
||||||
|
const [x_, y_] = [x + pixelPair[0], y + pixelPair[1]];
|
||||||
|
const c = Math.sqrt(Math.pow(tX - x_, 2) + Math.pow(tY - y_, 2));
|
||||||
|
if (c < bestVal) {
|
||||||
|
bestVal = c;
|
||||||
|
best = pixelPair;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (best) {
|
||||||
|
tryMove(pixel, x + best[0]*2, y + best[1]*2, undefined, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
elements.laser_bomb = {
|
||||||
|
category: "weapons",
|
||||||
|
color: "#524c41",
|
||||||
|
tick: function(pixel) {
|
||||||
|
var x = pixel.x;
|
||||||
|
for (var y = pixel.y; y < height+1; y++) {
|
||||||
|
if (outOfBounds(x, y)) {
|
||||||
|
if (isEmpty(x, y-1)) { createPixel("smoke", x, y-1); }
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (isEmpty(x, y)) {
|
||||||
|
|
||||||
|
createPixel("flash", x, y);
|
||||||
|
pixelMap[x][y].color = "#ff0000";
|
||||||
|
pixelMap[x][y].temp = 35000;
|
||||||
|
pixelMap[x][y].delay = (y + pixel.y) / 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (var y = pixel.y; y < height-1; y--) {
|
||||||
|
if (outOfBounds(x, y)) {
|
||||||
|
if (isEmpty(x, y+1)) { createPixel("smoke", x, y+1); }
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (isEmpty(x, y)) {
|
||||||
|
|
||||||
|
createPixel("flash", x, y);
|
||||||
|
pixelMap[x][y].color = "#ff0000";
|
||||||
|
pixelMap[x][y].temp = 35000;
|
||||||
|
pixelMap[x][y].delay = (y + pixel.y) / 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var y = pixel.y;
|
||||||
|
for (var x = pixel.x; x < width+1; x++) {
|
||||||
|
if (outOfBounds(x, y)) {
|
||||||
|
if (isEmpty(x-1, y)) { createPixel("smoke", x-1, y); }
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (isEmpty(x, y)) {
|
||||||
|
|
||||||
|
createPixel("flash", x, y);
|
||||||
|
pixelMap[x][y].color = "#ff0000";
|
||||||
|
pixelMap[x][y].temp = 35000;
|
||||||
|
pixelMap[x][y].delay = (x + pixel.x) / 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (var x = pixel.x; x < width-1; x--) {
|
||||||
|
if (outOfBounds(x, y)) {
|
||||||
|
if (isEmpty(x+1, y)) { createPixel("smoke", x+1, y); }
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (isEmpty(x, y)) {
|
||||||
|
|
||||||
|
createPixel("flash", x, y);
|
||||||
|
pixelMap[x][y].color = "#ff0000";
|
||||||
|
pixelMap[x][y].temp = 35000;
|
||||||
|
pixelMap[x][y].delay = (x + pixel.x) / 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
deletePixel(pixel.x, pixel.y);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
elements.cluster_nuke = {
|
||||||
|
color: "#323232",
|
||||||
|
category: "weapons",
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
tick: (pixel) => {
|
||||||
|
for (var y = 1; y < 50; y++) {
|
||||||
|
if (!isEmpty(pixel.x, pixel.y + y, false)) {
|
||||||
|
explodeAt(pixel.x,pixel.y,50,["dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","dirty_bomb","nuke",])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
document.onkeydown = function(ki)/*keyboard_input*/ {
|
||||||
|
//a
|
||||||
|
if (ki.keyCode == 65) {
|
||||||
|
KA = true;
|
||||||
|
//vX ++;
|
||||||
|
}
|
||||||
|
//d
|
||||||
|
if (ki.keyCode == 68) {
|
||||||
|
KD = true;
|
||||||
|
//vX ++;
|
||||||
|
}
|
||||||
|
//w
|
||||||
|
if (ki.keyCode == 87) {
|
||||||
|
KW = true;
|
||||||
|
//vY ++;
|
||||||
|
}
|
||||||
|
//s
|
||||||
|
if (ki.keyCode == 83) {
|
||||||
|
KS = true;
|
||||||
|
//vY ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
document.onkeyup = function(i2)/*keyboard_input*/ {
|
||||||
|
//a
|
||||||
|
if (i2.keyCode == 65) {
|
||||||
|
KA = false;
|
||||||
|
//vX --;
|
||||||
|
}
|
||||||
|
//d
|
||||||
|
if (i2.keyCode == 68) {
|
||||||
|
KD = false;
|
||||||
|
//vX --;
|
||||||
|
}
|
||||||
|
//w
|
||||||
|
if (i2.keyCode == 87) {
|
||||||
|
KW = false;
|
||||||
|
//vY = 0;
|
||||||
|
}
|
||||||
|
//s
|
||||||
|
if (i2.keyCode == 83) {
|
||||||
|
KS = false;
|
||||||
|
//vY = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var KA = false;
|
||||||
|
var KD = false;
|
||||||
|
var KW = false;
|
||||||
|
var KS = false;
|
||||||
|
var vX = 1;
|
||||||
|
var vY = 1;
|
||||||
|
elements.heli_bomb = {
|
||||||
|
behavior: [
|
||||||
|
"XX|EX:10|XX",
|
||||||
|
"EX:10|XX|EX:10",
|
||||||
|
"XX|EX:10|XX",
|
||||||
|
],
|
||||||
|
tick: function(pixel) {
|
||||||
|
/*if (vX === 3) {
|
||||||
|
vX --;
|
||||||
|
}
|
||||||
|
if (vY === 3) {
|
||||||
|
vY --;
|
||||||
|
}*/
|
||||||
|
if (KA === true) {
|
||||||
|
tryMove (pixel,pixel.x-vX,pixel.y)
|
||||||
|
}
|
||||||
|
if (KD === true) {
|
||||||
|
tryMove (pixel,pixel.x+vX,pixel.y)
|
||||||
|
}
|
||||||
|
if (KW === true) {
|
||||||
|
tryMove (pixel,pixel.x,pixel.y-vY)
|
||||||
|
}
|
||||||
|
if (KS === true) {
|
||||||
|
tryMove (pixel,pixel.x,pixel.y+vY)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
category: "weapons",
|
||||||
|
states:"solid",
|
||||||
|
color: "#524c41",
|
||||||
|
},
|
||||||
|
elements.mini_nuke = {
|
||||||
|
color: "#534636",
|
||||||
|
behavior: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"XX|XX|XX",
|
||||||
|
"M2|M1 AND EX:20>plasma,plasma,plasma,plasma,radiation,rad_steam|M2",
|
||||||
|
],
|
||||||
|
category: "weapons",
|
||||||
|
state: "solid",
|
||||||
|
density: 1500,
|
||||||
|
excludeRandom: true,
|
||||||
|
cooldown: defaultCooldown
|
||||||
|
},
|
||||||
|
elements.left_uranium_bullet = {
|
||||||
|
color: "#406040",
|
||||||
|
behavior: [
|
||||||
|
"M2|XX|XX",
|
||||||
|
"M1 AND EX:4>fallout|XX|XX",
|
||||||
|
"M2|XX|XX",
|
||||||
|
],
|
||||||
|
state: "solid",
|
||||||
|
category:"ammunition",
|
||||||
|
density: 2100,
|
||||||
|
excludeRandom: true,
|
||||||
|
cooldown: defaultCooldown,
|
||||||
|
temp: 4000,
|
||||||
|
},
|
||||||
|
elements.right_uranium_bullet = {
|
||||||
|
color: "#406040",
|
||||||
|
behavior: [
|
||||||
|
"XX|XX|M2",
|
||||||
|
"XX|XX|M1 AND EX:4>fallout",
|
||||||
|
"XX|XX|M2",
|
||||||
|
],
|
||||||
|
state: "solid",
|
||||||
|
category:"ammunition",
|
||||||
|
density: 2100,
|
||||||
|
excludeRandom: true,
|
||||||
|
cooldown: defaultCooldown,
|
||||||
|
temp: 4000,
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue