1
This commit is contained in:
Binary file not shown.
@@ -72,7 +72,7 @@
|
||||
<AbilityDef>
|
||||
<defName>ARA_Neurotyrant_Harvest</defName>
|
||||
<label>进化点收割</label>
|
||||
<description>灵吸种抽干目标的智识,转化为进化点点数。</description>
|
||||
<description>灵吸种抽干目标的智识,转化为进化点点数,虽然需要一点时间完成吸食,但是会直接杀死目标。</description>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Fighter_Invisibility_Execution</iconPath>
|
||||
<cooldownTicksRange>30</cooldownTicksRange>
|
||||
<cooldownPerCharge>true</cooldownPerCharge>
|
||||
@@ -90,8 +90,10 @@
|
||||
<warmupTime>10</warmupTime>
|
||||
<targetParams>
|
||||
<canTargetSelf>false</canTargetSelf>
|
||||
<canTargetAnimals>false</canTargetAnimals>
|
||||
<canTargetMechs>false</canTargetMechs>
|
||||
<canTargetBuildings>false</canTargetBuildings>
|
||||
<canTargetEntities>false</canTargetEntities>
|
||||
</targetParams>
|
||||
</verbProperties>
|
||||
<comps>
|
||||
@@ -127,7 +129,7 @@
|
||||
<!-- 效果设置 -->
|
||||
<!-- <harvestEffecter>PsycastSkipEffect</harvestEffecter>
|
||||
<penaltyEffecter>PsychicPulse</penaltyEffecter> -->
|
||||
<consciousnessPenaltyHediff>TraumaSavant</consciousnessPenaltyHediff>
|
||||
<consciousnessPenaltyHediff>Scaria</consciousnessPenaltyHediff>
|
||||
<unconsciousnessHediff>Anesthetic</unconsciousnessHediff>
|
||||
<showHarvestMessage>true</showHarvestMessage>
|
||||
<customHarvestMessageKey>ARA_SwarmSpell_ResearchHarvest_Message</customHarvestMessageKey>
|
||||
@@ -155,64 +157,64 @@
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
|
||||
<AbilityDef>
|
||||
<defName>ARA_Neurotyrant_PsychicBrainburn</defName>
|
||||
<label>心灵烧灼</label>
|
||||
<description>以强大的纯净灵能冲击目标,烧毁目标的中枢神经系统——这会直接杀死目标。</description>
|
||||
<!-- <abilityClass>Psycast</abilityClass> -->
|
||||
<!-- <category>Psychic</category> -->
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_PsychicBrainburn</iconPath>
|
||||
<cooldownTicksRange>60</cooldownTicksRange>
|
||||
<aiCanUse>false</aiCanUse>
|
||||
<displayOrder>300</displayOrder>
|
||||
<displayGizmoWhileUndrafted>false</displayGizmoWhileUndrafted>
|
||||
<showPsycastEffects>true</showPsycastEffects>
|
||||
<sendMessageOnCooldownComplete>true</sendMessageOnCooldownComplete>
|
||||
<defName>ARA_Neurotyrant_PsychicLoadDump</defName>
|
||||
<label>负荷反冲</label>
|
||||
<description>灵吸种将承受的强大负荷输出到目标身上,如果目标没有灵能能力,这种反冲会立刻杀死目标;拥有灵能能力的个体则可以免除这种死亡性的冲击,但是会累计大量的心灵熵。</description>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Fighter_Invisibility_Execution</iconPath>
|
||||
<cooldownTicksRange>30</cooldownTicksRange>
|
||||
<cooldownPerCharge>true</cooldownPerCharge>
|
||||
<casterMustBeCapableOfViolence>false</casterMustBeCapableOfViolence>
|
||||
<stunTargetWhileCasting>true</stunTargetWhileCasting>
|
||||
<moteOffsetAmountTowardsTarget>0.5</moteOffsetAmountTowardsTarget>
|
||||
<warmupMote>Mote_HoraxSmallSpellWarmup</warmupMote>
|
||||
<warmupEffecter>HoraxianAbilityCasting</warmupEffecter>
|
||||
<warmupSound>AnomalyAbilityWarmup</warmupSound>
|
||||
<writeCombatLog>true</writeCombatLog>
|
||||
<jobDef>CastAbilityOnThingMelee</jobDef>
|
||||
<aiCanUse>false</aiCanUse>
|
||||
<verbProperties>
|
||||
<verbClass>Verb_CastAbility</verbClass>
|
||||
<warmupTime>1</warmupTime>
|
||||
<range>25</range>
|
||||
<verbClass>Verb_CastAbilityTouch</verbClass>
|
||||
<drawAimPie>false</drawAimPie>
|
||||
<range>-1</range>
|
||||
<warmupTime>5</warmupTime>
|
||||
<targetParams>
|
||||
<canTargetPawns>true</canTargetPawns>
|
||||
<canTargetBuildings>false</canTargetBuildings>
|
||||
<canTargetSelf>false</canTargetSelf>
|
||||
<canTargetAnimals>false</canTargetAnimals>
|
||||
<canTargetMechs>false</canTargetMechs>
|
||||
<canTargetBuildings>false</canTargetBuildings>
|
||||
<canTargetEntities>false</canTargetEntities>
|
||||
</targetParams>
|
||||
</verbProperties>
|
||||
<comps>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AbilityPsychicLoadCost">
|
||||
<!-- 负载消耗设置 -->
|
||||
<loadCostRange>
|
||||
<min>2.5</min>
|
||||
<max>7.5</max>
|
||||
</loadCostRange>
|
||||
<showCostInGizmo>true</showCostInGizmo>
|
||||
<customLabel>Psychic Load Cost</customLabel>
|
||||
<ignoreOverloadCheck>true</ignoreOverloadCheck>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AbilityPsychicLoadDump">
|
||||
<!-- 转化设置 -->
|
||||
<conversionRatio>10</conversionRatio>
|
||||
<scaleBySensitivity>true</scaleBySensitivity>
|
||||
<allowOverLimit>true</allowOverLimit>
|
||||
|
||||
<!-- 目标选择 -->
|
||||
<canTargetDowned>true</canTargetDowned>
|
||||
|
||||
<!-- 器官摧毁设置 -->
|
||||
<partDestructionDamageMult>9999</partDestructionDamageMult>
|
||||
<loadDamageMultiplier>9999</loadDamageMultiplier>
|
||||
<noConsciousnessDamageMultiplier>9999</noConsciousnessDamageMultiplier>
|
||||
<fallbackDamageMultiplier>9999</fallbackDamageMultiplier>
|
||||
<destroyDamageType>Burn</destroyDamageType>
|
||||
<fallbackDamageType>Burn</fallbackDamageType>
|
||||
|
||||
<!-- 效果设置 -->
|
||||
<!-- <successEffecter>PsychicPulse</successEffecter>
|
||||
<overloadEffecter>ExplosionFlash</overloadEffecter> -->
|
||||
<!-- <mainEffecter>PsycastPsychicPulse</mainEffecter> -->
|
||||
<!-- <entropyTransferEffecter>PsycastSkipEffect</entropyTransferEffecter> -->
|
||||
<consciousnessDestroyFleck>PsycastPsychicEffect</consciousnessDestroyFleck>
|
||||
<!-- <penaltyEffecter>PsychicPulse</penaltyEffecter> -->
|
||||
<consciousnessPenaltyHediff>Scaria</consciousnessPenaltyHediff>
|
||||
|
||||
<!-- 超载惩罚设置 -->
|
||||
<applyOverloadPenalty>true</applyOverloadPenalty>
|
||||
<consciousnessSourceDamageMult>99999</consciousnessSourceDamageMult>
|
||||
<overloadPenaltyHediff>ARA_SwarmSpell_Overdrive</overloadPenaltyHediff>
|
||||
<destroyConsciousnessSource>true</destroyConsciousnessSource>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_PsychicBrainburn">
|
||||
<psychic>false</psychic>
|
||||
<!-- 视觉效果 -->
|
||||
<effecterDef>Skip_Entry</effecterDef>
|
||||
|
||||
<!-- 设为 true 则只能对血肉生物使用。设为 false 则也可以对机械体使用。 -->
|
||||
<requiresFlesh>false</requiresFlesh>
|
||||
<!-- 消息设置 -->
|
||||
<showDumpMessage>true</showDumpMessage>
|
||||
<showEntropyTransferMessage>true</showEntropyTransferMessage>
|
||||
<showConsciousnessDestroyMessage>true</showConsciousnessDestroyMessage>
|
||||
<showNoConsciousnessMessage>true</showNoConsciousnessMessage>
|
||||
<showOverloadReliefMessage>true</showOverloadReliefMessage>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
|
||||
@@ -169,6 +169,8 @@
|
||||
</apparelTags>
|
||||
<apparelMoney>0</apparelMoney>
|
||||
<abilities>
|
||||
<li>ARA_Neurotyrant_Harvest</li>
|
||||
<li>ARA_Neurotyrant_PsychicLoadDump</li>
|
||||
</abilities>
|
||||
</PawnKindDef>
|
||||
|
||||
|
||||
@@ -138,4 +138,22 @@
|
||||
|
||||
<ARA_SwarmSpell_ResearchHarvest>{0} 从 {1} 身上收割了 {2} 虫群进化点</ARA_SwarmSpell_ResearchHarvest>
|
||||
<ARA_SwarmSpell_ResearchHarvest_Message>{0} 吸取了 {1} 的精华,获得了 {2} 进化点</ARA_SwarmSpell_ResearchHarvest_Message>
|
||||
|
||||
<ARA_UsePsychicLoadSkill>释放技能: {0}</ARA_UsePsychicLoadSkill>
|
||||
<ARA_SwarmSpell_LoadCost>累积神经束负荷:</ARA_SwarmSpell_LoadCost>
|
||||
<ARA_SwarmSpell_LoadCost_Fixed>{0}</ARA_SwarmSpell_LoadCost_Fixed>
|
||||
<ARA_SwarmSpell_LoadCost_Range>{0} ~ {1}</ARA_SwarmSpell_LoadCost_Range>
|
||||
<ARA_SwarmSpell_Overload_Penalty_Description>如果神经束已经进入超负荷状态,释放任意的虫群灵能法术将直接导致死亡!</ARA_SwarmSpell_Overload_Penalty_Description>
|
||||
|
||||
<!-- 技能相关 -->
|
||||
<ARA_SwarmSpell_LoadDumped_Entropy>{0} 将 {1} 神经束负荷转化为熵值转储到 {2} 身上</ARA_SwarmSpell_LoadDumped_Entropy>
|
||||
<ARA_SwarmSpell_LoadDumped_Destruction>{0} 将 {1} 神经束负荷以毁灭性能量转储到 {2} 身上</ARA_SwarmSpell_LoadDumped_Destruction>
|
||||
<ARA_SwarmSpell_EntropyTransferred>{0} 向 {1} 转储了 {2} 熵值</ARA_SwarmSpell_EntropyTransferred>
|
||||
<ARA_SwarmSpell_ConsciousnessDestroyed>{0} 的大脑被摧毁了</ARA_SwarmSpell_ConsciousnessDestroyed>
|
||||
<ARA_SwarmSpell_NoConsciousnessFallback>{0} 承受了 {1} 点伤害</ARA_SwarmSpell_NoConsciousnessFallback>
|
||||
<ARA_SwarmSpell_OverloadRelieved>{0} 解除了超载状态</ARA_SwarmSpell_OverloadRelieved>
|
||||
|
||||
<!-- 错误消息 -->
|
||||
<ARA_SwarmSpell_NoLoadToDump>{0} 没有可转储的神经束负荷</ARA_SwarmSpell_NoLoadToDump>
|
||||
<ARA_SwarmSpell_EntropyTransferFailed>无法向 {0} 转储神经束负荷</ARA_SwarmSpell_EntropyTransferFailed>
|
||||
</LanguageData>
|
||||
Binary file not shown.
@@ -3,25 +3,37 @@
|
||||
"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_psychicresearchharvest\\compabilityeffect_psychicresearchharvest.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_psychicresearchharvest\\compabilityeffect_psychicresearchharvest.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\\ara_psychicloaddump\\compabilityeffect_psychicloaddump.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_psychicloaddump\\compabilityeffect_psychicloaddump.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\\ara_psychicresearchharvest\\compproperties_abilitypsychicresearchharvest.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_psychicresearchharvest\\compproperties_abilitypsychicresearchharvest.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}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\pawn_comps\\ara_swarmspellholder\\gizmo_swarmspellstatus.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_swarmspellholder\\gizmo_swarmspellstatus.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\\ara_psychicloaddump\\compproperties_abilitypsychicloaddump.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_psychicloaddump\\compproperties_abilitypsychicloaddump.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_swarmspellholder\\comp_swarmspellholder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_swarmspellholder\\comp_swarmspellholder.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_swarmspellholder\\gizmo_swarmspellstatus.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_swarmspellholder\\gizmo_swarmspellstatus.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\\ara_psychicloadcost\\compabilityeffect_psychicloadcost.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_psychicloadcost\\compabilityeffect_psychicloadcost.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\\ara_psychicresearchharvest\\compabilityeffect_psychicresearchharvest.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_psychicresearchharvest\\compabilityeffect_psychicresearchharvest.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\\ara_psychicresearchharvest\\compproperties_abilitypsychicresearchharvest.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_psychicresearchharvest\\compproperties_abilitypsychicresearchharvest.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}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\pawn_comps\\ara_swarmspellholder\\swarmspellutility.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_swarmspellholder\\swarmspellutility.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
@@ -31,27 +43,23 @@
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_psychicloadcost\\compproperties_abilitypsychicloadcost.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\\ara_hediffgacha\\compabilityeffect_hediffgacha.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\\ara_hediffgacha\\compabilityeffect_hediffgacha.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_hediffgacha\\compabilityeffect_hediffgacha.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\\ara_hediffrestriction\\compabilityeffect_hediffrestriction.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\\ara_hediffrestriction\\compabilityeffect_hediffrestriction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_hediffrestriction\\compabilityeffect_hediffrestriction.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\\ara_hediffgacha\\window_hediffselection.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\\ara_hediffgacha\\window_hediffselection.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_hediffgacha\\window_hediffselection.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\\ara_psychicloadcost\\compabilityeffect_psychicloadcost.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_psychicloadcost\\compabilityeffect_psychicloadcost.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\\powerarmor\\ara_powerarmor.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\\powerarmor\\ara_powerarmor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:powerarmor\\ara_powerarmor.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\\pawncapacityworker\\pawncapacityworker_psychicstange.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\\pawncapacityworker\\pawncapacityworker_psychicstange.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawncapacityworker\\pawncapacityworker_psychicstange.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
@@ -83,58 +91,45 @@
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 1,
|
||||
"Title": "CompProperties_AbilityPsychicResearchHarvest.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_PsychicResearchHarvest\\CompProperties_AbilityPsychicResearchHarvest.cs",
|
||||
"RelativeDocumentMoniker": "Abilities\\ARA_PsychicResearchHarvest\\CompProperties_AbilityPsychicResearchHarvest.cs",
|
||||
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_PsychicResearchHarvest\\CompProperties_AbilityPsychicResearchHarvest.cs",
|
||||
"RelativeToolTip": "Abilities\\ARA_PsychicResearchHarvest\\CompProperties_AbilityPsychicResearchHarvest.cs",
|
||||
"ViewState": "AgIAAAoAAAAAAAAAAAArwHsAAAAVAAAAAAAAAA==",
|
||||
"Title": "CompProperties_AbilityPsychicLoadDump.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_PsychicLoadDump\\CompProperties_AbilityPsychicLoadDump.cs",
|
||||
"RelativeDocumentMoniker": "Abilities\\ARA_PsychicLoadDump\\CompProperties_AbilityPsychicLoadDump.cs",
|
||||
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_PsychicLoadDump\\CompProperties_AbilityPsychicLoadDump.cs*",
|
||||
"RelativeToolTip": "Abilities\\ARA_PsychicLoadDump\\CompProperties_AbilityPsychicLoadDump.cs*",
|
||||
"ViewState": "AgIAACIAAAAAAAAAAAApwH0AAAAFAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-02-04T03:35:18.266Z",
|
||||
"WhenOpened": "2026-02-04T08:36:24.395Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 0,
|
||||
"Title": "CompAbilityEffect_PsychicLoadDump.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_PsychicLoadDump\\CompAbilityEffect_PsychicLoadDump.cs",
|
||||
"RelativeDocumentMoniker": "Abilities\\ARA_PsychicLoadDump\\CompAbilityEffect_PsychicLoadDump.cs",
|
||||
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_PsychicLoadDump\\CompAbilityEffect_PsychicLoadDump.cs*",
|
||||
"RelativeToolTip": "Abilities\\ARA_PsychicLoadDump\\CompAbilityEffect_PsychicLoadDump.cs*",
|
||||
"ViewState": "AgIAAGoAAAAAAAAAAAAtwGsAAAAvAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-02-04T08:36:23.647Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 5,
|
||||
"Title": "CompAbilityEffect_PsychicResearchHarvest.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_PsychicResearchHarvest\\CompAbilityEffect_PsychicResearchHarvest.cs",
|
||||
"RelativeDocumentMoniker": "Abilities\\ARA_PsychicResearchHarvest\\CompAbilityEffect_PsychicResearchHarvest.cs",
|
||||
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_PsychicResearchHarvest\\CompAbilityEffect_PsychicResearchHarvest.cs",
|
||||
"RelativeToolTip": "Abilities\\ARA_PsychicResearchHarvest\\CompAbilityEffect_PsychicResearchHarvest.cs",
|
||||
"ViewState": "AgIAAEwBAAAAAAAAAAAAAHABAAAIAAAAAAAAAA==",
|
||||
"ViewState": "AgIAAD0AAAAAAAAAAAA7wGkAAAASAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-02-04T03:35:17.441Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 2,
|
||||
"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": "AgIAACsAAAAAAAAAAAAgwC4AAAARAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-02-04T03:24:18.669Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 7,
|
||||
"Title": "CompAbilityEffect_HediffGacha.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HediffGacha\\CompAbilityEffect_HediffGacha.cs",
|
||||
"RelativeDocumentMoniker": "Abilities\\ARA_HediffGacha\\CompAbilityEffect_HediffGacha.cs",
|
||||
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HediffGacha\\CompAbilityEffect_HediffGacha.cs",
|
||||
"RelativeToolTip": "Abilities\\ARA_HediffGacha\\CompAbilityEffect_HediffGacha.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAAAuAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-02-04T02:49:20.179Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 6,
|
||||
"DocumentIndex": 9,
|
||||
"Title": "CompProperties_AbilityPsychicLoadCost.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_PsychicLoadCost\\CompProperties_AbilityPsychicLoadCost.cs",
|
||||
"RelativeDocumentMoniker": "Abilities\\ARA_PsychicLoadCost\\CompProperties_AbilityPsychicLoadCost.cs",
|
||||
@@ -142,12 +137,11 @@
|
||||
"RelativeToolTip": "Abilities\\ARA_PsychicLoadCost\\CompProperties_AbilityPsychicLoadCost.cs",
|
||||
"ViewState": "AgIAAAsAAAAAAAAAAADwvyUAAAAAAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-01-30T08:22:38.845Z",
|
||||
"EditorCaption": ""
|
||||
"WhenOpened": "2026-01-30T08:22:38.845Z"
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 5,
|
||||
"DocumentIndex": 8,
|
||||
"Title": "SwarmSpellUtility.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_SwarmSpellHolder\\SwarmSpellUtility.cs",
|
||||
"RelativeDocumentMoniker": "Pawn_Comps\\ARA_SwarmSpellHolder\\SwarmSpellUtility.cs",
|
||||
@@ -155,18 +149,30 @@
|
||||
"RelativeToolTip": "Pawn_Comps\\ARA_SwarmSpellHolder\\SwarmSpellUtility.cs",
|
||||
"ViewState": "AgIAANEAAAAAAAAAAAAqwPMAAAANAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-01-30T07:25:10.449Z",
|
||||
"EditorCaption": ""
|
||||
"WhenOpened": "2026-01-30T07:25:10.449Z"
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 4,
|
||||
"Title": "CompAbilityEffect_PsychicLoadCost.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_PsychicLoadCost\\CompAbilityEffect_PsychicLoadCost.cs",
|
||||
"RelativeDocumentMoniker": "Abilities\\ARA_PsychicLoadCost\\CompAbilityEffect_PsychicLoadCost.cs",
|
||||
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_PsychicLoadCost\\CompAbilityEffect_PsychicLoadCost.cs",
|
||||
"RelativeToolTip": "Abilities\\ARA_PsychicLoadCost\\CompAbilityEffect_PsychicLoadCost.cs",
|
||||
"ViewState": "AgIAAMwAAAAAAAAAAAAawOcAAABZAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-01-30T08:16:09.317Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 2,
|
||||
"Title": "Comp_SwarmSpellHolder.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_SwarmSpellHolder\\Comp_SwarmSpellHolder.cs",
|
||||
"RelativeDocumentMoniker": "Pawn_Comps\\ARA_SwarmSpellHolder\\Comp_SwarmSpellHolder.cs",
|
||||
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_SwarmSpellHolder\\Comp_SwarmSpellHolder.cs",
|
||||
"RelativeToolTip": "Pawn_Comps\\ARA_SwarmSpellHolder\\Comp_SwarmSpellHolder.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAACkAAAAkAAAAAAAAAA==",
|
||||
"ViewState": "AgIAAFgCAAAAAAAAAAAYwGkCAAASAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-01-30T07:11:59.797Z",
|
||||
"EditorCaption": ""
|
||||
@@ -186,7 +192,43 @@
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 8,
|
||||
"DocumentIndex": 10,
|
||||
"Title": "CompAbilityEffect_HediffGacha.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HediffGacha\\CompAbilityEffect_HediffGacha.cs",
|
||||
"RelativeDocumentMoniker": "Abilities\\ARA_HediffGacha\\CompAbilityEffect_HediffGacha.cs",
|
||||
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HediffGacha\\CompAbilityEffect_HediffGacha.cs",
|
||||
"RelativeToolTip": "Abilities\\ARA_HediffGacha\\CompAbilityEffect_HediffGacha.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAAAuAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-02-04T02:49:20.179Z"
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 7,
|
||||
"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": "AgIAACsAAAAAAAAAAAAgwC4AAAARAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-02-04T03:24:18.669Z"
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 6,
|
||||
"Title": "CompProperties_AbilityPsychicResearchHarvest.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_PsychicResearchHarvest\\CompProperties_AbilityPsychicResearchHarvest.cs",
|
||||
"RelativeDocumentMoniker": "Abilities\\ARA_PsychicResearchHarvest\\CompProperties_AbilityPsychicResearchHarvest.cs",
|
||||
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_PsychicResearchHarvest\\CompProperties_AbilityPsychicResearchHarvest.cs",
|
||||
"RelativeToolTip": "Abilities\\ARA_PsychicResearchHarvest\\CompProperties_AbilityPsychicResearchHarvest.cs",
|
||||
"ViewState": "AgIAAAoAAAAAAAAAAAArwHsAAAAVAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-02-04T03:35:18.266Z"
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 11,
|
||||
"Title": "CompAbilityEffect_HediffRestriction.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HediffRestriction\\CompAbilityEffect_HediffRestriction.cs",
|
||||
"RelativeDocumentMoniker": "Abilities\\ARA_HediffRestriction\\CompAbilityEffect_HediffRestriction.cs",
|
||||
@@ -194,12 +236,11 @@
|
||||
"RelativeToolTip": "Abilities\\ARA_HediffRestriction\\CompAbilityEffect_HediffRestriction.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAMAAAAXAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-02-04T02:49:22.868Z",
|
||||
"EditorCaption": ""
|
||||
"WhenOpened": "2026-02-04T02:49:22.868Z"
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 9,
|
||||
"DocumentIndex": 12,
|
||||
"Title": "Window_HediffSelection.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HediffGacha\\Window_HediffSelection.cs",
|
||||
"RelativeDocumentMoniker": "Abilities\\ARA_HediffGacha\\Window_HediffSelection.cs",
|
||||
@@ -207,25 +248,11 @@
|
||||
"RelativeToolTip": "Abilities\\ARA_HediffGacha\\Window_HediffSelection.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAAVAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-02-04T02:49:27.428Z",
|
||||
"EditorCaption": ""
|
||||
"WhenOpened": "2026-02-04T02:49:27.428Z"
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 10,
|
||||
"Title": "CompAbilityEffect_PsychicLoadCost.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_PsychicLoadCost\\CompAbilityEffect_PsychicLoadCost.cs",
|
||||
"RelativeDocumentMoniker": "Abilities\\ARA_PsychicLoadCost\\CompAbilityEffect_PsychicLoadCost.cs",
|
||||
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_PsychicLoadCost\\CompAbilityEffect_PsychicLoadCost.cs",
|
||||
"RelativeToolTip": "Abilities\\ARA_PsychicLoadCost\\CompAbilityEffect_PsychicLoadCost.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAFkAAABWAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-01-30T08:16:09.317Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 11,
|
||||
"DocumentIndex": 13,
|
||||
"Title": "ARA_PowerArmor.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\PowerArmor\\ARA_PowerArmor.cs",
|
||||
"RelativeDocumentMoniker": "PowerArmor\\ARA_PowerArmor.cs",
|
||||
@@ -233,12 +260,11 @@
|
||||
"RelativeToolTip": "PowerArmor\\ARA_PowerArmor.cs",
|
||||
"ViewState": "AgIAANsBAAAAAAAAAAAAAOkBAAAWAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-02-04T02:14:33.83Z",
|
||||
"EditorCaption": ""
|
||||
"WhenOpened": "2026-02-04T02:14:33.83Z"
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 12,
|
||||
"DocumentIndex": 14,
|
||||
"Title": "PawnCapacityWorker_PsychicStange.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\PawnCapacityWorker\\PawnCapacityWorker_PsychicStange.cs",
|
||||
"RelativeDocumentMoniker": "PawnCapacityWorker\\PawnCapacityWorker_PsychicStange.cs",
|
||||
@@ -246,12 +272,11 @@
|
||||
"RelativeToolTip": "PawnCapacityWorker\\PawnCapacityWorker_PsychicStange.cs",
|
||||
"ViewState": "AgIAAEEBAAAAAAAAAAAiwAgAAAAkAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-02-03T07:42:21.662Z",
|
||||
"EditorCaption": ""
|
||||
"WhenOpened": "2026-02-03T07:42:21.662Z"
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 14,
|
||||
"DocumentIndex": 16,
|
||||
"Title": "CompAbilityEffect_PsychicBrainburn.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\PsychicBrainburn\\CompAbilityEffect_PsychicBrainburn.cs",
|
||||
"RelativeDocumentMoniker": "Abilities\\PsychicBrainburn\\CompAbilityEffect_PsychicBrainburn.cs",
|
||||
@@ -263,7 +288,7 @@
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 13,
|
||||
"DocumentIndex": 15,
|
||||
"Title": "ARA_DefOf.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_DefOf.cs",
|
||||
"RelativeDocumentMoniker": "ARA_DefOf.cs",
|
||||
@@ -275,7 +300,7 @@
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 15,
|
||||
"DocumentIndex": 17,
|
||||
"Title": "CompAutoMechCarrier.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_AutoMechCarrier\\CompAutoMechCarrier.cs",
|
||||
"RelativeDocumentMoniker": "Pawn_Comps\\ARA_AutoMechCarrier\\CompAutoMechCarrier.cs",
|
||||
|
||||
@@ -56,7 +56,7 @@ namespace ArachnaeSwarm
|
||||
bool wasOverloaded = spellHolder.IsOverloaded;
|
||||
|
||||
// 添加灵能负载(不检查是否会超载)
|
||||
spellHolder.AddPsychicLoad(loadCost, $"释放技能: {parent.def.label}");
|
||||
spellHolder.AddPsychicLoad(loadCost, $"ARA_UsePsychicLoadSkill".Translate(parent.def.label));
|
||||
|
||||
// 检查当前是否超载
|
||||
bool isNowOverloaded = spellHolder.IsOverloaded;
|
||||
@@ -64,7 +64,7 @@ namespace ArachnaeSwarm
|
||||
// 如果从非超载状态变为超载状态,显示警告
|
||||
if (!wasOverloaded && isNowOverloaded)
|
||||
{
|
||||
Messages.Message("ARA_SwarmSpell_Overload_Warning".Translate(caster.LabelShortCap),
|
||||
Messages.Message("ARA_SwarmSpell_Load_OverloadWarning".Translate(caster.LabelShortCap),
|
||||
caster, MessageTypeDefOf.NegativeEvent);
|
||||
}
|
||||
|
||||
@@ -224,40 +224,13 @@ namespace ArachnaeSwarm
|
||||
Props.loadCostRange.max.ToString("F1")));
|
||||
}
|
||||
|
||||
// 当前负载状态
|
||||
sb.AppendLine();
|
||||
sb.AppendLine("ARA_SwarmSpell_CurrentLoad".Translate().Colorize(ColoredText.TipSectionTitleColor));
|
||||
sb.AppendLine("ARA_SwarmSpell_Load_Current".Translate(
|
||||
spellHolder.PsychicLoad.ToString("F1"),
|
||||
spellHolder.PsychicLoadCapacity.ToString("F1")));
|
||||
|
||||
// 超载警告
|
||||
if (spellHolder.IsOverloaded)
|
||||
{
|
||||
sb.AppendLine();
|
||||
sb.AppendLine("ARA_SwarmSpell_Overload_Warning_Tooltip".Translate().Colorize(Color.red));
|
||||
sb.AppendLine("ARA_SwarmSpell_Load_OverloadWarning".Translate().Colorize(Color.red));
|
||||
sb.AppendLine("ARA_SwarmSpell_Overload_Penalty_Description".Translate());
|
||||
}
|
||||
else
|
||||
{
|
||||
// 施放后预测负载
|
||||
float predictedLoad = spellHolder.PsychicLoad + (Props.useFixedCost ? Props.fixedLoadCost : Props.loadCostRange.Average);
|
||||
float predictedPercent = spellHolder.PsychicLoadCapacity > 0 ? predictedLoad / spellHolder.PsychicLoadCapacity : 0f;
|
||||
|
||||
sb.AppendLine();
|
||||
sb.AppendLine("ARA_SwarmSpell_PredictedLoad".Translate().Colorize(ColoredText.TipSectionTitleColor));
|
||||
sb.AppendLine("ARA_SwarmSpell_PredictedLoad_Value".Translate(predictedLoad.ToString("F1"), spellHolder.PsychicLoadCapacity.ToString("F1")));
|
||||
|
||||
if (predictedPercent > 0.8f)
|
||||
{
|
||||
sb.AppendLine("ARA_SwarmSpell_PredictedLoad_Warning".Translate(predictedPercent.ToStringPercent()).Colorize(Color.yellow));
|
||||
}
|
||||
|
||||
if (predictedPercent > 1f)
|
||||
{
|
||||
sb.AppendLine("ARA_SwarmSpell_PredictedLoad_Overload".Translate().Colorize(Color.red));
|
||||
}
|
||||
}
|
||||
|
||||
return sb.ToString().TrimEndNewlines();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,540 @@
|
||||
using RimWorld;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
using Verse;
|
||||
|
||||
namespace ArachnaeSwarm
|
||||
{
|
||||
/// <summary>
|
||||
/// 灵能负载转储技能效果
|
||||
/// 将施法者的灵能负载输出到目标身上,根据目标是否有灵能熵追踪器执行不同效果
|
||||
/// </summary>
|
||||
public class CompAbilityEffect_PsychicLoadDump : CompAbilityEffect
|
||||
{
|
||||
#region 属性
|
||||
public new CompProperties_AbilityPsychicLoadDump Props =>
|
||||
(CompProperties_AbilityPsychicLoadDump)props;
|
||||
#endregion
|
||||
|
||||
#region 应用效果
|
||||
public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
|
||||
{
|
||||
base.Apply(target, dest);
|
||||
|
||||
Pawn caster = parent.pawn;
|
||||
Pawn targetPawn = target.Pawn;
|
||||
|
||||
if (caster == null || targetPawn == null || targetPawn.Dead || targetPawn.Downed)
|
||||
{
|
||||
Log.Warning("[虫群术法] 灵能负载转储: 施法者或目标无效");
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取施法者的术法持有组件
|
||||
Comp_SwarmSpellHolder spellHolder = caster.TryGetComp<Comp_SwarmSpellHolder>();
|
||||
if (spellHolder == null || !spellHolder.IsSystemInitialized)
|
||||
{
|
||||
Messages.Message("ARA_SwarmSpell_NoSpellHolder".Translate(caster.LabelShortCap),
|
||||
MessageTypeDefOf.RejectInput);
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取施法者当前的灵能负载
|
||||
float currentLoad = spellHolder.PsychicLoad;
|
||||
if (currentLoad <= 0f)
|
||||
{
|
||||
Messages.Message("ARA_SwarmSpell_NoLoadToDump".Translate(caster.LabelShortCap),
|
||||
MessageTypeDefOf.RejectInput);
|
||||
return;
|
||||
}
|
||||
|
||||
// 记录施法者是否超载
|
||||
bool casterWasOverloaded = spellHolder.IsOverloaded;
|
||||
|
||||
// 根据目标是否有灵能熵追踪器执行不同效果
|
||||
bool hasPsychicTracker = CheckTargetHasPsychicTracker(targetPawn);
|
||||
|
||||
if (hasPsychicTracker)
|
||||
{
|
||||
// 有灵能熵追踪器:转化为PsychicEntropy
|
||||
ApplyPsychicEntropyEffect(caster, targetPawn, currentLoad, spellHolder);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 没有灵能熵追踪器:摧毁意识来源器官
|
||||
ApplyConsciousnessDestruction(caster, targetPawn, currentLoad, spellHolder);
|
||||
}
|
||||
|
||||
// 无论结果如何,清空施法者的灵能负载
|
||||
spellHolder.ReducePsychicLoad(currentLoad, "转储灵能负载");
|
||||
|
||||
// 显示效果和消息
|
||||
ShowEffectsAndMessages(caster, targetPawn, currentLoad, hasPsychicTracker, casterWasOverloaded);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 检查目标是否有灵能熵追踪器
|
||||
/// <summary>
|
||||
/// 检查目标是否有灵能熵追踪器
|
||||
/// </summary>
|
||||
private bool CheckTargetHasPsychicTracker(Pawn target)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 方法1:直接检查psychicEntropy字段
|
||||
var entropyField = typeof(Pawn).GetField("psychicEntropy");
|
||||
if (entropyField != null)
|
||||
{
|
||||
object entropyObj = entropyField.GetValue(target);
|
||||
if (entropyObj != null)
|
||||
{
|
||||
// 检查是否是Pawn_PsychicEntropyTracker类型
|
||||
var entropyType = entropyObj.GetType();
|
||||
if (entropyType.Name == "Pawn_PsychicEntropyTracker")
|
||||
{
|
||||
// 进一步检查是否有TryAddEntropy方法
|
||||
var addEntropyMethod = entropyType.GetMethod("TryAddEntropy");
|
||||
if (addEntropyMethod != null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 方法2:检查是否有PsychicSensitivity属性
|
||||
if (target.RaceProps.Humanlike)
|
||||
{
|
||||
// 人类类种族通常有灵能熵追踪器
|
||||
float psychicSensitivity = target.GetStatValue(StatDefOf.PsychicSensitivity);
|
||||
if (psychicSensitivity > 0.01f)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// 方法3:检查是否有Psylink相关Hediff
|
||||
Hediff psylink = target.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.PsychicAmplifier);
|
||||
if (psylink != null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// 方法4:检查是否有PsychicEntropy Hediff
|
||||
Hediff entropyHediff = target.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.PsychicEntropy);
|
||||
if (entropyHediff != null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
Log.Warning($"[虫群术法] 检查目标灵能熵追踪器时出错: {ex.Message}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取目标的灵能熵追踪器(如果存在)
|
||||
/// </summary>
|
||||
private object GetPsychicEntropyTracker(Pawn target)
|
||||
{
|
||||
try
|
||||
{
|
||||
var entropyField = typeof(Pawn).GetField("psychicEntropy");
|
||||
if (entropyField != null)
|
||||
{
|
||||
return entropyField.GetValue(target);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
catch (System.Exception)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 应用灵能熵效果
|
||||
/// <summary>
|
||||
/// 将灵能负载转化为PsychicEntropy应用到目标
|
||||
/// </summary>
|
||||
private void ApplyPsychicEntropyEffect(Pawn caster, Pawn target, float loadAmount, Comp_SwarmSpellHolder spellHolder)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 计算转化的熵值(1:10转化比)
|
||||
float entropyAmount = loadAmount * Props.conversionRatio;
|
||||
|
||||
// 获取目标的灵能熵追踪器
|
||||
object entropyTracker = GetPsychicEntropyTracker(target);
|
||||
if (entropyTracker != null)
|
||||
{
|
||||
// 使用反射调用TryAddEntropy方法
|
||||
System.Type entropyType = entropyTracker.GetType();
|
||||
var addEntropyMethod = entropyType.GetMethod("TryAddEntropy",
|
||||
new System.Type[] { typeof(float), typeof(Thing), typeof(bool), typeof(bool) });
|
||||
|
||||
if (addEntropyMethod != null)
|
||||
{
|
||||
bool success = (bool)addEntropyMethod.Invoke(entropyTracker,
|
||||
new object[] { entropyAmount, caster, Props.scaleBySensitivity, Props.allowOverLimit });
|
||||
|
||||
if (success)
|
||||
{
|
||||
// 成功添加熵值
|
||||
ShowEntropyTransferEffect(caster, target, entropyAmount);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 添加熵值失败(可能达到上限)
|
||||
Messages.Message("ARA_SwarmSpell_EntropyTransferFailed".Translate(target.LabelShortCap),
|
||||
target, MessageTypeDefOf.NegativeEvent);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// 如果没有TryAddEntropy方法,尝试其他方法
|
||||
ApplyFallbackEffect(target, loadAmount);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// 没有找到追踪器,使用后备效果
|
||||
ApplyFallbackEffect(target, loadAmount);
|
||||
}
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
Log.Error($"[虫群术法] 应用灵能熵效果时出错: {ex.Message}\n{ex.StackTrace}");
|
||||
ApplyFallbackEffect(target, loadAmount);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 后备效果(当无法添加熵值时使用)
|
||||
/// </summary>
|
||||
private void ApplyFallbackEffect(Pawn target, float loadAmount)
|
||||
{
|
||||
// 应用一些伤害作为后备
|
||||
float damageAmount = loadAmount * Props.fallbackDamageMultiplier;
|
||||
DamageInfo damage = new DamageInfo(
|
||||
Props.fallbackDamageType ?? DamageDefOf.Burn,
|
||||
damageAmount,
|
||||
armorPenetration: 999f,
|
||||
instigator: parent.pawn
|
||||
);
|
||||
target.TakeDamage(damage);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 显示熵值转移效果
|
||||
/// </summary>
|
||||
private void ShowEntropyTransferEffect(Pawn caster, Pawn target, float entropyAmount)
|
||||
{
|
||||
// 显示效果
|
||||
if (Props.entropyTransferEffecter != null)
|
||||
{
|
||||
Effecter effecter = Props.entropyTransferEffecter.Spawn();
|
||||
effecter.Trigger(new TargetInfo(caster.Position, caster.Map), new TargetInfo(target.Position, target.Map));
|
||||
effecter.Cleanup();
|
||||
}
|
||||
|
||||
// 显示熵值转移消息
|
||||
if (Props.showEntropyTransferMessage)
|
||||
{
|
||||
Messages.Message("ARA_SwarmSpell_EntropyTransferred".Translate(
|
||||
caster.LabelShortCap, target.LabelShortCap, entropyAmount.ToString("F1")),
|
||||
target, MessageTypeDefOf.NegativeEvent);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 应用意识摧毁效果
|
||||
/// <summary>
|
||||
/// 摧毁目标的意识来源器官
|
||||
/// </summary>
|
||||
private void ApplyConsciousnessDestruction(Pawn caster, Pawn target, float loadAmount, Comp_SwarmSpellHolder spellHolder)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 获取所有意识来源部位
|
||||
var consciousnessParts = target.health.hediffSet.GetNotMissingParts()
|
||||
.Where(part => part.def.tags?.Contains(BodyPartTagDefOf.ConsciousnessSource) == true)
|
||||
.ToList();
|
||||
|
||||
if (consciousnessParts.Count == 0)
|
||||
{
|
||||
// 如果没有意识来源器官,应用普通伤害
|
||||
ApplyNoConsciousnessFallback(target, loadAmount);
|
||||
return;
|
||||
}
|
||||
|
||||
int destroyedCount = 0;
|
||||
float loadPerPart = loadAmount / consciousnessParts.Count;
|
||||
|
||||
foreach (var part in consciousnessParts)
|
||||
{
|
||||
if (TryDestroyConsciousnessPart(target, part, loadPerPart))
|
||||
{
|
||||
destroyedCount++;
|
||||
|
||||
// 显示伤害效果
|
||||
if (Props.consciousnessDestroyFleck != null && target.Map != null)
|
||||
{
|
||||
FleckMaker.Static(target.Position, target.Map, Props.consciousnessDestroyFleck);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 如果摧毁了任何意识来源器官,应用惩罚效果
|
||||
if (destroyedCount > 0)
|
||||
{
|
||||
ApplyConsciousnessPenalty(target);
|
||||
|
||||
// 显示摧毁消息
|
||||
if (Props.showConsciousnessDestroyMessage)
|
||||
{
|
||||
Messages.Message("ARA_SwarmSpell_ConsciousnessDestroyed".Translate(
|
||||
target.LabelShortCap, destroyedCount),
|
||||
target, MessageTypeDefOf.NegativeHealthEvent);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
Log.Error($"[虫群术法] 摧毁意识来源器官时出错: {ex.Message}\n{ex.StackTrace}");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 尝试摧毁意识来源器官
|
||||
/// </summary>
|
||||
private bool TryDestroyConsciousnessPart(Pawn pawn, BodyPartRecord part, float loadPerPart)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 计算伤害(基于负载和配置的伤害倍数)
|
||||
float damageAmount = part.def.GetMaxHealth(pawn) * Props.partDestructionDamageMult +
|
||||
(loadPerPart * Props.loadDamageMultiplier);
|
||||
|
||||
DamageInfo damage = new DamageInfo(
|
||||
Props.destroyDamageType ?? DamageDefOf.Burn,
|
||||
damageAmount,
|
||||
armorPenetration: 999f,
|
||||
instigator: parent.pawn,
|
||||
hitPart: part,
|
||||
category: DamageInfo.SourceCategory.ThingOrUnknown
|
||||
);
|
||||
|
||||
pawn.TakeDamage(damage);
|
||||
|
||||
// 确保部位被摧毁
|
||||
if (!pawn.health.hediffSet.PartIsMissing(part))
|
||||
{
|
||||
DamageInfo finalDamage = new DamageInfo(
|
||||
Props.destroyDamageType ?? DamageDefOf.Burn,
|
||||
99999f,
|
||||
armorPenetration: 999f,
|
||||
instigator: parent.pawn,
|
||||
hitPart: part
|
||||
);
|
||||
pawn.TakeDamage(finalDamage);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
Log.Error($"[虫群术法] 摧毁部位 {part.Label} 时出错: {ex.Message}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 没有意识来源器官时的后备效果
|
||||
/// </summary>
|
||||
private void ApplyNoConsciousnessFallback(Pawn target, float loadAmount)
|
||||
{
|
||||
// 对核心部位造成伤害
|
||||
BodyPartRecord corePart = target.RaceProps.body.corePart;
|
||||
if (corePart != null)
|
||||
{
|
||||
float damageAmount = loadAmount * Props.noConsciousnessDamageMultiplier;
|
||||
DamageInfo damage = new DamageInfo(
|
||||
Props.destroyDamageType ?? DamageDefOf.Burn,
|
||||
damageAmount,
|
||||
armorPenetration: 999f,
|
||||
instigator: parent.pawn,
|
||||
hitPart: corePart
|
||||
);
|
||||
target.TakeDamage(damage);
|
||||
|
||||
if (Props.showNoConsciousnessMessage)
|
||||
{
|
||||
Messages.Message("ARA_SwarmSpell_NoConsciousnessFallback".Translate(
|
||||
target.LabelShortCap, damageAmount.ToString("F0")),
|
||||
target, MessageTypeDefOf.NegativeEvent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 应用意识来源器官被摧毁的惩罚
|
||||
/// </summary>
|
||||
private void ApplyConsciousnessPenalty(Pawn pawn)
|
||||
{
|
||||
// 添加意识惩罚Hediff
|
||||
if (Props.consciousnessPenaltyHediff != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
Hediff penalty = HediffMaker.MakeHediff(Props.consciousnessPenaltyHediff, pawn);
|
||||
pawn.health.AddHediff(penalty);
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
Log.Error($"[虫群术法] 添加意识惩罚Hediff时出错: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
// 显示效果
|
||||
if (Props.penaltyEffecter != null)
|
||||
{
|
||||
Effecter effecter = Props.penaltyEffecter.Spawn();
|
||||
effecter.Trigger(new TargetInfo(pawn.Position, pawn.Map), new TargetInfo(pawn.Position, pawn.Map));
|
||||
effecter.Cleanup();
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 视觉效果和消息
|
||||
/// <summary>
|
||||
/// 显示效果和消息
|
||||
/// </summary>
|
||||
private void ShowEffectsAndMessages(Pawn caster, Pawn target, float loadAmount, bool hasPsychicTracker, bool casterWasOverloaded)
|
||||
{
|
||||
// 显示主效果
|
||||
if (Props.mainEffecter != null)
|
||||
{
|
||||
Effecter effecter = Props.mainEffecter.Spawn();
|
||||
effecter.Trigger(new TargetInfo(caster.Position, caster.Map), new TargetInfo(target.Position, target.Map));
|
||||
effecter.Cleanup();
|
||||
}
|
||||
|
||||
// 显示负载转储消息
|
||||
if (Props.showDumpMessage)
|
||||
{
|
||||
string messageKey = hasPsychicTracker ?
|
||||
"ARA_SwarmSpell_LoadDumped_Entropy" :
|
||||
"ARA_SwarmSpell_LoadDumped_Destruction";
|
||||
|
||||
string message = messageKey.Translate(
|
||||
caster.LabelShortCap,
|
||||
target.LabelShortCap,
|
||||
loadAmount.ToString("F1"));
|
||||
|
||||
Messages.Message(message, caster, MessageTypeDefOf.PositiveEvent);
|
||||
}
|
||||
|
||||
// 显示施法者状态消息
|
||||
if (casterWasOverloaded && Props.showOverloadReliefMessage)
|
||||
{
|
||||
Messages.Message("ARA_SwarmSpell_OverloadRelieved".Translate(caster.LabelShortCap),
|
||||
caster, MessageTypeDefOf.PositiveEvent);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 验证和工具提示
|
||||
public override bool Valid(LocalTargetInfo target, bool throwMessages = false)
|
||||
{
|
||||
if (!base.Valid(target, throwMessages))
|
||||
return false;
|
||||
|
||||
Pawn targetPawn = target.Pawn;
|
||||
if (targetPawn == null)
|
||||
{
|
||||
if (throwMessages)
|
||||
Messages.Message("需要选择一个目标单位", MessageTypeDefOf.RejectInput);
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查目标是否活着且没有倒下(如果技能不允许对倒下单位使用)
|
||||
if (!Props.canTargetDowned && targetPawn.Downed)
|
||||
{
|
||||
if (throwMessages)
|
||||
Messages.Message("目标已经倒下,无法转储负载", MessageTypeDefOf.RejectInput);
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查施法者是否有术法组件且有负载
|
||||
Pawn caster = parent.pawn;
|
||||
if (caster != null)
|
||||
{
|
||||
Comp_SwarmSpellHolder spellHolder = caster.TryGetComp<Comp_SwarmSpellHolder>();
|
||||
if (spellHolder == null)
|
||||
{
|
||||
if (throwMessages)
|
||||
Messages.Message("施法者没有灵能术法系统", MessageTypeDefOf.RejectInput);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!spellHolder.IsSystemInitialized)
|
||||
{
|
||||
if (throwMessages)
|
||||
Messages.Message("灵能术法系统未初始化", MessageTypeDefOf.RejectInput);
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查是否有负载可转储
|
||||
if (spellHolder.PsychicLoad <= 0f)
|
||||
{
|
||||
if (throwMessages)
|
||||
Messages.Message("没有可转储的灵能负载", MessageTypeDefOf.RejectInput);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region AI 行为
|
||||
public override bool AICanTargetNow(LocalTargetInfo target)
|
||||
{
|
||||
Pawn caster = parent.pawn;
|
||||
if (caster == null)
|
||||
return false;
|
||||
|
||||
Pawn targetPawn = target.Pawn;
|
||||
if (targetPawn == null || targetPawn.Dead || (targetPawn.Downed && !Props.canTargetDowned))
|
||||
return false;
|
||||
|
||||
// 检查施法者是否有术法组件
|
||||
Comp_SwarmSpellHolder spellHolder = caster.TryGetComp<Comp_SwarmSpellHolder>();
|
||||
if (spellHolder == null || !spellHolder.IsSystemInitialized)
|
||||
return false;
|
||||
|
||||
// AI不会在没有负载时使用此技能
|
||||
if (spellHolder.PsychicLoad <= 0f)
|
||||
return false;
|
||||
|
||||
// AI倾向于在超载时使用此技能
|
||||
float overloadUrgency = spellHolder.IsOverloaded ? 0.8f : (spellHolder.PsychicLoadPercent * 0.5f);
|
||||
|
||||
// AI考虑目标的威胁程度
|
||||
float threatScore = targetPawn.Downed ? 0f : (targetPawn.kindDef.combatPower / 100f);
|
||||
|
||||
// 综合评分:超载越严重、目标威胁越大,越可能使用
|
||||
float totalScore = overloadUrgency + (threatScore * 0.5f);
|
||||
|
||||
return totalScore > 0.5f && base.AICanTargetNow(target);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,127 @@
|
||||
using RimWorld;
|
||||
using UnityEngine;
|
||||
using Verse;
|
||||
|
||||
namespace ArachnaeSwarm
|
||||
{
|
||||
/// <summary>
|
||||
/// 灵能负载转储技能属性
|
||||
/// </summary>
|
||||
public class CompProperties_AbilityPsychicLoadDump : CompProperties_AbilityEffect
|
||||
{
|
||||
#region 转化设置
|
||||
/// <summary>
|
||||
/// 转化比例(1负载 = X熵值)
|
||||
/// </summary>
|
||||
public float conversionRatio = 10f;
|
||||
|
||||
/// <summary>
|
||||
/// 是否根据目标的灵能敏感度缩放
|
||||
/// </summary>
|
||||
public bool scaleBySensitivity = true;
|
||||
|
||||
/// <summary>
|
||||
/// 是否允许超过目标熵值上限
|
||||
/// </summary>
|
||||
public bool allowOverLimit = false;
|
||||
#endregion
|
||||
|
||||
#region 目标选择
|
||||
/// <summary>
|
||||
/// 是否可以对倒下的目标使用
|
||||
/// </summary>
|
||||
public bool canTargetDowned = false;
|
||||
#endregion
|
||||
|
||||
#region 器官摧毁设置
|
||||
/// <summary>
|
||||
/// 部位摧毁基础伤害倍数(基于部位最大生命值)
|
||||
/// </summary>
|
||||
public float partDestructionDamageMult = 1.5f;
|
||||
|
||||
/// <summary>
|
||||
/// 负载伤害倍数(负载 * 此倍数)
|
||||
/// </summary>
|
||||
public float loadDamageMultiplier = 5f;
|
||||
|
||||
/// <summary>
|
||||
/// 没有意识来源器官时的伤害倍数
|
||||
/// </summary>
|
||||
public float noConsciousnessDamageMultiplier = 3f;
|
||||
|
||||
/// <summary>
|
||||
/// 后备效果伤害倍数(当无法添加熵值时)
|
||||
/// </summary>
|
||||
public float fallbackDamageMultiplier = 2f;
|
||||
|
||||
/// <summary>
|
||||
/// 摧毁部位使用的伤害类型
|
||||
/// </summary>
|
||||
public DamageDef destroyDamageType = null;
|
||||
|
||||
/// <summary>
|
||||
/// 后备效果伤害类型
|
||||
/// </summary>
|
||||
public DamageDef fallbackDamageType = null;
|
||||
#endregion
|
||||
|
||||
#region 效果设置
|
||||
/// <summary>
|
||||
/// 主效果器
|
||||
/// </summary>
|
||||
public EffecterDef mainEffecter = null;
|
||||
|
||||
/// <summary>
|
||||
/// 熵值转移效果器
|
||||
/// </summary>
|
||||
public EffecterDef entropyTransferEffecter = null;
|
||||
|
||||
/// <summary>
|
||||
/// 意识摧毁特效
|
||||
/// </summary>
|
||||
public FleckDef consciousnessDestroyFleck = null;
|
||||
|
||||
/// <summary>
|
||||
/// 惩罚效果器
|
||||
/// </summary>
|
||||
public EffecterDef penaltyEffecter = null;
|
||||
|
||||
/// <summary>
|
||||
/// 意识惩罚Hediff
|
||||
/// </summary>
|
||||
public HediffDef consciousnessPenaltyHediff = null;
|
||||
#endregion
|
||||
|
||||
#region 消息设置
|
||||
/// <summary>
|
||||
/// 是否显示转储消息
|
||||
/// </summary>
|
||||
public bool showDumpMessage = true;
|
||||
|
||||
/// <summary>
|
||||
/// 是否显示熵值转移消息
|
||||
/// </summary>
|
||||
public bool showEntropyTransferMessage = true;
|
||||
|
||||
/// <summary>
|
||||
/// 是否显示意识摧毁消息
|
||||
/// </summary>
|
||||
public bool showConsciousnessDestroyMessage = true;
|
||||
|
||||
/// <summary>
|
||||
/// 是否显示没有意识来源器官消息
|
||||
/// </summary>
|
||||
public bool showNoConsciousnessMessage = true;
|
||||
|
||||
/// <summary>
|
||||
/// 是否显示超载解除消息
|
||||
/// </summary>
|
||||
public bool showOverloadReliefMessage = true;
|
||||
#endregion
|
||||
|
||||
public CompProperties_AbilityPsychicLoadDump()
|
||||
{
|
||||
compClass = typeof(CompAbilityEffect_PsychicLoadDump);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -103,47 +103,6 @@ namespace ArachnaeSwarm
|
||||
return researchPoints;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取计算过程的描述(用于工具提示)
|
||||
/// </summary>
|
||||
private string GetCalculationDescription(Pawn targetPawn)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
// 获取智识技能等级
|
||||
float intelligenceValue = 1f;
|
||||
if (targetPawn.skills != null)
|
||||
{
|
||||
SkillRecord intellectualSkill = targetPawn.skills.GetSkill(SkillDefOf.Intellectual);
|
||||
if (intellectualSkill != null)
|
||||
{
|
||||
intelligenceValue = intellectualSkill.Level;
|
||||
if (intelligenceValue <= 0) intelligenceValue = 1f;
|
||||
}
|
||||
}
|
||||
|
||||
// 获取意识能力值
|
||||
float consciousnessValue = targetPawn.health.capacities.GetLevel(PawnCapacityDefOf.Consciousness);
|
||||
if (consciousnessValue < 0) consciousnessValue = 0;
|
||||
|
||||
sb.AppendLine("计算公式:");
|
||||
sb.AppendLine($"基础值: {Props.baseAmount:F1}");
|
||||
sb.AppendLine($"智识技能等级({intelligenceValue:F1}) × 智识倍率({Props.intelligenceMultiplier:F1}) = {intelligenceValue * Props.intelligenceMultiplier:F1}");
|
||||
sb.AppendLine($"意识能力值({consciousnessValue:P0}) × 意识倍率({Props.consciousnessMultiplier:F1}) = {consciousnessValue * Props.consciousnessMultiplier:F1}");
|
||||
sb.AppendLine($"总计: {Props.baseAmount + (intelligenceValue * Props.intelligenceMultiplier) + (consciousnessValue * Props.consciousnessMultiplier):F1}");
|
||||
|
||||
if (Props.useRandomRange)
|
||||
{
|
||||
sb.AppendLine($"随机范围: {Props.randomRange.min:F1} - {Props.randomRange.max:F1}");
|
||||
}
|
||||
|
||||
if (Props.overallMultiplier != 1f)
|
||||
{
|
||||
sb.AppendLine($"全局乘数: ×{Props.overallMultiplier:F1}");
|
||||
}
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 摧毁意识来源器官
|
||||
|
||||
@@ -38,6 +38,8 @@
|
||||
<Compile Include="Abilities\ARA_HediffGacha\Window_HediffSelection.cs" />
|
||||
<Compile Include="Abilities\ARA_PsychicLoadCost\CompAbilityEffect_PsychicLoadCost.cs" />
|
||||
<Compile Include="Abilities\ARA_PsychicLoadCost\CompProperties_AbilityPsychicLoadCost.cs" />
|
||||
<Compile Include="Abilities\ARA_PsychicLoadDump\CompAbilityEffect_PsychicLoadDump.cs" />
|
||||
<Compile Include="Abilities\ARA_PsychicLoadDump\CompProperties_AbilityPsychicLoadDump.cs" />
|
||||
<Compile Include="Abilities\ARA_PsychicResearchHarvest\CompAbilityEffect_PsychicResearchHarvest.cs" />
|
||||
<Compile Include="Abilities\ARA_PsychicResearchHarvest\CompProperties_AbilityPsychicResearchHarvest.cs" />
|
||||
<Compile Include="Buildings\Building_CorpseVat\Building_CorpseVat.cs" />
|
||||
|
||||
Reference in New Issue
Block a user