追猎种亚种,新资源活化钜菌

This commit is contained in:
2025-09-22 12:02:46 +08:00
parent 59857fda42
commit f56d572227
12 changed files with 562 additions and 40 deletions

Binary file not shown.

View File

@@ -347,22 +347,21 @@
<cooldownTicksRange>6000</cooldownTicksRange>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Toxic_Needle_Fire</iconPath>
<verbProperties>
<verbClass>Verb_AbilityShoot</verbClass>
<defaultProjectile>Bullet_ARA_RW_Basic_Fist_Needle_Gun</defaultProjectile>
<range>24.9</range>
<verbClass>Verb_CastAbility</verbClass>
<range>24</range>
<warmupTime>1</warmupTime>
<soundCast>Heatspikes_Shot</soundCast>
<soundCastTail>Heatspikes_Tail</soundCastTail>
<muzzleFlashScale>9</muzzleFlashScale>
<ticksBetweenBurstShots>6</ticksBetweenBurstShots>
<warmupTime>0</warmupTime>
<burstShotCount>12</burstShotCount>
<accuracyTouch>0.9</accuracyTouch>
<accuracyShort>0.8</accuracyShort>
<accuracyMedium>0.7</accuracyMedium>
<accuracyLong>0.6</accuracyLong>
<ai_IsWeapon>false</ai_IsWeapon>
<violent>false</violent>
<targetParams>
<canTargetPawns>True</canTargetPawns>
</targetParams>
</verbProperties>
<comps>
<li Class="ArachnaeSwarm.CompProperties_AbilityLaunchMultiProjectile">
<projectileDef>Bullet_ARA_RW_Basic_Fist_Needle_Gun</projectileDef>
<numProjectiles>12</numProjectiles>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityNeedCost">
<needDef>Food</needDef>
<needCost>0.1</needCost>
@@ -776,4 +775,72 @@
<speed>40</speed>
</projectile>
</ThingDef>
<AbilityDef>
<defName>ARA_Fighter_Invisibility_jump</defName>
<label>追猎种跳跃</label>
<description>以强力的肌腱向目标地点跳跃,会暴露追猎种的身形。</description>
<iconPath>UI/Abilities/Longjump</iconPath>
<cooldownTicksRange>1000</cooldownTicksRange>
<charges>3</charges>
<cooldownPerCharge>true</cooldownPerCharge>
<hostile>false</hostile>
<casterMustBeCapableOfViolence>false</casterMustBeCapableOfViolence>
<verbProperties>
<verbClass>Verb_CastAbilityJump</verbClass>
<violent>false</violent>
<forceNormalTimeSpeed>false</forceNormalTimeSpeed>
<!-- <warmupTime>0.5</warmupTime> -->
<range>23</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>
<AbilityDef>
<defName>ARA_Fighter_Invisibility_Execution</defName>
<label>巨镰处决</label>
<description>追猎种挥动巨镰对敌人进行处决,造成一次高额伤害,处决完成后会暴露追猎种的身形。</description>
<iconPath>UI/Abilities/Longjump</iconPath>
<cooldownTicksRange>3800</cooldownTicksRange>
<cooldownPerCharge>true</cooldownPerCharge>
<hostile>false</hostile>
<casterMustBeCapableOfViolence>false</casterMustBeCapableOfViolence>
<stunTargetWhileCasting>true</stunTargetWhileCasting>
<warmupMote>Mote_HoraxSmallSpellWarmup</warmupMote>
<warmupEffecter>HoraxianAbilityCasting</warmupEffecter>
<warmupSound>AnomalyAbilityWarmup</warmupSound>
<jobDef>CastAbilityOnThingMelee</jobDef>
<verbProperties>
<verbClass>Verb_CastAbilityTouch</verbClass>
<drawAimPie>false</drawAimPie>
<range>-1</range>
<warmupTime>1</warmupTime>
<targetParams>
<canTargetSelf>false</canTargetSelf>
<canTargetMechs>false</canTargetMechs>
<canTargetBuildings>false</canTargetBuildings>
</targetParams>
</verbProperties>
<comps>
<li Class="CompProperties_AbilityGiveHediff">
<compClass>CompAbilityEffect_GiveHediff</compClass>
<hediffDef>ARA_Fighter_Execution_Damage</hediffDef>
<replaceExisting>true</replaceExisting>
</li>
</comps>
</AbilityDef>
</Defs>

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- 女皇 -->
<!-- T0 -->
<HediffDef>
<defName>ARA_Queen_0_Stage</defName>
@@ -218,6 +219,7 @@
</comps>
</HediffDef>
<!-- 工艺 -->
<!-- T0 -->
<HediffDef>
<defName>ARA_WeaponSmith_0_Stage</defName>
@@ -356,6 +358,7 @@
<description>这只阿拉克涅蜜罐种正在产出虫蜜以滋养虫群。一只蜜罐种每天产出10份阿拉克涅虫蜜。</description>
<descriptionHyperlinks>
<ThingDef>ARA_InsectJelly</ThingDef>
<HediffDef>ARA_Myrmecocystus_Production_Medicine</HediffDef>
</descriptionHyperlinks>
<hediffClass>HediffWithComps</hediffClass>
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
@@ -470,8 +473,8 @@
</AbilityDef>
<HediffDef>
<defName>ARA_Myrmecocystus_Production_Medicine</defName>
<label>医疗专精</label>
<description>这只阿拉克涅蜜罐种已经获得拔耀,不再生产虫蜜,而是生产巢穴所稀缺的药物、化学品,并可以操纵拟线种。</description>
<label>亚种-疗愈种</label>
<description>这只阿拉克涅蜜罐种已经获得拔耀,不再生产虫蜜,而是生产巢穴所稀缺的药物、化学品,并可以操纵拟线种寄生虫</description>
<descriptionHyperlinks>
<ThingDef>ARA_InsectJelly</ThingDef>
</descriptionHyperlinks>
@@ -497,4 +500,283 @@
</li>
</comps>
</HediffDef>
<!-- 战士种 -->
<HediffDef>
<defName>ARA_Fighter_Base</defName>
<label>虫巢战士</label>
<description>阿拉克涅的战士虫们可以将身体变成自己的最强大的武装,随着科技的解锁,它们将获得繁多的技能以供使用。</description>
<descriptionHyperlinks>
<HediffDef>ARA_Fighter_Invisibility</HediffDef>
</descriptionHyperlinks>
<hediffClass>HediffWithComps</hediffClass>
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
<isBad>false</isBad>
<scenarioCanAdd>false</scenarioCanAdd>
<maxSeverity>1.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_AcidSprayBurst</li>
<li>ARA_Toxic_Needle_Fire</li>
<li>ARA_Fighter_Invisibility</li>
</abilityDefs>
</li>
<li Class="HediffCompProperties_RemoveIfOtherHediff">
<hediffs>
<li>ARA_Fighter_Invisibility</li>
</hediffs>
</li>
</comps>
</HediffDef>
<AbilityDef>
<defName>ARA_Fighter_Invisibility</defName>
<label>战士种转换——隐形杀手</label>
<description>使战士种发生内驱性进化,极大地损害其远程武器和特殊技能的使用能力,以换取近乎永久的隐形和强大的近战能力。\n\n该进化过程不可逆</description>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Myrmecocystus_Production_Medicine</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_Fighter_Invisibility</hediffDef>
<onlyApplyToSelf>True</onlyApplyToSelf>
<replaceExisting>true</replaceExisting>
<severity>1</severity>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
<requiredResearch>ARA_Technology_1MED</requiredResearch>
<failMessage>需要科技 节点MED-1"制药" 以解锁进化</failMessage>
</li>
</comps>
</AbilityDef>
<HediffDef>
<defName>ARA_Fighter_Invisibility</defName>
<hediffClass>HediffWithComps</hediffClass>
<label>亚种-追猎种</label>
<description>经过进化的战士种获得了特殊的覆盖全身的虹细胞,这些含纳米晶体的细胞可以折射各处的光线以达到永久隐身状态,直到其发起攻击。此外,它们也获得了更强大的近距离作战能力,缺点则是复眼的退化使其难以进行射击。</description>
<isBad>false</isBad>
<stages>
<li>
<minSeverity>0.01</minSeverity>
<statFactors>
<RangedCooldownFactor>2</RangedCooldownFactor>
<ShootingAccuracyPawn>0.05</ShootingAccuracyPawn>
<AimingDelayFactor>5</AimingDelayFactor>
<StaggerDurationFactor>0</StaggerDurationFactor>
</statFactors>
</li>
</stages>
<comps>
<li Class="HediffCompProperties_Invisibility">
<visibleToPlayer>true</visibleToPlayer>
<fadeDurationTicks>60</fadeDurationTicks>
<recoverFromDisruptedTicks>90</recoverFromDisruptedTicks>
</li>
<li Class="HediffCompProperties_GiveAbility">
<abilityDefs>
<li>ARA_Fighter_Invisibility_Execution</li>
<li>ARA_Fighter_Invisibility_jump</li>
</abilityDefs>
</li>
<li Class="HediffCompProperties_DisappearsOnDeath" />
</comps>
</HediffDef>
<!-- 蜜罐种 -->
<HediffDef>
<defName>ARA_Smokepop_Base</defName>
<label>活体烟罐</label>
<description>迷雾种是阿拉克涅虫族中的大家伙,它们毕不仅拥有厚实的外壳,其灌满信息素浓烟的腹部可以喷出覆盖战场的气体,吸引那些较小的辅虫破土而出对敌方发起疯狂的攻击。</description>
<descriptionHyperlinks>
<HediffDef>ARA_Smokepop_Production_Bacterium</HediffDef>
</descriptionHyperlinks>
<hediffClass>HediffWithComps</hediffClass>
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
<isBad>false</isBad>
<scenarioCanAdd>false</scenarioCanAdd>
<maxSeverity>1.0</maxSeverity>
<renderNodeProperties>
<li>
<nodeClass>PawnRenderNode_AttachmentHead</nodeClass>
<workerClass>PawnRenderNodeWorker_FlipWhenCrawling</workerClass>
<texPath>ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Addons_Smokepop_Armor</texPath>
<parentTagDef>Body</parentTagDef>
<useSkinShader>false</useSkinShader>
<useRottenColor>false</useRottenColor>
<rotDrawMode>Fresh, Rotting</rotDrawMode>
<drawSize>0.85</drawSize>
<drawData>
<dataNorth>
<offset>(0, 0, 0.2)</offset>
</dataNorth>
<dataEast>
<offset>(0, 0, 0.2)</offset>
</dataEast>
<dataSouth>
<offset>(0, 0, 0.2)</offset>
</dataSouth>
<dataWest>
<offset>(0, 0, 0.2)</offset>
</dataWest>
<defaultData>
<layer>800</layer>
</defaultData>
</drawData>
</li>
</renderNodeProperties>
<stages>
<li>
<minSeverity>0</minSeverity>
<statOffsets>
<ArmorRating_Blunt>0.75</ArmorRating_Blunt>
<ArmorRating_Sharp>0.8</ArmorRating_Sharp>
</statOffsets>
</li>
</stages>
<comps>
<li Class="HediffCompProperties_GiveAbility">
<abilityDefs>
<li>ARA_Ability_Smokepop</li>
<li>ARA_Smokepop_Production_Bacterium</li>
</abilityDefs>
</li>
<li Class="HediffCompProperties_RemoveIfOtherHediff">
<hediffs>
<li>ARA_Smokepop_Production_Bacterium</li>
</hediffs>
</li>
</comps>
</HediffDef>
<AbilityDef>
<defName>ARA_Smokepop_Production_Bacterium</defName>
<label>迷雾种转换——钜菌专精</label>
<description>使迷雾种发生内驱性进化,以牺牲喷射信息素和降低护甲为代价,使其可以定期产出阿拉克涅虫族的高级材料——活化钜菌。\n\n该进化过程不可逆</description>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Myrmecocystus_Production_Medicine</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_Smokepop_Production_Bacterium</hediffDef>
<onlyApplyToSelf>True</onlyApplyToSelf>
<replaceExisting>true</replaceExisting>
<severity>1</severity>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
<requiredResearch>ARA_Technology_1MED</requiredResearch>
<failMessage>需要科技 节点MED-1"制药" 以解锁进化</failMessage>
</li>
</comps>
</AbilityDef>
<HediffDef>
<defName>ARA_Smokepop_Production_Bacterium</defName>
<label>亚种-育菌种</label>
<description>这只阿拉克涅迷雾种已经获得拔耀,前部甲壳脱落且无法再喷射信息素,转而换取了生产活化钜菌的能力。</description>
<descriptionHyperlinks>
<ThingDef>ARA_Activated_Bacterium</ThingDef>
</descriptionHyperlinks>
<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>
</li>
</stages>
<comps>
<li Class="ArachnaeSwarm.MoharHediffs.HediffCompProperties_Spawner">
<!--
==================================================
基础设置 (Basic Settings)
==================================================
-->
<!-- [DEBUG] 如果为true则为此组件启用详细的调试日志记录。 -->
<debug>true</debug>
<!-- 要生成的物品的ThingDef。 -->
<thingToSpawn>ARA_Activated_Bacterium</thingToSpawn>
<!-- 每次生成的基础物品数量。 -->
<spawnCount>3</spawnCount>
<!--
==================================================
生成周期 (Spawning Interval)
==================================================
-->
<!-- 下一次生成事件发生前的最少天数。 -->
<minDaysB4Next>1</minDaysB4Next>
<!-- 下一次生成事件发生前的最大天数。 -->
<maxDaysB4Next>1</maxDaysB4Next>
<randomGrace>0</randomGrace>
<!--
==================================================
与年龄相关的调整 (Age-Related Adjustments)
==================================================
-->
<!-- 如果为true生成数量将根据宿主的年龄进行调整。 -->
<ageWeightedQuantity>false</ageWeightedQuantity>
<!-- 如果为true且ageWeightedQuantity为true则随着宿主年龄增长生成数量变多。 -->
<olderBiggerQuantity>true</olderBiggerQuantity>
<!-- 如果为true且ageWeightedQuantity为true则随年龄增长的数量缩放将是指数性的而非线性的。 -->
<exponentialQuantity>true</exponentialQuantity>
<!-- 指数级数量缩放的最大乘数,以防止出现荒谬的数字。 -->
<exponentialRatioLimit>20</exponentialRatioLimit>
<!--
==================================================
生成条件 (Spawning Conditions)
==================================================
-->
<!-- 如果为true当宿主Pawn饥饿时生成将暂停。 -->
<hungerRelative>true</hungerRelative>
<!-- 如果为true当宿主Pawn受伤时生成将暂停。 -->
<healthRelative>false</healthRelative>
</li>
</comps>
</HediffDef>
</Defs>

