尸织技能

This commit is contained in:
2025-10-15 17:19:35 +08:00
parent 7fb2a0e03e
commit cf08c6525c
13 changed files with 861 additions and 218 deletions

Binary file not shown.

View File

@@ -1,12 +1,14 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<AbilityDef Name="ARA_EggSpew_Base" Abstract="True">
<cooldownTicksRange>5000</cooldownTicksRange>
<cooldownTicksRange>50000</cooldownTicksRange>
<aiCanUse>false</aiCanUse>
<displayOrder>300</displayOrder>
<displayGizmoWhileUndrafted>true</displayGizmoWhileUndrafted>
<disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
<warmupStartSound>AcidSpray_Warmup</warmupStartSound>
<charges>5</charges>
<cooldownPerCharge>true</cooldownPerCharge>
<verbProperties>
<verbClass>Verb_CastAbility</verbClass>
<range>1</range>
@@ -44,12 +46,14 @@
</projectile>
</ThingDef>
<AbilityDef Name="ARA_CocoonSpew_Base" Abstract="True">
<cooldownTicksRange>5000</cooldownTicksRange>
<cooldownTicksRange>50000</cooldownTicksRange>
<aiCanUse>true</aiCanUse>
<displayOrder>300</displayOrder>
<displayGizmoWhileUndrafted>true</displayGizmoWhileUndrafted>
<disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
<warmupStartSound>AcidSpray_Warmup</warmupStartSound>
<charges>5</charges>
<cooldownPerCharge>true</cooldownPerCharge>
<verbProperties>
<verbClass>Verb_CastAbility</verbClass>
<range>1</range>
@@ -282,6 +286,96 @@
</li>
</comps>
</AbilityDef>
<AbilityDef ParentName="ARA_CocoonSpew_Base">
<defName>ARA_Cocoon_Cloth_From_Corpse</defName>
<label>尸织:织物孵化茧</label>
<description>指定一具尚未腐烂或轻微腐烂的尸体,将其转化为一枚织物茧,尸体剩余的营养值会转化为茧的营养值——参阅茧的超链接,了解其能生产的所有装备的特点。</description>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Cloth</iconPath>
<verbProperties>
<verbClass>Verb_CastAbilityTouch</verbClass>
<range>-1</range>
<warmupTime>7</warmupTime>
<soundCast>AcidSpray_Resolve</soundCast>
<violent>false</violent>
<targetable>true</targetable>
<targetParams Inherit="False">
<canTargetSelf>false</canTargetSelf>
<canTargetMechs>false</canTargetMechs>
<canTargetBuildings>false</canTargetBuildings>
<canTargetCorpses>true</canTargetCorpses>
</targetParams>
</verbProperties>
<cooldownTicksRange>1000</cooldownTicksRange>
<jobDef>CastAbilityOnThingMelee</jobDef>
<charges>10</charges>
<cooldownPerCharge>true</cooldownPerCharge>
<comps>
<li Class="ArachnaeSwarm.CompProperties_AbilityTransformCorpse">
<buildingDef>ARA_Cocoon_Cloth_From_Corpse</buildingDef>
<nutritionToFuelRatio>1</nutritionToFuelRatio>
<requireFreshCorpse>false</requireFreshCorpse>
<maxRotStage>Rotting</maxRotStage> <!-- 允许新鲜和略腐烂的尸体 -->
<sound>AcidSpray_Resolve</sound>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityShowTemperatureRange">
<temperatureCheckBuilding>ARA_Cocoon_Cloth</temperatureCheckBuilding>
<customLabel>温度要求</customLabel>
<showCurrentTemperature>true</showCurrentTemperature>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityShowInteractiveThing">
<cocoonBuildingDef>ARA_Cocoon_Cloth</cocoonBuildingDef>
<customLabel>可孵化物品列表</customLabel>
<showResearchRequirements>true</showResearchRequirements>
<showNutritionCost>true</showNutritionCost>
<showIncubationTime>true</showIncubationTime>
</li>
</comps>
</AbilityDef>
<AbilityDef ParentName="ARA_CocoonSpew_Base">
<defName>ARA_Cocoon_Weapon_From_Corpse</defName>
<label>尸织:武装器官孵化茧</label>
<description>指定一具尚未腐烂或轻微腐烂的尸体,将其转化为一枚武装器官茧,尸体剩余的营养值会转化为茧的营养值——参阅茧的超链接,了解其能生产的所有装备的特点。</description>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Weapon</iconPath>
<verbProperties>
<verbClass>Verb_CastAbilityTouch</verbClass>
<range>-1</range>
<warmupTime>7</warmupTime>
<soundCast>AcidSpray_Resolve</soundCast>
<violent>false</violent>
<targetable>true</targetable>
<targetParams Inherit="False">
<canTargetSelf>false</canTargetSelf>
<canTargetMechs>false</canTargetMechs>
<canTargetBuildings>false</canTargetBuildings>
<canTargetCorpses>true</canTargetCorpses>
</targetParams>
</verbProperties>
<cooldownTicksRange>1000</cooldownTicksRange>
<jobDef>CastAbilityOnThingMelee</jobDef>
<charges>10</charges>
<cooldownPerCharge>true</cooldownPerCharge>
<comps>
<li Class="ArachnaeSwarm.CompProperties_AbilityTransformCorpse">
<buildingDef>ARA_Cocoon_Weapon_From_Corpse</buildingDef>
<nutritionToFuelRatio>1</nutritionToFuelRatio>
<requireFreshCorpse>false</requireFreshCorpse>
<maxRotStage>Rotting</maxRotStage> <!-- 允许新鲜和略腐烂的尸体 -->
<sound>AcidSpray_Resolve</sound>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityShowTemperatureRange">
<temperatureCheckBuilding>ARA_Cocoon_Weapon</temperatureCheckBuilding>
<customLabel>温度要求</customLabel>
<showCurrentTemperature>true</showCurrentTemperature>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityShowInteractiveThing">
<cocoonBuildingDef>ARA_Cocoon_Weapon</cocoonBuildingDef>
<customLabel>可孵化物品列表</customLabel>
<showResearchRequirements>true</showResearchRequirements>
<showNutritionCost>true</showNutritionCost>
<showIncubationTime>true</showIncubationTime>
</li>
</comps>
</AbilityDef>
<!-- T1 -->
<AbilityDef ParentName="ARA_CocoonSpew_Base">
<defName>ARA_Cocoon_Cloth_1Stage</defName>
@@ -329,6 +423,96 @@
</li>
</comps>
</AbilityDef>
<AbilityDef ParentName="ARA_CocoonSpew_Base">
<defName>ARA_Cocoon_Cloth_1Stage_From_Corpse</defName>
<label>尸织织物孵化茧——等级1</label>
<description>指定一具尚未腐烂或轻微腐烂的尸体,将其转化为一枚织物茧,尸体剩余的营养值会转化为茧的营养值——参阅茧的超链接,了解其能生产的所有装备的特点。</description>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Cloth_1Stage</iconPath>
<verbProperties>
<verbClass>Verb_CastAbilityTouch</verbClass>
<range>-1</range>
<warmupTime>7</warmupTime>
<soundCast>AcidSpray_Resolve</soundCast>
<violent>false</violent>
<targetable>true</targetable>
<targetParams Inherit="False">
<canTargetSelf>false</canTargetSelf>
<canTargetMechs>false</canTargetMechs>
<canTargetBuildings>false</canTargetBuildings>
<canTargetCorpses>true</canTargetCorpses>
</targetParams>
</verbProperties>
<cooldownTicksRange>1000</cooldownTicksRange>
<jobDef>CastAbilityOnThingMelee</jobDef>
<charges>10</charges>
<cooldownPerCharge>true</cooldownPerCharge>
<comps>
<li Class="ArachnaeSwarm.CompProperties_AbilityTransformCorpse">
<buildingDef>ARA_Cocoon_Cloth_1Stage_From_Corpse</buildingDef>
<nutritionToFuelRatio>1</nutritionToFuelRatio>
<requireFreshCorpse>false</requireFreshCorpse>
<maxRotStage>Rotting</maxRotStage> <!-- 允许新鲜和略腐烂的尸体 -->
<sound>AcidSpray_Resolve</sound>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityShowTemperatureRange">
<temperatureCheckBuilding>ARA_Cocoon_Cloth_1Stage</temperatureCheckBuilding>
<customLabel>温度要求</customLabel>
<showCurrentTemperature>true</showCurrentTemperature>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityShowInteractiveThing">
<cocoonBuildingDef>ARA_Cocoon_Cloth_1Stage</cocoonBuildingDef>
<customLabel>可孵化物品列表</customLabel>
<showResearchRequirements>true</showResearchRequirements>
<showNutritionCost>true</showNutritionCost>
<showIncubationTime>true</showIncubationTime>
</li>
</comps>
</AbilityDef>
<AbilityDef ParentName="ARA_CocoonSpew_Base">
<defName>ARA_Cocoon_Weapon_1Stage_From_Corpse</defName>
<label>尸织武装器官孵化茧——等级1</label>
<description>指定一具尚未腐烂或轻微腐烂的尸体,将其转化为一枚武装器官茧,尸体剩余的营养值会转化为茧的营养值——参阅茧的超链接,了解其能生产的所有装备的特点。</description>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Weapon_1Stage</iconPath>
<verbProperties>
<verbClass>Verb_CastAbilityTouch</verbClass>
<range>-1</range>
<warmupTime>7</warmupTime>
<soundCast>AcidSpray_Resolve</soundCast>
<violent>false</violent>
<targetable>true</targetable>
<targetParams Inherit="False">
<canTargetSelf>false</canTargetSelf>
<canTargetMechs>false</canTargetMechs>
<canTargetBuildings>false</canTargetBuildings>
<canTargetCorpses>true</canTargetCorpses>
</targetParams>
</verbProperties>
<cooldownTicksRange>1000</cooldownTicksRange>
<jobDef>CastAbilityOnThingMelee</jobDef>
<charges>10</charges>
<cooldownPerCharge>true</cooldownPerCharge>
<comps>
<li Class="ArachnaeSwarm.CompProperties_AbilityTransformCorpse">
<buildingDef>ARA_Cocoon_Weapon_1Stage_From_Corpse</buildingDef>
<nutritionToFuelRatio>1</nutritionToFuelRatio>
<requireFreshCorpse>false</requireFreshCorpse>
<maxRotStage>Rotting</maxRotStage> <!-- 允许新鲜和略腐烂的尸体 -->
<sound>AcidSpray_Resolve</sound>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityShowTemperatureRange">
<temperatureCheckBuilding>ARA_Cocoon_Weapon_1Stage</temperatureCheckBuilding>
<customLabel>温度要求</customLabel>
<showCurrentTemperature>true</showCurrentTemperature>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityShowInteractiveThing">
<cocoonBuildingDef>ARA_Cocoon_Weapon_1Stage</cocoonBuildingDef>
<customLabel>可孵化物品列表</customLabel>
<showResearchRequirements>true</showResearchRequirements>
<showNutritionCost>true</showNutritionCost>
<showIncubationTime>true</showIncubationTime>
</li>
</comps>
</AbilityDef>
<!-- T2 -->
<AbilityDef ParentName="ARA_CocoonSpew_Base">
<defName>ARA_Cocoon_Cloth_2Stage</defName>
@@ -376,6 +560,96 @@
</li>
</comps>
</AbilityDef>
<AbilityDef ParentName="ARA_CocoonSpew_Base">
<defName>ARA_Cocoon_Cloth_2Stage_From_Corpse</defName>
<label>尸织织物孵化茧——等级2</label>
<description>指定一具尚未腐烂或轻微腐烂的尸体,将其转化为一枚织物茧,尸体剩余的营养值会转化为茧的营养值——参阅茧的超链接,了解其能生产的所有装备的特点。</description>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Cloth_2Stage</iconPath>
<verbProperties>
<verbClass>Verb_CastAbilityTouch</verbClass>
<range>-1</range>
<warmupTime>7</warmupTime>
<soundCast>AcidSpray_Resolve</soundCast>
<violent>false</violent>
<targetable>true</targetable>
<targetParams Inherit="False">
<canTargetSelf>false</canTargetSelf>
<canTargetMechs>false</canTargetMechs>
<canTargetBuildings>false</canTargetBuildings>
<canTargetCorpses>true</canTargetCorpses>
</targetParams>
</verbProperties>
<cooldownTicksRange>1000</cooldownTicksRange>
<jobDef>CastAbilityOnThingMelee</jobDef>
<charges>10</charges>
<cooldownPerCharge>true</cooldownPerCharge>
<comps>
<li Class="ArachnaeSwarm.CompProperties_AbilityTransformCorpse">
<buildingDef>ARA_Cocoon_Cloth_2Stage_From_Corpse</buildingDef>
<nutritionToFuelRatio>1</nutritionToFuelRatio>
<requireFreshCorpse>false</requireFreshCorpse>
<maxRotStage>Rotting</maxRotStage> <!-- 允许新鲜和略腐烂的尸体 -->
<sound>AcidSpray_Resolve</sound>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityShowTemperatureRange">
<temperatureCheckBuilding>ARA_Cocoon_Cloth_2Stage</temperatureCheckBuilding>
<customLabel>温度要求</customLabel>
<showCurrentTemperature>true</showCurrentTemperature>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityShowInteractiveThing">
<cocoonBuildingDef>ARA_Cocoon_Cloth_2Stage</cocoonBuildingDef>
<customLabel>可孵化物品列表</customLabel>
<showResearchRequirements>true</showResearchRequirements>
<showNutritionCost>true</showNutritionCost>
<showIncubationTime>true</showIncubationTime>
</li>
</comps>
</AbilityDef>
<AbilityDef ParentName="ARA_CocoonSpew_Base">
<defName>ARA_Cocoon_Weapon_2Stage_From_Corpse</defName>
<label>尸织武装器官孵化茧——等级2</label>
<description>指定一具尚未腐烂或轻微腐烂的尸体,将其转化为一枚武装器官茧,尸体剩余的营养值会转化为茧的营养值——参阅茧的超链接,了解其能生产的所有装备的特点。</description>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Weapon_2Stage</iconPath>
<verbProperties>
<verbClass>Verb_CastAbilityTouch</verbClass>
<range>-1</range>
<warmupTime>7</warmupTime>
<soundCast>AcidSpray_Resolve</soundCast>
<violent>false</violent>
<targetable>true</targetable>
<targetParams Inherit="False">
<canTargetSelf>false</canTargetSelf>
<canTargetMechs>false</canTargetMechs>
<canTargetBuildings>false</canTargetBuildings>
<canTargetCorpses>true</canTargetCorpses>
</targetParams>
</verbProperties>
<cooldownTicksRange>1000</cooldownTicksRange>
<jobDef>CastAbilityOnThingMelee</jobDef>
<charges>10</charges>
<cooldownPerCharge>true</cooldownPerCharge>
<comps>
<li Class="ArachnaeSwarm.CompProperties_AbilityTransformCorpse">
<buildingDef>ARA_Cocoon_Weapon_2Stage_From_Corpse</buildingDef>
<nutritionToFuelRatio>1</nutritionToFuelRatio>
<requireFreshCorpse>false</requireFreshCorpse>
<maxRotStage>Rotting</maxRotStage> <!-- 允许新鲜和略腐烂的尸体 -->
<sound>AcidSpray_Resolve</sound>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityShowTemperatureRange">
<temperatureCheckBuilding>ARA_Cocoon_Weapon_2Stage</temperatureCheckBuilding>
<customLabel>温度要求</customLabel>
<showCurrentTemperature>true</showCurrentTemperature>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityShowInteractiveThing">
<cocoonBuildingDef>ARA_Cocoon_Weapon_2Stage</cocoonBuildingDef>
<customLabel>可孵化物品列表</customLabel>
<showResearchRequirements>true</showResearchRequirements>
<showNutritionCost>true</showNutritionCost>
<showIncubationTime>true</showIncubationTime>
</li>
</comps>
</AbilityDef>
<AbilityDef ParentName="ARA_CocoonSpew_Base">
<defName>ARA_Cocoon_Medicine</defName>

