修复追猎问题,科技更新

This commit is contained in:
2025-09-23 15:01:00 +08:00
parent 787d4bb248
commit 793f77d17b
10 changed files with 351 additions and 161 deletions

Binary file not shown.

View File

@@ -164,10 +164,6 @@
<li Class="CompProperties_AbilityLaunchProjectile">
<projectileDef>ARA_Cocoon_Proj_Cloth</projectileDef>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
<requiredResearch>ARA_Technology_4DIL</requiredResearch>
<failMessage>需要科技 节点DIL-4"编织" 以解锁此孵化路径</failMessage>
</li>
</comps>
</AbilityDef>
<AbilityDef ParentName="ARA_CocoonSpew_Base">
@@ -189,11 +185,7 @@
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Cloth_1Stage</iconPath>
<comps>
<li Class="CompProperties_AbilityLaunchProjectile">
<projectileDef>ARA_Cocoon_Proj_Cloth</projectileDef>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
<requiredResearch>ARA_Technology_4DIL</requiredResearch>
<failMessage>需要科技 节点DIL-4"编织" 以解锁此孵化路径</failMessage>
<projectileDef>ARA_Cocoon_Proj_Cloth_1Stage</projectileDef>
</li>
</comps>
</AbilityDef>
@@ -208,6 +200,29 @@
</li>
</comps>
</AbilityDef>
<!-- T2 -->
<AbilityDef ParentName="ARA_CocoonSpew_Base">
<defName>ARA_Cocoon_Cloth_2Stage</defName>
<label>织物孵化茧——等级2</label>
<description>投放一枚织物茧,内含可以孵化一套基础织物的营养和遗传物质——参阅茧的超链接,了解其能生产的所有装备的特点。</description>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Cloth_2Stage</iconPath>
<comps>
<li Class="CompProperties_AbilityLaunchProjectile">
<projectileDef>ARA_Cocoon_Proj_Cloth_2Stage</projectileDef>
</li>
</comps>
</AbilityDef>
<AbilityDef ParentName="ARA_CocoonSpew_Base">
<defName>ARA_Cocoon_Weapon_2Stage</defName>
<label>武装器官孵化茧——等级2</label>
<description>投放一枚武装器官茧,内含可以孵化一套基础武装器官的营养和遗传物质——参阅茧的超链接,了解其能生产的所有装备的特点。</description>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Weapon_2Stage</iconPath>
<comps>
<li Class="CompProperties_AbilityLaunchProjectile">
<projectileDef>ARA_Cocoon_Proj_Weapon_2Stage</projectileDef>
</li>
</comps>
</AbilityDef>
<AbilityDef ParentName="ARA_CocoonSpew_Base">
<defName>ARA_Cocoon_Medicine</defName>

View File

