Рефактор: геном животного — данными, а не кодом

AnimalGenomeDef (фикс. поля) убран; AnimalDef.Genome теперь словарь geneId->base. AnimalSet.BuildTemplate строит шаблон generically по реестру генов (разброс из самого GeneDef, дискретные поддержаны). Модер добавляет ген особи одной строкой JSON в animals.json — без правки кода. Устраняет блокер расширяемости #1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Leonid Pershin
2026-06-14 04:39:16 +03:00
co-authored by Claude Opus 4.8
parent 97521f81b8
commit d4a370e02d
5 changed files with 43 additions and 99 deletions
+13 -14
View File
@@ -12,20 +12,19 @@
"maleTexture": "things/pawn/animal/deer/DeerMale_east",
"babyTexture": "things/pawn/animal/deer/DeerBaby_east",
"genome": {
"bodySize": 1.5,
"metabolism": 1.0,
"moveSpeed": 1.2,
"bloodVolume": 1.4,
"vision": 1.3,
"brainSize": 0.45,
"insulation": 0.55,
"furColor": 0.45,
"maturityAge": 90,
"lifespan": 360,
"breedingSeason": 2,
"gestationDays": 30,
"litterSize": 1,
"spread": 0.08
"GeneMaxBodySize": 1.5,
"GeneMetabolism": 1.0,
"GeneMoveSpeed": 1.2,
"GeneBloodVolume": 1.4,
"GeneVision": 1.3,
"GeneBrainSize": 0.45,
"GeneInsulation": 0.55,
"GeneFurColor": 0.45,
"GeneMaturityAge": 90,
"GeneLifespan": 360,
"GeneBreedingSeason": 2,
"GeneGestationDays": 30,
"GeneLitterSize": 1
}
}
]
+1 -1
View File
@@ -91,7 +91,7 @@
"default": 1.0, "min": 0.2, "max": 3.0, "tags": ["animal", "senses"],
"effects": { "vision": "value" } },
{ "defName": "GeneBrainSize", "parent": "BaseNumericGene", "label": "gene.brainSize",
"default": 0.45, "min": 0.0, "max": 1.0, "tags": ["animal", "brain"],
"default": 0.45, "min": 0.0, "max": 1.0, "spread": 0.03, "tags": ["animal", "brain"],
"effects": { "brainSize": "value" } },
{ "defName": "GeneInsulation", "parent": "BaseNumericGene", "label": "gene.insulation",
"default": 0.5, "min": 0.0, "max": 1.0, "tags": ["animal", "temperature"],