View File

@@ -174,6 +174,8 @@
<abilityDefs>
<li>ARA_Cocoon_Cloth</li>
<li>ARA_Cocoon_Weapon</li>
<li>ARA_Cocoon_Cloth_From_Corpse</li>
<li>ARA_Cocoon_Weapon_From_Corpse</li>
<li>ARA_WeaponSmith_Upgrade_1_Stage</li>
</abilityDefs>
</li>
@@ -247,6 +249,8 @@
<abilityDefs>
<li>ARA_Cocoon_Cloth_1Stage</li>
<li>ARA_Cocoon_Weapon_1Stage</li>
<li>ARA_Cocoon_Cloth_1Stage_From_Corpse</li>
<li>ARA_Cocoon_Weapon_1Stage_From_Corpse</li>
<li>ARA_WeaponSmith_Upgrade_2_Stage</li>
</abilityDefs>
</li>
@@ -320,6 +324,8 @@
<abilityDefs>
<li>ARA_Cocoon_Cloth_2Stage</li>
<li>ARA_Cocoon_Weapon_2Stage</li>
<li>ARA_Cocoon_Cloth_2Stage_From_Corpse</li>
<li>ARA_Cocoon_Weapon_2Stage_From_Corpse</li>
</abilityDefs>
</li>
</comps>

