This commit is contained in:
2025-09-28 23:32:13 +08:00
15 changed files with 818 additions and 112 deletions

Binary file not shown.

View File

@@ -891,7 +891,7 @@
<AbilityDef>
<defName>ARA_TerrainHeal_Ability</defName>
<label>护士装疗愈</label>
<description>从菌毯的营养管线抽取生物质,快速合成治愈素治疗目标,使其在一段时间内快速愈合。</description>
<description>从菌毯的营养管线抽取生物质,快速合成治愈素治疗目标,使其在一段时间内快速愈合,只能对拥有自愈能力的阿拉克涅虫群单位使用</description>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_TerrainHeal_Ability</iconPath>
<cooldownTicksRange>3800</cooldownTicksRange>
<cooldownPerCharge>true</cooldownPerCharge>
@@ -930,6 +930,47 @@
<!-- <casterTerrainFailMessage>在阿拉克涅菌毯上才能使用此技能</casterTerrainFailMessage>
<disabledReasonKey>不在阿拉克涅菌毯上</disabledReasonKey> -->
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityHediffRestriction">
<requiredHediffs>
<li>ARA_HiveStrength</li>
<li>ARA_HiveStrength_Low</li>
</requiredHediffs>
<targetHediffFailMessage>目标必须是拥有自愈能力的阿拉克涅虫群</targetHediffFailMessage>
<disabledReasonKey>只能对拥有自愈能力的阿拉克涅虫群单位使用</disabledReasonKey>
</li>
</comps>
</AbilityDef>
<AbilityDef>
<defName>ARA_Strengthening_Tendon_Jump</defName>
<label>短距离跳跃</label>
<description>受到强化的肌腱可以让阿拉克涅虫群进行较短距离的跳跃。</description>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Fighter_Invisibility_jump</iconPath>
<cooldownTicksRange>6000</cooldownTicksRange>
<hostile>false</hostile>
<casterMustBeCapableOfViolence>false</casterMustBeCapableOfViolence>
<verbProperties>
<verbClass>Verb_CastAbilityJump</verbClass>
<violent>false</violent>
<forceNormalTimeSpeed>false</forceNormalTimeSpeed>
<!-- <warmupTime>0.5</warmupTime> -->
<range>6</range>
<requireLineOfSight>false</requireLineOfSight>
<soundCast>Longjump_Jump</soundCast>
<soundLanding>Longjump_Land</soundLanding>
<targetParams>
<canTargetLocations>true</canTargetLocations>
<canTargetPawns>false</canTargetPawns>
<canTargetBuildings>false</canTargetBuildings>
</targetParams>
</verbProperties>
<jobDef>CastJump</jobDef>
<comps>
<li Class="ArachnaeSwarm.CompProperties_AbilityNeedCost">
<needDef>Food</needDef>
<needCost>0.1</needCost>
<failMessage>营养值不足,需要进食</failMessage>
</li>
</comps>
</AbilityDef>
</Defs>

View File

@@ -703,6 +703,14 @@
<solid>false</solid>
<bleedRate>0</bleedRate>
</BodyPartDef>
<BodyPartDef>
<defName>ARA_Pouch</defName>
<label>囊袋</label>
<hitPoints>1</hitPoints>
<skinCovered>true</skinCovered>
<solid>false</solid>
<bleedRate>0.01</bleedRate>
</BodyPartDef>
<BodyPartGroupDef>
<defName>ARA_Genitalias</defName>
@@ -734,6 +742,11 @@
<label>灵能神经束群</label>
<listOrder>128</listOrder>
</BodyPartGroupDef>
<BodyPartGroupDef>
<defName>ARA_Pouchs</defName>
<label>囊袋</label>
<listOrder>129</listOrder>
</BodyPartGroupDef>
<BodyDef>
<defName>ArachnaeMyrmecocystus_Body</defName>
@@ -1103,6 +1116,15 @@
<li>ARA_Toxic_Needles</li>
</groups>
</li>
<!-- 囊袋 -->
<li>
<def>ARA_Pouch</def>
<coverage>0.001</coverage>
<depth>Inside</depth>
<groups>
<li>ARA_Pouchs</li>
</groups>
</li>
</parts>
</li>
</parts>
@@ -1469,6 +1491,15 @@
</li>
</parts>
</li>
<!-- 囊袋 -->
<li>
<def>ARA_Pouch</def>
<coverage>0.001</coverage>
<depth>Inside</depth>
<groups>
<li>ARA_Pouchs</li>
</groups>
</li>
</parts>
</corePart>
</BodyDef>
@@ -1836,6 +1867,15 @@
<li>Arms</li>
</groups>
</li>
<!-- 囊袋 -->
<li>
<def>ARA_Pouch</def>
<coverage>0.001</coverage>
<depth>Inside</depth>
<groups>
<li>ARA_Pouchs</li>
</groups>
</li>
</parts>
</li>
</parts>
@@ -2208,6 +2248,15 @@
<li>ARA_Toxic_Needles</li>
</groups>
</li>
<!-- 囊袋 -->
<li>
<def>ARA_Pouch</def>
<coverage>0.001</coverage>
<depth>Inside</depth>
<groups>
<li>ARA_Pouchs</li>
</groups>
</li>
</parts>
</li>
<li>
@@ -2998,6 +3047,15 @@
<li>ARA_Smoke_Chambers</li>
</groups>
</li>
<!-- 囊袋 -->
<li>
<def>ARA_Pouch</def>
<coverage>0.001</coverage>
<depth>Inside</depth>
<groups>
<li>ARA_Pouchs</li>
</groups>
</li>
</parts>
</li>
</parts>
@@ -3352,6 +3410,15 @@
<li>Torso</li>
</groups>
</li>
<!-- 囊袋 -->
<li>
<def>ARA_Pouch</def>
<coverage>0.001</coverage>
<depth>Inside</depth>
<groups>
<li>ARA_Pouchs</li>
</groups>
</li>
</parts>
</li>
</parts>