@@ -321,7 +321,7 @@
<HediffDef>
<defName>ARA_WeaponSmith_1_Stage</defName>
<label>进化等级——等级1</label>
<description>这只阿拉涅工艺种通过蜂巢意志的拔耀获得了更强大的孵化能力,现在她可以孕育更复杂的茧以获取强大的装备。</description>
<description>这只阿拉涅工艺种通过蜂巢意志的拔耀获得了更强大的孵化能力,现在她可以孕育更复杂的茧以获取强大的装备。</description>
<hediffClass>HediffWithComps</hediffClass>
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
<isBad>false</isBad>
@@ -341,6 +341,7 @@
<abilityDefs>
<li>ARA_Cocoon_Cloth_1Stage</li>
<li>ARA_Cocoon_Weapon_1Stage</li>
<li>ARA_WeaponSmith_Upgrade_2_Stage</li>
</abilityDefs>
</li>
<li Class="HediffCompProperties_RemoveIfOtherHediff">
@@ -350,6 +351,97 @@
</li>
</comps>
</HediffDef>
<AbilityDef>
<defName>ARA_WeaponSmith_Upgrade_2_Stage</defName>
<label>工艺种进化——阶段2</label>
<description>使工艺种发生内驱性进化,解锁下一等级的阿拉克涅工艺茧。\n\n注意和女皇种的进化不同工艺种一旦进化到下一阶段此后所孵的阿拉克涅工艺茧将无法再制作现阶段及之前的装备并且越高级的阿拉克涅工艺茧对温度越敏感。</description>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Queen_Upgrade_2_Stage</iconPath>
<cooldownTicksRange>1800</cooldownTicksRange>
<hostile>false</hostile>
<groupAbility>true</groupAbility>
<displayGizmoWhileUndrafted>true</displayGizmoWhileUndrafted>
<disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
<aiCanUse>true</aiCanUse>
<ai_IsOffensive>true</ai_IsOffensive>
<targetRequired>false</targetRequired>
<jobDef>CastAbilityOnThing</jobDef>
<verbProperties>
<verbClass>Verb_CastAbility</verbClass>
<range>1</range>
<warmupTime>12</warmupTime>
<soundCast>AcidSpray_Resolve</soundCast>
<violent>false</violent>
<targetable>false</targetable>
<targetParams>
<canTargetSelf>True</canTargetSelf>
</targetParams>
</verbProperties>
<comps>
<li Class="CompProperties_AbilityGiveHediff">
<compClass>CompAbilityEffect_GiveHediff</compClass>
<hediffDef>ARA_WeaponSmith_2_Stage_Transition_Period</hediffDef>
<onlyApplyToSelf>True</onlyApplyToSelf>
<replaceExisting>true</replaceExisting>
<severity>1</severity>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
<requiredResearch>ARA_Technology_2WMT</requiredResearch>
<failMessage>需要科技 节点WMT-2"突破" 以解锁进化</failMessage>
</li>
</comps>
</AbilityDef>
<HediffDef>
<defName>ARA_WeaponSmith_2_Stage_Transition_Period</defName>
<label>工艺种进化——阶段2</label>
<description>为该工艺种进行基因调整,以使其获得进化并得以孵化更多的武装器官和织物。</description>
<!-- <hediffClass>HediffWithComps</hediffClass> -->
<hediffClass>Hediff_High</hediffClass>
<initialSeverity>1</initialSeverity>
<maxSeverity>1.01</maxSeverity>
<alwaysShowSeverity>true</alwaysShowSeverity>
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
<isBad>false</isBad>
<scenarioCanAdd>false</scenarioCanAdd>
<comps>
<li Class="HediffCompProperties_ReplaceHediff">
<hediffs>
<li>
<hediff>ARA_WeaponSmith_2_Stage</hediff>
<severityRange>0.02~0.15</severityRange>
</li>
</hediffs>
<message>{PAWN_nameDef} 通过蜂巢意志的拔耀获得了更强大的孵化能力,现在她可以孕育更复杂的茧以获取强大的装备。</message>
</li>
</comps>
</HediffDef>
<!-- T2 -->
<HediffDef>
<defName>ARA_WeaponSmith_2_Stage</defName>
<label>进化等级——等级2</label>
<description>这只阿拉克涅工艺种通过蜂巢意志的拔耀获得了更强大的孵化能力,现在她可以孕育更复杂的茧以获取强大的装备。</description>
<hediffClass>HediffWithComps</hediffClass>
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
<isBad>false</isBad>
<scenarioCanAdd>false</scenarioCanAdd>
<maxSeverity>2.0</maxSeverity>
<!-- <stages>
<li>
<becomeVisible>ture</becomeVisible>
</li>
<li>
<minSeverity>1.01</minSeverity>
<becomeVisible>false</becomeVisible>
</li>
</stages> -->
<comps>
<li Class="HediffCompProperties_GiveAbility">
<abilityDefs>
<li>ARA_Cocoon_Cloth_2Stage</li>
<li>ARA_Cocoon_Weapon_2Stage</li>
</abilityDefs>
</li>
</comps>
</HediffDef>
<!-- 蜜罐种 -->
<HediffDef>
@@ -467,7 +559,7 @@
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
<requiredResearch>ARA_Technology_1MED</requiredResearch>
<failMessage>需要科技 节点MED-1"制药" 以解锁进化</failMessage>
<failMessage>需要科技 节点MED-1"疗愈种" 以解锁进化</failMessage>
</li>
</comps>
</AbilityDef>
@@ -572,8 +664,8 @@
<severity>1</severity>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
<requiredResearch>ARA_Technology_1MED</requiredResearch>
<failMessage>需要科技 节点MED-1"制药" 以解锁进化</failMessage>
<requiredResearch>ARA_Technology_4CLO</requiredResearch>
<failMessage>需要科技 节点CLO-4"追猎种" 以解锁进化</failMessage>
</li>
</comps>
</AbilityDef>
@@ -778,6 +870,10 @@
<!-- 如果为true当宿主Pawn受伤时生成将暂停。 -->
<healthRelative>false</healthRelative>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
<requiredResearch>ARA_Technology_1BAC</requiredResearch>
<failMessage>需要科技 节点BAC-1"育菌种" 以解锁进化</failMessage>
</li>
</comps>
</HediffDef>
</Defs>