View File

@@ -754,7 +754,6 @@
<MoveSpeed>2</MoveSpeed>
<!-- <RestRateMultiplier>1</RestRateMultiplier> -->
<HungerRateMultiplier>3</HungerRateMultiplier>
<EatingSpeed>5</EatingSpeed>
<MaxNutrition>1</MaxNutrition>
@@ -775,6 +774,7 @@
</statBases>
<race>
<baseHungerRate>2</baseHungerRate>
<foodType>OmnivoreHuman,CarnivoreAnimal,OvivoreAnimal</foodType>
<!-- 身体类型 -->
<body>ArachnaeMyrmecocystus_Body</body>

View File

@@ -62,6 +62,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Cloth</li>
<li>ARA_Cocoon_Cloth_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -94,6 +95,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Cloth</li>
<li>ARA_Cocoon_Cloth_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -126,6 +128,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Cloth</li>
<li>ARA_Cocoon_Cloth_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -158,6 +161,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Cloth</li>
<li>ARA_Cocoon_Cloth_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -190,6 +194,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Cloth</li>
<li>ARA_Cocoon_Cloth_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -310,7 +315,7 @@
</equippedStatOffsets>
<statBases>
<ARA_IncubationCost>10</ARA_IncubationCost>
<ARA_IncubationTime>2</ARA_IncubationTime>
<ARA_IncubationTime>1</ARA_IncubationTime>
</statBases>
<costStuffCount>0</costStuffCount>
<comps>
@@ -320,6 +325,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Cloth</li>
<li>ARA_Cocoon_Cloth_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -357,8 +363,8 @@
<wornGraphicPath>ArachnaeSwarm/Apparel/ARA_Bunny_Girl_Uniform</wornGraphicPath>
</apparel>
<statBases>
<ARA_IncubationCost>120</ARA_IncubationCost>
<ARA_IncubationTime>2.5</ARA_IncubationTime>
<ARA_IncubationCost>50</ARA_IncubationCost>
<ARA_IncubationTime>2</ARA_IncubationTime>
</statBases>
<equippedStatOffsets>
</equippedStatOffsets>
@@ -370,6 +376,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Cloth_1Stage</li>
<li>ARA_Cocoon_Cloth_1Stage_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -392,8 +399,8 @@
<ARA_Carapace>25</ARA_Carapace>
</costList>
<statBases>
<ARA_IncubationCost>350</ARA_IncubationCost>
<ARA_IncubationTime>5</ARA_IncubationTime>
<ARA_IncubationCost>50</ARA_IncubationCost>
<ARA_IncubationTime>3</ARA_IncubationTime>
</statBases>
<graphicData>
<texPath>ArachnaeSwarm/Apparel/ARA_Nurse_Uniform</texPath>
@@ -421,6 +428,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Cloth_1Stage</li>
<li>ARA_Cocoon_Cloth_1Stage_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -459,8 +467,8 @@
<wornGraphicPath>ArachnaeSwarm/Apparel/ARA_Wedding_Dress</wornGraphicPath>
</apparel>
<statBases>
<ARA_IncubationCost>350</ARA_IncubationCost>
<ARA_IncubationTime>5</ARA_IncubationTime>
<ARA_IncubationCost>100</ARA_IncubationCost>
<ARA_IncubationTime>4</ARA_IncubationTime>
</statBases>
<equippedStatOffsets>
</equippedStatOffsets>
@@ -472,6 +480,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Cloth_2Stage</li>
<li>ARA_Cocoon_Cloth_2Stage_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -510,8 +519,8 @@
<wornGraphicPath>ArachnaeSwarm/Apparel/ARA_Dragoon_Uniform</wornGraphicPath>
</apparel>
<statBases>
<ARA_IncubationCost>500</ARA_IncubationCost>
<ARA_IncubationTime>10</ARA_IncubationTime>
<ARA_IncubationCost>120</ARA_IncubationCost>
<ARA_IncubationTime>5</ARA_IncubationTime>
</statBases>
<equippedStatOffsets>
</equippedStatOffsets>
@@ -523,6 +532,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Cloth_2Stage</li>
<li>ARA_Cocoon_Cloth_2Stage_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>