View File

@@ -1052,4 +1052,101 @@
</li>
</comps>
</HediffDef>
<!-- 空天种 -->
<HediffDef>
<defName>ARA_Skyraider_Base</defName>
<label>飞行巨兽</label>
<description>阿拉克涅空天种是天空的统治者,她们身躯庞大但又敏捷致命,在携带大型武器的同时还拥有其他人难以企及的机动性。</description>
<hediffClass>HediffWithComps</hediffClass>
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
<isBad>false</isBad>
<scenarioCanAdd>false</scenarioCanAdd>
<maxSeverity>1.0</maxSeverity>
<stages>
<li>
<minSeverity>0</minSeverity>
<statOffsets>
<MoveSpeed>2</MoveSpeed>
</statOffsets>
</li>
</stages>
<comps>
<li Class="HediffCompProperties_GiveAbility">
<abilityDefs>
<li>ARA_Skyraider_jump</li>
<li>ARA_Skyraider_Hivelord</li>
</abilityDefs>
</li>
<li Class="HediffCompProperties_RemoveIfOtherHediff">
<hediffs>
<li>ARA_Skyraider_Hivelord</li>
</hediffs>
</li>
</comps>
</HediffDef>
<AbilityDef>
<defName>ARA_Skyraider_Hivelord</defName>
<label>空天种转换——巢虫之主</label>
<description>使空天种发生内驱性进化,以降低机动力和失去高空机动能力为代价,使其获得向敌方自动投射各种辅虫的能力。\n\n该进化过程不可逆</description>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_ShieldHead_Protector</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_Skyraider_Hivelord</hediffDef>
<onlyApplyToSelf>True</onlyApplyToSelf>
<replaceExisting>true</replaceExisting>
<severity>1</severity>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
<requiredResearch>ARA_Technology_1VTE</requiredResearch>
<failMessage>需要科技 节点VTE-1"护卫者" 以解锁进化</failMessage>
</li>
</comps>
</AbilityDef>
<HediffDef>
<defName>ARA_Skyraider_Hivelord</defName>
<label>亚种-领主种</label>
<description>这只阿拉克涅空天种已经获得拔耀,在敌方靠近时,会对敌方投掷能够通过近战施加酸烧的酸噬种辅虫。</description>
<hediffClass>HediffWithComps</hediffClass>
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
<isBad>false</isBad>
<scenarioCanAdd>false</scenarioCanAdd>
<maxSeverity>1.0</maxSeverity>
<stages>
<li>
<minSeverity>0.01</minSeverity>
<statOffsets>
<MoveSpeed>1</MoveSpeed>
</statOffsets>
</li>
</stages>
<comps>
<li Class="ArachnaeSwarm.HediffCompProperties_TopTurret">
<turretDef>ARA_Skyraider_Hivelord_Turret</turretDef>
<angleOffset>0</angleOffset>
<autoAttack>true</autoAttack>
</li>
</comps>
</HediffDef>
</Defs>

View File

