49 lines
2.4 KiB
JavaScript
49 lines
2.4 KiB
JavaScript
elements.flying_fish = {
|
||
color: ["#0077be", "#00aaff"], // Цвета для летающей рыбы
|
||
behavior: [
|
||
"SW:water AND M2%10|M2%10|SW:water AND M2%10", // Может прыгать в воздух и возвращаться в воду
|
||
"SW:water|XX|SW:water", // Движение влево и вправо в воде
|
||
"SW:water AND M1%10|M1%10|SW:water AND M1%10" // Лёгкое спускание, если в воздухе
|
||
],
|
||
category: "life", // Категория, в которой будет находиться элемент
|
||
state: "liquid", // Условное состояние рыбы
|
||
density: 997, // Плотность, близкая к воде
|
||
tempHigh: 50, // Температура, при которой рыба погибает
|
||
stateHigh: "meat",
|
||
tempLow: -10, // Температура, при которой рыба замерзает
|
||
stateLow: "frozen_fish",
|
||
reactions: {
|
||
"fire": {elem1: "meat"}, // Рыба "сгорает" при контакте с огнём
|
||
"acid": {elem1: null } // Рыба исчезает в кислоте
|
||
},
|
||
properties: {
|
||
energy: 100, // Энергия рыбы, уменьшается со временем
|
||
},
|
||
tick: function(pixel) {
|
||
// Уменьшение энергии
|
||
pixel.energy -= 0.1;
|
||
|
||
// Если энергия исчерпана, рыба превращается в "мертвую рыбу"
|
||
if (pixel.energy <= 0) {
|
||
changePixel(pixel, "dead_fish");
|
||
}
|
||
|
||
// Восстановление энергии в воде
|
||
if (pixel.currentState === "water") {
|
||
pixel.energy += 0.5;
|
||
}
|
||
|
||
// Поведение прыжков: при контакте с водой рыбка "прыгает" в воздух
|
||
if (pixel.y < height - 1 && isEmpty(pixel.x, pixel.y + 1)) {
|
||
pixel.energy += 0.2; // Лёгкое восстановление энергии
|
||
}
|
||
},
|
||
};
|
||
|
||
elements.dead_fish = {
|
||
color: "#555555", // Серый цвет для мертвой рыбы
|
||
behavior: behaviors.STATIC, // Никакого движения
|
||
category: "life", // Категория остаётся той же
|
||
state: "solid", // Мёртвая рыба становится твёрдой
|
||
density: 1100, // Немного плотнее воды
|
||
}; |