View File

@@ -73,6 +73,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Weapon</li>
<li>ARA_Cocoon_Weapon_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -143,6 +144,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Weapon_1Stage</li>
<li>ARA_Cocoon_Weapon_1Stage_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -222,6 +224,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Weapon_2Stage</li>
<li>ARA_Cocoon_Weapon_2Stage_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -335,6 +338,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Weapon</li>
<li>ARA_Cocoon_Weapon_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -431,6 +435,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Weapon_1Stage</li>
<li>ARA_Cocoon_Weapon_1Stage_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -527,6 +532,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Weapon_1Stage</li>
<li>ARA_Cocoon_Weapon_1Stage_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -639,6 +645,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Weapon_2Stage</li>
<li>ARA_Cocoon_Weapon_2Stage_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -753,6 +760,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Weapon_2Stage</li>
<li>ARA_Cocoon_Weapon_2Stage_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -854,6 +862,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Weapon</li>
<li>ARA_Cocoon_Weapon_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -968,6 +977,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Weapon_1Stage</li>
<li>ARA_Cocoon_Weapon_1Stage_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -1116,6 +1126,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Weapon_2Stage</li>
<li>ARA_Cocoon_Weapon_2Stage_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -1233,6 +1244,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Weapon_2Stage</li>
<li>ARA_Cocoon_Weapon_2Stage_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -1366,6 +1378,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Weapon_2Stage</li>
<li>ARA_Cocoon_Weapon_2Stage_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -1501,6 +1514,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Weapon_1Stage</li>
<li>ARA_Cocoon_Weapon_1Stage_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -1652,6 +1666,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Weapon_1Stage</li>
<li>ARA_Cocoon_Weapon_1Stage_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
@@ -1757,6 +1772,7 @@
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Weapon_1Stage</li>
<li>ARA_Cocoon_Weapon_1Stage_From_Corpse</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>

View File

