Mass is derived by a cubic law: mass = BaseMassKg * (size / reference)^3, so a juvenile/seedling weighs far less than an adult/mature and the size gene moves mass too. New Mass helper + BaseMassKg on AnimalDef/PlantDef (deer 70, wolf 45, boar 80, chicken 2.5; trees ~450, grass 0.4, etc.) and MassKg per unit on ProductDef (foundation for hauling/inventory). Wired into the sim (as chosen): - Corpse meat is now proportional to body mass (Mass.MeatFraction), not raw bodySize; Corpse gained a BodySize field so sprite scale stays independent of meat (save/load updated). - Kleiber metabolism: need decay x= (mass/refMass)^0.75, normalized per species, so juveniles are cheaper to feed and heavier individuals eat a bit more, without cross-species balance blowups (adults of typical size are unchanged). - Carry capacity = mass x fraction x carry capability (Moving for quadrupeds; Manipulation for future humans), shown in inspector/console. A dormant Carrier component + Mass.LoadSpeedFactor hook slow an overloaded animal — the foundation for item hauling. Inspector shows body/plant weight (+carry); `animal`/`plant` console print mass. Build + --check-content clean (42 genes, 41 traits). Not GUI-verified. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
127 lines
8.5 KiB
JSON
127 lines
8.5 KiB
JSON
{
|
|
"type": "Plant",
|
|
// Общие (абстрактные) растения: базовые геномы по типам ниш. Конкретные виды наследуют их
|
|
// через "parent" и лежат рядом в файлах по семействам (Trees, Bushes, Cacti, …).
|
|
"defs": [
|
|
{ "defName": "BaseTree", "abstract": true, "sizeCells": 2.0, "trunkRadiusCells": 0.28,
|
|
"baseMassKg": 450,
|
|
"harvestProduct": "ProductWood", "fruitProduct": "ProductAcorn",
|
|
"genome": { "optimalLight": 0.6, "lightTolerance": 0.5, "optimalTemperature": 14, "temperatureTolerance": 10,
|
|
"coldHardiness": 14, "heatHardiness": 12,
|
|
"optimalFertility": 1.4, "fertilityTolerance": 0.9, "vigor": 1.0,
|
|
"lifespan": 160, "dispersalRange": 2, "reproduceInterval": 14, "selfPollination": 0.2,
|
|
"mutationRate": 0.05, "variantChance": 0.15, "spread": 0.08,
|
|
"fruitYield": 5, "fruitSeason": 2, "harvestAmount": 10, "leafHue": 0.30 },
|
|
"stages": [
|
|
{ "texture": "things/plant/seed_default", "sizeCells": 0.6, "growDays": 4, "label": "plant.stage.seedling" },
|
|
{ "sizeCells": 1.2, "growDays": 9, "label": "plant.stage.sapling" },
|
|
{ "sizeCells": 2.0, "label": "plant.stage.mature" }
|
|
] },
|
|
|
|
// Деревья тёплой и холодной температурных ниш (showcase температурных генов).
|
|
{ "defName": "BaseWarmTree", "abstract": true, "sizeCells": 2.0, "trunkRadiusCells": 0.28,
|
|
"baseMassKg": 420,
|
|
"harvestProduct": "ProductWood", "fruitProduct": "ProductAcorn",
|
|
"genome": { "optimalLight": 0.65, "lightTolerance": 0.5, "optimalTemperature": 23, "temperatureTolerance": 9,
|
|
"coldHardiness": 8, "heatHardiness": 16,
|
|
"optimalFertility": 1.5, "fertilityTolerance": 0.9, "vigor": 1.1,
|
|
"lifespan": 150, "dispersalRange": 2, "reproduceInterval": 14, "selfPollination": 0.2,
|
|
"mutationRate": 0.05, "variantChance": 0.15, "spread": 0.08,
|
|
"fruitYield": 5, "fruitSeason": 2, "harvestAmount": 10, "leafHue": 0.22 },
|
|
"stages": [
|
|
{ "texture": "things/plant/seed_default", "sizeCells": 0.6, "growDays": 4, "label": "plant.stage.seedling" },
|
|
{ "sizeCells": 1.2, "growDays": 9, "label": "plant.stage.sapling" },
|
|
{ "sizeCells": 2.0, "label": "plant.stage.mature" }
|
|
] },
|
|
{ "defName": "BaseColdTree", "abstract": true, "sizeCells": 2.0, "trunkRadiusCells": 0.26,
|
|
"baseMassKg": 500,
|
|
"harvestProduct": "ProductWood", "fruitProduct": "ProductAcorn",
|
|
"genome": { "optimalLight": 0.55, "lightTolerance": 0.5, "optimalTemperature": 8, "temperatureTolerance": 12,
|
|
"coldHardiness": 18, "heatHardiness": 8,
|
|
"optimalFertility": 1.2, "fertilityTolerance": 1.0, "vigor": 0.9,
|
|
"lifespan": 220, "dispersalRange": 2, "reproduceInterval": 16, "selfPollination": 0.2,
|
|
"mutationRate": 0.05, "variantChance": 0.12, "spread": 0.08,
|
|
"fruitYield": 4, "fruitSeason": 2, "harvestAmount": 12, "leafHue": 0.45 },
|
|
"stages": [
|
|
{ "texture": "things/plant/seed_default", "sizeCells": 0.6, "growDays": 4, "label": "plant.stage.seedling" },
|
|
{ "sizeCells": 1.2, "growDays": 9, "label": "plant.stage.sapling" },
|
|
{ "sizeCells": 2.0, "label": "plant.stage.mature" }
|
|
] },
|
|
|
|
{ "defName": "BaseBush", "abstract": true, "label": "plant.bush", "sizeCells": 1.4,
|
|
"baseMassKg": 6,
|
|
"fruitProduct": "ProductBerry",
|
|
"genome": { "optimalLight": 0.6, "lightTolerance": 0.5, "optimalTemperature": 17, "temperatureTolerance": 9,
|
|
"coldHardiness": 10, "heatHardiness": 8,
|
|
"optimalFertility": 1.1, "fertilityTolerance": 1.0, "vigor": 1.0,
|
|
"lifespan": 60, "dispersalRange": 2, "reproduceInterval": 7, "selfPollination": 0.5,
|
|
"mutationRate": 0.05, "variantChance": 0.18, "spread": 0.1,
|
|
"fruitYield": 3, "fruitSeason": 1, "harvestAmount": 3, "leafHue": 0.32 },
|
|
"stages": [
|
|
{ "texture": "things/plant/seed_default", "sizeCells": 0.6, "growDays": 3, "label": "plant.stage.sprout" },
|
|
{ "sizeCells": 1.4, "label": "plant.stage.mature" }
|
|
] },
|
|
|
|
// Кактусы: жаролюбивы, засухоустойчивы (низкий оптимум почвы), морозо-нестойки → гибнут в морозы.
|
|
{ "defName": "BaseCactus", "abstract": true, "label": "plant.cactus", "sizeCells": 1.2, "trunkRadiusCells": 0,
|
|
"baseMassKg": 35,
|
|
"harvestProduct": "ProductFiber",
|
|
"genome": { "optimalLight": 0.95, "lightTolerance": 0.35, "optimalTemperature": 26, "temperatureTolerance": 8,
|
|
"coldHardiness": 20, "heatHardiness": 18,
|
|
"optimalFertility": 0.4, "fertilityTolerance": 0.5, "vigor": 0.5,
|
|
"lifespan": 300, "dispersalRange": 2, "reproduceInterval": 25, "selfPollination": 0.6,
|
|
"mutationRate": 0.05, "variantChance": 0.15, "spread": 0.08,
|
|
"fruitYield": 3, "fruitSeason": 1, "harvestAmount": 3, "leafHue": 0.5,
|
|
"thorns": 0.6, "palatability": 0.5 },
|
|
"stages": [
|
|
{ "texture": "things/plant/seed_default", "sizeCells": 0.5, "growDays": 5, "label": "plant.stage.sprout" },
|
|
{ "label": "plant.stage.mature" }
|
|
] },
|
|
|
|
// Грибы: подлесок леса. Низкий оптимум света (0.15) → растут в тени крон, где другим темно
|
|
// (showcase световой пригодности). Богатая почва, короткая жизнь, быстрое спороношение.
|
|
{ "defName": "BaseMushroom", "abstract": true, "label": "plant.mushroom", "sizeCells": 0.9, "trunkRadiusCells": 0,
|
|
"baseMassKg": 0.3,
|
|
"harvestProduct": "ProductMushroom",
|
|
"genome": { "optimalLight": 0.15, "lightTolerance": 0.22, "optimalTemperature": 14, "temperatureTolerance": 11,
|
|
"coldHardiness": 12, "heatHardiness": 8,
|
|
"optimalFertility": 1.6, "fertilityTolerance": 1.1, "vigor": 1.2,
|
|
"lifespan": 25, "dispersalRange": 3, "reproduceInterval": 4, "selfPollination": 0.9,
|
|
"mutationRate": 0.06, "variantChance": 0.2, "spread": 0.1,
|
|
"fruitYield": 0, "fruitSeason": 1, "harvestAmount": 3, "leafHue": 0.5,
|
|
"toxicity": 0.5, "palatability": 0.4 },
|
|
"stages": [
|
|
{ "texture": "things/plant/seed_default", "sizeCells": 0.4, "growDays": 2, "label": "plant.stage.sprout" },
|
|
{ "label": "plant.stage.mature" }
|
|
] },
|
|
|
|
// Луг: цветы (декоративные, быстрое расселение) и ягодный почвопокров (еда).
|
|
{ "defName": "BaseFlower", "abstract": true, "label": "plant.flower", "sizeCells": 1.0, "trunkRadiusCells": 0,
|
|
"baseMassKg": 0.15,
|
|
"genome": { "optimalLight": 0.9, "lightTolerance": 0.35, "optimalTemperature": 20, "temperatureTolerance": 9,
|
|
"coldHardiness": 8, "heatHardiness": 8,
|
|
"optimalFertility": 1.0, "fertilityTolerance": 1.1, "vigor": 1.4,
|
|
"lifespan": 18, "dispersalRange": 4, "reproduceInterval": 3, "selfPollination": 0.85,
|
|
"mutationRate": 0.08, "variantChance": 0.3, "spread": 0.1,
|
|
"fruitYield": 0, "fruitSeason": 0, "harvestAmount": 0, "leafHue": 0.2 },
|
|
"stages": [
|
|
{ "texture": "things/plant/seed_default", "sizeCells": 0.4, "growDays": 2, "label": "plant.stage.sprout" },
|
|
{ "label": "plant.stage.mature" }
|
|
] },
|
|
|
|
{ "defName": "BaseBerryBush", "abstract": true, "label": "plant.berrybush", "sizeCells": 1.2, "trunkRadiusCells": 0,
|
|
"baseMassKg": 5,
|
|
"fruitProduct": "ProductBerry",
|
|
"genome": { "optimalLight": 0.8, "lightTolerance": 0.4, "optimalTemperature": 18, "temperatureTolerance": 9,
|
|
"coldHardiness": 10, "heatHardiness": 7,
|
|
"optimalFertility": 1.2, "fertilityTolerance": 1.0, "vigor": 1.1,
|
|
"lifespan": 40, "dispersalRange": 2, "reproduceInterval": 6, "selfPollination": 0.6,
|
|
"mutationRate": 0.05, "variantChance": 0.18, "spread": 0.1,
|
|
"fruitYield": 4, "fruitSeason": 2, "harvestAmount": 0, "leafHue": 0.33 },
|
|
"stages": [
|
|
{ "texture": "things/plant/seed_default", "sizeCells": 0.5, "growDays": 3, "label": "plant.stage.sprout" },
|
|
{ "label": "plant.stage.mature" }
|
|
] }
|
|
]
|
|
}
|