Weight system: body mass, carry capacity, Kleiber metabolism
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>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
0e2cf55a54
commit
1a3f205f86
@@ -16,6 +16,7 @@
|
||||
"body": "Quadruped",
|
||||
"diet": ["plant"],
|
||||
"spawnPer1000Cells": 2.5,
|
||||
"baseMassKg": 70,
|
||||
"genome": {
|
||||
"GeneMaxBodySize": 1.5,
|
||||
"GeneMetabolism": 1.0,
|
||||
@@ -51,6 +52,7 @@
|
||||
"attackDamage": 80,
|
||||
"attackBleed": 3.0,
|
||||
"attackBloodLoss": 5.0,
|
||||
"baseMassKg": 45,
|
||||
"genome": {
|
||||
"GeneMaxBodySize": 1.6,
|
||||
"GeneMetabolism": 1.1,
|
||||
@@ -84,6 +86,7 @@
|
||||
"attackDamage": 45,
|
||||
"attackBleed": 1.8,
|
||||
"attackBloodLoss": 3.0,
|
||||
"baseMassKg": 80,
|
||||
"genome": {
|
||||
"GeneMaxBodySize": 1.3,
|
||||
"GeneMetabolism": 1.2,
|
||||
@@ -116,6 +119,7 @@
|
||||
"spawnPer1000Cells": 1.5,
|
||||
"baseSpeed": 22,
|
||||
"visionCells": 10,
|
||||
"baseMassKg": 2.5,
|
||||
"genome": {
|
||||
"GeneMaxBodySize": 0.5,
|
||||
"GeneMetabolism": 1.3,
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
// Трава: быстрый почвопокров, основной скаттер лугов и леса.
|
||||
"defs": [
|
||||
{ "defName": "GrassA", "label": "plant.grass", "texture": "things/plant/grass/grassa", "sizeCells": 1.5,
|
||||
"baseMassKg": 0.4,
|
||||
"harvestProduct": "ProductGrass",
|
||||
"genome": { "optimalLight": 0.85, "lightTolerance": 0.35, "optimalTemperature": 19, "temperatureTolerance": 8,
|
||||
"coldHardiness": 9, "heatHardiness": 6,
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
// через "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,
|
||||
@@ -19,6 +20,7 @@
|
||||
|
||||
// Деревья тёплой и холодной температурных ниш (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,
|
||||
@@ -32,6 +34,7 @@
|
||||
{ "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,
|
||||
@@ -46,6 +49,7 @@
|
||||
] },
|
||||
|
||||
{ "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,
|
||||
@@ -60,6 +64,7 @@
|
||||
|
||||
// Кактусы: жаролюбивы, засухоустойчивы (низкий оптимум почвы), морозо-нестойки → гибнут в морозы.
|
||||
{ "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,
|
||||
@@ -76,6 +81,7 @@
|
||||
// Грибы: подлесок леса. Низкий оптимум света (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,
|
||||
@@ -91,6 +97,7 @@
|
||||
|
||||
// Луг: цветы (декоративные, быстрое расселение) и ягодный почвопокров (еда).
|
||||
{ "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,
|
||||
@@ -103,6 +110,7 @@
|
||||
] },
|
||||
|
||||
{ "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,
|
||||
|
||||
@@ -3,16 +3,16 @@
|
||||
// Продукты сбора/плодоношения растений. На них ссылаются PlantDef.harvestProduct / fruitProduct;
|
||||
// количество задаётся генами (harvestAmount / fruitYield).
|
||||
"defs": [
|
||||
{ "defName": "ProductWood", "label": "product.wood", "kind": "material" },
|
||||
{ "defName": "ProductGrass", "label": "product.grass", "kind": "material" },
|
||||
{ "defName": "ProductFiber", "label": "product.fiber", "kind": "material" },
|
||||
{ "defName": "ProductBerry", "label": "product.berry", "kind": "food" },
|
||||
{ "defName": "ProductAcorn", "label": "product.acorn", "kind": "food" },
|
||||
{ "defName": "ProductMushroom", "label": "product.mushroom", "kind": "food" },
|
||||
{ "defName": "ProductWood", "label": "product.wood", "kind": "material", "massKg": 1.0 },
|
||||
{ "defName": "ProductGrass", "label": "product.grass", "kind": "material", "massKg": 0.1 },
|
||||
{ "defName": "ProductFiber", "label": "product.fiber", "kind": "material", "massKg": 0.2 },
|
||||
{ "defName": "ProductBerry", "label": "product.berry", "kind": "food", "massKg": 0.05 },
|
||||
{ "defName": "ProductAcorn", "label": "product.acorn", "kind": "food", "massKg": 0.05 },
|
||||
{ "defName": "ProductMushroom", "label": "product.mushroom", "kind": "food", "massKg": 0.1 },
|
||||
|
||||
// Животные продукты (фаза A5): добываются из трупа (разделка/гниение). Инвентарь/добыча — позже.
|
||||
{ "defName": "ProductMeat", "label": "product.meat", "kind": "food" },
|
||||
{ "defName": "ProductBone", "label": "product.bone", "kind": "material" },
|
||||
{ "defName": "ProductLeather", "label": "product.leather", "kind": "material" }
|
||||
{ "defName": "ProductMeat", "label": "product.meat", "kind": "food", "massKg": 0.5 },
|
||||
{ "defName": "ProductBone", "label": "product.bone", "kind": "material", "massKg": 0.3 },
|
||||
{ "defName": "ProductLeather", "label": "product.leather", "kind": "material", "massKg": 0.4 }
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user