@@ -521,6 +521,7 @@
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>0.02</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
<initialConfigurableTargetFuelLevel>999</initialConfigurableTargetFuelLevel>
</li>
<!-- 研究生产组件 -->
<li Class="ArachnaeSwarm.CompProperties_ResearchProducer">
@@ -594,8 +595,8 @@
<spawnsThingDef>ARA_Cocoon_Cloth</spawnsThingDef>
</projectile>
</ThingDef>
<ThingDef ParentName="ARA_Cocoon_Base">
<defName>ARA_Cocoon_Cloth</defName>
<ThingDef Name="ARA_Cocoon_Cloth" ParentName="ARA_Cocoon_Base" Abstract="True">
<!-- <defName>ARA_Cocoon_Cloth</defName> -->
<label>阿拉克涅孵化茧 织物</label>
<description>一个脆弱、易燃、黏滑的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一套基础织物装备的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感该类型的茧适温为-30~55°C需要小心保护</description>
<descriptionHyperlinks>
@@ -611,20 +612,6 @@
</statBases>
<comps>
<!-- The new, GrowthVat-style fuel component -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>20</fuelCapacity>
<fuelLabel>虫蜜</fuelLabel>
<fuelFilter>
<thingDefs>
<li>ARA_InsectJelly</li>
</thingDefs>
</fuelFilter>
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>0.2</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
</li>
<!-- The refactored producer component -->
<li Class="ArachnaeSwarm.CompProperties_InteractiveProducer">
<whitelist>
@@ -674,14 +661,56 @@
</li>
</comps>
</ThingDef>
<ThingDef ParentName="ARA_Cocoon_Cloth">
<defName>ARA_Cocoon_Cloth</defName>
<comps>
<!-- The new, GrowthVat-style fuel component -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>20</fuelCapacity>
<fuelLabel>虫蜜</fuelLabel>
<fuelFilter>
<thingDefs>
<li>ARA_InsectJelly</li>
</thingDefs>
</fuelFilter>
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>0.2</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
<initialConfigurableTargetFuelLevel>999</initialConfigurableTargetFuelLevel>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="ARA_Cocoon_Cloth">
<defName>ARA_Cocoon_Cloth_From_Corpse</defName>
<comps>
<!-- The new, GrowthVat-style fuel component -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>20</fuelCapacity>
<fuelLabel>虫蜜</fuelLabel>
<fuelFilter>
<thingDefs>
<li>ARA_InsectJelly</li>
</thingDefs>
</fuelFilter>
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>1</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
<initialConfigurableTargetFuelLevel>999</initialConfigurableTargetFuelLevel>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="ARA_CocoonSpew_Base_Proj">
<defName>ARA_Cocoon_Proj_Weapon</defName>
<projectile>
<spawnsThingDef>ARA_Cocoon_Weapon</spawnsThingDef>
</projectile>
</ThingDef>
<ThingDef ParentName="ARA_Cocoon_Base">
<defName>ARA_Cocoon_Weapon</defName>
<ThingDef Name="ARA_Cocoon_Weapon" ParentName="ARA_Cocoon_Base" Abstract="True">
<!-- <defName>ARA_Cocoon_Weapon</defName> -->
<label>阿拉克涅孵化茧 武装器官</label>
<description>一个布满尖刺的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一个武装器官的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感该类型的茧适温为-20~35°C需要小心保护</description>
<descriptionHyperlinks>
@@ -693,6 +722,59 @@
<MarketValue>2000</MarketValue>
</statBases>
<comps>
<!-- The refactored producer component -->
<li Class="ArachnaeSwarm.CompProperties_InteractiveProducer">
<whitelist>
<li>ArachnaeNode_Race_WeaponSmith</li>
</whitelist>
<spawnCount>1</spawnCount>
<destroyOnSpawn>True</destroyOnSpawn>
<minSafeTemperature>-20</minSafeTemperature>
<maxSafeTemperature>35</maxSafeTemperature>
<penaltyPerDegreePerTick>0.00001</penaltyPerDegreePerTick>
<damagePerTickWhenUnfueled>0.2</damagePerTickWhenUnfueled>
<minNutritionToStart>1.0</minNutritionToStart>
<qualityThresholds>
<li>
<quality>Legendary</quality>
<threshold>0.99</threshold>
</li>
<li>
<quality>Masterwork</quality>
<threshold>0.90</threshold>
</li>
<li>
<quality>Excellent</quality>
<threshold>0.70</threshold>
</li>
<li>
<quality>Good</quality>
<threshold>0.50</threshold>
</li>
<li>
<quality>Normal</quality>
<threshold>0.20</threshold>
</li>
<li>
<quality>Poor</quality>
<threshold>0.10</threshold>
</li>
</qualityThresholds>
</li>
<li Class="ArachnaeSwarm.CompProperties_TemperatureRuinableDamage">
<minSafeTemperature>-20</minSafeTemperature>
<maxSafeTemperature>35</maxSafeTemperature>
<progressPerDegreePerTick>0.00005</progressPerDegreePerTick>
<damagePerTick>0.005</damagePerTick>
<recoveryRate>0.001</recoveryRate>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="ARA_Cocoon_Weapon">
<defName>ARA_Cocoon_Weapon</defName>
<comps>
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>20</fuelCapacity>
@@ -706,53 +788,28 @@
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>0.2</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
<initialConfigurableTargetFuelLevel>999</initialConfigurableTargetFuelLevel>
</li>
<!-- The refactored producer component -->
<li Class="ArachnaeSwarm.CompProperties_InteractiveProducer">
<whitelist>
<li>ArachnaeNode_Race_WeaponSmith</li>
</whitelist>
<spawnCount>1</spawnCount>
<destroyOnSpawn>True</destroyOnSpawn>
<minSafeTemperature>-20</minSafeTemperature>
<maxSafeTemperature>35</maxSafeTemperature>
<penaltyPerDegreePerTick>0.00001</penaltyPerDegreePerTick>
<damagePerTickWhenUnfueled>0.2</damagePerTickWhenUnfueled>
<minNutritionToStart>1.0</minNutritionToStart>
</comps>
</ThingDef>
<ThingDef ParentName="ARA_Cocoon_Weapon">
<defName>ARA_Cocoon_Weapon_From_Corpse</defName>
<qualityThresholds>
<li>
<quality>Legendary</quality>
<threshold>0.99</threshold>
</li>
<li>
<quality>Masterwork</quality>
<threshold>0.90</threshold>
</li>
<li>
<quality>Excellent</quality>
<threshold>0.70</threshold>
</li>
<li>
<quality>Good</quality>
<threshold>0.50</threshold>
</li>
<li>
<quality>Normal</quality>
<threshold>0.20</threshold>
</li>
<li>
<quality>Poor</quality>
<threshold>0.10</threshold>
</li>
</qualityThresholds>
</li>
<li Class="ArachnaeSwarm.CompProperties_TemperatureRuinableDamage">
<minSafeTemperature>-20</minSafeTemperature>
<maxSafeTemperature>35</maxSafeTemperature>
<progressPerDegreePerTick>0.00005</progressPerDegreePerTick>
<damagePerTick>0.005</damagePerTick>
<recoveryRate>0.001</recoveryRate>
<comps>
<!-- The new, GrowthVat-style fuel component -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>20</fuelCapacity>
<fuelLabel>虫蜜</fuelLabel>
<fuelFilter>
<thingDefs>
<li>ARA_InsectJelly</li>
</thingDefs>
</fuelFilter>
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>1</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
<initialConfigurableTargetFuelLevel>999</initialConfigurableTargetFuelLevel>
</li>
</comps>
</ThingDef>
@@ -763,8 +820,8 @@
<spawnsThingDef>ARA_Cocoon_Cloth_1Stage</spawnsThingDef>
</projectile>
</ThingDef>
<ThingDef ParentName="ARA_Cocoon_Base">
<defName>ARA_Cocoon_Cloth_1Stage</defName>
<ThingDef Name="ARA_Cocoon_Cloth_1Stage" ParentName="ARA_Cocoon_Base" Abstract="True">
<!-- <defName>ARA_Cocoon_Cloth_1Stage</defName> -->
<label>阿拉克涅孵化茧 织物 等级1</label>
<description>一个脆弱、易燃、黏滑的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一套基础织物装备的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感该类型的茧适温为-30~55°C需要小心保护</description>
<descriptionHyperlinks>
@@ -780,20 +837,6 @@
</statBases>
<comps>
<!-- The new, GrowthVat-style fuel component -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>50</fuelCapacity>
<fuelLabel>虫蜜</fuelLabel>
<fuelFilter>
<thingDefs>
<li>ARA_InsectJelly</li>
</thingDefs>
</fuelFilter>
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>0.2</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
</li>
<!-- The refactored producer component -->
<li Class="ArachnaeSwarm.CompProperties_InteractiveProducer">
<!-- <processes>
@@ -846,14 +889,56 @@
</li>
</comps>
</ThingDef>
<ThingDef ParentName="ARA_Cocoon_Cloth_1Stage">
<defName>ARA_Cocoon_Cloth_1Stage</defName>
<comps>
<!-- The new, GrowthVat-style fuel component -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>60</fuelCapacity>
<fuelLabel>虫蜜</fuelLabel>
<fuelFilter>
<thingDefs>
<li>ARA_InsectJelly</li>
</thingDefs>
</fuelFilter>
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>0.2</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
<initialConfigurableTargetFuelLevel>999</initialConfigurableTargetFuelLevel>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="ARA_Cocoon_Cloth_1Stage">
<defName>ARA_Cocoon_Cloth_1Stage_From_Corpse</defName>
<comps>
<!-- The new, GrowthVat-style fuel component -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>60</fuelCapacity>
<fuelLabel>虫蜜</fuelLabel>
<fuelFilter>
<thingDefs>
<li>ARA_InsectJelly</li>
</thingDefs>
</fuelFilter>
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>1</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
<initialConfigurableTargetFuelLevel>999</initialConfigurableTargetFuelLevel>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="ARA_CocoonSpew_Base_Proj">
<defName>ARA_Cocoon_Proj_Weapon_1Stage</defName>
<projectile>
<spawnsThingDef>ARA_Cocoon_Weapon_1Stage</spawnsThingDef>
</projectile>
</ThingDef>
<ThingDef ParentName="ARA_Cocoon_Base">
<defName>ARA_Cocoon_Weapon_1Stage</defName>
<ThingDef Name="ARA_Cocoon_Weapon_1Stage" ParentName="ARA_Cocoon_Base" Abstract="True">
<!-- <defName>ARA_Cocoon_Weapon_1Stage</defName> -->
<label>阿拉克涅孵化茧 武装器官 等级1</label>
<description>一个布满尖刺的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一个武装器官的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感该类型的茧适温为-20~35°C需要小心保护</description>
<descriptionHyperlinks>
@@ -868,20 +953,6 @@
</statBases>
<comps>
<!-- The new, GrowthVat-style fuel component -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>50</fuelCapacity>
<fuelLabel>虫蜜</fuelLabel>
<fuelFilter>
<thingDefs>
<li>ARA_InsectJelly</li>
</thingDefs>
</fuelFilter>
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>0.2</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
</li>
<!-- The refactored producer component -->
<li Class="ArachnaeSwarm.CompProperties_InteractiveProducer">
<whitelist>
@@ -931,25 +1002,13 @@
</li>
</comps>
</ThingDef>
<!-- T2 -->
<ThingDef ParentName="ARA_CocoonSpew_Base_Proj">
<defName>ARA_Cocoon_Proj_Cloth_2Stage</defName>
<projectile>
<spawnsThingDef>ARA_Cocoon_Cloth_2Stage</spawnsThingDef>
</projectile>
</ThingDef>
<ThingDef ParentName="ARA_Cocoon_Base">
<defName>ARA_Cocoon_Cloth_2Stage</defName>
<label>阿拉克涅孵化茧 织物 等级2</label>
<description>一个脆弱、易燃、黏滑的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一套基础织物装备的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感该类型的茧适温为10~16°C需要小心保护</description>
<statBases>
<MarketValue>10000</MarketValue>
</statBases>
<ThingDef ParentName="ARA_Cocoon_Weapon_1Stage">
<defName>ARA_Cocoon_Weapon_1Stage</defName>
<comps>
<!-- The new, GrowthVat-style fuel component -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>100</fuelCapacity>
<fuelCapacity>60</fuelCapacity>
<fuelLabel>虫蜜</fuelLabel>
<fuelFilter>
<thingDefs>
@@ -960,7 +1019,47 @@
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>0.2</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
<initialConfigurableTargetFuelLevel>999</initialConfigurableTargetFuelLevel>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="ARA_Cocoon_Weapon_1Stage">
<defName>ARA_Cocoon_Weapon_1Stage_From_Corpse</defName>
<comps>
<!-- The new, GrowthVat-style fuel component -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>60</fuelCapacity>
<fuelLabel>虫蜜</fuelLabel>
<fuelFilter>
<thingDefs>
<li>ARA_InsectJelly</li>
</thingDefs>
</fuelFilter>
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>1</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
<initialConfigurableTargetFuelLevel>999</initialConfigurableTargetFuelLevel>
</li>
</comps>
</ThingDef>
<!-- T2 -->
<ThingDef ParentName="ARA_CocoonSpew_Base_Proj">
<defName>ARA_Cocoon_Proj_Cloth_2Stage</defName>
<projectile>
<spawnsThingDef>ARA_Cocoon_Cloth_2Stage</spawnsThingDef>
</projectile>
</ThingDef>
<ThingDef Name="ARA_Cocoon_Cloth_2Stage" ParentName="ARA_Cocoon_Base" Abstract="True">
<!-- <defName>ARA_Cocoon_Cloth_2Stage</defName> -->
<label>阿拉克涅孵化茧 织物 等级2</label>
<description>一个脆弱、易燃、黏滑的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一套基础织物装备的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感该类型的茧适温为10~16°C需要小心保护</description>
<statBases>
<MarketValue>10000</MarketValue>
</statBases>
<comps>
<!-- The refactored producer component -->
<li Class="ArachnaeSwarm.CompProperties_InteractiveProducer">
<!-- <processes>
@@ -1013,14 +1112,56 @@
</li>
</comps>
</ThingDef>
<ThingDef ParentName="ARA_Cocoon_Cloth_2Stage">
<defName>ARA_Cocoon_Cloth_2Stage</defName>
<comps>
<!-- The new, GrowthVat-style fuel component -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>110</fuelCapacity>
<fuelLabel>虫蜜</fuelLabel>
<fuelFilter>
<thingDefs>
<li>ARA_InsectJelly</li>
</thingDefs>
</fuelFilter>
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>0.2</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
<initialConfigurableTargetFuelLevel>999</initialConfigurableTargetFuelLevel>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="ARA_Cocoon_Cloth_2Stage">
<defName>ARA_Cocoon_Cloth_2Stage_From_Corpse</defName>
<comps>
<!-- The new, GrowthVat-style fuel component -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>110</fuelCapacity>
<fuelLabel>虫蜜</fuelLabel>
<fuelFilter>
<thingDefs>
<li>ARA_InsectJelly</li>
</thingDefs>
</fuelFilter>
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>1</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
<initialConfigurableTargetFuelLevel>999</initialConfigurableTargetFuelLevel>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="ARA_CocoonSpew_Base_Proj">
<defName>ARA_Cocoon_Proj_Weapon_2Stage</defName>
<projectile>
<spawnsThingDef>ARA_Cocoon_Weapon_2Stage</spawnsThingDef>
</projectile>
</ThingDef>
<ThingDef ParentName="ARA_Cocoon_Base">
<defName>ARA_Cocoon_Weapon_2Stage</defName>
<ThingDef Name="ARA_Cocoon_Weapon_2Stage" ParentName="ARA_Cocoon_Base" Abstract="True">
<!-- <defName>ARA_Cocoon_Weapon_2Stage</defName> -->
<label>阿拉克涅孵化茧 武装器官 等级2</label>
<description>一个布满尖刺的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一个武装器官的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感该类型的茧适温为21~30°C需要小心保护</description>
<descriptionHyperlinks>
@@ -1035,20 +1176,6 @@
</statBases>
<comps>
<!-- The new, GrowthVat-style fuel component -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>100</fuelCapacity>
<fuelLabel>虫蜜</fuelLabel>
<fuelFilter>
<thingDefs>
<li>ARA_InsectJelly</li>
</thingDefs>
</fuelFilter>
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>0.2</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
</li>
<!-- The refactored producer component -->
<li Class="ArachnaeSwarm.CompProperties_InteractiveProducer">
<!-- <processes>
@@ -1119,6 +1246,48 @@
</li>
</comps>
</ThingDef>
<ThingDef ParentName="ARA_Cocoon_Weapon_2Stage">
<defName>ARA_Cocoon_Weapon_2Stage</defName>
<comps>
<!-- The new, GrowthVat-style fuel component -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>110</fuelCapacity>
<fuelLabel>虫蜜</fuelLabel>
<fuelFilter>
<thingDefs>
<li>ARA_InsectJelly</li>
</thingDefs>
</fuelFilter>
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>0.2</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
<initialConfigurableTargetFuelLevel>999</initialConfigurableTargetFuelLevel>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="ARA_Cocoon_Weapon_2Stage">
<defName>ARA_Cocoon_Weapon_2Stage_From_Corpse</defName>
<comps>
<!-- The new, GrowthVat-style fuel component -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>110</fuelCapacity>
<fuelLabel>虫蜜</fuelLabel>
<fuelFilter>
<thingDefs>
<li>ARA_InsectJelly</li>
</thingDefs>
</fuelFilter>
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>1</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
<initialConfigurableTargetFuelLevel>999</initialConfigurableTargetFuelLevel>
</li>
</comps>
</ThingDef>
<!-- 医药 -->
<ThingDef ParentName="ARA_CocoonSpew_Base_Proj">
@@ -1156,6 +1325,7 @@
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>1</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
<initialConfigurableTargetFuelLevel>999</initialConfigurableTargetFuelLevel>
</li>
<!-- The refactored producer component -->
<li Class="ArachnaeSwarm.CompProperties_InteractiveProducer">