View File

@@ -196,4 +196,31 @@
<li Class="HediffCompProperties_DisappearsOnDeath"/>
</comps>
</HediffDef>
<HediffDef>
<defName>ARA_Fighter_Execution_Damage</defName>
<label>处决</label>
<description></description>
<defaultLabelColor>(1, 1, 0.8)</defaultLabelColor>
<hediffClass>ArachnaeSwarm.HediffCurseFlame</hediffClass>
<comps>
<li Class="HediffCompProperties_Disappears">
<disappearsAfterTicks>2</disappearsAfterTicks>
</li>
<li Class="HediffCompProperties_DisappearsOnDeath"/>
</comps>
<modExtensions>
<li Class="ArachnaeSwarm.CurseFlameModExt">
<damageDefName>Cut</damageDefName>
<damageRange>300</damageRange>
<damageIntervalTicks>1</damageIntervalTicks>
</li>
</modExtensions>
<stages>
<li>
<label>minor</label>
<becomeVisible>false</becomeVisible>
</li>
</stages>
</HediffDef>
</Defs>

View File

@@ -196,6 +196,7 @@
<defName>ArachnaeNode_Race_Fighter</defName>
<label>阿拉克涅战士种</label>
<race>ArachnaeNode_Race_Fighter</race>
<collidesWithPawns>false</collidesWithPawns>
<defaultFactionType>PlayerColony</defaultFactionType>
<invNutrition>0</invNutrition>
<backstoryFiltersOverride>
@@ -208,8 +209,6 @@
</backstoryFiltersOverride>
<abilities>
<li>ARA_BaseRace_Acid_Launcher</li>
<li>ARA_AcidSprayBurst</li>
<li>ARA_Toxic_Needle_Fire</li>
</abilities>
<apparelTags>
</apparelTags>

View File

@@ -1091,6 +1091,17 @@
<tooltipOverride>阿拉克涅的督虫们生命如精密的发条般运转着。</tooltipOverride>
<showGizmoOnNonPlayerControlled>true</showGizmoOnNonPlayerControlled>
</li>
<li Class="ArachnaeSwarm.CompProperties_HediffGiver">
<hediffs>
<li>ARA_Fighter_Base</li>
</hediffs>
<addChance>1.0</addChance>
<allowDuplicates>false</allowDuplicates>
</li>
<li Class="ArachnaeSwarm.CompProperties_FighterInvisible">
<InvisibilityDef>ARA_Fighter_Invisibility</InvisibilityDef>
<stealthCooldownTicks>120</stealthCooldownTicks>
</li>
</comps>
</AlienRace.ThingDef_AlienRace>
<AlienRace.ThingDef_AlienRace ParentName="ARA_NodeBase">
@@ -1230,8 +1241,8 @@
<!-- <TradePriceImprovement>0.5</TradePriceImprovement> -->
<!-- 自带的甲壳可以防御外部攻击 -->
<ArmorRating_Blunt>1</ArmorRating_Blunt>
<ArmorRating_Sharp>1.2</ArmorRating_Sharp>
<ArmorRating_Blunt>0.25</ArmorRating_Blunt>
<ArmorRating_Sharp>0.4</ArmorRating_Sharp>
<ArmorRating_Heat>0.75</ArmorRating_Heat>
</statBases>