@@ -36,6 +36,7 @@
</fixedIngredientFilter>
</RecipeDef>
<!-- 甲壳 -->
<RecipeDef ParentName="ARA_SurgeryInstallImplantBase">
<defName>ARA_Surgery_Install_Plasteel</defName>
<label>玻璃钢甲壳植入</label>
@@ -64,7 +65,7 @@
</fixedIngredientFilter>
<addsHediff>ARA_Plasteel_Shell_Hediff</addsHediff>
</RecipeDef>
<HediffDef ParentName="ImplantHediffBase">
<HediffDef ParentName="AddedBodyPartBase">
<defName>ARA_Plasteel_Shell_Hediff</defName>
<label>玻璃钢甲壳</label>
<hediffClass>Hediff_Implant</hediffClass>
@@ -88,13 +89,13 @@
</li>
</stages>
</HediffDef>
<RecipeDef ParentName="ARA_SurgeryInstallImplantBase">
<defName>ARA_Surgery_Install_Huge_Stomach</defName>
<label>额外胃囊</label>
<description>诱发阿拉克涅虫族的定向变异,使其储存营养的胃囊增大,以储存更多食物</description>
<defName>ARA_Surgery_Install_Shell_Thorn</defName>
<label>甲壳棘刺植入</label>
<description>阿拉克涅虫族的甲壳植入两排棘刺腔管,它们是拥有半自主意识的器官,会对附近的敌军自动发射棘刺。此外,该变异也会加厚甲壳以获得更强的防御力</description>
<descriptionHyperlinks>
<HediffDef>ARA_Huge_Stomach_Hediff</HediffDef>
<HediffDef>ARA_Shell_Thorn_Hediff</HediffDef>
<thingDef>ARA_Shell_Thorn_Turret</thingDef>
</descriptionHyperlinks>
<jobString>正在实施定向变异</jobString>
<ingredients>
@@ -107,9 +108,252 @@
<count>6</count>
</li>
</ingredients>
<appliedOnFixedBodyParts>
<li>ARA_Chitin_Shell</li>
</appliedOnFixedBodyParts>
<fixedIngredientFilter>
<thingDefs>
<li>ARA_Activated_Bacterium</li>
</thingDefs>
</fixedIngredientFilter>
<addsHediff>ARA_Shell_Thorn_Hediff</addsHediff>
</RecipeDef>
<HediffDef ParentName="AddedBodyPartBase">
<defName>ARA_Shell_Thorn_Hediff</defName>
<label>甲壳棘刺</label>
<hediffClass>Hediff_Implant</hediffClass>
<description>阿拉克涅虫族在甲壳上植入了两排棘刺腔管,只要不处于近战状态下,它们就会对靠近的敌人自动发射棘刺攻击对方。</description>
<descriptionHyperlinks>
<RecipeDef>ARA_Surgery_Install_Shell_Thorn</RecipeDef>
<thingDef>ARA_Shell_Thorn_Turret</thingDef>
</descriptionHyperlinks>
<addedPartProps>
<betterThanNatural>true</betterThanNatural>
</addedPartProps>
<stages>
<li>
<statOffsets>
<ArmorRating_Sharp>0.2</ArmorRating_Sharp>
<ArmorRating_Blunt>0.2</ArmorRating_Blunt>
</statOffsets>
</li>
</stages>
<comps>
<li Class="ArachnaeSwarm.HediffCompProperties_TopTurret">
<turretDef>ARA_Shell_Thorn_Turret</turretDef>
<angleOffset>0</angleOffset>
<autoAttack>true</autoAttack>
</li>
</comps>
</HediffDef>
<RecipeDef ParentName="ARA_SurgeryInstallImplantBase">
<defName>ARA_Surgery_Install_Reactive_Shell</defName>
<label>反应甲壳植入</label>
<description>为阿拉克涅虫族的甲壳植入特殊的反应甲壳,它们是一次性的,可以在伤害袭来的时候弹出甲壳挡住伤害以免伤及本体。</description>
<descriptionHyperlinks>
<HediffDef>ARA_Reactive_Shell_Hediff</HediffDef>
</descriptionHyperlinks>
<jobString>正在实施定向变异</jobString>
<ingredients>
<li>
<filter>
<thingDefs>
<li>ARA_Activated_Bacterium</li>
</thingDefs>
</filter>
<count>6</count>
</li>
</ingredients>
<fixedIngredientFilter>
<thingDefs>
<li>ARA_Activated_Bacterium</li>
</thingDefs>
</fixedIngredientFilter>
<appliedOnFixedBodyParts>
<li>ARA_Chitin_Shell</li>
</appliedOnFixedBodyParts>
<addsHediff>ARA_Reactive_Shell_Hediff</addsHediff>
</RecipeDef>
<HediffDef ParentName="AddedBodyPartBase">
<defName>ARA_Reactive_Shell_Hediff</defName>
<label>反应甲壳</label>
<description>阿拉克涅虫族的反应甲壳可以使其免受一次外来伤害,但是随后这块甲片就会弹开,不再给予防御力。</description>
<hediffClass>ArachnaeSwarm.Hediff_DamageShield</hediffClass>
<defaultLabelColor>(0.52, 1, 0.95)</defaultLabelColor>
<descriptionHyperlinks>
<RecipeDef>ARA_Surgery_Install_Reactive_Shell</RecipeDef>
</descriptionHyperlinks>
<isBad>false</isBad>
<debugLabelExtra>other</debugLabelExtra>
<initialSeverity>1</initialSeverity> <!-- 初始层数设置为10 -->
<maxSeverity>1</maxSeverity> <!-- 最大层数,可以根据需要调整 -->
</HediffDef>
<!-- 腿部 -->
<RecipeDef ParentName="ARA_SurgeryInstallImplantBase">
<defName>ARA_Surgery_Install_Strengthening_Tendon</defName>
<label>强化肌腱植入</label>
<description>为阿拉克涅虫族的腿部植入强化肌腱,允许虫族以更高的速度移动并获得短距离跳跃的能力。</description>
<descriptionHyperlinks>
<HediffDef>ARA_Strengthening_Tendon_Hediff</HediffDef>
</descriptionHyperlinks>
<jobString>正在实施定向变异</jobString>
<ingredients>
<li>
<filter>
<thingDefs>
<li>ARA_Activated_Bacterium</li>
</thingDefs>
</filter>
<count>6</count>
</li>
</ingredients>
<fixedIngredientFilter>
<thingDefs>
<li>ARA_Activated_Bacterium</li>
</thingDefs>
</fixedIngredientFilter>
<appliedOnFixedBodyParts>
<li>Leg</li>
</appliedOnFixedBodyParts>
<addsHediff>ARA_Strengthening_Tendon_Hediff</addsHediff>
</RecipeDef>
<HediffDef ParentName="AddedBodyPartBase">
<defName>ARA_Strengthening_Tendon_Hediff</defName>
<label>强化肌腱</label>
<hediffClass>Hediff_Implant</hediffClass>
<description>阿拉克涅虫族受到强化的肌腱使得她们能高速移动,同时获得跳跃能力。</description>
<descriptionHyperlinks>
<RecipeDef>ARA_Surgery_Install_Plasteel</RecipeDef>
</descriptionHyperlinks>
<addedPartProps>
<betterThanNatural>true</betterThanNatural>
</addedPartProps>
<stages>
<li>
<minSeverity>0</minSeverity>
<statOffsets>
<MoveSpeed>0.5</MoveSpeed>
</statOffsets>
</li>
</stages>
<comps>
<li Class="HediffCompProperties_GiveAbility">
<abilityDefs>
<li>ARA_Strengthening_Tendon_Jump</li>
</abilityDefs>
</li>
</comps>
</HediffDef>
<RecipeDef ParentName="ARA_SurgeryInstallImplantBase">
<defName>ARA_Surgery_Install_Slide_Patagium</defName>
<label>滑行翼膜植入</label>
<description>为阿拉克涅虫族的腿部植入滑行翼膜,允许虫族在菌毯上活动时获得极高的速度。</description>
<descriptionHyperlinks>
<HediffDef>ARA_Slide_Patagium_Hediff</HediffDef>
</descriptionHyperlinks>
<jobString>正在实施定向变异</jobString>
<ingredients>
<li>
<filter>
<thingDefs>
<li>ARA_Activated_Bacterium</li>
</thingDefs>
</filter>
<count>6</count>
</li>
</ingredients>
<fixedIngredientFilter>
<thingDefs>
<li>ARA_Activated_Bacterium</li>
</thingDefs>
</fixedIngredientFilter>
<appliedOnFixedBodyParts>
<li>Leg</li>
</appliedOnFixedBodyParts>
<addsHediff>ARA_Slide_Patagium_Hediff</addsHediff>
</RecipeDef>
<HediffDef ParentName="AddedBodyPartBase">
<defName>ARA_Slide_Patagium_Hediff</defName>
<label>滑行翼膜</label>
<hediffClass>Hediff_Implant</hediffClass>
<description>阿拉克涅虫族腿部的滑行翼膜可以让她们在菌毯上快速移动,但是离开菌毯后加成将立刻失效。</description>
<descriptionHyperlinks>
<RecipeDef>ARA_Surgery_Install_Plasteel</RecipeDef>
</descriptionHyperlinks>
<addedPartProps>
<betterThanNatural>true</betterThanNatural>
</addedPartProps>
<maxSeverity>1.0</maxSeverity>
<minSeverity>0.01</minSeverity>
<stages>
<li>
<becomeVisible>false</becomeVisible>
<minSeverity>0</minSeverity>
<label></label>
</li>
<li>
<minSeverity>0.1</minSeverity>
<statOffsets>
<MoveSpeed>0.5</MoveSpeed>
</statOffsets>
</li>
<li>
<minSeverity>0.5</minSeverity>
<statOffsets>
<MoveSpeed>1</MoveSpeed>
</statOffsets>
</li>
<li>
<minSeverity>0.8</minSeverity>
<statOffsets>
<MoveSpeed>2</MoveSpeed>
</statOffsets>
</li>
</stages>
<comps>
<li Class="ArachnaeSwarm.HediffCompProperties_TerrainBasedSeverity">
<interval>180</interval>
<!-- 目标地形列表 -->
<terrainDefs>
<!--<li>SterileTile</li> 无菌地砖 -->
<!-- 您可以在这里添加更多地形, 比如: -->
<li>ARA_InsectCreep</li>
<li>ARA_InsectCreepFloor</li>
</terrainDefs>
<!-- 站在目标地形上时,每次检查的严重性变化量 -->
<severityOnTerrain>0.05</severityOnTerrain>
<!-- 不在目标地形上时,每次检查的严重性变化量 (负数表示减少) -->
<severityOffTerrain>-2</severityOffTerrain>
</li>
</comps>
</HediffDef>
<!---->
<RecipeDef ParentName="ARA_SurgeryInstallImplantBase">
<defName>ARA_Surgery_Install_Huge_Stomach</defName>
<label>额外胃囊</label>
<description>诱发阿拉克涅虫族的定向变异,使其储存营养的胃囊增大,以储存更多食物。</description>
<descriptionHyperlinks>
<HediffDef>ARA_Huge_Stomach_Hediff</HediffDef>
</descriptionHyperlinks>
<jobString>正在实施定向变异</jobString>
<appliedOnFixedBodyParts>
<li>Stomach</li>
</appliedOnFixedBodyParts>
<ingredients>
<li>
<filter>
<thingDefs>
<li>ARA_Activated_Bacterium</li>
</thingDefs>
</filter>
<count>6</count>
</li>
</ingredients>
<fixedIngredientFilter>
<thingDefs>
<li>ARA_Activated_Bacterium</li>
@@ -118,7 +362,7 @@
<addsHediff>ARA_Huge_Stomach_Hediff</addsHediff>
<researchPrerequisite>ARA_Technology_1EVO</researchPrerequisite>
</RecipeDef>
<HediffDef ParentName="ImplantHediffBase">
<HediffDef ParentName="AddedBodyPartBase">
<defName>ARA_Huge_Stomach_Hediff</defName>
<label>额外胃囊</label>
<hediffClass>Hediff_Implant</hediffClass>
@@ -138,6 +382,7 @@
</stages>
</HediffDef>
<!-- 大脑 -->
<RecipeDef ParentName="ARA_SurgeryInstallImplantBase">
<defName>ARA_Surgery_Install_Cycle_Suppression</defName>
<label>生命周期抑制</label>
@@ -166,7 +411,7 @@
</fixedIngredientFilter>
<addsHediff>ARA_Cycle_Suppression_Hediff</addsHediff>
</RecipeDef>
<HediffDef ParentName="ImplantHediffBase">
<HediffDef ParentName="AddedBodyPartBase">
<defName>ARA_Cycle_Suppression_Hediff</defName>
<label>生命周期抑制</label>
<hediffClass>Hediff_Implant</hediffClass>