View File

@@ -15,7 +15,7 @@
<TimeLeft>剩余时间</TimeLeft>
<ProjectedQuality>预计品质</ProjectedQuality>
<NotProducing>未在生产</NotProducing>
<ARA_NeedSpecificArachnaeToStartIncubation>未孵化,需要 {0} 交互{1}</ARA_NeedSpecificArachnaeToStartIncubation>
<ARA_NeedSpecificArachnaeToStartIncubation>未孵化,需要 {0} 交互</ARA_NeedSpecificArachnaeToStartIncubation>
<ARA_AnyArachnaeRace>任何阿拉克涅虫族</ARA_AnyArachnaeRace>
<ARA_ItemsAvailable>{0} 个物品可用</ARA_ItemsAvailable>
<QualityProgress>物品品质</QualityProgress>

View File

@@ -3,28 +3,12 @@
"WorkspaceRootPath": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\building_comps\\ara_sacrificialfueltank\\building_sacrificialfueltank.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_sacrificialfueltank\\building_sacrificialfueltank.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\building_comps\\ara_nutrientvat\\building_nutrientvat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_nutrientvat\\building_nutrientvat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\abilities\\compabilityeffect_transformcorpse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\compabilityeffect_transformcorpse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\building_comps\\comprefuelablenutrition.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\comprefuelablenutrition.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\thing_comps\\ara_compextraincubationinfo\\compextraincubationinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:thing_comps\\ara_compextraincubationinfo\\compextraincubationinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\thing_comps\\ara_compextraincubationinfo\\compproperties_extraincubationinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:thing_comps\\ara_compextraincubationinfo\\compproperties_extraincubationinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\building_comps\\ara_buildingterrainspawn\\compdelayedterrainspawn.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_buildingterrainspawn\\compdelayedterrainspawn.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
@@ -43,78 +27,28 @@
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "Building_NutrientVat.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_NutrientVat\\Building_NutrientVat.cs",
"RelativeDocumentMoniker": "Building_Comps\\ARA_NutrientVat\\Building_NutrientVat.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_NutrientVat\\Building_NutrientVat.cs",
"RelativeToolTip": "Building_Comps\\ARA_NutrientVat\\Building_NutrientVat.cs",
"ViewState": "AgIAAGMAAAAAAAAAAAAowHkAAABTAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-10-14T08:54:07.96Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "Building_SacrificialFuelTank.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_SacrificialFuelTank\\Building_SacrificialFuelTank.cs",
"RelativeDocumentMoniker": "Building_Comps\\ARA_SacrificialFuelTank\\Building_SacrificialFuelTank.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_SacrificialFuelTank\\Building_SacrificialFuelTank.cs*",
"RelativeToolTip": "Building_Comps\\ARA_SacrificialFuelTank\\Building_SacrificialFuelTank.cs*",
"ViewState": "AgIAAEoAAAAAAAAAAAAAAGMAAAAzAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-10-14T08:53:19.337Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "CompRefuelableNutrition.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\CompRefuelableNutrition.cs",
"RelativeDocumentMoniker": "Building_Comps\\CompRefuelableNutrition.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\CompRefuelableNutrition.cs",
"RelativeToolTip": "Building_Comps\\CompRefuelableNutrition.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAAAwAAAAAAAAAA==",
"ViewState": "AgIAABAAAAAAAAAAAAAuwBYAAAAhAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-10-14T08:38:13.803Z",
"WhenOpened": "2025-10-15T08:04:45.513Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "CompProperties_ExtraIncubationInfo.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_CompExtraIncubationInfo\\CompProperties_ExtraIncubationInfo.cs",
"RelativeDocumentMoniker": "Thing_Comps\\ARA_CompExtraIncubationInfo\\CompProperties_ExtraIncubationInfo.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_CompExtraIncubationInfo\\CompProperties_ExtraIncubationInfo.cs",
"RelativeToolTip": "Thing_Comps\\ARA_CompExtraIncubationInfo\\CompProperties_ExtraIncubationInfo.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAA==",
"DocumentIndex": 0,
"Title": "CompAbilityEffect_TransformCorpse.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\CompAbilityEffect_TransformCorpse.cs",
"RelativeDocumentMoniker": "Abilities\\CompAbilityEffect_TransformCorpse.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\CompAbilityEffect_TransformCorpse.cs",
"RelativeToolTip": "Abilities\\CompAbilityEffect_TransformCorpse.cs",
"ViewState": "AgIAAMoAAAAAAAAAAAAtwF4AAAAJAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-10-13T03:27:00.382Z"
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "CompExtraIncubationInfo.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_CompExtraIncubationInfo\\CompExtraIncubationInfo.cs",
"RelativeDocumentMoniker": "Thing_Comps\\ARA_CompExtraIncubationInfo\\CompExtraIncubationInfo.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_CompExtraIncubationInfo\\CompExtraIncubationInfo.cs",
"RelativeToolTip": "Thing_Comps\\ARA_CompExtraIncubationInfo\\CompExtraIncubationInfo.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAAXAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-10-13T03:26:37.426Z",
"WhenOpened": "2025-10-15T08:02:12.842Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 5,
"Title": "CompDelayedTerrainSpawn.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs",
"RelativeDocumentMoniker": "Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs",
"RelativeToolTip": "Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs",
"ViewState": "AgIAAA4AAAAAAAAAAAAAwD0AAAAhAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-10-12T15:30:31.391Z"
}
]
}