View File

@@ -119,4 +119,33 @@
<allowedArchonexusCount>80</allowedArchonexusCount>
<possessionCount>50</possessionCount>
</ThingDef>
<ThingDef ParentName="ResourceBase">
<defName>ARA_Activated_Bacterium</defName>
<label>活化钜菌</label>
<description>一种被阿拉克涅虫族驯化和改造的极端微生物菌落。它具有超强的生物催化能力和腐蚀同化能力,是不少虫族高级装备的必需品。</description>
<graphicData>
<texPath>ArachnaeSwarm/Item/ARA_Carapace</texPath>
<graphicClass>Graphic_Single</graphicClass>
</graphicData>
<genericMarketSellable>false</genericMarketSellable>
<soundInteract>Standard_Drop</soundInteract>
<soundDrop>Standard_Drop</soundDrop>
<useHitPoints>true</useHitPoints>
<healthAffectsPrice>false</healthAffectsPrice>
<stackLimit>30</stackLimit>
<statBases>
<MarketValue>1</MarketValue>
<MaxHitPoints>50</MaxHitPoints>
<Mass>0.01</Mass>
</statBases>
<thingCategories>
<li>ResourcesRaw</li>
</thingCategories>
<burnableByRecipe>false</burnableByRecipe>
<smeltable>false</smeltable>
<terrainAffordanceNeeded>Medium</terrainAffordanceNeeded>
<allowedArchonexusCount>80</allowedArchonexusCount>
<possessionCount>50</possessionCount>
</ThingDef>
</Defs>

