Enhance animal genetics and UI for feeding styles

- Added "GeneFeedingStyle" to animal definitions, allowing for varied feeding behaviors (grazing vs. gorging).
- Updated animal JSON files to include feeding style genes with appropriate values.
- Enhanced UI localization for feeding styles in both English and Russian, providing clearer descriptions and inspection options.
- Introduced new event logging features in the world scene to track animal behaviors related to feeding.
- Improved animal decision-making systems to utilize the new feeding style attributes for more dynamic behavior.

This update aims to enrich gameplay by introducing more nuanced animal behaviors and enhancing the user interface for better clarity and interaction.
This commit is contained in:
Leonid Pershin
2026-06-16 14:27:46 +03:00
parent 92d0302138
commit d0a0714563
24 changed files with 1825 additions and 256 deletions
+12 -6
View File
@@ -39,6 +39,7 @@
"GeneLitterSize": 1,
"GeneHerbivory": 1.0,
"GeneToxinTolerance": 0.1,
"GeneFeedingStyle": 0.15,
"GeneSociability": 0.8
}
},
@@ -55,9 +56,10 @@
"baseSpeed": 32,
"visionCells": 18,
"attackRangeCells": 1.3,
"attackDamage": 80,
"attackBleed": 3.0,
"attackBloodLoss": 5.0,
"attackIntervalSec": 1.4,
"attackDamage": 16,
"attackBleed": 0.16,
"attackBloodLoss": 0.06,
"baseMassKg": 45,
"genome": {
"GeneMaxBodySize": 1.6,
@@ -80,6 +82,7 @@
"GeneGestationDays": 35,
"GeneLitterSize": 4,
"GeneCarnivory": 1.0,
"GeneFeedingStyle": 0.9,
"GeneSociability": 0.6
}
},
@@ -95,9 +98,10 @@
"baseSpeed": 26,
"visionCells": 13,
"attackRangeCells": 1.2,
"attackDamage": 45,
"attackBleed": 1.8,
"attackBloodLoss": 3.0,
"attackIntervalSec": 2.0,
"attackDamage": 9,
"attackBleed": 0.1,
"attackBloodLoss": 0.035,
"baseMassKg": 80,
"genome": {
"GeneMaxBodySize": 1.3,
@@ -123,6 +127,7 @@
"GeneCarnivory": 0.2,
"GeneOmnivory": 0.85,
"GeneToxinTolerance": 0.25,
"GeneFeedingStyle": 0.55,
"GeneSociability": 0.3
}
},
@@ -161,6 +166,7 @@
"GeneHerbivory": 0.8,
"GeneToxinTolerance": 0.15,
"GeneEggLaying": 1.0,
"GeneFeedingStyle": 0.2,
"GeneSociability": 0.55
}
}
+7
View File
@@ -76,6 +76,13 @@
"default": 0.0, "min": 0.0, "max": 1.0, "tags": ["animal", "diet"],
"effects": { "toxinTolerance": "value" } },
// Стиль питания [0..1]: 0 — пастьба (graze, частые мелкие приёмы, держит сытость высокой),
// 1 — обжорство (gorge, ищет еду лишь при сильном голоде и ест до полного — редкие крупные приёмы,
// как у хищников). Задаёт пороги начала/конца кормёжки в AnimalDecisionSystem. Эволюционирует.
{ "defName": "GeneFeedingStyle", "parent": "BaseNumericGene", "label": "gene.feedingStyle",
"default": 0.5, "min": 0.0, "max": 1.0, "spread": 0.05, "tags": ["animal", "diet"],
"effects": { "feedingStyle": "value" } },
// Пол как локус (фаза A3): аллели {X=0, Y=1}; самка XX, самец XY. Эффекта нет — пол читается из
// самих аллелей (наличие Y), не из выраженного значения. mutationChance 0 (X не мутирует в Y).
// Генерация особи-основателя задаёт пол явно (XX или XY), чтобы не возник невозможный YY.
+36
View File
@@ -196,6 +196,42 @@
"thought.gaveBirth": "gave birth",
"thought.mated": "mated",
"thought.quenchedThirst": "drank its fill",
"gene.feedingStyle": "feeding style",
"inspect.animal.feeding": "Feeding: {0}",
"feeding.gorge": "gorger (rare, to the full)",
"feeding.graze": "grazer (often, little by little)",
"feeding.mixed": "moderate",
"inspect.tab.log": "Log",
"log.empty": "No history yet",
"log.stamp": "D{0} {1:00}:{2:00}",
"hud.events": "Events",
"hud.perf": "Perf",
"events.title": "Event log",
"events.empty": "Nothing has happened yet",
"perf.title": "Performance",
"perf.fps": "{0} FPS · {1:0.0} ms/frame",
"perf.root": "{0}: {1:0.000} ms · systems {2}",
"perf.systemline": "{0} {1:0.000} ms {2:0}%",
"perf.hint": "Refreshes ~5/s · costliest systems shown",
"event.mated": "{0} mated with {1}",
"event.pregnant": "{0} became pregnant",
"event.birth": "{0} gave birth ×{1}",
"event.hatch": "{0}: eggs hatched ×{1}",
"event.hunt": "{0} started hunting: target — {1}",
"event.injured": "{0} wounded: {1}",
"event.struck": "{0} struck {1} (dmg {2:0})",
"event.tookhit": "{0}: hit by {1} (dmg {2:0})",
"event.killed": "{0} killed prey: {1}",
"event.ate": "{0} ate",
"event.drank": "{0} drank",
"event.rest": "{0} is resting",
"event.dig": "{0} digs for food",
"event.wallow": "{0} wallows in mud",
"event.fled": "{0} is fleeing",
"event.grew": "{0}: new stage — {1}",
"event.death.starve": "{0} died of hunger/thirst",
"event.death.age": "{0} died of old age",
"event.death.disease": "{0} died of disease",
"net.hud": "Multiplayer: {0} | beings: {1} | Esc — back to menu",
"net.connecting": "connecting…",
"net.connected": "connected",
+36
View File
@@ -196,6 +196,42 @@
"thought.gaveBirth": "родила потомство",
"thought.mated": "спарилась",
"thought.quenchedThirst": "напилась вволю",
"gene.feedingStyle": "стиль питания",
"inspect.animal.feeding": "Питание: {0}",
"feeding.gorge": "обжора (редко, до отвала)",
"feeding.graze": "пастьба (часто, понемногу)",
"feeding.mixed": "умеренное",
"inspect.tab.log": "История",
"log.empty": "История пуста",
"log.stamp": "Д{0} {1:00}:{2:00}",
"hud.events": "События",
"hud.perf": "Произв.",
"events.title": "Журнал событий",
"events.empty": "Пока ничего не произошло",
"perf.title": "Производительность",
"perf.fps": "{0} FPS · {1:0.0} мс/кадр",
"perf.root": "{0}: {1:0.000} мс · систем {2}",
"perf.systemline": "{0} {1:0.000} мс {2:0}%",
"perf.hint": "Обновляется ~5 раз/с · показаны самые дорогие системы",
"event.mated": "{0} спарилась с {1}",
"event.pregnant": "{0} забеременела",
"event.birth": "{0} принесла потомство ×{1}",
"event.hatch": "{0}: вылупились детёныши ×{1}",
"event.hunt": "{0} начала охоту: цель — {1}",
"event.injured": "{0} ранила: {1}",
"event.struck": "{0} ударил {1} (урон {2:0})",
"event.tookhit": "{0}: удар от {1} (урон {2:0})",
"event.killed": "{0} убила добычу: {1}",
"event.ate": "{0} поела",
"event.drank": "{0} попила",
"event.rest": "{0} отдыхает",
"event.dig": "{0} роет землю в поисках корма",
"event.wallow": "{0} валяется в грязи",
"event.fled": "{0} спасается бегством",
"event.grew": "{0}: новая стадия — {1}",
"event.death.starve": "{0} погибла от голода/жажды",
"event.death.age": "{0} умерла от старости",
"event.death.disease": "{0} погибла от болезни",
"net.hud": "Мультиплеер: {0} | жителей: {1} | Esc — в меню",
"net.connecting": "подключение…",
"net.connected": "подключено",