View File

@@ -0,0 +1,232 @@
using RimWorld;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using Verse;
using Verse.Sound;
namespace ArachnaeSwarm
{
public class CompProperties_AbilityTransformCorpse : CompProperties_AbilityEffect
{
public ThingDef buildingDef; // 要生成的建筑定义
public float nutritionToFuelRatio = 1.0f; // 尸体营养值到燃料的转换率
public bool requireFreshCorpse = false; // 是否要求新鲜尸体
public RotStage maxRotStage = RotStage.Dessicated; // 最大腐烂阶段
public CompProperties_AbilityTransformCorpse()
{
compClass = typeof(CompAbilityEffect_TransformCorpse);
}
}
public class CompAbilityEffect_TransformCorpse : CompAbilityEffect
{
public new CompProperties_AbilityTransformCorpse Props => (CompProperties_AbilityTransformCorpse)props;
public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
{
base.Apply(target, dest);
Corpse corpse = target.Thing as Corpse;
if (corpse == null)
{
Messages.Message("AbilityMustTargetCorpse".Translate(), parent.pawn, MessageTypeDefOf.RejectInput, false);
return;
}
if (!IsValidCorpse(corpse, true))
return;
if (!CanSpawnBuildingAt(corpse.Position, corpse.Map))
{
Messages.Message("NotEnoughSpaceForBuilding".Translate(Props.buildingDef.label), parent.pawn, MessageTypeDefOf.RejectInput, false);
return;
}
TransformCorpseToBuilding(corpse);
}
private void TransformCorpseToBuilding(Corpse corpse)
{
Map map = corpse.Map;
IntVec3 position = corpse.Position;
Pawn innerPawn = corpse.InnerPawn;
float calculatedFuel = CalculateFuelFromCorpse(corpse);
corpse.Destroy(DestroyMode.Vanish);
Building building = (Building)GenSpawn.Spawn(Props.buildingDef, position, map, WipeMode.Vanish);
building.SetFaction(parent.pawn.Faction);
// 设置 CompRefuelableNutrition 的初始燃料
SetupRefuelableNutrition(building, calculatedFuel);
var morphableComp = building.GetComp<CompMorphable>();
if (morphableComp != null && innerPawn != null)
{
morphableComp.SetStoredPawn(innerPawn);
}
Messages.Message("CorpseTransformedToBuilding".Translate(innerPawn?.LabelShort ?? "Unknown", Props.buildingDef.label),
building, MessageTypeDefOf.PositiveEvent);
}
private void SetupRefuelableNutrition(Building building, float calculatedFuel)
{
var refuelableNutritionComp = building.GetComp<CompRefuelableNutrition>();
if (refuelableNutritionComp != null)
{
// 直接设置燃料值,而不是通过 Refuel 方法
refuelableNutritionComp.Refuel(calculatedFuel);
}
else
{
// 回退到普通的 CompRefuelable
var refuelableComp = building.GetComp<CompRefuelable>();
if (refuelableComp != null && calculatedFuel > 0)
{
refuelableComp.Refuel(calculatedFuel);
}
}
}
private float CalculateFuelFromCorpse(Corpse corpse)
{
if (corpse.InnerPawn == null) return 0f;
float baseNutrition = corpse.InnerPawn.GetStatValue(StatDefOf.Nutrition);
float rotMultiplier = GetRotMultiplier(corpse.GetRotStage());
float calculatedFuel = baseNutrition * Props.nutritionToFuelRatio * rotMultiplier;
// 获取建筑的燃料容量限制
var buildingDef = Props.buildingDef;
if (buildingDef != null)
{
var refuelableProps = buildingDef.GetCompProperties<CompProperties_RefuelableNutrition>();
if (refuelableProps != null)
{
// 确保计算的燃料不超过建筑容量
calculatedFuel = Mathf.Min(calculatedFuel, refuelableProps.fuelCapacity);
}
}
return calculatedFuel;
}
private float GetRotMultiplier(RotStage rotStage)
{
switch (rotStage)
{
case RotStage.Fresh: return 1.0f;
case RotStage.Rotting: return 0.5f;
case RotStage.Dessicated: return 0.25f;
default: return 0f;
}
}
private bool CanSpawnBuildingAt(IntVec3 position, Map map)
{
CellRect cellRect = GenAdj.OccupiedRect(position, Rot4.North, Props.buildingDef.Size);
foreach (IntVec3 cell in cellRect)
{
if (!cell.InBounds(map) || !cell.Walkable(map) || cell.GetEdifice(map) != null)
{
return false;
}
}
return true;
}
public override bool Valid(LocalTargetInfo target, bool throwMessages = false)
{
if (!base.Valid(target, throwMessages))
return false;
Corpse corpse = target.Thing as Corpse;
if (corpse == null)
{
if (throwMessages)
{
Messages.Message("AbilityMustTargetCorpse".Translate(), parent.pawn, MessageTypeDefOf.RejectInput, false);
}
return false;
}
return IsValidCorpse(corpse, throwMessages);
}
private bool IsValidCorpse(Corpse corpse, bool throwMessages)
{
if (corpse.InnerPawn == null)
{
if (throwMessages)
{
Messages.Message("CorpseHasNoPawn".Translate(), parent.pawn, MessageTypeDefOf.RejectInput, false);
}
return false;
}
RotStage rotStage = corpse.GetRotStage();
if (rotStage > Props.maxRotStage)
{
if (throwMessages)
{
Messages.Message("CorpseTooRotated".Translate(), parent.pawn, MessageTypeDefOf.RejectInput, false);
}
return false;
}
if (Props.requireFreshCorpse && rotStage != RotStage.Fresh)
{
if (throwMessages)
{
Messages.Message("RequiresFreshCorpse".Translate(), parent.pawn, MessageTypeDefOf.RejectInput, false);
}
return false;
}
if (!IsValidPawnRace(corpse.InnerPawn))
{
if (throwMessages)
{
Messages.Message("InvalidPawnRace".Translate(), parent.pawn, MessageTypeDefOf.RejectInput, false);
}
return false;
}
if (!CanSpawnBuildingAt(corpse.Position, corpse.Map))
{
if (throwMessages)
{
Messages.Message("NotEnoughSpaceForBuilding".Translate(Props.buildingDef.label), parent.pawn, MessageTypeDefOf.RejectInput, false);
}
return false;
}
return true;
}
private bool IsValidPawnRace(Pawn pawn)
{
return true;
}
public override void DrawEffectPreview(LocalTargetInfo target)
{
if (target.IsValid && target.Thing is Corpse corpse && IsValidCorpse(corpse, false))
{
// 绘制目标单元格的高亮
GenDraw.DrawFieldEdges(new List<IntVec3> { target.Cell }, Valid(target) ? Color.green : Color.red);
if (Props.buildingDef != null)
{
// 绘制建筑占用的所有单元格
CellRect cellRect = GenAdj.OccupiedRect(target.Cell, Rot4.North, Props.buildingDef.Size);
GenDraw.DrawFieldEdges(cellRect.Cells.ToList(), Valid(target) ? Color.green : Color.red);
}
}
}
}
}