View File

@@ -302,7 +302,7 @@
<label>节点CLO-4"追猎种"</label>
<description>允许战士种进行定向进化,牺牲其使用远程武器的能力以换取强大的近战和永久隐身的能力。</description>
<baseCost>150</baseCost>
<researchViewX>6.50</researchViewX>
<researchViewX>5.50</researchViewX>
<researchViewY>5.40</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<prerequisites>
@@ -322,4 +322,5 @@
<li>ARA_Technology_5KYC</li>
</prerequisites>
</ResearchProjectDef>
</Defs>
</Defs>

View File

@@ -45,7 +45,6 @@
<texPath>ArachnaeSwarm/Apparel/ARA_Bodystocking_White</texPath>
</graphicData>
<recipeMaker Inherit="False">
<researchPrerequisite>ARA_Technology_4DIL</researchPrerequisite>
</recipeMaker>
<costList Inherit="False">
<ARA_Carapace>25</ARA_Carapace>
@@ -68,7 +67,6 @@
<texPath>ArachnaeSwarm/Apparel/ARA_Bodystocking_Black</texPath>
</graphicData>
<recipeMaker Inherit="False">
<researchPrerequisite>ARA_Technology_4DIL</researchPrerequisite>
</recipeMaker>
<costList Inherit="False">
<ARA_Carapace>25</ARA_Carapace>

View File

@@ -248,7 +248,7 @@
<tickerType>Normal</tickerType>
<techLevel>Animal</techLevel>
<descriptionHyperlinks>
<ThingDef>ARA_Cocoon_Weapon_1Stage</ThingDef>
<ThingDef>ARA_Cocoon_Weapon_2Stage</ThingDef>
</descriptionHyperlinks>
<graphicData>
<texPath>ArachnaeSwarm/Weapon/ARA_RW_Basic_SniperCannon_Gun</texPath>
@@ -439,7 +439,7 @@
<tickerType>Normal</tickerType>
<techLevel>Animal</techLevel>
<descriptionHyperlinks>
<ThingDef>ARA_Cocoon_Weapon</ThingDef>
<ThingDef>ARA_Cocoon_Weapon_1Stage</ThingDef>
</descriptionHyperlinks>
<graphicData>
<texPath>ArachnaeSwarm/Weapon/ARA_RW_Basic_Acid_Spreay_Gun</texPath>
@@ -515,7 +515,7 @@
<tickerType>Normal</tickerType>
<techLevel>Animal</techLevel>
<descriptionHyperlinks>
<ThingDef>ARA_Cocoon_Weapon_1Stage</ThingDef>
<ThingDef>ARA_Cocoon_Weapon_2Stage</ThingDef>
</descriptionHyperlinks>
<graphicData>
<texPath>ArachnaeSwarm/Weapon/ARA_RW_Acid_Mortar</texPath>

View File

