Update tech.js
Signed-off-by: HACKERPRO908 <130792075+HACKERPRO908@users.noreply.github.com>
This commit is contained in:
parent
2fab1b3082
commit
8acaee7af7
133
mods/tech.js
133
mods/tech.js
|
|
@ -98,6 +98,7 @@ elements.nvidia_cpu = {
|
|||
"XX|SH|XX",
|
||||
],
|
||||
category: "tech",
|
||||
temp: 25, // Starting temperature (room temperature in Celsius)
|
||||
tempHigh: 1000, // Melting point for realism
|
||||
stateHigh: "molten_silicon", // Assuming it melts into molten silicon
|
||||
reactions: {
|
||||
|
|
@ -106,11 +107,47 @@ elements.nvidia_cpu = {
|
|||
"acid": { elem1: "corroded_cpu", elem2: "null" },
|
||||
"poison": { elem1: "corroded_cpu", elem2: "null" },
|
||||
},
|
||||
breakInto: ["silicon", "metal_scrap"],
|
||||
breakInto: ["silicon", "metal_fragments"],
|
||||
conduct: 10, // Moderate conductivity
|
||||
density: 2330, // Density of silicon
|
||||
tick: function(pixel) {
|
||||
if (!pixel.heatTick) {
|
||||
pixel.heatTick = 0;
|
||||
}
|
||||
pixel.heatTick++;
|
||||
if (pixel.heatTick >= 300) { // 300 ticks ~ 5 seconds
|
||||
pixel.temp += 2; // Increase temperature by 2 degrees Celsius
|
||||
pixel.heatTick = 0; // Reset heatTick counter
|
||||
}
|
||||
|
||||
// Check for cooling fan nearby
|
||||
let cooled = false;
|
||||
for (let dx = -1; dx <= 1; dx++) {
|
||||
for (let dy = -1; dy <= 1; dy++) {
|
||||
if (dx === 0 && dy === 0) continue;
|
||||
let neighbor = pixelMap[pixel.x + dx]?.[pixel.y + dy];
|
||||
if (neighbor && neighbor.element === "spinning_cooler_fan") {
|
||||
cooled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (cooled) {
|
||||
if (!pixel.coolTick) {
|
||||
pixel.coolTick = 0;
|
||||
}
|
||||
pixel.coolTick++;
|
||||
if (pixel.coolTick >= 300) { // 300 ticks ~ 5 seconds
|
||||
pixel.temp -= 2; // Decrease temperature by 2 degrees Celsius
|
||||
pixel.coolTick = 0; // Reset coolTick counter
|
||||
}
|
||||
} else {
|
||||
pixel.coolTick = 0; // Reset coolTick counter if no cooler is nearby
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
elements.molten_silicon = {
|
||||
color: "#ffcc99",
|
||||
behavior: behaviors.LIQUID,
|
||||
|
|
@ -149,3 +186,97 @@ elements.silicon = {
|
|||
density: 2330,
|
||||
};
|
||||
|
||||
elements.glowing_rainbow_led = {
|
||||
color: ["#FF0000", "#FF7F00", "#FFFF00", "#00FF00", "#0000FF", "#4B0082", "#8B00FF"], // Colors of the rainbow
|
||||
behavior: [
|
||||
"XX|XX|XX",
|
||||
"XX|SH|XX",
|
||||
"XX|XX|XX",
|
||||
],
|
||||
category: "tech",
|
||||
state: "solid",
|
||||
density: 300, // Arbitrary density for LED
|
||||
tempHigh: 150, // Melting point for realism
|
||||
stateHigh: "molten_plastic",
|
||||
reactions: {
|
||||
"water": { elem1: "short_circuit", elem2: "steam" },
|
||||
"salt_water": { elem1: "short_circuit", elem2: "null" },
|
||||
"acid": { elem1: "corroded_led", elem2: "null" },
|
||||
"poison": { elem1: "corroded_led", elem2: "null" },
|
||||
},
|
||||
tick: function(pixel) {
|
||||
// Function to cycle through colors
|
||||
if (!pixel.colorIndex) {
|
||||
pixel.colorIndex = 0; // Initialize color index
|
||||
}
|
||||
pixel.colorIndex = (pixel.colorIndex + 1) % elements.glowing_rainbow_led.color.length;
|
||||
pixel.color = elements.glowing_rainbow_led.color[pixel.colorIndex];
|
||||
},
|
||||
};
|
||||
|
||||
elements.corroded_led = {
|
||||
color: "#707070",
|
||||
behavior: behaviors.POWDER,
|
||||
category: "tech",
|
||||
tempHigh: 800,
|
||||
stateHigh: "ash",
|
||||
conduct: 1,
|
||||
};
|
||||
|
||||
elements.spinning_cooler_fan = {
|
||||
color: "#4a90e2", // Blue color for the fan
|
||||
behavior: [
|
||||
"XX|XX|XX",
|
||||
"XX|XX|XX",
|
||||
"XX|XX|XX",
|
||||
],
|
||||
category: "tech",
|
||||
state: "solid",
|
||||
density: 800, // Arbitrary density for the fan
|
||||
tick: function(pixel) {
|
||||
// Define movement pattern
|
||||
if (!pixel.moveStep) {
|
||||
pixel.moveStep = 0; // Initialize movement step
|
||||
}
|
||||
|
||||
// Determine the current movement direction
|
||||
let directions = [
|
||||
{dx: 0, dy: -1}, // Move up
|
||||
{dx: 1, dy: 0}, // Move right
|
||||
{dx: 0, dy: 1}, // Move down
|
||||
{dx: -1, dy: 0} // Move left
|
||||
];
|
||||
|
||||
let move = directions[pixel.moveStep];
|
||||
|
||||
// Attempt to move in the current direction
|
||||
let newX = pixel.x + move.dx;
|
||||
let newY = pixel.y + move.dy;
|
||||
|
||||
if (isEmpty(newX, newY)) {
|
||||
// If the next position is empty, move there
|
||||
movePixel(pixel, newX, newY);
|
||||
}
|
||||
|
||||
// Advance to the next step in the movement pattern
|
||||
pixel.moveStep = (pixel.moveStep + 1) % directions.length;
|
||||
},
|
||||
};
|
||||
|
||||
function isEmpty(x, y) {
|
||||
// Check if the position (x, y) is empty
|
||||
if (x >= 0 && y >= 0 && x < width && y < height) {
|
||||
return !pixelMap[x][y];
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function movePixel(pixel, newX, newY) {
|
||||
// Move the pixel to the new position
|
||||
if (isEmpty(newX, newY)) {
|
||||
pixelMap[pixel.x][pixel.y] = null; // Clear the current position
|
||||
pixel.x = newX;
|
||||
pixel.y = newY;
|
||||
pixelMap[newX][newY] = pixel; // Set the new position
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue