From c0605dc9654ff3cc5e4d4bbf20447dc8626d00ef Mon Sep 17 00:00:00 2001 From: Daniil200707 <128793965+Daniil200707@users.noreply.github.com> Date: Mon, 6 Jan 2025 14:58:36 +0200 Subject: [PATCH 1/2] flying_fish.js Add mod of flying fish --- mods/flying_fish.js | 49 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 mods/flying_fish.js diff --git a/mods/flying_fish.js b/mods/flying_fish.js new file mode 100644 index 00000000..24497448 --- /dev/null +++ b/mods/flying_fish.js @@ -0,0 +1,49 @@ +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, // Немного плотнее воды +}; \ No newline at end of file From 43f90dca25b0a7c2d4d2e67400a3451b39e9109d Mon Sep 17 00:00:00 2001 From: Daniil200707 <128793965+Daniil200707@users.noreply.github.com> Date: Tue, 7 Jan 2025 16:34:24 +0200 Subject: [PATCH 2/2] prairie.js Add prairie.js --- mods/prairie.js | 200 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 200 insertions(+) create mode 100644 mods/prairie.js diff --git a/mods/prairie.js b/mods/prairie.js new file mode 100644 index 00000000..a3aa4221 --- /dev/null +++ b/mods/prairie.js @@ -0,0 +1,200 @@ +elements.bison = { + color: ["#8B4513", "#A0522D"], // Цвета для бизонов + behavior: [ + "XX|XX|XX", // Едят траву вокруг + "M2%1|XX|M2%1", // Медленное движение влево и вправо + "M1|M1%1|M1" // Лёгкое спускание, если нет опоры + ], + category: "life", // Категория для бизонов + state: "solid", // Бизоны — твёрдые существа + density: 1200, // Плотность, выше чем у воды + tempHigh: 60, // Температура, при которой бизон "умирает" + stateHigh: "dead_bison", + tempLow: -20, // Температура, при которой бизон замерзает + stateLow: "frozen_meat", + reactions: { + "water": {elem1: "bison_wet" }, // Бизон становится мокрым в воде + "grass": {elem2: null, chance: 0.3, func:behaviors.FEEDPIXEL}, + "shepherdia": {elem2: null, chance: 0.3, func:behaviors.FEEDPIXEL} + }, + properties: { + energy: 200, // Энергия бизона + }, + burn: 50, + burnTime: 500, + burnInto: "dead_bison", + tick: function(pixel) { + // Уменьшение энергии со временем + pixel.energy -= 0.05; + + // Если энергия исчерпана, бизон умирает + if (pixel.energy <= 0) { + changePixel(pixel, "dead_bison"); + } + + // Еда (травы добавляет энергию) + if (pixel.currentState === "grass") { + pixel.energy += 5; + } + + // Восстановление энергии при отдыхе + if (!pixel.moving) { + pixel.energy += 0.1; + } + }, +}; + +elements.dead_bison = { + color: "#654321", // Коричневый цвет для мёртвого бизона + behavior: [ + "XX|XX|XX", + "XX|CH:rotten_meat%0.1|XX", + "M2|M1|M2" + ], // Никакого движения + category: "life", // Категория остаётся той же + state: "solid", // Мёртвый бизон остаётся твёрдым + density: 1300, // Немного плотнее живого бизона + burn: 100, + burnTime: 1000, + burnInto: "ash", + hidden: true +}; + +elements.bison_wet = { + color: "#5F4C40", // Темный цвет для мокрого бизона + behavior: [ + "XX|XX|XX", // Едят траву вокруг + "M2%1|XX|M2%1", // Медленное движение влево и вправо + "M1|M1%1|M1" // Лёгкое спускание, если нет опоры + ], // Поведение такое же, как у обычного бизона + category: "life", // Категория та же + state: "solid", // Мокрый бизон остаётся твёрдым + density: 1250, // Немного тяжелее, чем сухой бизон + tempHigh: 60, // Тот же предел температуры + stateHigh: "dead_bison", + tempLow: -20, // Тот же предел температуры + stateLow: "frozen_meat", + properties: { + energy: 150, // Мокрый бизон теряет немного энергии + }, + reactions: { + "grass": {elem2: null, chance: 0.3, func:behaviors.FEEDPIXEL}, + "shepherdia": {elem2: null, chance: 0.3, func:behaviors.FEEDPIXEL} + }, + tick: function(pixel) { + // Постепенное "высыхание" + pixel.energy -= 0.1; + if (pixel.energy <= 0) { + changePixel(pixel, "bison"); + } + }, + burn: 100, + burnTime: 1000, + burnInto: "ash", + hidden: true +}; + +elements.shepherdia = { + color: "#FF6347", // Ярко-красный цвет ягоды + behavior: [ + "XX|XX|XX", // Остаётся статичной + "XX|XX|XX", // Не двигается + "M2|M1|M2" // Остаётся на месте + ], + category: "food", // Категория еды + state: "solid", // Твёрдое состояние + density: 800, // Лёгкий элемент + tempHigh: 40, // Портится при высокой температуре + stateHigh: "rotten_fruit", + tempLow: -5, // Замерзает при низкой температуре + stateLow: "frozen_fruit", + properties: { + nutrition: 50, // Восстанавливает энергию при поедании + }, + burn: 100, + burnTime: 1000, + burnInto: "ash", + hidden: true +}; + +elements.rotten_fruit = { + color: "#8B0000", // Тёмно-красный цвет испорченной ягоды + behavior: behaviors.POWDER, // Никакого движения + category: "food", // Остаётся в категории еды + state: "solid", // Всё ещё твёрдое состояние + density: 800, // Такая же плотность + hidden: true +}; + +elements.frozen_fruit = { + color: "#ADD8E6", // Светло-голубой цвет замороженной ягоды + behavior: behaviors.POWDER, // Никакого движения + category: "food", // Остаётся в категории еды + state: "solid", // Твёрдое состояние + density: 850, // Немного тяжелее + hidden: true +}; + +elements.shepherdia_bush = { + color: "#228B22", // Зелёный цвет куста + behavior: [ + "XX|XX|XX", // Остаётся статичным + "CR:shepherdia%1|XX|CR:shepherdia%1", // Не двигается + "XX|XX|XX" // Остаётся на месте + ], + category: "plant", // Категория растений + state: "solid", // Твёрдое состояние + density: 1000, // Средняя плотность для растения + tempHigh: 50, // Горит при высокой температуре + stateHigh: "ash", + reactions: { + "water": { elem1: "wet_bush" } // Куст становится мокрым при контакте с водой + }, + burn: 100, + burnTime: 1000, + burnInto: "ash", + hidden: true, + seed: "shepherdia_seed" +}; + +elements.wet_bush = { + color: "#2E8B57", // Тёмно-зелёный цвет мокрого куста + behavior: behaviors.WALL, // Никакого движения + category: "plant", // Остаётся в категории растений + state: "solid", // Твёрдое состояние + density: 1020, // Немного тяжелее из-за воды + tempHigh: 50, // Также горит при высокой температуре + stateHigh: "ash", + properties: { + energy: 150, // Мокрый куст теряет немного энергии + }, + tick: function(pixel) { + // Постепенное "высыхание" + pixel.energy -= 0.1; + if (pixel.energy <= 0) { + changePixel(pixel, "shepherdia_bush"); + } + }, + burn: 100, + burnTime: 1000, + burnInto: "ash", + hidden: true +}; + +elements.shepherdia_seed = { + color: "#8B4513", // Коричневый цвет семени + behavior: [ + "XX|XX|XX", // Остаётся статичным + "XX|XX|XX", // Не двигается + "XX|M1|XX" // Падает вниз + ], + category: "plant", // Категория растений + state: "solid", // Твёрдое состояние + density: 900, // Лёгкая плотность + tempHigh: 50, // Горит при высокой температуре + stateHigh: "ash", + reactions: { + "water": { elem1: "shepherdia_bush" } // При контакте с водой превращается в куст + }, + seed: true +}; \ No newline at end of file