@@ -544,6 +544,7 @@
<thingDef>ARA_Maid_Uniform</thingDef>
<productionTicks>18000</productionTicks>
<totalNutritionNeeded>15</totalNutritionNeeded>
<requiredResearch>ARA_Technology_4DIL</requiredResearch>
</li>
</processes>
@@ -703,11 +704,9 @@
</ThingDef>
<ThingDef ParentName="ARA_Cocoon_Base">
<defName>ARA_Cocoon_Cloth_1Stage</defName>
<label>阿拉克涅孵化茧 织物</label>
<label>阿拉克涅孵化茧 织物 等级1</label>
<description>一个脆弱、易燃、黏滑的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一套基础织物装备的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感该类型的茧适温为-30~55°C需要小心保护</description>
<descriptionHyperlinks>
<ThingDef>ARA_Bodystocking_White</ThingDef>
<ThingDef>ARA_Bodystocking_Black</ThingDef>
</descriptionHyperlinks>
<comps>
@@ -728,21 +727,6 @@
<!-- The refactored producer component -->
<li Class="ArachnaeSwarm.CompProperties_InteractiveProducer">
<processes>
<li>
<thingDef>ARA_Bodystocking_White</thingDef>
<productionTicks>6000</productionTicks>
<totalNutritionNeeded>1</totalNutritionNeeded>
</li>
<li>
<thingDef>ARA_Bodystocking_Black</thingDef>
<productionTicks>6000</productionTicks>
<totalNutritionNeeded>1</totalNutritionNeeded>
</li>
<li>
<thingDef>ARA_Maid_Uniform</thingDef>
<productionTicks>18000</productionTicks>
<totalNutritionNeeded>15</totalNutritionNeeded>
</li>
</processes>
<whitelist>
@@ -800,12 +784,12 @@
</ThingDef>
<ThingDef ParentName="ARA_Cocoon_Base">
<defName>ARA_Cocoon_Weapon_1Stage</defName>
<label>阿拉克涅孵化茧 武装器官</label>
<label>阿拉克涅孵化茧 武装器官 等级1</label>
<description>一个布满尖刺的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一个武装器官的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感该类型的茧适温为-20~35°C需要小心保护</description>
<descriptionHyperlinks>
<ThingDef>ARA_MW_Bone_Sword</ThingDef>
<ThingDef>ARA_RW_Basic_Acid_Bladder_Gun</ThingDef>
<ThingDef>ARA_RW_Basic_Fist_Needle_Gun</ThingDef>
<ThingDef>ARA_RW_Basic_Acid_Spreay_Gun</ThingDef>
<ThingDef>ARA_RW_Toxic_Needle_MG</ThingDef>
<ThingDef>ARA_RW_Basic_SkyHive_Gun</ThingDef>
</descriptionHyperlinks>
<comps>
@@ -827,21 +811,22 @@
<li Class="ArachnaeSwarm.CompProperties_InteractiveProducer">
<processes>
<li>
<thingDef>ARA_MW_Bone_Sword</thingDef>
<productionTicks>60000</productionTicks>
<totalNutritionNeeded>15</totalNutritionNeeded>
</li>
<li>
<thingDef>ARA_RW_Basic_Fist_Needle_Gun</thingDef>
<productionTicks>40000</productionTicks>
<totalNutritionNeeded>10</totalNutritionNeeded>
<requiredResearch>ARA_Technology_5PAV</requiredResearch>
</li>
<li>
<thingDef>ARA_RW_Basic_Acid_Bladder_Gun</thingDef>
<productionTicks>80000</productionTicks>
<thingDef>ARA_RW_Basic_Acid_Spreay_Gun</thingDef>
<productionTicks>240000</productionTicks>
<totalNutritionNeeded>30</totalNutritionNeeded>
<requiredResearch>ARA_Technology_7VXI</requiredResearch>
<requiredResearch>ARA_Technology_8VXI</requiredResearch>
</li>
<li>
<thingDef>ARA_RW_Toxic_Needle_MG</thingDef>
<productionTicks>180000</productionTicks>
<totalNutritionNeeded>25</totalNutritionNeeded>
<requiredResearch>ARA_Technology_6PAV</requiredResearch>
</li>
<li>
<thingDef>ARA_RW_Basic_SkyHive_Gun</thingDef>
<productionTicks>180000</productionTicks>
<totalNutritionNeeded>25</totalNutritionNeeded>
<requiredResearch>ARA_Technology_6SPV</requiredResearch>
</li>
</processes>
@@ -892,6 +877,181 @@
</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>
<descriptionHyperlinks>
</descriptionHyperlinks>
<comps>
<!-- The new, GrowthVat-style fuel component -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>10</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>
</li>
<!-- The refactored producer component -->
<li Class="ArachnaeSwarm.CompProperties_InteractiveProducer">
<processes>
</processes>
<whitelist>
<li>ArachnaeNode_Race_WeaponSmith</li>
</whitelist>
<spawnCount>1</spawnCount>
<destroyOnSpawn>True</destroyOnSpawn>
<minSafeTemperature>10</minSafeTemperature>
<maxSafeTemperature>16</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>10</minSafeTemperature>
<maxSafeTemperature>16</maxSafeTemperature>
<progressPerDegreePerTick>0.00005</progressPerDegreePerTick>
<damagePerTick>0.005</damagePerTick>
<recoveryRate>0.001</recoveryRate>
</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>
<label>阿拉克涅孵化茧 武装器官 等级2</label>
<description>一个布满尖刺的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一个武装器官的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感该类型的茧适温为21~30°C需要小心保护</description>
<descriptionHyperlinks>
<li>ARA_RW_Basic_SniperCannon_Gun</li>
<li>ARA_RW_Acid_Mortar</li>
</descriptionHyperlinks>
<comps>
<!-- The new, GrowthVat-style fuel component -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>10</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>
</li>
<!-- The refactored producer component -->
<li Class="ArachnaeSwarm.CompProperties_InteractiveProducer">
<processes>
<li>
<thingDef>ARA_RW_Basic_SniperCannon_Gun</thingDef>
<productionTicks>480000</productionTicks>
<totalNutritionNeeded>80</totalNutritionNeeded>
<requiredResearch>ARA_Technology_7PAV</requiredResearch>
</li>
<li>
<thingDef>ARA_RW_Acid_Mortar</thingDef>
<productionTicks>480000</productionTicks>
<totalNutritionNeeded>80</totalNutritionNeeded>
<requiredResearch>ARA_Technology_9VXI</requiredResearch>
</li>
</processes>
<whitelist>
<li>ArachnaeNode_Race_WeaponSmith</li>
</whitelist>
<spawnCount>1</spawnCount>
<destroyOnSpawn>True</destroyOnSpawn>
<minSafeTemperature>21</minSafeTemperature>
<maxSafeTemperature>30</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>21</minSafeTemperature>
<maxSafeTemperature>30</maxSafeTemperature>
<progressPerDegreePerTick>0.00005</progressPerDegreePerTick>
<damagePerTick>0.005</damagePerTick>
<recoveryRate>0.001</recoveryRate>
</li>
</comps>
</ThingDef>
<!-- 医药 -->
<ThingDef ParentName="ARA_CocoonSpew_Base_Proj">