View File

@@ -625,6 +625,10 @@
<li>ARA_Surgery_Install_Plasteel</li>
<li>ARA_Surgery_Install_Huge_Stomach</li>
<li>ARA_Surgery_Install_Cycle_Suppression</li>
<li>ARA_Surgery_Install_Shell_Thorn</li>
<li>ARA_Surgery_Install_Reactive_Shell</li>
<li>ARA_Surgery_Install_Strengthening_Tendon</li>
<li>ARA_Surgery_Install_Slide_Patagium</li>
</recipes>
<comps>
@@ -1331,7 +1335,7 @@
<!-- 基础属性设置 -->
<statBases>
<!-- 移动速度 -->
<MoveSpeed>3</MoveSpeed>
<MoveSpeed>2.5</MoveSpeed>
<MaxFlightTime>9999</MaxFlightTime>
<FlightCooldown>0</FlightCooldown>
@@ -1369,6 +1373,13 @@
</race>
<comps>
<li Class="ArachnaeSwarm.CompProperties_HediffGiver">
<hediffs>
<li>ARA_Skyraider_Base</li>
</hediffs>
<addChance>1.0</addChance>
<allowDuplicates>false</allowDuplicates>
</li>
<!-- Add our new flight component here -->
<li Class="ArachnaeSwarm.CompProperties_PawnFlight"> <!-- 2. 添加我们的飞行组件 -->

