Adds the first plant↔animal coupling beyond "herbivore eats plant": a toxin/ thorns ↔ tolerance arms race built on the existing gene + hediff engines, plus the fuller RimWorld capacity set on the health scaffold. Coevolution C1 — plant defense → poisons/injures the eater: - Plant genes GeneToxicity/GeneThorns/GenePalatability (GenomeDef + PlantSet template + PlantPhenotype); animal gene GeneToxinTolerance. - Hediff Poisoned (non-progressing; grows from eating via HealthState.Intensify, immunity heals it, overdose is lethal). - AnimalActionSystem.ApplyPlantDefense on each bite: poison dose = toxicity × (1 − tolerance); thorns → ApplyInjury (reuses predator-cluster). - Cost of defense: PlantGrowthSystem growth ×= DefenseGrowthFactor() (1 − 0.4·toxicity − 0.3·thorns) — without a cost defense would max out and coevolution would stall. - Showcase: cactus thorns, poisonous mushroom; grass starts clean so toxicity can evolve on the staple. Deer/boar get small starting tolerance. Coevolution C2 — discrimination + the other half of the arms race: - Smart foraging (reuses A7 intelligence gating): herbivores with effective intelligence ≥ tier-4 weigh plants by palatability − perceived-toxin − distance; reflex grazers (or sick animals with dropped consciousness) eat the nearest plant and risk poison. - Cost of tolerance: detox raises metabolism (need decay ×= 1 + 0.5·tolerance), closing the arms race so tolerance doesn't fix at 1. - popstats reports mean toxinTolerance and a plants line (mean toxicity/thorns/ palatability) to watch the drift. Health capacities (RimWorld parity, user-requested): - New capacities BloodFiltration/Hearing/Talking/Eating; CapacityCalc rewritten to emit only capacities the body declares (a destroyed organ still shows 0%) with the full dependency chain (blood → pumping/breathing/filtration → consciousness → moving/sight/hearing/talking/eating, digestion). - Quadruped body gains kidneys + liver (filtration), ears (hearing), jaw/tongue (eating/talking). Inspector health tab lists all of a body's capacities. Localization (ru/en) for new genes' defense line, Poisoned, and the new capacity labels. Build + --check-content clean (11 def types, 40 genes, 39 traits). Not GUI-verified (headless can't render the world scene). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
48 lines
2.9 KiB
JSON
48 lines
2.9 KiB
JSON
{
|
|
"type": "Body",
|
|
// Анатомия видов (фаза A5): дерево частей/органов. Вклады в способности (capacities) по телу
|
|
// суммируются ≈1 у здоровой особи. maxHp умножается на размер тела особи при создании.
|
|
// Источников урона пока нет — части на полном HP, способности = 1; каркас под болезни/хищников.
|
|
"defs": [
|
|
{
|
|
"defName": "Quadruped",
|
|
"parts": [
|
|
{ "name": "torso", "coverage": 0.3, "maxHp": 40, "vital": true },
|
|
{ "name": "heart", "parent": "torso", "coverage": 0.02, "maxHp": 12, "vital": true,
|
|
"capacities": { "BloodPumping": 1.0 } },
|
|
{ "name": "lungLeft", "parent": "torso", "coverage": 0.03, "maxHp": 12,
|
|
"capacities": { "Breathing": 0.5 } },
|
|
{ "name": "lungRight", "parent": "torso", "coverage": 0.03, "maxHp": 12,
|
|
"capacities": { "Breathing": 0.5 } },
|
|
{ "name": "liver", "parent": "torso", "coverage": 0.03, "maxHp": 14, "vital": true,
|
|
"capacities": { "BloodFiltration": 0.4 } },
|
|
{ "name": "kidneyLeft", "parent": "torso", "coverage": 0.02, "maxHp": 10,
|
|
"capacities": { "BloodFiltration": 0.3 } },
|
|
{ "name": "kidneyRight", "parent": "torso", "coverage": 0.02, "maxHp": 10,
|
|
"capacities": { "BloodFiltration": 0.3 } },
|
|
{ "name": "stomach", "parent": "torso", "coverage": 0.03, "maxHp": 12,
|
|
"capacities": { "Digestion": 1.0 } },
|
|
{ "name": "head", "coverage": 0.08, "maxHp": 25 },
|
|
{ "name": "brain", "parent": "head", "coverage": 0.02, "maxHp": 12, "vital": true,
|
|
"capacities": { "Consciousness": 1.0 } },
|
|
{ "name": "eyeLeft", "parent": "head", "coverage": 0.015, "maxHp": 8,
|
|
"capacities": { "Sight": 0.5 } },
|
|
{ "name": "eyeRight", "parent": "head", "coverage": 0.015, "maxHp": 8,
|
|
"capacities": { "Sight": 0.5 } },
|
|
{ "name": "earLeft", "parent": "head", "coverage": 0.01, "maxHp": 8,
|
|
"capacities": { "Hearing": 0.5 } },
|
|
{ "name": "earRight", "parent": "head", "coverage": 0.01, "maxHp": 8,
|
|
"capacities": { "Hearing": 0.5 } },
|
|
{ "name": "jaw", "parent": "head", "coverage": 0.02, "maxHp": 10,
|
|
"capacities": { "Eating": 1.0, "Talking": 0.5 } },
|
|
{ "name": "tongue", "parent": "head", "coverage": 0.01, "maxHp": 8,
|
|
"capacities": { "Talking": 0.5 } },
|
|
{ "name": "legFrontLeft", "coverage": 0.08, "maxHp": 15, "capacities": { "Moving": 0.25 } },
|
|
{ "name": "legFrontRight", "coverage": 0.08, "maxHp": 15, "capacities": { "Moving": 0.25 } },
|
|
{ "name": "legBackLeft", "coverage": 0.08, "maxHp": 15, "capacities": { "Moving": 0.25 } },
|
|
{ "name": "legBackRight", "coverage": 0.08, "maxHp": 15, "capacities": { "Moving": 0.25 } }
|
|
]
|
|
}
|
|
]
|
|
}
|