170 lines
4.5 KiB
JavaScript
170 lines
4.5 KiB
JavaScript
|
|
|
||
|
|
elements.charged_battery= {
|
||
|
|
color: "#9c6c25",
|
||
|
|
behavior: [
|
||
|
|
"XX|SH%50|XX", // shocks (adds charge)
|
||
|
|
"SH%50|CH:low_battery%0.05|SH%50",
|
||
|
|
"XX|SH%50|XX",
|
||
|
|
],
|
||
|
|
colorOn: "#00ff00",
|
||
|
|
category: "machines",
|
||
|
|
tempHigh: 1455.5,
|
||
|
|
stateHigh: ["molten_steel","explosion","acid_gas"],
|
||
|
|
charge: 0.5,
|
||
|
|
conduct: 1,
|
||
|
|
};
|
||
|
|
elements.low_battery= {
|
||
|
|
color: "#9c6c25",
|
||
|
|
behavior: [
|
||
|
|
"XX|SH%10|XX", // shocks (adds charge)
|
||
|
|
"SH%10|CH:dead_battery%0.05|SH%10",
|
||
|
|
"XX|SH%10|XX",
|
||
|
|
],
|
||
|
|
behaviorOn: [
|
||
|
|
"XX|SH%10|XX", // shocks (adds charge)
|
||
|
|
"SH%10|CH:charged_battery%0.045|SH%10",
|
||
|
|
"XX|SH%10|XX",
|
||
|
|
],
|
||
|
|
colorOn: "#4fb613",
|
||
|
|
category: "machines",
|
||
|
|
tempHigh: 1455.5,
|
||
|
|
stateHigh: ["molten_steel","explosion","acid_gas"],
|
||
|
|
charge: 0.5,
|
||
|
|
conduct: 0.75,
|
||
|
|
};
|
||
|
|
elements.dead_battery= {
|
||
|
|
color: "#9c6c25",
|
||
|
|
behavior: [
|
||
|
|
"XX|XX|XX",
|
||
|
|
"XX|XX|XX",
|
||
|
|
"XX|XX|XX",
|
||
|
|
],
|
||
|
|
behaviorOn: [
|
||
|
|
"XX|XX|XX",
|
||
|
|
"XX|CH:low_battery%0.045|XX",
|
||
|
|
"XX|XX|XX",
|
||
|
|
],
|
||
|
|
colorOn: "#699e19",
|
||
|
|
category: "machines",
|
||
|
|
tempHigh: 1455.5,
|
||
|
|
stateHigh: ["molten_steel","explosion","acid_gas"],
|
||
|
|
charge: 0.5,
|
||
|
|
conduct: 0.5,
|
||
|
|
};
|
||
|
|
elements.radio_broadcaster= {
|
||
|
|
color: "#78784c",
|
||
|
|
behavior: behaviors.WALL,
|
||
|
|
behaviorOn: [
|
||
|
|
"XX|SH AND CR:radio_wave AND CR:radio_wave|XX",
|
||
|
|
"SH AND CR:radio_wave AND CR:radio_wave|XX|SH AND CR:radio_wave AND CR:radio_wave",
|
||
|
|
"XX|SH AND CR:radio_wave AND CR:radio_wave|XX",
|
||
|
|
],
|
||
|
|
colorOn: "#ffff59",
|
||
|
|
category: "machines",
|
||
|
|
tempHigh: 1455.5,
|
||
|
|
stateHigh: ["molten_steel","explosion","acid_gas"],
|
||
|
|
conduct: 1
|
||
|
|
};
|
||
|
|
elements.radio_receiver= {
|
||
|
|
color: "#78784c",
|
||
|
|
behavior: behaviors.WALL,
|
||
|
|
reactions: {radio_wave: {elem2: "electric", chance: 0.75}},
|
||
|
|
colorOn: "#ffff59",
|
||
|
|
category: "machines",
|
||
|
|
tempHigh: 1455.5,
|
||
|
|
stateHigh: ["molten_steel","explosion","acid_gas"],
|
||
|
|
conduct: 1
|
||
|
|
};
|
||
|
|
elements.radio_wave= {
|
||
|
|
color: ["#000000"],
|
||
|
|
behavior: behaviors.BOUNCY,
|
||
|
|
behaviorOn: [
|
||
|
|
["XX","CL","XX"],
|
||
|
|
["CL","DL%5","CL"],
|
||
|
|
["XX","CL","XX"]
|
||
|
|
]
|
||
|
|
,
|
||
|
|
colorOn: "#000000",
|
||
|
|
tick: function(pixel){
|
||
|
|
if (currentElement == "radio_wave"){
|
||
|
|
pixel.color = "rgb(15, 15, 15)";
|
||
|
|
} else {
|
||
|
|
pixel.color = "rgba(0, 0, 0, -1)";
|
||
|
|
}
|
||
|
|
},
|
||
|
|
category: "energy",
|
||
|
|
reactions: {electric: {elem1: null, elem2: null, chance: 0.5}},
|
||
|
|
density: 1,
|
||
|
|
//charge: 0.5,
|
||
|
|
conduct: 0.01
|
||
|
|
};
|
||
|
|
elements.e_nuke = {
|
||
|
|
desc: "Works like the nuke but needs power to explode",
|
||
|
|
color: "#534636",
|
||
|
|
hardness: elements.nuke.hardness,
|
||
|
|
state: "solid",
|
||
|
|
behavior: [
|
||
|
|
"XX|XX|XX",
|
||
|
|
"XX|XX|XX",
|
||
|
|
"M2|M1|M2",
|
||
|
|
],
|
||
|
|
conduct: 1,
|
||
|
|
category: "weapons",
|
||
|
|
behaviorOn:[
|
||
|
|
"XX|XX|XX",
|
||
|
|
"XX|XX|XX",
|
||
|
|
"M2|M1 AND EX:60>plasma,plasma,plasma,plasma,radiation,rad_steam|M2",
|
||
|
|
],
|
||
|
|
};
|
||
|
|
elements.10_timer= {
|
||
|
|
color: ["#000000"],
|
||
|
|
behavior: behaviors.WALL,
|
||
|
|
colorOn: "#000000",
|
||
|
|
conduct: 0,
|
||
|
|
category: "machines",
|
||
|
|
properties: {
|
||
|
|
wait: 15,
|
||
|
|
waitReduce: false,
|
||
|
|
},
|
||
|
|
tick: function(pixel){
|
||
|
|
if (pixel.waitReduce){pixel.wait -= 1}
|
||
|
|
if (pixel.wait == 0){
|
||
|
|
pixel.elementsSeen = {}
|
||
|
|
}
|
||
|
|
for (var i = 0; i < adjacentCoords.length; i++) {
|
||
|
|
var coord = adjacentCoords[i];
|
||
|
|
var x = pixel.x+coord[0];
|
||
|
|
var y = pixel.y+coord[1];
|
||
|
|
if (!isEmpty(x,y, true)){
|
||
|
|
if (!pixel.waitReduce){
|
||
|
|
pixel.waitReduce = true
|
||
|
|
},
|
||
|
|
if (pixel.wait == 0){
|
||
|
|
if (!pixel.elementsSeen[pixelMap[x][y].element] && pixelMap[x][y].element != "healing_serum"){
|
||
|
|
pixel.elementsSeen[pixelMap[x][y].element] = 1
|
||
|
|
} else if (pixelMap[x][y].element != "healing_serum") {
|
||
|
|
pixel.elementsSeen[pixelMap[x][y].element] += 1
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (pixel.wait == 0){
|
||
|
|
if (Object.keys(pixel.elementsSeen).length == 0){
|
||
|
|
deletePixel(pixel.x, pixel.y)
|
||
|
|
return;
|
||
|
|
} else{
|
||
|
|
changePixel(pixel, Object.keys(pixel.elementsSeen).reduce((a, b) => pixel.elementsSeen[a] > pixel.elementsSeen[b] ? a : b))
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
elements.gasoline_engine = {
|
||
|
|
color: "#6d5f5d",
|
||
|
|
behavior: behaviors.WALL,
|
||
|
|
state: "solid",
|
||
|
|
density: 1000,
|
||
|
|
category: "testing",
|
||
|
|
properties: {
|
||
|
|
timer: 10
|
||
|
|
},
|