View File

@@ -1,14 +1,14 @@
{
"Version": 1,
"WorkspaceRootPath": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
"WorkspaceRootPath": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\building_comps\\ara_compinteractiveproducer\\comprefuelablenutrition.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_compinteractiveproducer\\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\\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|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\abilities\\psychicbrainburn\\compproperties_psychicbrainburn.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\psychicbrainburn\\compproperties_psychicbrainburn.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\\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}"
}
],
"DocumentGroupContainers": [
@@ -18,7 +18,7 @@
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 1,
"SelectedChildIndex": 2,
"Children": [
{
"$type": "Bookmark",
@@ -26,28 +26,28 @@
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "CompRefuelableNutrition.cs",
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CompInteractiveProducer\\CompRefuelableNutrition.cs",
"RelativeDocumentMoniker": "Building_Comps\\ARA_CompInteractiveProducer\\CompRefuelableNutrition.cs",
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CompInteractiveProducer\\CompRefuelableNutrition.cs*",
"RelativeToolTip": "Building_Comps\\ARA_CompInteractiveProducer\\CompRefuelableNutrition.cs*",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABYAAAAkAAAAAAAAAA==",
"DocumentIndex": 1,
"Title": "CompFighterInvisible.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_Fighter_Invisible\\CompFighterInvisible.cs",
"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": "AgIAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-20T17:59:02.999Z",
"WhenOpened": "2025-09-22T01:22:42.97Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "CompProperties_PsychicBrainburn.cs",
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\PsychicBrainburn\\CompProperties_PsychicBrainburn.cs",
"RelativeDocumentMoniker": "Abilities\\PsychicBrainburn\\CompProperties_PsychicBrainburn.cs",
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\PsychicBrainburn\\CompProperties_PsychicBrainburn.cs",
"RelativeToolTip": "Abilities\\PsychicBrainburn\\CompProperties_PsychicBrainburn.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAcAAAAgAAAAAAAAAA==",
"DocumentIndex": 0,
"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": "AgIAAAAAAAAAAAAAAAAAAAwAAAAyAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-20T17:27:16.475Z",
"WhenOpened": "2025-09-22T01:22:42.218Z",
"EditorCaption": ""
}
]

View File

@@ -161,6 +161,8 @@
<Compile Include="Pawn_Comps\ARA_CompHediffGiver\CompProperties_HediffGiver.cs" />
<Compile Include="Pawn_Comps\ARA_CompMilkableArachnae\CompMilkableArachnae.cs" />
<Compile Include="Pawn_Comps\ARA_CompMilkableArachnae\CompProperties_MilkableArachnae.cs" />
<Compile Include="Pawn_Comps\ARA_Fighter_Invisible\CompFighterInvisible.cs" />
<Compile Include="Pawn_Comps\ARA_Fighter_Invisible\CompProperties_FighterInvisible.cs" />
<Compile Include="Pawn_Comps\ARA_Flight\CompPawnFlight.cs" />
<Compile Include="Pawn_Comps\ARA_Flight\CompProperties_PawnFlight.cs" />
<Compile Include="Pawn_Comps\ARA_Flight\Pawn_FlightTrackerPatches.cs" />

View File

@@ -0,0 +1,74 @@
using RimWorld;
using UnityEngine;
using Verse;
using Verse.AI.Group;
using Verse.Sound;
using static HarmonyLib.Code;
namespace ArachnaeSwarm
{
public class CompFighterInvisible : ThingComp
{
public CompProperties_FighterInvisible Props => (CompProperties_FighterInvisible)props;
[Unsaved(false)]
private HediffComp_Invisibility invisibility;
private int lastDetectedTick = -99999;
private static float lastNotified = -99999f;
private const float NotifyCooldownSeconds = 60f;
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
public override void PostExposeData()
{
Scribe_Values.Look(ref lastDetectedTick, "lastDetectedTick", 0);
}
public override void CompTick()
{
//蹒跚怪不会隐身
if (Sightstealer.IsShambler)
{
return;
}
//如果没有定义的InvisibilityDef则返回false
if (Invisibility == null)
{
return;
}
if (!Sightstealer.Spawned)
{
return;
}
//进行隐身检查,如果超过定义的隐身恢复时间则切换为隐身
if (Sightstealer.IsHashIntervalTick(7))
{
if (Find.TickManager.TicksGame > lastDetectedTick + Props.stealthCooldownTicks)
{
Invisibility.BecomeInvisible();
}
}
}
//在使用verb的时候会强制显现
public override void Notify_UsedVerb(Pawn pawn, Verb verb)
{
base.Notify_UsedVerb(pawn, verb);
if (!Sightstealer.IsShambler)
{
Invisibility.BecomeVisible();
lastDetectedTick = Find.TickManager.TicksGame;
}
}
}
}

View File

@@ -0,0 +1,31 @@
using RimWorld;
using System.Collections.Generic;
using Verse;
namespace ArachnaeSwarm
{
public class CompProperties_FighterInvisible : CompProperties
{
public float BaseVisibleRadius = 14f;
public int UndetectedTimeout = 120;
public int CheckDetectedIntervalTicks = 7;
public float FirstDetectedRadius = 30f;
public int RevealedLetterDelayTicks = 6;
public int AmbushCallMTBTicks = 600;
//修改一个可定义的提供隐身的hediff
public HediffDef InvisibilityDef;
//隐身冷却
public int stealthCooldownTicks = 1200;
public CompProperties_FighterInvisible()
{
compClass = typeof(CompFighterInvisible);
}
}
}