parent
fc2194c63e
commit
0f46d22a1c
|
|
@ -0,0 +1,91 @@
|
||||||
|
// lizard_mod.js by @RedBirdly
|
||||||
|
|
||||||
|
function blendColors(color1, color2, ratio = 0.5) {
|
||||||
|
// Convert the colors to RGB
|
||||||
|
const rgb1 = parseColor(color1);
|
||||||
|
const rgb2 = parseColor(color2);
|
||||||
|
|
||||||
|
// Calculate the blended color
|
||||||
|
const blendedColor = [
|
||||||
|
Math.round(rgb1[0] * (1 - ratio) + rgb2[0] * ratio), // Red
|
||||||
|
Math.round(rgb1[1] * (1 - ratio) + rgb2[1] * ratio), // Green
|
||||||
|
Math.round(rgb1[2] * (1 - ratio) + rgb2[2] * ratio) // Blue
|
||||||
|
];
|
||||||
|
|
||||||
|
// Convert the blended color back to a CSS color string
|
||||||
|
return `rgb(${blendedColor[0]}, ${blendedColor[1]}, ${blendedColor[2]})`;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function parseColor(color) {
|
||||||
|
// Create a temporary div to parse the color
|
||||||
|
const div = document.createElement('div');
|
||||||
|
div.style.color = color;
|
||||||
|
document.body.appendChild(div);
|
||||||
|
|
||||||
|
// Get the computed color
|
||||||
|
const computedColor = getComputedStyle(div).color;
|
||||||
|
|
||||||
|
// Remove the temporary div
|
||||||
|
document.body.removeChild(div);
|
||||||
|
|
||||||
|
// Parse the computed color into RGB values
|
||||||
|
const match = computedColor.match(/\d+/g);
|
||||||
|
return match.map(Number);
|
||||||
|
}
|
||||||
|
|
||||||
|
// dark red, dark green, brown, dark gray, light gray, lime
|
||||||
|
let lizard_colors = ["#4d2f2a", "#356641", "#85754d", "#3c3c3c", "#A1A1A1", "#98fb98"];
|
||||||
|
|
||||||
|
// camouflage function for lizards
|
||||||
|
function camo(pixel) {
|
||||||
|
if (!paused) {
|
||||||
|
// set camouflage color to random color
|
||||||
|
if (Math.random() < 0.002) {
|
||||||
|
let n = Math.floor(Math.random() * lizard_colors.length);
|
||||||
|
pixel.color = lizard_colors[n];
|
||||||
|
}
|
||||||
|
// set camouflage color to random color but make it slightly gray because camouflage isn't perfect
|
||||||
|
if (Math.random() < 0.1) {
|
||||||
|
for (let i = 0; i < currentPixels.length; i++) {
|
||||||
|
let x = currentPixels[i].x;
|
||||||
|
let y = currentPixels[i].y;
|
||||||
|
let dx = Math.abs(x - pixel.x);
|
||||||
|
let dy = Math.abs(y - pixel.y);
|
||||||
|
if (dx <= 1 && dy <= 1 && currentPixels[i].element != "lizard") {
|
||||||
|
pixel.color = blendColors(blendColors(currentPixels[i].color, "#887766", 0.4), pixel.color);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// define element
|
||||||
|
elements.lizard = {
|
||||||
|
color: lizard_colors,
|
||||||
|
behavior: [
|
||||||
|
"ST%98|M1%6|ST%98",
|
||||||
|
"XX|XX|M2%20 AND BO",
|
||||||
|
"XX|M1%80|M2",
|
||||||
|
],
|
||||||
|
tick: camo,
|
||||||
|
tempHigh: 100,
|
||||||
|
stateHigh: "ash",
|
||||||
|
tempLow: 0,
|
||||||
|
stateLow: "dead_bug",
|
||||||
|
breakInto: "dead_bug",
|
||||||
|
category: "life",
|
||||||
|
burn: 95,
|
||||||
|
burnTime: 25,
|
||||||
|
state: "solid",
|
||||||
|
density: 500,
|
||||||
|
conduct: 0.15,
|
||||||
|
reactions: {
|
||||||
|
"bird": { elem2: null, chance: 0.1, func: behaviors.FEEDPIXEL },
|
||||||
|
"plant": { elem2: null, chance: 0.05, func: behaviors.FEEDPIXEL },
|
||||||
|
"tomato": { elem2: null, chance: 0.05, func: behaviors.FEEDPIXEL },
|
||||||
|
"fly": { elem2: null, chance: 0.15, func: behaviors.FEEDPIXEL },
|
||||||
|
"ant": { elem2: null, chance: 0.1, func: behaviors.FEEDPIXEL },
|
||||||
|
}
|
||||||
|
};
|
||||||
Loading…
Reference in New Issue