View File

@@ -5,22 +5,6 @@
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\pawn_comps\\ara_fighter_invisible\\compfighterinvisible.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_fighter_invisible\\compfighterinvisible.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\\pawn_comps\\ara_fighter_invisible\\compproperties_fighterinvisible.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_fighter_invisible\\compproperties_fighterinvisible.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_ingestionoutcomedoer_givehediff\\ingestionoutcomedoer_givehediffbyrace.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:thing_comps\\ara_ingestionoutcomedoer_givehediff\\ingestionoutcomedoer_givehediffbyrace.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_customuniqueweapon\\compcustomuniqueweapon.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:thing_comps\\ara_customuniqueweapon\\compcustomuniqueweapon.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\\optoxicgas.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:thing_comps\\optoxicgas.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
@@ -30,24 +14,12 @@
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 2,
"SelectedChildIndex": 1,
"Children": [
{
"$type": "Bookmark",
"Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "CompProperties_FighterInvisible.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_Fighter_Invisible\\CompProperties_FighterInvisible.cs",
"RelativeDocumentMoniker": "Pawn_Comps\\ARA_Fighter_Invisible\\CompProperties_FighterInvisible.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_Fighter_Invisible\\CompProperties_FighterInvisible.cs",
"RelativeToolTip": "Pawn_Comps\\ARA_Fighter_Invisible\\CompProperties_FighterInvisible.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABwAAAAJAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-22T17:58:46.022Z"
},
{
"$type": "Document",
"DocumentIndex": 0,
@@ -56,46 +28,10 @@
"RelativeDocumentMoniker": "Pawn_Comps\\ARA_Fighter_Invisible\\CompFighterInvisible.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_Fighter_Invisible\\CompFighterInvisible.cs",
"RelativeToolTip": "Pawn_Comps\\ARA_Fighter_Invisible\\CompFighterInvisible.cs",
"ViewState": "AgIAABAAAAAAAAAAAAAAwBsAAAAAAAAAAAAAAA==",
"ViewState": "AgIAABQAAAAAAAAAAAAQwCcAAAAdAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-22T17:58:44.038Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "IngestionOutcomeDoer_GiveHediffByRace.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_IngestionOutcomeDoer_GiveHediff\\IngestionOutcomeDoer_GiveHediffByRace.cs",
"RelativeDocumentMoniker": "Thing_Comps\\ARA_IngestionOutcomeDoer_GiveHediff\\IngestionOutcomeDoer_GiveHediffByRace.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_IngestionOutcomeDoer_GiveHediff\\IngestionOutcomeDoer_GiveHediffByRace.cs",
"RelativeToolTip": "Thing_Comps\\ARA_IngestionOutcomeDoer_GiveHediff\\IngestionOutcomeDoer_GiveHediffByRace.cs",
"ViewState": "AgIAAAcAAAAAAAAAAAAAABYAAAApAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-22T09:03:36.873Z"
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "CompCustomUniqueWeapon.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_CustomUniqueWeapon\\CompCustomUniqueWeapon.cs",
"RelativeDocumentMoniker": "Thing_Comps\\ARA_CustomUniqueWeapon\\CompCustomUniqueWeapon.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_CustomUniqueWeapon\\CompCustomUniqueWeapon.cs",
"RelativeToolTip": "Thing_Comps\\ARA_CustomUniqueWeapon\\CompCustomUniqueWeapon.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-22T09:03:28.529Z"
},
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "OPToxicGas.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\OPToxicGas.cs",
"RelativeDocumentMoniker": "Thing_Comps\\OPToxicGas.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\OPToxicGas.cs",
"RelativeToolTip": "Thing_Comps\\OPToxicGas.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAALsAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-22T09:02:29.07Z"
}
]
}