View File

@@ -1050,4 +1050,87 @@
</shaderParameters>
</graphicData>
</ThingDef>
<ThingDef ParentName="BaseWeaponTurret">
<defName>ARA_Shell_Thorn_Turret</defName>
<label>棘刺腔管</label>
<description>阿拉克涅虫族甲壳上的半自主器官,可以自动发射。</description>
<graphicData>
<texPath>ArachnaeSwarm/Weapon/ARA_Weapon_Empty</texPath>
<graphicClass>Graphic_Single</graphicClass>
</graphicData>
<descriptionHyperlinks>
<HediffDef>ARA_Shell_Thorn_Hediff</HediffDef>
</descriptionHyperlinks>
<statBases>
<AccuracyTouch>1</AccuracyTouch>
<AccuracyShort>1</AccuracyShort>
<AccuracyMedium>1</AccuracyMedium>
<AccuracyLong>1</AccuracyLong>
<Mass>0</Mass>
</statBases>
<verbs>
<li>
<verbClass>Verb_Shoot</verbClass>
<hasStandardCommand>true</hasStandardCommand>
<defaultProjectile>Bullet_ARA_Shell_Thorn_Turret</defaultProjectile>
<range>8</range>
<burstShotCount>12</burstShotCount>
<ticksBetweenBurstShots>2</ticksBetweenBurstShots>
<soundCast>Shot_TurretSniper</soundCast>
<soundCastTail>GunTail_Medium</soundCastTail>
<muzzleFlashScale>9</muzzleFlashScale>
<defaultCooldownTime>4</defaultCooldownTime>
</li>
</verbs>
</ThingDef>
<ThingDef ParentName="BaseBullet">
<defName>Bullet_ARA_Shell_Thorn_Turret</defName>
<label>小型棘刺</label>
<graphicData>
<texPath>ArachnaeSwarm/Mote/ARA_Spike_Shell</texPath>
<graphicClass>Graphic_Single_AgeSecs</graphicClass>
<shaderType>MoteGlow</shaderType>
<drawSize>(0.3,0.6)</drawSize>
<color>(0.9,0.9,0.9,1)</color>
</graphicData>
<projectile>
<damageDef>Bullet</damageDef>
<damageAmountBase>3</damageAmountBase>
<armorPenetrationBase>0.75</armorPenetrationBase>
<speed>40</speed>
</projectile>
</ThingDef>
<ThingDef ParentName="BaseWeaponTurret">
<defName>ARA_Skyraider_Hivelord_Turret</defName>
<label>食肉蜂巢</label>
<description>阿拉克涅领主种身上的共生器官,会对敌方自动投射酸噬种辅虫。</description>
<graphicData>
<texPath>ArachnaeSwarm/Weapon/ARA_Weapon_Empty</texPath>
<graphicClass>Graphic_Single</graphicClass>
</graphicData>
<descriptionHyperlinks>
<HediffDef>ARA_Skyraider_Hivelord</HediffDef>
</descriptionHyperlinks>
<statBases>
<AccuracyTouch>1</AccuracyTouch>
<AccuracyShort>1</AccuracyShort>
<AccuracyMedium>1</AccuracyMedium>
<AccuracyLong>1</AccuracyLong>
<Mass>0</Mass>
</statBases>
<verbs>
<li>
<verbClass>Verb_Shoot</verbClass>
<hasStandardCommand>true</hasStandardCommand>
<defaultProjectile>ArachnaeBase_Race_Acid_Proj</defaultProjectile>
<range>32</range>
<burstShotCount>2</burstShotCount>
<ticksBetweenBurstShots>2</ticksBetweenBurstShots>
<soundCast>Shot_TurretSniper</soundCast>
<soundCastTail>GunTail_Medium</soundCastTail>
<muzzleFlashScale>9</muzzleFlashScale>
<defaultCooldownTime>6</defaultCooldownTime>
</li>
</verbs>
</ThingDef>
</Defs>