View File

@@ -99,6 +99,7 @@
<Compile Include="Abilities\ARA_ShowInteractiveThing\CompProperties_AbilityShowInteractiveThing.cs" />
<Compile Include="Abilities\ARA_ShowSpawnablePawnsList\CompAbilityEffect_AbilityShowSpawnablePawns.cs" />
<Compile Include="Abilities\ARA_ShowSpawnablePawnsList\CompProperties_AbilityShowSpawnablePawns.cs" />
<Compile Include="Abilities\CompAbilityEffect_TransformCorpse.cs" />
<Compile Include="Buildings\Building_TurretGunHasSpeed.cs" />
<Compile Include="Building_Comps\ARA_Building_RefuelingVat\Building_RefuelingVat.cs" />
<Compile Include="Building_Comps\ARA_Building_RefuelingVat\CompProperties_RefuelingVat.cs" />

View File

@@ -319,7 +319,7 @@ namespace ArachnaeSwarm
yield return new FloatMenuOption(label, () =>
{
this._selectedProcess = process;
Job job = JobMaker.MakeJob(DefDatabase<JobDef>.GetNamed("ARA_StartResearchProduction"), parent);
Job job = JobMaker.MakeJob(DefDatabase<JobDef>.GetNamed("ARA_StartInteractiveProduction"), parent);
selPawn.jobs.TryTakeOrderedJob(job, JobTag.Misc);
});
}