View File

@@ -10,53 +10,37 @@ namespace ArachnaeSwarm
public class CompFighterInvisible : ThingComp
{
public CompProperties_FighterInvisible Props => (CompProperties_FighterInvisible)props;
[Unsaved(false)]
private HediffComp_Invisibility invisibility;
private int lastDetectedTick = -99999;
private Pawn Sightstealer => (Pawn)parent;
public HediffDef GetTargetInvisibilityDef()
{
return Props.InvisibilityDef;
}
//检测是否拥有定义的InvisibilityDef
private HediffComp_Invisibility Invisibility => invisibility ?? (invisibility = Sightstealer.health.hediffSet.GetFirstHediffOfDef(GetTargetInvisibilityDef())?.TryGetComp<HediffComp_Invisibility>());
//用于在存档储存lastDetectedTick
// 添加一个属性来检查是否有效
private bool IsValid => Sightstealer?.health?.hediffSet != null &&
GetTargetInvisibilityDef() != null &&
!Sightstealer.IsShambler &&
Sightstealer.Spawned;
private HediffComp_Invisibility Invisibility
{
get
{
if (!IsValid) return null;
return invisibility ?? (invisibility = Sightstealer.health.hediffSet
.GetFirstHediffOfDef(GetTargetInvisibilityDef())
?.TryGetComp<HediffComp_Invisibility>());
}
}
public override void PostExposeData()
{
Scribe_Values.Look(ref lastDetectedTick, "lastDetectedTick", 0);
}
public override void CompTick()
{
//如果没有定义的InvisibilityDef则返回false
if (Sightstealer?.health?.hediffSet == null || GetTargetInvisibilityDef() == null)
{
return;
}
if (Invisibility == null)
{
return;
}
//蹒跚怪不会隐身
if (Sightstealer.IsShambler)
{
return;
}
if (Invisibility == null)
{
return;
}
if (!Sightstealer.Spawned)
{
return;
}
//进行隐身检查,如果超过定义的隐身恢复时间则切换为隐身
// 使用统一的有效性检查
if (!IsValid || Invisibility == null) return;
if (Sightstealer.IsHashIntervalTick(7))
{
if (Find.TickManager.TicksGame > lastDetectedTick + Props.stealthCooldownTicks)
@@ -65,15 +49,15 @@ namespace ArachnaeSwarm
}
}
}
//在使用verb的时候会强制显现
public override void Notify_UsedVerb(Pawn pawn, Verb verb)
{
base.Notify_UsedVerb(pawn, verb);
if (!Sightstealer.IsShambler)
{
Invisibility.BecomeVisible();
lastDetectedTick = Find.TickManager.TicksGame;
}
// 统一的 null 检查
if (Invisibility == null) return;
Invisibility.BecomeVisible();
lastDetectedTick = Find.TickManager.TicksGame;
}
}
}