View File

@@ -167,7 +167,6 @@
</placeWorkers>
<designationHotKey>Misc2</designationHotKey>
</ThingDef>
<ThingDef ParentName="BaseWeaponTurret">
<defName>ARA_Gun_Beespikeshooter</defName>
<label>蜂刺射手</label>
@@ -476,7 +475,6 @@
<defName>ArachnaeBase_Race_Acidling_Proj</defName>
<label>阿拉克涅酸爆种</label>
<thingClass>Projectile_SpawnsPawnZeroAge</thingClass>
<uiIconPath>Wula/Things/WULA_Attack_Cat/WULA_Cat_Thin_south</uiIconPath>
<graphicData>
<texPath>Things/Pawn/Animal/Spelopede/Spelopede</texPath>
<graphicClass>Graphic_Multi</graphicClass>

View File

@@ -1,32 +1,7 @@
{
"Version": 1,
"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\\abilities\\ara_showtemperaturerange\\compabilityeffect_abilityshowtemperaturerange.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_showtemperaturerange\\compabilityeffect_abilityshowtemperaturerange.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\\ara_hediffdefof.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:ara_hediffdefof.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\\mainharmony.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:mainharmony.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\\supercarryextension.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:supercarryextension.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\\floatmenuoptionprovider_supercarry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:floatmenuoptionprovider_supercarry.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\\jobdriver_supercarry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobdriver_supercarry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"Documents": [],
"DocumentGroupContainers": [
{
"Orientation": 0,
@@ -34,84 +9,11 @@
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 1,
"SelectedChildIndex": -1,
"Children": [
{
"$type": "Bookmark",
"Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "CompAbilityEffect_AbilityShowTemperatureRange.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_ShowTemperatureRange\\CompAbilityEffect_AbilityShowTemperatureRange.cs",
"RelativeDocumentMoniker": "Abilities\\ARA_ShowTemperatureRange\\CompAbilityEffect_AbilityShowTemperatureRange.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_ShowTemperatureRange\\CompAbilityEffect_AbilityShowTemperatureRange.cs",
"RelativeToolTip": "Abilities\\ARA_ShowTemperatureRange\\CompAbilityEffect_AbilityShowTemperatureRange.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAA9AAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-27T08:23:51.83Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "ARA_HediffDefOf.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_HediffDefOf.cs",
"RelativeDocumentMoniker": "ARA_HediffDefOf.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_HediffDefOf.cs",
"RelativeToolTip": "ARA_HediffDefOf.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAJAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-27T03:14:05.334Z"
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "MainHarmony.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\MainHarmony.cs",
"RelativeDocumentMoniker": "MainHarmony.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\MainHarmony.cs",
"RelativeToolTip": "MainHarmony.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-27T03:13:34.632Z"
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "SuperCarryExtension.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\SuperCarryExtension.cs",
"RelativeDocumentMoniker": "SuperCarryExtension.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\SuperCarryExtension.cs",
"RelativeToolTip": "SuperCarryExtension.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-27T03:13:32.751Z"
},
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "FloatMenuOptionProvider_SuperCarry.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\FloatMenuOptionProvider_SuperCarry.cs",
"RelativeDocumentMoniker": "FloatMenuOptionProvider_SuperCarry.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\FloatMenuOptionProvider_SuperCarry.cs",
"RelativeToolTip": "FloatMenuOptionProvider_SuperCarry.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-27T03:13:31.262Z"
},
{
"$type": "Document",
"DocumentIndex": 5,
"Title": "JobDriver_SuperCarry.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\JobDriver_SuperCarry.cs",
"RelativeDocumentMoniker": "JobDriver_SuperCarry.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\JobDriver_SuperCarry.cs",
"RelativeToolTip": "JobDriver_SuperCarry.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-27T03:13:30.358Z"
}
]
}

View File

@@ -0,0 +1,62 @@
using RimWorld;
using System.Collections.Generic;
using System.Linq;
using Verse;
namespace ArachnaeSwarm
{
public class CompAbilityEffect_DestroyOwnBodyPart : CompAbilityEffect
{
public new CompProperties_AbilityDestroyOwnBodyPart Props => (CompProperties_AbilityDestroyOwnBodyPart)props;
public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
{
base.Apply(target, dest);
Pawn caster = parent.pawn;
if (caster == null || caster.Dead)
return;
// 获取要破坏的身体部位
List<BodyPartRecord> partsToDestroy = GetBodyPartsToDestroy(caster);
if (partsToDestroy.Count == 0)
return;
// 对每个部位执行破坏
foreach (BodyPartRecord part in partsToDestroy)
{
DestroyBodyPart(caster, part);
}
}
// 获取要破坏的身体部位列表
private List<BodyPartRecord> GetBodyPartsToDestroy(Pawn pawn)
{
List<BodyPartRecord> validParts = new List<BodyPartRecord>();
// 获取指定的身体部位
foreach (BodyPartDef partDef in Props.bodyPartsToDestroy)
{
var parts = pawn.RaceProps.body.GetPartsWithDef(partDef);
foreach (BodyPartRecord part in parts)
{
// 检查部位是否已经缺失
if (!pawn.health.hediffSet.PartIsMissing(part))
{
validParts.Add(part);
}
}
}
return validParts;
}
// 实际执行身体部位的破坏
private void DestroyBodyPart(Pawn pawn, BodyPartRecord part)
{
// 直接添加缺失部位hediff
pawn.health.AddHediff(HediffDefOf.MissingBodyPart, part);
}
}
}

View File

@@ -0,0 +1,17 @@
using RimWorld;
using System.Collections.Generic;
using Verse;
namespace ArachnaeSwarm
{
public class CompProperties_AbilityDestroyOwnBodyPart : CompProperties_AbilityEffect
{
// 要破坏的身体部位列表
public List<BodyPartDef> bodyPartsToDestroy;
public CompProperties_AbilityDestroyOwnBodyPart()
{
compClass = typeof(CompAbilityEffect_DestroyOwnBodyPart);
}
}
}

View File

@@ -0,0 +1,146 @@
using RimWorld;
using Verse;
namespace ArachnaeSwarm
{
public class CompAbilityEffect_HediffRestriction : CompAbilityEffect
{
public new CompProperties_AbilityHediffRestriction Props => (CompProperties_AbilityHediffRestriction)props;
// 检查能力是否可用
public override bool GizmoDisabled(out string reason)
{
if (!IsTargetValid(null)) // 对Gizmo检查没有具体目标
{
reason = Props.disabledReasonKey.Translate(GetHediffList());
return true;
}
reason = null;
return false;
}
// 验证目标是否有效
public override bool Valid(LocalTargetInfo target, bool throwMessages = false)
{
if (!base.Valid(target, throwMessages))
return false;
// 检查目标hediff条件
if (!IsTargetValid(target))
{
if (throwMessages)
{
Messages.Message(Props.targetHediffFailMessage.Translate(GetHediffList()), parent.pawn, MessageTypeDefOf.RejectInput, historical: false);
}
return false;
}
return true;
}
// 应用效果前的最终验证
public override bool CanApplyOn(LocalTargetInfo target, LocalTargetInfo dest)
{
if (!IsTargetValid(target))
{
Messages.Message(Props.targetHediffFailMessage.Translate(GetHediffList()), parent.pawn, MessageTypeDefOf.RejectInput, historical: false);
return false;
}
return base.CanApplyOn(target, dest);
}
// 检查目标是否满足hediff条件
private bool IsTargetValid(LocalTargetInfo target)
{
// 如果目标不是pawn始终允许如地面、物品等
Pawn targetPawn = target.Thing as Pawn;
if (targetPawn == null)
return true;
// 检查必须有的hediff
if (Props.requiredHediff != null)
{
if (!targetPawn.health.hediffSet.HasHediff(Props.requiredHediff))
return false;
}
// 检查禁止的hediff
if (Props.forbiddenHediff != null)
{
if (targetPawn.health.hediffSet.HasHediff(Props.forbiddenHediff))
return false;
}
// 检查必须有的hediff列表
if (Props.requiredHediffs != null && Props.requiredHediffs.Count > 0)
{
bool hasAnyRequired = false;
foreach (var hediff in Props.requiredHediffs)
{
if (targetPawn.health.hediffSet.HasHediff(hediff))
{
hasAnyRequired = true;
break;
}
}
if (!hasAnyRequired)
return false;
}
// 检查禁止的hediff列表
if (Props.forbiddenHediffs != null && Props.forbiddenHediffs.Count > 0)
{
foreach (var hediff in Props.forbiddenHediffs)
{
if (targetPawn.health.hediffSet.HasHediff(hediff))
return false;
}
}
return true;
}
// 获取hediff列表的字符串表示
private string GetHediffList()
{
string hediffList = "";
// 添加必须有的hediff
if (Props.requiredHediff != null)
{
hediffList += Props.requiredHediff.label;
}
else if (Props.requiredHediffs != null && Props.requiredHediffs.Count > 0)
{
foreach (var hediff in Props.requiredHediffs)
{
if (hediffList.Length > 0)
hediffList += ", ";
hediffList += hediff.label;
}
}
// 添加禁止的hediff
if (Props.forbiddenHediff != null)
{
if (hediffList.Length > 0)
hediffList += "; ";
hediffList += "不能有: " + Props.forbiddenHediff.label;
}
else if (Props.forbiddenHediffs != null && Props.forbiddenHediffs.Count > 0)
{
if (hediffList.Length > 0)
hediffList += "; ";
hediffList += "不能有: ";
foreach (var hediff in Props.forbiddenHediffs)
{
if (hediffList.EndsWith("不能有: "))
hediffList += hediff.label;
else
hediffList += ", " + hediff.label;
}
}
return hediffList;
}
}
}

View File

@@ -0,0 +1,33 @@
using RimWorld;
using System.Collections.Generic;
using Verse;
namespace ArachnaeSwarm
{
public class CompProperties_AbilityHediffRestriction : CompProperties_AbilityEffect
{
// 必须有的hediff单个
public HediffDef requiredHediff;
// 必须有的hediff多个满足任意一个即可
public List<HediffDef> requiredHediffs;
// 禁止的hediff单个
public HediffDef forbiddenHediff;
// 禁止的hediff多个有任意一个就不行
public List<HediffDef> forbiddenHediffs;
// 失败消息配置
[MustTranslate]
public string targetHediffFailMessage = "AbilityTargetHediffRestriction";
[MustTranslate]
public string disabledReasonKey = "AbilityDisabledHediffRestriction";
public CompProperties_AbilityHediffRestriction()
{
compClass = typeof(CompAbilityEffect_HediffRestriction);
}
}
}

View File

@@ -73,8 +73,12 @@
<Compile Include="Abilities\ARA_AbilitySwitch\WeaponSwitch.cs" />
<Compile Include="Abilities\ARA_AddExtraExp\CompAbilityEffect_AddExtraExp.cs" />
<Compile Include="Abilities\ARA_AddExtraExp\CompProperties_AddExtraExp.cs" />
<Compile Include="Abilities\ARA_DestroyOwnBodyPart\CompAbilityEffect_DestroyOwnBodyPart.cs" />
<Compile Include="Abilities\ARA_DestroyOwnBodyPart\CompProperties_AbilityDestroyOwnBodyPart.cs" />
<Compile Include="Abilities\ARA_GiveHediffWithSkillDuration\CompAbilityEffect_GiveHediffWithSkillDuration.cs" />
<Compile Include="Abilities\ARA_GiveHediffWithSkillDuration\CompProperties_GiveHediffWithSkillDuration.cs" />
<Compile Include="Abilities\ARA_HediffRestriction\CompAbilityEffect_HediffRestriction.cs" />
<Compile Include="Abilities\ARA_HediffRestriction\CompProperties_AbilityHediffRestriction.cs" />
<Compile Include="Abilities\ARA_HuggingFace\CompAbilityEffect_Possess.cs" />
<Compile Include="Abilities\ARA_HuggingFace\CompProperties_AbilityPossess.cs" />
<Compile Include="Abilities\ARA_HuggingFace\Hediff_Possession.cs" />