11
@@ -1578,10 +1578,36 @@
|
|||||||
</li>
|
</li>
|
||||||
</comps>
|
</comps>
|
||||||
</AbilityDef>
|
</AbilityDef>
|
||||||
|
<AbilityDef>
|
||||||
|
<defName>ARA_Locust_Needle_Fire</defName>
|
||||||
|
<label>毒针连射</label>
|
||||||
|
<description>阿拉克涅督虫使用可以喷射剧毒尾针的毒针腺对敌方进行一轮射击。</description>
|
||||||
|
<writeCombatLog>True</writeCombatLog>
|
||||||
|
<showPsycastEffects>False</showPsycastEffects>
|
||||||
|
<cooldownTicksRange>120</cooldownTicksRange>
|
||||||
|
<aiCanUse>true</aiCanUse>
|
||||||
|
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Toxic_Needle_Fire</iconPath>
|
||||||
|
<verbProperties>
|
||||||
|
<verbClass>Verb_CastAbility</verbClass>
|
||||||
|
<range>24</range>
|
||||||
|
<warmupTime>1</warmupTime>
|
||||||
|
<soundCast>Heatspikes_Shot</soundCast>
|
||||||
|
<soundCastTail>Heatspikes_Tail</soundCastTail>
|
||||||
|
<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>
|
||||||
|
</comps>
|
||||||
|
</AbilityDef>
|
||||||
|
|
||||||
<!-- 蜕荚 -->
|
<!-- 蜕荚 -->
|
||||||
<AbilityDef>
|
<AbilityDef>
|
||||||
<defName>ARA_Pouch_Hatching_Acidling</defName>
|
<defName>ARA_Pouch_Hatching_Baneling</defName>
|
||||||
<label>蜕荚孵化:爆裂种</label>
|
<label>蜕荚孵化:爆裂种</label>
|
||||||
<description>立刻在脚下孵化三只阿拉克涅爆裂种辅虫,它们会对敌方发起自杀性攻击。</description>
|
<description>立刻在脚下孵化三只阿拉克涅爆裂种辅虫,它们会对敌方发起自杀性攻击。</description>
|
||||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_BaseRace_Launcher</iconPath>
|
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_BaseRace_Launcher</iconPath>
|
||||||
@@ -1603,7 +1629,7 @@
|
|||||||
</verbProperties>
|
</verbProperties>
|
||||||
<comps>
|
<comps>
|
||||||
<li Class="ArachnaeSwarm.CompProperties_AbilityLaunchMultiProjectile">
|
<li Class="ArachnaeSwarm.CompProperties_AbilityLaunchMultiProjectile">
|
||||||
<projectileDef>ArachnaeBase_Race_Acidling_Proj</projectileDef>
|
<projectileDef>ArachnaeBase_Race_Baneling_Proj</projectileDef>
|
||||||
<numProjectiles>3</numProjectiles>
|
<numProjectiles>3</numProjectiles>
|
||||||
</li>
|
</li>
|
||||||
<li Class="ArachnaeSwarm.CompProperties_AbilityNeedCost">
|
<li Class="ArachnaeSwarm.CompProperties_AbilityNeedCost">
|
||||||
|
|||||||
@@ -1260,7 +1260,7 @@
|
|||||||
<AbilityDef>
|
<AbilityDef>
|
||||||
<defName>ARA_Skyraider_Hivelord</defName>
|
<defName>ARA_Skyraider_Hivelord</defName>
|
||||||
<label>空天种转换——巢虫之主</label>
|
<label>空天种转换——巢虫之主</label>
|
||||||
<description>使空天种发生内驱性进化,以降低机动力和失去高空机动能力为代价,使其获得向敌方自动投射天巢种辅虫的能力——这种辅虫体型很小,会以让人烦扰的近战紧紧黏住敌人。\n\n该进化过程不可逆!</description>
|
<description>使空天种发生内驱性进化,以降低机动力和失去高空机动能力为代价,使其获得孵化大量天巢种辅虫的能力——这种辅虫体型很小,会以让人烦扰的近战紧紧黏住敌人。\n\n该进化方向提供8只阿拉克涅天巢种辅虫。</description>
|
||||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Skyraider_Hivelord</iconPath>
|
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Skyraider_Hivelord</iconPath>
|
||||||
<cooldownTicksRange>1800</cooldownTicksRange>
|
<cooldownTicksRange>1800</cooldownTicksRange>
|
||||||
<hostile>false</hostile>
|
<hostile>false</hostile>
|
||||||
@@ -1299,7 +1299,7 @@
|
|||||||
<HediffDef>
|
<HediffDef>
|
||||||
<defName>ARA_Skyraider_Hivelord</defName>
|
<defName>ARA_Skyraider_Hivelord</defName>
|
||||||
<label>亚种-领主种</label>
|
<label>亚种-领主种</label>
|
||||||
<description>这只阿拉克涅空天种已经获得拔耀,会对敌方投掷天巢种辅虫,这些灵敏的辅虫会在落地后散开四处狩猎目标。</description>
|
<description>这只阿拉克涅空天种已经获得拔耀,可以孵化大量的天巢种辅虫,这些灵敏的辅虫会后散开四处狩猎目标。</description>
|
||||||
<hediffClass>HediffWithComps</hediffClass>
|
<hediffClass>HediffWithComps</hediffClass>
|
||||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||||
<isBad>false</isBad>
|
<isBad>false</isBad>
|
||||||
@@ -1343,15 +1343,24 @@
|
|||||||
</li>
|
</li>
|
||||||
</stages>
|
</stages>
|
||||||
<comps>
|
<comps>
|
||||||
<li Class="ArachnaeSwarm.HediffCompProperties_TopTurret">
|
<li Class="ArachnaeSwarm.HediffCompProperties_ProductionQueue">
|
||||||
|
<productionQueue>
|
||||||
|
<li>
|
||||||
|
<pawnKind>ArachnaeBase_Race_Skyhive</pawnKind>
|
||||||
|
<count>8</count>
|
||||||
|
<cooldownTicks>400</cooldownTicks>
|
||||||
|
</li>
|
||||||
|
</productionQueue>
|
||||||
|
</li>
|
||||||
|
<!-- <li Class="ArachnaeSwarm.HediffCompProperties_TopTurret">
|
||||||
<turretDef>ARA_Skyraider_Hivelord_Turret</turretDef>
|
<turretDef>ARA_Skyraider_Hivelord_Turret</turretDef>
|
||||||
<angleOffset>0</angleOffset>
|
<angleOffset>0</angleOffset>
|
||||||
<autoAttack>true</autoAttack>
|
<autoAttack>true</autoAttack>
|
||||||
</li>
|
</li>
|
||||||
<li Class="ArachnaeSwarm.HediffCompProperties_DrawMote">
|
<li Class="ArachnaeSwarm.HediffCompProperties_DrawMote">
|
||||||
<mote>ARA_Mote_Hivelord_Turret_Range</mote> <!-- 大小和range没有严格对应关系,需要自己试出来drawSize -->
|
<mote>ARA_Mote_Hivelord_Turret_Range</mote>
|
||||||
<hideMoteWhenNotDrafted>true</hideMoteWhenNotDrafted>
|
<hideMoteWhenNotDrafted>true</hideMoteWhenNotDrafted>
|
||||||
</li>
|
</li> -->
|
||||||
</comps>
|
</comps>
|
||||||
</HediffDef>
|
</HediffDef>
|
||||||
<ThingDef ParentName="MoteBase">
|
<ThingDef ParentName="MoteBase">
|
||||||
@@ -1374,7 +1383,7 @@
|
|||||||
<AbilityDef>
|
<AbilityDef>
|
||||||
<defName>ARA_Skyraider_Empthrower</defName>
|
<defName>ARA_Skyraider_Empthrower</defName>
|
||||||
<label>空天种转换——电磁风暴</label>
|
<label>空天种转换——电磁风暴</label>
|
||||||
<description>使空天种发生内驱性进化,以降低机动力和失去高空机动能力为代价,使其获得向敌方自动投射磁暴种辅虫的能力——这种辅虫会以自杀式袭击的方式释放出EMP,以对抗机械族。\n\n该进化过程不可逆!</description>
|
<description>使空天种发生内驱性进化,以降低机动力和失去高空机动能力为代价,使其获得孵化磁暴种辅虫的能力——这种辅虫会以自杀式袭击的方式释放出EMP,以对抗机械族。\n\n该进化方向提供3只阿拉克涅电磁种辅虫。</description>
|
||||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Skyraider_Empthrower</iconPath>
|
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Skyraider_Empthrower</iconPath>
|
||||||
<cooldownTicksRange>1800</cooldownTicksRange>
|
<cooldownTicksRange>1800</cooldownTicksRange>
|
||||||
<hostile>false</hostile>
|
<hostile>false</hostile>
|
||||||
@@ -1413,7 +1422,7 @@
|
|||||||
<HediffDef>
|
<HediffDef>
|
||||||
<defName>ARA_Skyraider_Empthrower</defName>
|
<defName>ARA_Skyraider_Empthrower</defName>
|
||||||
<label>亚种-飓风种</label>
|
<label>亚种-飓风种</label>
|
||||||
<description>这只阿拉克涅空天种已经获得拔耀,会对敌方投掷磁暴种辅虫,这些辅虫会在落地后散开,以自杀性袭击释放EMP对抗敌方机械族。</description>
|
<description>这只阿拉克涅空天种已经获得拔耀,会孵化磁暴种辅虫,这些辅虫以自杀性袭击释放EMP对抗敌方机械族。</description>
|
||||||
<hediffClass>HediffWithComps</hediffClass>
|
<hediffClass>HediffWithComps</hediffClass>
|
||||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||||
<isBad>false</isBad>
|
<isBad>false</isBad>
|
||||||
@@ -1457,7 +1466,16 @@
|
|||||||
</li>
|
</li>
|
||||||
</stages>
|
</stages>
|
||||||
<comps>
|
<comps>
|
||||||
<li Class="ArachnaeSwarm.HediffCompProperties_TopTurret">
|
<li Class="ArachnaeSwarm.HediffCompProperties_ProductionQueue">
|
||||||
|
<productionQueue>
|
||||||
|
<li>
|
||||||
|
<pawnKind>ArachnaeBase_Race_Empsuicider</pawnKind>
|
||||||
|
<count>3</count>
|
||||||
|
<cooldownTicks>500</cooldownTicks>
|
||||||
|
</li>
|
||||||
|
</productionQueue>
|
||||||
|
</li>
|
||||||
|
<!-- <li Class="ArachnaeSwarm.HediffCompProperties_TopTurret">
|
||||||
<turretDef>ARA_Skyraider_Empthrower_Turret</turretDef>
|
<turretDef>ARA_Skyraider_Empthrower_Turret</turretDef>
|
||||||
<angleOffset>0</angleOffset>
|
<angleOffset>0</angleOffset>
|
||||||
<autoAttack>true</autoAttack>
|
<autoAttack>true</autoAttack>
|
||||||
@@ -1465,7 +1483,7 @@
|
|||||||
<li Class="ArachnaeSwarm.HediffCompProperties_DrawMote">
|
<li Class="ArachnaeSwarm.HediffCompProperties_DrawMote">
|
||||||
<mote>ARA_Mote_Empthrower_Turret_Range</mote>
|
<mote>ARA_Mote_Empthrower_Turret_Range</mote>
|
||||||
<hideMoteWhenNotDrafted>true</hideMoteWhenNotDrafted>
|
<hideMoteWhenNotDrafted>true</hideMoteWhenNotDrafted>
|
||||||
</li>
|
</li> -->
|
||||||
</comps>
|
</comps>
|
||||||
</HediffDef>
|
</HediffDef>
|
||||||
<ThingDef ParentName="MoteBase">
|
<ThingDef ParentName="MoteBase">
|
||||||
@@ -1508,10 +1526,19 @@
|
|||||||
</li>
|
</li>
|
||||||
</stages>
|
</stages>
|
||||||
<comps>
|
<comps>
|
||||||
<li Class="ArachnaeSwarm.HediffCompProperties_TopTurret">
|
<li Class="ArachnaeSwarm.HediffCompProperties_ProductionQueue">
|
||||||
<turretDef>ARA_Praetorian_Base_Turret</turretDef>
|
<productionQueue>
|
||||||
<angleOffset>0</angleOffset>
|
<li>
|
||||||
<autoAttack>true</autoAttack>
|
<pawnKind>ArachnaeBase_Race_Acidcut</pawnKind>
|
||||||
|
<count>3</count>
|
||||||
|
<cooldownTicks>500</cooldownTicks>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<pawnKind>ArachnaeBase_Race_Locust</pawnKind>
|
||||||
|
<count>2</count>
|
||||||
|
<cooldownTicks>700</cooldownTicks>
|
||||||
|
</li>
|
||||||
|
</productionQueue>
|
||||||
</li>
|
</li>
|
||||||
<li Class="HediffCompProperties_GiveAbility">
|
<li Class="HediffCompProperties_GiveAbility">
|
||||||
<abilityDefs>
|
<abilityDefs>
|
||||||
@@ -1531,7 +1558,7 @@
|
|||||||
<AbilityDef>
|
<AbilityDef>
|
||||||
<defName>ARA_Praetorian_Navigator</defName>
|
<defName>ARA_Praetorian_Navigator</defName>
|
||||||
<label>禁卫种转换——引航灯塔</label>
|
<label>禁卫种转换——引航灯塔</label>
|
||||||
<description>使禁卫种发生内驱性进化,以牺牲射击能力、跳跃能力、指挥能力为代价,使其换取指挥空中兽虫的能力。\n\n该进化过程不可逆!另外,空中兽虫必须成功升空才能进行指挥——在你解锁这个进化路径时,应该还不能建造空中兽虫。</description>
|
<description>使禁卫种发生内驱性进化,以牺牲射击能力、跳跃能力、指挥能力为代价,使其换取指挥空中兽虫的能力。\n\n该进化方向不提供阿拉克涅辅虫。另外,空中兽虫必须成功升空才能进行指挥——在你解锁这个进化路径时,应该还不能建造空中兽虫。</description>
|
||||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Praetorian_Navigator</iconPath>
|
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Praetorian_Navigator</iconPath>
|
||||||
<cooldownTicksRange>1800</cooldownTicksRange>
|
<cooldownTicksRange>1800</cooldownTicksRange>
|
||||||
<hostile>false</hostile>
|
<hostile>false</hostile>
|
||||||
|
|||||||
@@ -150,7 +150,7 @@
|
|||||||
<li>ArachnaeNode_Race_Skyraider</li>
|
<li>ArachnaeNode_Race_Skyraider</li>
|
||||||
<li>ArachnaeNode_Race_Praetorian</li>
|
<li>ArachnaeNode_Race_Praetorian</li>
|
||||||
<li>ArachnaeBase_Race_Acidcut</li>
|
<li>ArachnaeBase_Race_Acidcut</li>
|
||||||
<li>ArachnaeBase_Race_Acidling</li>
|
<li>ArachnaeBase_Race_Baneling</li>
|
||||||
<li>ArachnaeBase_Race_Skyhive</li>
|
<li>ArachnaeBase_Race_Skyhive</li>
|
||||||
<li>ArachnaeNode_Race_MimicNematode</li>
|
<li>ArachnaeNode_Race_MimicNematode</li>
|
||||||
</targetRaces>
|
</targetRaces>
|
||||||
|
|||||||
@@ -284,8 +284,8 @@
|
|||||||
<weaponMoney>0</weaponMoney>
|
<weaponMoney>0</weaponMoney>
|
||||||
<techHediffsMoney>0</techHediffsMoney>
|
<techHediffsMoney>0</techHediffsMoney>
|
||||||
</PawnKindDef>
|
</PawnKindDef>
|
||||||
<PawnKindDef ParentName="ArachnaeBase_Race_Acidling">
|
<PawnKindDef ParentName="ArachnaeBase_Race_Baneling">
|
||||||
<defName>ArachnaeBase_Race_Acidling_Enermy</defName>
|
<defName>ArachnaeBase_Race_Baneling_Enermy</defName>
|
||||||
<combatPower>150</combatPower>
|
<combatPower>150</combatPower>
|
||||||
<apparelMoney>0</apparelMoney>
|
<apparelMoney>0</apparelMoney>
|
||||||
<weaponMoney>0</weaponMoney>
|
<weaponMoney>0</weaponMoney>
|
||||||
|
|||||||
@@ -537,7 +537,7 @@
|
|||||||
<lifeStages>
|
<lifeStages>
|
||||||
<li>
|
<li>
|
||||||
<bodyGraphicData>
|
<bodyGraphicData>
|
||||||
<texPath>ArachnaeSwarm/Things/ARA_Acidling/Bodies/Naked_Thin</texPath>
|
<texPath>ArachnaeSwarm/Things/ARA_Baneling/Bodies/Naked_Thin</texPath>
|
||||||
<drawSize>1</drawSize>
|
<drawSize>1</drawSize>
|
||||||
<shadowData>
|
<shadowData>
|
||||||
<volume>(0.4, 0.5, 0.37)</volume>
|
<volume>(0.4, 0.5, 0.37)</volume>
|
||||||
@@ -606,15 +606,14 @@
|
|||||||
</li>
|
</li>
|
||||||
</lifeStages>
|
</lifeStages>
|
||||||
</PawnKindDef>
|
</PawnKindDef>
|
||||||
|
<PawnKindDef Name="ArachnaeBase_Race_Baneling" ParentName="ARA_InsectKindBase">
|
||||||
<PawnKindDef Name="ArachnaeBase_Race_Acidling" ParentName="ARA_InsectKindBase">
|
<defName>ArachnaeBase_Race_Baneling</defName>
|
||||||
<defName>ArachnaeBase_Race_Acidling</defName>
|
|
||||||
<label>阿拉克涅爆裂种</label>
|
<label>阿拉克涅爆裂种</label>
|
||||||
<race>ArachnaeBase_Race_Acidling</race>
|
<race>ArachnaeBase_Race_Baneling</race>
|
||||||
<lifeStages>
|
<lifeStages>
|
||||||
<li>
|
<li>
|
||||||
<bodyGraphicData>
|
<bodyGraphicData>
|
||||||
<texPath>ArachnaeSwarm/Things/ARA_Acidling/Bodies/Naked_Thin</texPath>
|
<texPath>ArachnaeSwarm/Things/ARA_Baneling/Bodies/Naked_Thin</texPath>
|
||||||
<drawSize>1</drawSize>
|
<drawSize>1</drawSize>
|
||||||
<shadowData>
|
<shadowData>
|
||||||
<volume>(0.4, 0.5, 0.37)</volume>
|
<volume>(0.4, 0.5, 0.37)</volume>
|
||||||
@@ -635,7 +634,7 @@
|
|||||||
<lifeStages>
|
<lifeStages>
|
||||||
<li>
|
<li>
|
||||||
<bodyGraphicData>
|
<bodyGraphicData>
|
||||||
<texPath>ArachnaeSwarm/Things/ARA_Acidling/BodiesEmp/Naked_Thin</texPath>
|
<texPath>ArachnaeSwarm/Things/ARA_Baneling/BodiesEmp/Naked_Thin</texPath>
|
||||||
<drawSize>1</drawSize>
|
<drawSize>1</drawSize>
|
||||||
<shadowData>
|
<shadowData>
|
||||||
<volume>(0.4, 0.5, 0.37)</volume>
|
<volume>(0.4, 0.5, 0.37)</volume>
|
||||||
@@ -649,6 +648,30 @@
|
|||||||
</li>
|
</li>
|
||||||
</lifeStages>
|
</lifeStages>
|
||||||
</PawnKindDef>
|
</PawnKindDef>
|
||||||
|
<PawnKindDef ParentName="ARA_InsectKindBase">
|
||||||
|
<defName>ArachnaeBase_Race_Locust</defName>
|
||||||
|
<label>阿拉克涅爆裂种</label>
|
||||||
|
<race>ArachnaeBase_Race_Locust</race>
|
||||||
|
<lifeStages>
|
||||||
|
<li>
|
||||||
|
<bodyGraphicData>
|
||||||
|
<texPath>ArachnaeSwarm/Things/ARA_Baneling/BodiesEmp/Naked_Thin</texPath>
|
||||||
|
<drawSize>1</drawSize>
|
||||||
|
<shadowData>
|
||||||
|
<volume>(0.4, 0.5, 0.37)</volume>
|
||||||
|
<offset>(0,0,-0.15)</offset>
|
||||||
|
</shadowData>
|
||||||
|
</bodyGraphicData>
|
||||||
|
<dessicatedBodyGraphicData>
|
||||||
|
<texPath>Things/Pawn/Animal/Spelopede/Dessicated_Spelopede</texPath>
|
||||||
|
<drawSize>1</drawSize>
|
||||||
|
</dessicatedBodyGraphicData>
|
||||||
|
</li>
|
||||||
|
</lifeStages>
|
||||||
|
<abilities>
|
||||||
|
<li>ARA_Locust_Needle_Fire</li>
|
||||||
|
</abilities>
|
||||||
|
</PawnKindDef>
|
||||||
|
|
||||||
<PawnKindDef Name="ArachnaeBeast_Race_Slayer" ParentName="ARA_InsectKindBase">
|
<PawnKindDef Name="ArachnaeBeast_Race_Slayer" ParentName="ARA_InsectKindBase">
|
||||||
<defName>ArachnaeBeast_Race_Slayer</defName>
|
<defName>ArachnaeBeast_Race_Slayer</defName>
|
||||||
|
|||||||
@@ -700,11 +700,11 @@
|
|||||||
|
|
||||||
<!-- 蜕荚 -->
|
<!-- 蜕荚 -->
|
||||||
<RecipeDef ParentName="ARA_SurgeryInstallImplantBase">
|
<RecipeDef ParentName="ARA_SurgeryInstallImplantBase">
|
||||||
<defName>ARA_Surgery_Install_Acidling_Pouch</defName>
|
<defName>ARA_Surgery_Install_Baneling_Pouch</defName>
|
||||||
<label>爆裂种蜕荚</label>
|
<label>爆裂种蜕荚</label>
|
||||||
<description>诱发阿拉克涅虫族的定向变异,使其蜕荚中预先储存三只即将孵化的阿拉克涅爆裂种,它们一旦被释放就会以自杀式袭击攻击敌方。</description>
|
<description>诱发阿拉克涅虫族的定向变异,使其蜕荚中预先储存三只即将孵化的阿拉克涅爆裂种,它们一旦被释放就会以自杀式袭击攻击敌方。</description>
|
||||||
<descriptionHyperlinks>
|
<descriptionHyperlinks>
|
||||||
<HediffDef>ARA_Acidling_Pouch_Hediff</HediffDef>
|
<HediffDef>ARA_Baneling_Pouch_Hediff</HediffDef>
|
||||||
</descriptionHyperlinks>
|
</descriptionHyperlinks>
|
||||||
<jobString>正在实施定向变异</jobString>
|
<jobString>正在实施定向变异</jobString>
|
||||||
<ingredients>
|
<ingredients>
|
||||||
@@ -725,16 +725,16 @@
|
|||||||
<li>ARA_Activated_Bacterium</li>
|
<li>ARA_Activated_Bacterium</li>
|
||||||
</thingDefs>
|
</thingDefs>
|
||||||
</fixedIngredientFilter>
|
</fixedIngredientFilter>
|
||||||
<addsHediff>ARA_Acidling_Pouch_Hediff</addsHediff>
|
<addsHediff>ARA_Baneling_Pouch_Hediff</addsHediff>
|
||||||
<researchPrerequisite>ARA_Technology_4EVO</researchPrerequisite>
|
<researchPrerequisite>ARA_Technology_4EVO</researchPrerequisite>
|
||||||
</RecipeDef>
|
</RecipeDef>
|
||||||
<HediffDef ParentName="AddedBodyPartBase">
|
<HediffDef ParentName="AddedBodyPartBase">
|
||||||
<defName>ARA_Acidling_Pouch_Hediff</defName>
|
<defName>ARA_Baneling_Pouch_Hediff</defName>
|
||||||
<label>爆裂种蜕荚</label>
|
<label>爆裂种蜕荚</label>
|
||||||
<hediffClass>Hediff_Implant</hediffClass>
|
<hediffClass>Hediff_Implant</hediffClass>
|
||||||
<description>阿拉克涅虫族的蜕荚里装了若干只即将孵化的阿拉克涅爆裂种,只需要获得指令就会立刻破体而出攻击敌方。</description>
|
<description>阿拉克涅虫族的蜕荚里装了若干只即将孵化的阿拉克涅爆裂种,只需要获得指令就会立刻破体而出攻击敌方。</description>
|
||||||
<descriptionHyperlinks>
|
<descriptionHyperlinks>
|
||||||
<RecipeDef>ARA_Surgery_Install_Acidling_Pouch</RecipeDef>
|
<RecipeDef>ARA_Surgery_Install_Baneling_Pouch</RecipeDef>
|
||||||
</descriptionHyperlinks>
|
</descriptionHyperlinks>
|
||||||
<addedPartProps>
|
<addedPartProps>
|
||||||
<betterThanNatural>true</betterThanNatural>
|
<betterThanNatural>true</betterThanNatural>
|
||||||
@@ -742,17 +742,17 @@
|
|||||||
<comps>
|
<comps>
|
||||||
<li Class="HediffCompProperties_GiveAbility">
|
<li Class="HediffCompProperties_GiveAbility">
|
||||||
<abilityDefs>
|
<abilityDefs>
|
||||||
<li>ARA_Pouch_Hatching_Acidling</li>
|
<li>ARA_Pouch_Hatching_Baneling</li>
|
||||||
</abilityDefs>
|
</abilityDefs>
|
||||||
</li>
|
</li>
|
||||||
</comps>
|
</comps>
|
||||||
</HediffDef>
|
</HediffDef>
|
||||||
<ThingDef ParentName="ARA_BodyPartProstheticBase">
|
<ThingDef ParentName="ARA_BodyPartProstheticBase">
|
||||||
<defName>ARA_Acidling_Pouch</defName>
|
<defName>ARA_Baneling_Pouch</defName>
|
||||||
<label>爆裂种蜕荚</label>
|
<label>爆裂种蜕荚</label>
|
||||||
<description>阿拉克涅虫族的蜕荚里装了若干只即将孵化的阿拉克涅爆裂种,只需要获得指令就会立刻破体而出攻击敌方。该手术不需要制作部件,可以直接在阿拉克涅督虫身上实施。</description>
|
<description>阿拉克涅虫族的蜕荚里装了若干只即将孵化的阿拉克涅爆裂种,只需要获得指令就会立刻破体而出攻击敌方。该手术不需要制作部件,可以直接在阿拉克涅督虫身上实施。</description>
|
||||||
<descriptionHyperlinks>
|
<descriptionHyperlinks>
|
||||||
<RecipeDef>ARA_Surgery_Install_Acidling_Pouch</RecipeDef>
|
<RecipeDef>ARA_Surgery_Install_Baneling_Pouch</RecipeDef>
|
||||||
</descriptionHyperlinks>
|
</descriptionHyperlinks>
|
||||||
<recipeMaker>
|
<recipeMaker>
|
||||||
<researchPrerequisite>ARA_Technology_4EVO</researchPrerequisite>
|
<researchPrerequisite>ARA_Technology_4EVO</researchPrerequisite>
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
<li>ARA_Surgery_Install_Reactive_Shell</li>
|
<li>ARA_Surgery_Install_Reactive_Shell</li>
|
||||||
<li>ARA_Surgery_Install_Strengthening_Tendon</li>
|
<li>ARA_Surgery_Install_Strengthening_Tendon</li>
|
||||||
<li>ARA_Surgery_Install_Slide_Patagium</li>
|
<li>ARA_Surgery_Install_Slide_Patagium</li>
|
||||||
<li>ARA_Surgery_Install_Acidling_Pouch</li>
|
<li>ARA_Surgery_Install_Baneling_Pouch</li>
|
||||||
<li>ARA_Surgery_Install_Tumor_Pouch</li>
|
<li>ARA_Surgery_Install_Tumor_Pouch</li>
|
||||||
<li>ARA_Surgery_Install_Internal_Circulation_Lung</li>
|
<li>ARA_Surgery_Install_Internal_Circulation_Lung</li>
|
||||||
</recipes>
|
</recipes>
|
||||||
@@ -524,6 +524,74 @@
|
|||||||
</li>
|
</li>
|
||||||
</comps>
|
</comps>
|
||||||
</ThingDef>
|
</ThingDef>
|
||||||
|
<ThingDef ParentName="ArachnaeBase_Race">
|
||||||
|
<defName>ArachnaeBase_Race_Empsuicider</defName>
|
||||||
|
<label>阿拉克涅电磁种</label>
|
||||||
|
<description>阿拉克涅辅虫之一,智力低下,一般以自杀式袭击的方式伤害敌军,靠近敌人后就会释放EMP瘫痪附加的机械族,如果其监管者督虫处于征召状态,则会跟随督虫一起行动。</description>
|
||||||
|
<race>
|
||||||
|
<thinkTreeMain>ARA_Insect_Baneling_Thinktree</thinkTreeMain>
|
||||||
|
<baseBodySize>0.35</baseBodySize>
|
||||||
|
<!-- <hasCorpse>false</hasCorpse> -->
|
||||||
|
<body>BeetleLikeWithClaw</body>
|
||||||
|
<deathAction Class="DeathActionProperties_Vanish">
|
||||||
|
<workerClass>DeathActionWorker_Vanish</workerClass>
|
||||||
|
<filth>Filth_Slime</filth>
|
||||||
|
<filthCountRange>1~3</filthCountRange>
|
||||||
|
</deathAction>
|
||||||
|
</race>
|
||||||
|
<statBases>
|
||||||
|
<MoveSpeed>6.6</MoveSpeed>
|
||||||
|
</statBases>
|
||||||
|
<comps>
|
||||||
|
<li Class="ArachnaeSwarm.CompProperties_AdvancedTraining">
|
||||||
|
<trainables>
|
||||||
|
<li>
|
||||||
|
<trainable>Obedience</trainable>
|
||||||
|
<trainInstantly>true</trainInstantly>
|
||||||
|
<setWanted>true</setWanted>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<trainable>Release</trainable>
|
||||||
|
<trainInstantly>true</trainInstantly>
|
||||||
|
<setWanted>true</setWanted>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<trainable>Rescue</trainable>
|
||||||
|
<trainInstantly>true</trainInstantly>
|
||||||
|
<setWanted>true</setWanted>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<trainable>Tameness</trainable>
|
||||||
|
<trainInstantly>true</trainInstantly>
|
||||||
|
<setWanted>true</setWanted>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<trainable>AttackTarget</trainable>
|
||||||
|
<trainInstantly>true</trainInstantly>
|
||||||
|
<setWanted>true</setWanted>
|
||||||
|
</li>
|
||||||
|
</trainables>
|
||||||
|
<disableAllSkillDecay>true</disableAllSkillDecay> <!-- 阻止这个动物的所有技能衰减 -->
|
||||||
|
</li>
|
||||||
|
<li Class="ArachnaeSwarm.CompProperties_HunterExplosion">
|
||||||
|
<explosionRadius>6</explosionRadius> <!-- Mapped from smokeRadius -->
|
||||||
|
<explosionDamageType>EMP</explosionDamageType>
|
||||||
|
<explosionDamageAmount>65</explosionDamageAmount>
|
||||||
|
<armorPenetration>2</armorPenetration>
|
||||||
|
<explosionSound>Explosion_EMP</explosionSound>
|
||||||
|
<!-- <postExplosionSpawnThingDef>ARA_AcidGasCloud</postExplosionSpawnThingDef>
|
||||||
|
<postExplosionSpawnChance>1</postExplosionSpawnChance>
|
||||||
|
<postExplosionSpawnThingCount>1</postExplosionSpawnThingCount> -->
|
||||||
|
</li>
|
||||||
|
<li Class="ArachnaeSwarm.CompProperties_HediffGiver">
|
||||||
|
<hediffs>
|
||||||
|
<li>ARA_HiveMindWorker</li>
|
||||||
|
</hediffs>
|
||||||
|
<addChance>1.0</addChance>
|
||||||
|
<allowDuplicates>false</allowDuplicates>
|
||||||
|
</li>
|
||||||
|
</comps>
|
||||||
|
</ThingDef>
|
||||||
<ThingDef ParentName="ArachnaeBase_Race">
|
<ThingDef ParentName="ArachnaeBase_Race">
|
||||||
<defName>ArachnaeBase_Race_Skyhive</defName>
|
<defName>ArachnaeBase_Race_Skyhive</defName>
|
||||||
<label>阿拉克涅天巢种</label>
|
<label>阿拉克涅天巢种</label>
|
||||||
@@ -608,6 +676,80 @@
|
|||||||
</li>
|
</li>
|
||||||
</comps>
|
</comps>
|
||||||
</ThingDef>
|
</ThingDef>
|
||||||
|
<ThingDef ParentName="ArachnaeBase_Race">
|
||||||
|
<defName>ArachnaeBase_Race_Locust</defName>
|
||||||
|
<label>阿拉克涅天巢种</label>
|
||||||
|
<description>阿拉克涅辅虫之一,拥有贴地飞行的能力,无论是攻击还是移动速度非常快。</description>
|
||||||
|
<race>
|
||||||
|
<thinkTreeMain>ARA_Insect_Locust_Thinktree</thinkTreeMain>
|
||||||
|
<baseBodySize>0.36</baseBodySize>
|
||||||
|
<!-- <hasCorpse>false</hasCorpse> -->
|
||||||
|
<body>BeetleLikeWithClaw</body>
|
||||||
|
<deathAction Class="DeathActionProperties_Vanish">
|
||||||
|
<workerClass>DeathActionWorker_Vanish</workerClass>
|
||||||
|
<filth>Filth_Slime</filth>
|
||||||
|
<filthCountRange>1~3</filthCountRange>
|
||||||
|
</deathAction>
|
||||||
|
</race>
|
||||||
|
<statBases>
|
||||||
|
<MoveSpeed>5.5</MoveSpeed>
|
||||||
|
|
||||||
|
<ArmorRating_Blunt>0.4</ArmorRating_Blunt>
|
||||||
|
<ArmorRating_Sharp>0.4</ArmorRating_Sharp>
|
||||||
|
<ArmorRating_Heat>0.25</ArmorRating_Heat>
|
||||||
|
</statBases>
|
||||||
|
<tools Inherit="False">
|
||||||
|
<li>
|
||||||
|
<label>复合颚</label>
|
||||||
|
<capacities>
|
||||||
|
<li>Cut</li>
|
||||||
|
</capacities>
|
||||||
|
<power>3</power>
|
||||||
|
<cooldownTime>0.8</cooldownTime>
|
||||||
|
<linkedBodyPartsGroup>HeadAttackTool</linkedBodyPartsGroup>
|
||||||
|
<ensureLinkedBodyPartsGroupAlwaysUsable>true</ensureLinkedBodyPartsGroupAlwaysUsable>
|
||||||
|
</li>
|
||||||
|
</tools>
|
||||||
|
<comps>
|
||||||
|
<li Class="ArachnaeSwarm.CompProperties_AdvancedTraining">
|
||||||
|
<trainables>
|
||||||
|
<li>
|
||||||
|
<trainable>Obedience</trainable>
|
||||||
|
<trainInstantly>true</trainInstantly>
|
||||||
|
<setWanted>true</setWanted>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<trainable>Release</trainable>
|
||||||
|
<trainInstantly>true</trainInstantly>
|
||||||
|
<setWanted>true</setWanted>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<trainable>Rescue</trainable>
|
||||||
|
<trainInstantly>true</trainInstantly>
|
||||||
|
<setWanted>true</setWanted>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<trainable>Tameness</trainable>
|
||||||
|
<trainInstantly>true</trainInstantly>
|
||||||
|
<setWanted>true</setWanted>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<trainable>AttackTarget</trainable>
|
||||||
|
<trainInstantly>true</trainInstantly>
|
||||||
|
<setWanted>true</setWanted>
|
||||||
|
</li>
|
||||||
|
</trainables>
|
||||||
|
<disableAllSkillDecay>true</disableAllSkillDecay> <!-- 阻止这个动物的所有技能衰减 -->
|
||||||
|
</li>
|
||||||
|
<li Class="ArachnaeSwarm.CompProperties_HediffGiver">
|
||||||
|
<hediffs>
|
||||||
|
<li>ARA_HiveMindWorker</li>
|
||||||
|
</hediffs>
|
||||||
|
<addChance>1.0</addChance>
|
||||||
|
<allowDuplicates>false</allowDuplicates>
|
||||||
|
</li>
|
||||||
|
</comps>
|
||||||
|
</ThingDef>
|
||||||
|
|
||||||
<ToolCapacityDef>
|
<ToolCapacityDef>
|
||||||
<defName>ARA_AcidCut</defName>
|
<defName>ARA_AcidCut</defName>
|
||||||
|
|||||||
@@ -74,7 +74,7 @@
|
|||||||
</comps>
|
</comps>
|
||||||
</ThingDef>
|
</ThingDef>
|
||||||
<ThingDef ParentName="ARA_BaseDroneSwarm">
|
<ThingDef ParentName="ARA_BaseDroneSwarm">
|
||||||
<defName>ArachnaeBase_Race_Acidling</defName>
|
<defName>ArachnaeBase_Race_Baneling</defName>
|
||||||
<label>阿拉克涅爆裂种</label>
|
<label>阿拉克涅爆裂种</label>
|
||||||
<description>阿拉克涅辅虫之一,智力低下,一般以自杀式袭击的方式伤害敌军,靠近敌人后就会引爆酸囊产生危险的酸性雾气。</description>
|
<description>阿拉克涅辅虫之一,智力低下,一般以自杀式袭击的方式伤害敌军,靠近敌人后就会引爆酸囊产生危险的酸性雾气。</description>
|
||||||
<race>
|
<race>
|
||||||
@@ -112,32 +112,5 @@
|
|||||||
</li>
|
</li>
|
||||||
</tools>
|
</tools>
|
||||||
</ThingDef>
|
</ThingDef>
|
||||||
<ThingDef ParentName="ARA_BaseDroneSwarm">
|
|
||||||
<defName>ArachnaeBase_Race_Empsuicider</defName>
|
|
||||||
<label>阿拉克涅爆裂种</label>
|
|
||||||
<description>阿拉克涅辅虫之一,智力低下,一般以自杀式袭击的方式伤害敌军,靠近敌人后就会释放EMP瘫痪附加的机械族。</description>
|
|
||||||
<race>
|
|
||||||
<thinkTreeConstant>HunterDroneConstant</thinkTreeConstant>
|
|
||||||
<baseBodySize>0.25</baseBodySize>
|
|
||||||
<!-- <hasCorpse>false</hasCorpse> -->
|
|
||||||
<body>BeetleLikeWithClaw</body>
|
|
||||||
<baseHealthScale>1</baseHealthScale>
|
|
||||||
</race>
|
|
||||||
<statBases>
|
|
||||||
<MoveSpeed>6</MoveSpeed>
|
|
||||||
</statBases>
|
|
||||||
<comps>
|
|
||||||
<li Class="ArachnaeSwarm.CompProperties_HunterExplosion">
|
|
||||||
<explosionRadius>6</explosionRadius> <!-- Mapped from smokeRadius -->
|
|
||||||
<explosionDamageType>EMP</explosionDamageType>
|
|
||||||
<explosionDamageAmount>65</explosionDamageAmount>
|
|
||||||
<armorPenetration>2</armorPenetration>
|
|
||||||
<explosionSound>Explosion_EMP</explosionSound>
|
|
||||||
<!-- <postExplosionSpawnThingDef>ARA_AcidGasCloud</postExplosionSpawnThingDef>
|
|
||||||
<postExplosionSpawnChance>1</postExplosionSpawnChance>
|
|
||||||
<postExplosionSpawnThingCount>1</postExplosionSpawnThingCount> -->
|
|
||||||
</li>
|
|
||||||
</comps>
|
|
||||||
</ThingDef>
|
|
||||||
|
|
||||||
</Defs>
|
</Defs>
|
||||||
@@ -625,7 +625,7 @@
|
|||||||
<li>ARA_Surgery_Install_Reactive_Shell</li>
|
<li>ARA_Surgery_Install_Reactive_Shell</li>
|
||||||
<li>ARA_Surgery_Install_Strengthening_Tendon</li>
|
<li>ARA_Surgery_Install_Strengthening_Tendon</li>
|
||||||
<li>ARA_Surgery_Install_Slide_Patagium</li>
|
<li>ARA_Surgery_Install_Slide_Patagium</li>
|
||||||
<li>ARA_Surgery_Install_Acidling_Pouch</li>
|
<li>ARA_Surgery_Install_Baneling_Pouch</li>
|
||||||
<li>ARA_Surgery_Install_Tumor_Pouch</li>
|
<li>ARA_Surgery_Install_Tumor_Pouch</li>
|
||||||
<li>ARA_Surgery_Install_Internal_Circulation_Lung</li>
|
<li>ARA_Surgery_Install_Internal_Circulation_Lung</li>
|
||||||
</recipes>
|
</recipes>
|
||||||
|
|||||||
@@ -556,7 +556,7 @@
|
|||||||
<li>ARA_Surgery_Install_Reactive_Shell</li>
|
<li>ARA_Surgery_Install_Reactive_Shell</li>
|
||||||
<li>ARA_Surgery_Install_Strengthening_Tendon</li>
|
<li>ARA_Surgery_Install_Strengthening_Tendon</li>
|
||||||
<li>ARA_Surgery_Install_Slide_Patagium</li>
|
<li>ARA_Surgery_Install_Slide_Patagium</li>
|
||||||
<li>ARA_Surgery_Install_Acidling_Pouch</li>
|
<li>ARA_Surgery_Install_Baneling_Pouch</li>
|
||||||
<li>ARA_Surgery_Install_Tumor_Pouch</li>
|
<li>ARA_Surgery_Install_Tumor_Pouch</li>
|
||||||
<li>ARA_Surgery_Install_Internal_Circulation_Lung</li>
|
<li>ARA_Surgery_Install_Internal_Circulation_Lung</li>
|
||||||
</recipes>
|
</recipes>
|
||||||
|
|||||||
@@ -2158,7 +2158,7 @@
|
|||||||
<label>阿拉克涅磁暴种</label>
|
<label>阿拉克涅磁暴种</label>
|
||||||
<thingClass>Projectile_SpawnsPawnZeroAge</thingClass>
|
<thingClass>Projectile_SpawnsPawnZeroAge</thingClass>
|
||||||
<graphicData>
|
<graphicData>
|
||||||
<texPath>ArachnaeSwarm/Things/ARA_Acidling/BodiesEmp/Naked_Thin_north</texPath>
|
<texPath>ArachnaeSwarm/Things/ARA_Baneling/BodiesEmp/Naked_Thin_north</texPath>
|
||||||
<graphicClass>Graphic_Single</graphicClass>
|
<graphicClass>Graphic_Single</graphicClass>
|
||||||
</graphicData>
|
</graphicData>
|
||||||
<projectile>
|
<projectile>
|
||||||
|
|||||||
@@ -96,7 +96,7 @@
|
|||||||
</modExtensions>
|
</modExtensions>
|
||||||
</ThingDef>
|
</ThingDef>
|
||||||
<ThingDef ParentName="PlantBase">
|
<ThingDef ParentName="PlantBase">
|
||||||
<defName>ARA_AcidlingTrapPlant</defName>
|
<defName>ARA_BanelingTrapPlant</defName>
|
||||||
<label>爆裂巢花</label>
|
<label>爆裂巢花</label>
|
||||||
<thingClass>ArachnaeSwarm.Plant_Transforming</thingClass>
|
<thingClass>ArachnaeSwarm.Plant_Transforming</thingClass>
|
||||||
<description>一种由阿拉克涅虫群培育的真菌混合体,它会汲取菌毯的营养,在生长到一定阶段后进行变态发育,最终转换成一枚阿拉克涅爆裂茧——一种会对附近的敌军释放自杀性辅虫的特殊陷阱。</description>
|
<description>一种由阿拉克涅虫群培育的真菌混合体,它会汲取菌毯的营养,在生长到一定阶段后进行变态发育,最终转换成一枚阿拉克涅爆裂茧——一种会对附近的敌军释放自杀性辅虫的特殊陷阱。</description>
|
||||||
@@ -107,7 +107,7 @@
|
|||||||
<Nutrition>0.2</Nutrition>
|
<Nutrition>0.2</Nutrition>
|
||||||
</statBases>
|
</statBases>
|
||||||
<graphicData>
|
<graphicData>
|
||||||
<texPath>ArachnaeSwarm/Plant/ARA_AcidlingTrapPlant</texPath>
|
<texPath>ArachnaeSwarm/Plant/ARA_BanelingTrapPlant</texPath>
|
||||||
<graphicClass>Graphic_Single</graphicClass>
|
<graphicClass>Graphic_Single</graphicClass>
|
||||||
</graphicData>
|
</graphicData>
|
||||||
<selectable>true</selectable>
|
<selectable>true</selectable>
|
||||||
@@ -132,7 +132,7 @@
|
|||||||
</plant>
|
</plant>
|
||||||
<modExtensions>
|
<modExtensions>
|
||||||
<li Class="ArachnaeSwarm.PlantTransformExtension">
|
<li Class="ArachnaeSwarm.PlantTransformExtension">
|
||||||
<buildingDef>Arachnae_AcidlingTrap</buildingDef>
|
<buildingDef>Arachnae_BanelingTrap</buildingDef>
|
||||||
<transformAtGrowth>0.8</transformAtGrowth>
|
<transformAtGrowth>0.8</transformAtGrowth>
|
||||||
</li>
|
</li>
|
||||||
</modExtensions>
|
</modExtensions>
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
<li>ARA_MorphableResearchBench</li>
|
<li>ARA_MorphableResearchBench</li>
|
||||||
<li>ARANutrientDispenser</li>
|
<li>ARANutrientDispenser</li>
|
||||||
<li>ARA_WormholePortal_A</li>
|
<li>ARA_WormholePortal_A</li>
|
||||||
<li>ARA_Acidling_AutoMortar</li>
|
<li>ARA_Baneling_AutoMortar</li>
|
||||||
<li>CatastropheMissileSilo</li>
|
<li>CatastropheMissileSilo</li>
|
||||||
<li>ARA_AutoSniperCannon</li>
|
<li>ARA_AutoSniperCannon</li>
|
||||||
<li>ARA_Pawn_Ootheca</li>
|
<li>ARA_Pawn_Ootheca</li>
|
||||||
|
|||||||
@@ -198,7 +198,7 @@
|
|||||||
</ThingDef>
|
</ThingDef>
|
||||||
|
|
||||||
<ThingDef>
|
<ThingDef>
|
||||||
<defName>Arachnae_AcidlingTrap</defName>
|
<defName>Arachnae_BanelingTrap</defName>
|
||||||
<label>阿拉克涅爆裂茧</label>
|
<label>阿拉克涅爆裂茧</label>
|
||||||
<description>一种阿拉克涅休眠茧,内藏有休眠中的阿拉克涅虫族。如果靠太近则会唤醒其中的虫族。</description>
|
<description>一种阿拉克涅休眠茧,内藏有休眠中的阿拉克涅虫族。如果靠太近则会唤醒其中的虫族。</description>
|
||||||
<thingClass>ArachnaeSwarm.Building_TrapReleaseRandom</thingClass>
|
<thingClass>ArachnaeSwarm.Building_TrapReleaseRandom</thingClass>
|
||||||
@@ -228,7 +228,7 @@
|
|||||||
<MarketValue>50</MarketValue>
|
<MarketValue>50</MarketValue>
|
||||||
</statBases>
|
</statBases>
|
||||||
<graphicData>
|
<graphicData>
|
||||||
<texPath>ArachnaeSwarm/Plant/ARA_AcidlingTrapPlant</texPath>
|
<texPath>ArachnaeSwarm/Plant/ARA_BanelingTrapPlant</texPath>
|
||||||
<graphicClass>Graphic_Single</graphicClass>
|
<graphicClass>Graphic_Single</graphicClass>
|
||||||
<drawSize>1.2</drawSize>
|
<drawSize>1.2</drawSize>
|
||||||
<shadowData>
|
<shadowData>
|
||||||
@@ -242,7 +242,7 @@
|
|||||||
<detectionRadius>5</detectionRadius>
|
<detectionRadius>5</detectionRadius>
|
||||||
<countToSpawn>3</countToSpawn>
|
<countToSpawn>3</countToSpawn>
|
||||||
<pawnKinds>
|
<pawnKinds>
|
||||||
<li>ArachnaeBase_Race_Acidling</li>
|
<li>ArachnaeBase_Race_Baneling</li>
|
||||||
<!-- <li>ArachnaeBase_Race_Acid</li> -->
|
<!-- <li>ArachnaeBase_Race_Acid</li> -->
|
||||||
</pawnKinds>
|
</pawnKinds>
|
||||||
</li>
|
</li>
|
||||||
@@ -394,14 +394,14 @@
|
|||||||
</ThingDef>
|
</ThingDef>
|
||||||
<!-- Auto mortar -->
|
<!-- Auto mortar -->
|
||||||
<ThingDef ParentName="BuildingBase">
|
<ThingDef ParentName="BuildingBase">
|
||||||
<defName>ARA_Acidling_AutoMortar</defName>
|
<defName>ARA_Baneling_AutoMortar</defName>
|
||||||
<label>爆裂种投射巢组织</label>
|
<label>爆裂种投射巢组织</label>
|
||||||
<description>阿拉克涅虫族用于防御巢穴的组织之一。它由大量没有自主意识的高度特化器官共同构成,能向进犯巢穴的敌军发射多只阿拉克涅爆裂种辅虫,这些辅虫将自行寻找目标以发起自杀性袭击。作为阿拉克涅防御组织,其可以通过获取营养来自行生成补充弹药。</description>
|
<description>阿拉克涅虫族用于防御巢穴的组织之一。它由大量没有自主意识的高度特化器官共同构成,能向进犯巢穴的敌军发射多只阿拉克涅爆裂种辅虫,这些辅虫将自行寻找目标以发起自杀性袭击。作为阿拉克涅防御组织,其可以通过获取营养来自行生成补充弹药。</description>
|
||||||
<thingClass>ArachnaeSwarm.Building_TurretGunHasSpeed</thingClass>
|
<thingClass>ArachnaeSwarm.Building_TurretGunHasSpeed</thingClass>
|
||||||
<drawerType>MapMeshAndRealTime</drawerType>
|
<drawerType>MapMeshAndRealTime</drawerType>
|
||||||
<drawHighlight>true</drawHighlight>
|
<drawHighlight>true</drawHighlight>
|
||||||
<drawHighlightOnlyForHostile>true</drawHighlightOnlyForHostile>
|
<drawHighlightOnlyForHostile>true</drawHighlightOnlyForHostile>
|
||||||
<uiIconPath>ArachnaeSwarm/Building/ARA_Acidling_AutoMortar_Icon</uiIconPath>
|
<uiIconPath>ArachnaeSwarm/Building/ARA_Baneling_AutoMortar_Icon</uiIconPath>
|
||||||
<graphicData>
|
<graphicData>
|
||||||
<texPath>ArachnaeSwarm/Building/ARA_AutoSniperCannon_Base</texPath>
|
<texPath>ArachnaeSwarm/Building/ARA_AutoSniperCannon_Base</texPath>
|
||||||
<graphicClass>Graphic_Single</graphicClass>
|
<graphicClass>Graphic_Single</graphicClass>
|
||||||
@@ -481,7 +481,7 @@
|
|||||||
<buildingTags>
|
<buildingTags>
|
||||||
<li>Artillery</li>
|
<li>Artillery</li>
|
||||||
</buildingTags>
|
</buildingTags>
|
||||||
<turretGunDef>ARA_Acidling_Artillery_AutoMortar</turretGunDef>
|
<turretGunDef>ARA_Baneling_Artillery_AutoMortar</turretGunDef>
|
||||||
<turretBurstWarmupTime>10.0</turretBurstWarmupTime>
|
<turretBurstWarmupTime>10.0</turretBurstWarmupTime>
|
||||||
<turretTopDrawSize>3.0</turretTopDrawSize>
|
<turretTopDrawSize>3.0</turretTopDrawSize>
|
||||||
<relatedTerrain>
|
<relatedTerrain>
|
||||||
@@ -496,10 +496,10 @@
|
|||||||
<constructionSkillPrerequisite>8</constructionSkillPrerequisite>
|
<constructionSkillPrerequisite>8</constructionSkillPrerequisite>
|
||||||
</ThingDef>
|
</ThingDef>
|
||||||
<ThingDef ParentName="BaseArtilleryWeapon">
|
<ThingDef ParentName="BaseArtilleryWeapon">
|
||||||
<defName>ARA_Acidling_Artillery_AutoMortar</defName>
|
<defName>ARA_Baneling_Artillery_AutoMortar</defName>
|
||||||
<label>爆裂种投射巢</label>
|
<label>爆裂种投射巢</label>
|
||||||
<graphicData>
|
<graphicData>
|
||||||
<texPath>ArachnaeSwarm/Building/ARA_Acidling_Artillery_AutoMortar_Tower</texPath>
|
<texPath>ArachnaeSwarm/Building/ARA_Baneling_Artillery_AutoMortar_Tower</texPath>
|
||||||
<graphicClass>Graphic_Single</graphicClass>
|
<graphicClass>Graphic_Single</graphicClass>
|
||||||
</graphicData>
|
</graphicData>
|
||||||
<uiIconScale>1.25</uiIconScale>
|
<uiIconScale>1.25</uiIconScale>
|
||||||
@@ -509,7 +509,7 @@
|
|||||||
<verbs>
|
<verbs>
|
||||||
<li>
|
<li>
|
||||||
<verbClass>ArachnaeSwarm.Verb_ShootWithOffset</verbClass>
|
<verbClass>ArachnaeSwarm.Verb_ShootWithOffset</verbClass>
|
||||||
<defaultProjectile>ArachnaeBase_Race_Acidling_Proj</defaultProjectile>
|
<defaultProjectile>ArachnaeBase_Race_Baneling_Proj</defaultProjectile>
|
||||||
<ai_AvoidFriendlyFireRadius>3</ai_AvoidFriendlyFireRadius>
|
<ai_AvoidFriendlyFireRadius>3</ai_AvoidFriendlyFireRadius>
|
||||||
<warmupTime>2</warmupTime>
|
<warmupTime>2</warmupTime>
|
||||||
<range>500</range>
|
<range>500</range>
|
||||||
@@ -534,16 +534,16 @@
|
|||||||
</modExtensions>
|
</modExtensions>
|
||||||
</ThingDef>
|
</ThingDef>
|
||||||
<ThingDef ParentName="BaseGrenadeProjectile">
|
<ThingDef ParentName="BaseGrenadeProjectile">
|
||||||
<defName>ArachnaeBase_Race_Acidling_Proj</defName>
|
<defName>ArachnaeBase_Race_Baneling_Proj</defName>
|
||||||
<label>阿拉克涅爆裂种</label>
|
<label>阿拉克涅爆裂种</label>
|
||||||
<thingClass>Projectile_SpawnsPawnZeroAge</thingClass>
|
<thingClass>Projectile_SpawnsPawnZeroAge</thingClass>
|
||||||
<graphicData>
|
<graphicData>
|
||||||
<texPath>ArachnaeSwarm/Things/ARA_Acidling/Bodies/Naked_Thin</texPath>
|
<texPath>ArachnaeSwarm/Things/ARA_Baneling/Bodies/Naked_Thin</texPath>
|
||||||
<graphicClass>Graphic_Multi</graphicClass>
|
<graphicClass>Graphic_Multi</graphicClass>
|
||||||
</graphicData>
|
</graphicData>
|
||||||
<projectile>
|
<projectile>
|
||||||
<speed>41</speed>
|
<speed>41</speed>
|
||||||
<spawnsPawnKind>ArachnaeBase_Race_Acidling</spawnsPawnKind>
|
<spawnsPawnKind>ArachnaeBase_Race_Baneling</spawnsPawnKind>
|
||||||
<tryAdjacentFreeSpaces>true</tryAdjacentFreeSpaces>
|
<tryAdjacentFreeSpaces>true</tryAdjacentFreeSpaces>
|
||||||
<damageDef>ARA_AcidBurn</damageDef>
|
<damageDef>ARA_AcidBurn</damageDef>
|
||||||
<damageAmountBase>10</damageAmountBase>
|
<damageAmountBase>10</damageAmountBase>
|
||||||
|
|||||||
@@ -1102,6 +1102,26 @@
|
|||||||
</subNodes>
|
</subNodes>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<!-- 特殊处理——非生产者生产会使用单元逻辑 -->
|
||||||
|
<li Class="ThinkNode_ConditionalOfPlayerFaction">
|
||||||
|
<subNodes>
|
||||||
|
<li Class="ArachnaeSwarm.ThinkNode_ConditionalNotProducedByMechCarrier">
|
||||||
|
<subNodes>
|
||||||
|
<li Class="JobGiver_AIFightEnemies">
|
||||||
|
<targetAcquireRadius>100</targetAcquireRadius>
|
||||||
|
<targetKeepRadius>100</targetKeepRadius>
|
||||||
|
</li>
|
||||||
|
<li Class="JobGiver_AITrashColonyClose" />
|
||||||
|
<li Class="JobGiver_AITrashBuildingsDistant" />
|
||||||
|
<li Class="JobGiver_AIGotoNearestHostile" />
|
||||||
|
<li Class="JobGiver_AITrashBuildingsDistant">
|
||||||
|
<attackAllInert>true</attackAllInert>
|
||||||
|
</li>
|
||||||
|
<li Class="JobGiver_WanderAnywhere" />
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
<!-- 特殊处理——如果生产者被征召会跟随pawn -->
|
<!-- 特殊处理——如果生产者被征召会跟随pawn -->
|
||||||
<li Class="ThinkNode_ConditionalOfPlayerFaction">
|
<li Class="ThinkNode_ConditionalOfPlayerFaction">
|
||||||
<subNodes>
|
<subNodes>
|
||||||
@@ -1442,6 +1462,26 @@
|
|||||||
</subNodes>
|
</subNodes>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<!-- 特殊处理——非生产者生产会使用单元逻辑 -->
|
||||||
|
<li Class="ThinkNode_ConditionalOfPlayerFaction">
|
||||||
|
<subNodes>
|
||||||
|
<li Class="ArachnaeSwarm.ThinkNode_ConditionalNotProducedByMechCarrier">
|
||||||
|
<subNodes>
|
||||||
|
<li Class="JobGiver_AIFightEnemies">
|
||||||
|
<targetAcquireRadius>100</targetAcquireRadius>
|
||||||
|
<targetKeepRadius>100</targetKeepRadius>
|
||||||
|
</li>
|
||||||
|
<li Class="JobGiver_AITrashColonyClose" />
|
||||||
|
<li Class="JobGiver_AITrashBuildingsDistant" />
|
||||||
|
<li Class="JobGiver_AIGotoNearestHostile" />
|
||||||
|
<li Class="JobGiver_AITrashBuildingsDistant">
|
||||||
|
<attackAllInert>true</attackAllInert>
|
||||||
|
</li>
|
||||||
|
<li Class="JobGiver_WanderAnywhere" />
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
<!-- 特殊处理——如果生产者被征召会跟随pawn -->
|
<!-- 特殊处理——如果生产者被征召会跟随pawn -->
|
||||||
<li Class="ThinkNode_ConditionalOfPlayerFaction">
|
<li Class="ThinkNode_ConditionalOfPlayerFaction">
|
||||||
<subNodes>
|
<subNodes>
|
||||||
@@ -2305,6 +2345,26 @@
|
|||||||
</subNodes>
|
</subNodes>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<!-- 特殊处理——非生产者生产会使用单元逻辑 -->
|
||||||
|
<li Class="ThinkNode_ConditionalOfPlayerFaction">
|
||||||
|
<subNodes>
|
||||||
|
<li Class="ArachnaeSwarm.ThinkNode_ConditionalNotProducedByMechCarrier">
|
||||||
|
<subNodes>
|
||||||
|
<li Class="JobGiver_AIFightEnemies">
|
||||||
|
<targetAcquireRadius>100</targetAcquireRadius>
|
||||||
|
<targetKeepRadius>100</targetKeepRadius>
|
||||||
|
</li>
|
||||||
|
<li Class="JobGiver_AITrashColonyClose" />
|
||||||
|
<li Class="JobGiver_AITrashBuildingsDistant" />
|
||||||
|
<li Class="JobGiver_AIGotoNearestHostile" />
|
||||||
|
<li Class="JobGiver_AITrashBuildingsDistant">
|
||||||
|
<attackAllInert>true</attackAllInert>
|
||||||
|
</li>
|
||||||
|
<li Class="JobGiver_WanderAnywhere" />
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
<!-- 特殊处理——如果生产者被征召会跟随pawn -->
|
<!-- 特殊处理——如果生产者被征召会跟随pawn -->
|
||||||
<li Class="ThinkNode_ConditionalOfPlayerFaction">
|
<li Class="ThinkNode_ConditionalOfPlayerFaction">
|
||||||
<subNodes>
|
<subNodes>
|
||||||
@@ -2559,6 +2619,26 @@
|
|||||||
</subNodes>
|
</subNodes>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<!-- 特殊处理——非生产者生产会使用单元逻辑 -->
|
||||||
|
<li Class="ThinkNode_ConditionalOfPlayerFaction">
|
||||||
|
<subNodes>
|
||||||
|
<li Class="ArachnaeSwarm.ThinkNode_ConditionalNotProducedByMechCarrier">
|
||||||
|
<subNodes>
|
||||||
|
<li Class="JobGiver_AIFightEnemies">
|
||||||
|
<targetAcquireRadius>100</targetAcquireRadius>
|
||||||
|
<targetKeepRadius>100</targetKeepRadius>
|
||||||
|
</li>
|
||||||
|
<li Class="JobGiver_AITrashColonyClose" />
|
||||||
|
<li Class="JobGiver_AITrashBuildingsDistant" />
|
||||||
|
<li Class="JobGiver_AIGotoNearestHostile" />
|
||||||
|
<li Class="JobGiver_AITrashBuildingsDistant">
|
||||||
|
<attackAllInert>true</attackAllInert>
|
||||||
|
</li>
|
||||||
|
<li Class="JobGiver_WanderAnywhere" />
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
<!-- 特殊处理——如果生产者被征召会跟随pawn -->
|
<!-- 特殊处理——如果生产者被征召会跟随pawn -->
|
||||||
<li Class="ThinkNode_ConditionalOfPlayerFaction">
|
<li Class="ThinkNode_ConditionalOfPlayerFaction">
|
||||||
<subNodes>
|
<subNodes>
|
||||||
@@ -2691,6 +2771,313 @@
|
|||||||
</subNodes>
|
</subNodes>
|
||||||
</thinkRoot>
|
</thinkRoot>
|
||||||
</ThinkTreeDef>
|
</ThinkTreeDef>
|
||||||
|
<ThinkTreeDef>
|
||||||
|
<defName>ARA_Insect_Locust_Thinktree</defName>
|
||||||
|
<thinkRoot Class="ThinkNode_Priority">
|
||||||
|
<subNodes>
|
||||||
|
<!-- Keep lying down if we have to -->
|
||||||
|
<li Class="ThinkNode_ConditionalMustKeepLyingDown">
|
||||||
|
<subNodes>
|
||||||
|
<!-- Do a queued job if possible -->
|
||||||
|
<li Class="ThinkNode_QueuedJob">
|
||||||
|
<inBedOnly>true</inBedOnly>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- Keep lying down -->
|
||||||
|
<li Class="JobGiver_KeepLyingDown"/>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li Class="ThinkNode_Subtree">
|
||||||
|
<treeDef>Downed</treeDef>
|
||||||
|
</li>
|
||||||
|
<li Class="ThinkNode_Subtree">
|
||||||
|
<treeDef>BurningResponse</treeDef>
|
||||||
|
</li>
|
||||||
|
<li Class="ThinkNode_Subtree">
|
||||||
|
<treeDef>MentalStateCritical</treeDef>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- React to close melee threat -->
|
||||||
|
<li Class="JobGiver_ReactToCloseMeleeThreat">
|
||||||
|
<maxDistance>2.9</maxDistance>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- Do a queued job -->
|
||||||
|
<li Class="ThinkNode_QueuedJob"/>
|
||||||
|
|
||||||
|
<!-- Mental state non critical -->
|
||||||
|
<li Class="ThinkNode_Subtree">
|
||||||
|
<treeDef>MentalStateNonCritical</treeDef>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- Forced goto -->
|
||||||
|
<li Class="ThinkNode_ConditionalForcedGoto">
|
||||||
|
<subNodes>
|
||||||
|
<li Class="ThinkNode_Tagger">
|
||||||
|
<tagToGive>Misc</tagToGive>
|
||||||
|
<subNodes>
|
||||||
|
<li Class="JobGiver_ForcedGoto"/>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- Behavior when roped -->
|
||||||
|
<li Class="ThinkNode_Subtree">
|
||||||
|
<treeDef>RopedPawn</treeDef>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- Lord directives -->
|
||||||
|
<li Class="ThinkNode_Subtree">
|
||||||
|
<treeDef>LordDuty</treeDef>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li Class="ThinkNode_ConditionalHasFaction">
|
||||||
|
<invert>true</invert>
|
||||||
|
<subNodes>
|
||||||
|
<!-- Wild insects with no lord will fight nearby enemies -->
|
||||||
|
<li Class="JobGiver_AIFightEnemies">
|
||||||
|
<targetAcquireRadius>30</targetAcquireRadius> <!-- Same as DefendAndExpandHive -->
|
||||||
|
<targetKeepRadius>35</targetKeepRadius>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- Wild insects leave map in some conditions -->
|
||||||
|
<li Class="ThinkNode_Subtree">
|
||||||
|
<treeDef>LeaveIfWrongSeason</treeDef>
|
||||||
|
</li>
|
||||||
|
<li Class="ThinkNode_Subtree">
|
||||||
|
<treeDef>LeaveIfStarving</treeDef>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- Wild insects randomly leave map -->
|
||||||
|
<li Class="ThinkNode_ChancePerHour_Constant">
|
||||||
|
<mtbDays>60</mtbDays>
|
||||||
|
<subNodes>
|
||||||
|
<li Class="ThinkNode_Tagger">
|
||||||
|
<tagToGive>Misc</tagToGive>
|
||||||
|
<subNodes>
|
||||||
|
<li Class="JobGiver_ExitMapRandom">
|
||||||
|
<defaultLocomotion>Walk</defaultLocomotion>
|
||||||
|
</li>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- Insects of a faction that's not the players without a lord leave randomly -->
|
||||||
|
<li Class="ThinkNode_ConditionalOfPlayerFaction">
|
||||||
|
<invert>true</invert>
|
||||||
|
<subNodes>
|
||||||
|
<li Class="ThinkNode_ConditionalHasFaction">
|
||||||
|
<subNodes>
|
||||||
|
<li Class="ThinkNode_ConditionalNoLord">
|
||||||
|
<subNodes>
|
||||||
|
<li Class="ThinkNode_ChancePerHour_Constant">
|
||||||
|
<mtbDays>60</mtbDays>
|
||||||
|
<subNodes>
|
||||||
|
<li Class="ThinkNode_Tagger">
|
||||||
|
<tagToGive>Misc</tagToGive>
|
||||||
|
<subNodes>
|
||||||
|
<li Class="JobGiver_ExitMapRandom">
|
||||||
|
<defaultLocomotion>Walk</defaultLocomotion>
|
||||||
|
</li>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- 特殊处理——非生产者生产会使用单元逻辑 -->
|
||||||
|
<li Class="ThinkNode_ConditionalOfPlayerFaction">
|
||||||
|
<subNodes>
|
||||||
|
<li Class="ArachnaeSwarm.ThinkNode_ConditionalNotProducedByMechCarrier">
|
||||||
|
<subNodes>
|
||||||
|
<li Class="JobGiver_FleeForDistance">
|
||||||
|
<enemyDistToFleeRange>2.9~7.9</enemyDistToFleeRange>
|
||||||
|
<fleeDistRange>13.5~20</fleeDistRange>
|
||||||
|
</li>
|
||||||
|
<!-- React to close melee threat -->
|
||||||
|
<li Class="JobGiver_ReactToCloseMeleeThreat">
|
||||||
|
<maxDistance>2.9</maxDistance>
|
||||||
|
</li>
|
||||||
|
<!-- Fire spikes at distant enemies -->
|
||||||
|
<li Class="JobGiver_AIAbilityFight">
|
||||||
|
<targetAcquireRadius>65</targetAcquireRadius>
|
||||||
|
<targetKeepRadius>72</targetKeepRadius>
|
||||||
|
<skipIfCantTargetNow>true</skipIfCantTargetNow>
|
||||||
|
<ability>ARA_Locust_Needle_Fire</ability>
|
||||||
|
<allowTurrets>true</allowTurrets>
|
||||||
|
<needLOSToAcquireNonPawnTargets>true</needLOSToAcquireNonPawnTargets>
|
||||||
|
</li>
|
||||||
|
<li Class="JobGiver_AITrashColonyClose" />
|
||||||
|
<li Class="JobGiver_AITrashBuildingsDistant" />
|
||||||
|
<li Class="JobGiver_AIGotoNearestHostile" />
|
||||||
|
<li Class="JobGiver_AITrashBuildingsDistant">
|
||||||
|
<attackAllInert>true</attackAllInert>
|
||||||
|
</li>
|
||||||
|
<li Class="JobGiver_WanderAnywhere" />
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
<!-- 特殊处理——如果生产者被征召会跟随pawn -->
|
||||||
|
<li Class="ThinkNode_ConditionalOfPlayerFaction">
|
||||||
|
<subNodes>
|
||||||
|
<li Class="ArachnaeSwarm.ThinkNode_ConditionalShouldFollowProducer">
|
||||||
|
<subNodes>
|
||||||
|
<!-- <li Class="ArachnaeSwarm.JobGiver_AIDefendProducer">
|
||||||
|
<attackMeleeThreatEvenIfNotHostile>true</attackMeleeThreatEvenIfNotHostile>
|
||||||
|
<defendRadius>100</defendRadius>
|
||||||
|
</li> -->
|
||||||
|
<!-- Keep distance -->
|
||||||
|
<li Class="JobGiver_FleeForDistance">
|
||||||
|
<enemyDistToFleeRange>2.9~7.9</enemyDistToFleeRange>
|
||||||
|
<fleeDistRange>13.5~20</fleeDistRange>
|
||||||
|
</li>
|
||||||
|
<!-- React to close melee threat -->
|
||||||
|
<li Class="JobGiver_ReactToCloseMeleeThreat">
|
||||||
|
<maxDistance>2.9</maxDistance>
|
||||||
|
</li>
|
||||||
|
<!-- Fire spikes at distant enemies -->
|
||||||
|
<li Class="JobGiver_AIAbilityFight">
|
||||||
|
<targetAcquireRadius>65</targetAcquireRadius>
|
||||||
|
<targetKeepRadius>72</targetKeepRadius>
|
||||||
|
<skipIfCantTargetNow>true</skipIfCantTargetNow>
|
||||||
|
<ability>ARA_Locust_Needle_Fire</ability>
|
||||||
|
<allowTurrets>true</allowTurrets>
|
||||||
|
<needLOSToAcquireNonPawnTargets>true</needLOSToAcquireNonPawnTargets>
|
||||||
|
</li>
|
||||||
|
<li Class="ArachnaeSwarm.JobGiver_AIFollowProducer"/>
|
||||||
|
<li Class="ArachnaeSwarm.JobGiver_WanderNearProducer"/>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- Take care of critical needs (below rescue - so heroic!)-->
|
||||||
|
|
||||||
|
<li Class="ThinkNode_Tagger">
|
||||||
|
<tagToGive>RestingForMedicalReasons</tagToGive>
|
||||||
|
<subNodes>
|
||||||
|
<li Class="JobGiver_PatientGoToBed"/>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li Class="JobGiver_SeekAllowedArea"/>
|
||||||
|
<li Class="JobGiver_SeekSafeTemperature"/>
|
||||||
|
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- Satisfy basic needs -->
|
||||||
|
<li Class="ThinkNode_Subtree">
|
||||||
|
<treeDef>SatisfyBasicNeeds</treeDef>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- Tame animal: wander near colony if possible -->
|
||||||
|
<li Class="ThinkNode_ConditionalOfPlayerFaction">
|
||||||
|
<subNodes>
|
||||||
|
<li Class="ThinkNode_Tagger">
|
||||||
|
<tagToGive>Idle</tagToGive>
|
||||||
|
<subNodes>
|
||||||
|
<!-- Wander near your current position if in hostile map -->
|
||||||
|
<li Class="ThinkNode_ConditionalAnyEnemyInHostileMap">
|
||||||
|
<subNodes>
|
||||||
|
<li Class="JobGiver_WanderAnywhere">
|
||||||
|
<maxDanger>None</maxDanger>
|
||||||
|
<ticksBetweenWandersRange>160~300</ticksBetweenWandersRange>
|
||||||
|
</li>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li Class="ThinkNode_ConditionalRoamer">
|
||||||
|
<subNodes>
|
||||||
|
<li Class="JobGiver_WanderInRoofedCellsInPen">
|
||||||
|
<maxDanger>None</maxDanger>
|
||||||
|
<ticksBetweenWandersRange>160~300</ticksBetweenWandersRange>
|
||||||
|
<expiryInterval>1200</expiryInterval>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- tame roamers should not wander too far, and if unenclosed wander near a suitable pen marker 10% of the time -->
|
||||||
|
<li Class="ThinkNode_ConditionalRandom">
|
||||||
|
<chance>0.1</chance>
|
||||||
|
<subNodes>
|
||||||
|
<li Class="JobGiver_WanderInPen">
|
||||||
|
<maxDanger>None</maxDanger>
|
||||||
|
<ticksBetweenWandersRange>160~300</ticksBetweenWandersRange>
|
||||||
|
<expiryInterval>1200</expiryInterval>
|
||||||
|
</li>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li Class="JobGiver_WanderAnywhere">
|
||||||
|
<maxDanger>None</maxDanger>
|
||||||
|
<ticksBetweenWandersRange>160~300</ticksBetweenWandersRange>
|
||||||
|
</li>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- Wander near colony -->
|
||||||
|
<li Class="JobGiver_WanderColony">
|
||||||
|
<maxDanger>None</maxDanger>
|
||||||
|
<ticksBetweenWandersRange>160~300</ticksBetweenWandersRange>
|
||||||
|
</li>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- Of neutral faction: rest and then exit the map -->
|
||||||
|
<li Class="ThinkNode_ConditionalNonPlayerNonHostileFaction">
|
||||||
|
<subNodes>
|
||||||
|
<li Class="ThinkNode_Tagger">
|
||||||
|
<tagToGive>RestingForMedicalReasons</tagToGive>
|
||||||
|
<subNodes>
|
||||||
|
<li Class="JobGiver_PatientGoToBed" />
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li Class="ThinkNode_Tagger">
|
||||||
|
<tagToGive>Misc</tagToGive>
|
||||||
|
<subNodes>
|
||||||
|
<li Class="JobGiver_ExitMapBest">
|
||||||
|
<defaultLocomotion>Walk</defaultLocomotion>
|
||||||
|
</li>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- Wander -->
|
||||||
|
<li Class="ThinkNode_Tagger">
|
||||||
|
<tagToGive>Idle</tagToGive>
|
||||||
|
<subNodes>
|
||||||
|
<li Class="ThinkNode_ConditionalHerdAnimal">
|
||||||
|
<subNodes>
|
||||||
|
<li Class="JobGiver_WanderHerd">
|
||||||
|
<maxDanger>Deadly</maxDanger>
|
||||||
|
<ticksBetweenWandersRange>160~300</ticksBetweenWandersRange>
|
||||||
|
</li>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li Class="JobGiver_WanderAnywhere">
|
||||||
|
<maxDanger>Deadly</maxDanger>
|
||||||
|
<ticksBetweenWandersRange>160~300</ticksBetweenWandersRange>
|
||||||
|
</li>
|
||||||
|
</subNodes>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li Class="JobGiver_IdleError"/>
|
||||||
|
</subNodes>
|
||||||
|
</thinkRoot>
|
||||||
|
</ThinkTreeDef>
|
||||||
|
|
||||||
<ThinkTreeDef>
|
<ThinkTreeDef>
|
||||||
<defName>ARA_Humanlike</defName> <!-- 更改defName以避免与原版Humanlike冲突 -->
|
<defName>ARA_Humanlike</defName> <!-- 更改defName以避免与原版Humanlike冲突 -->
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 177 KiB After Width: | Height: | Size: 177 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
|
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
|
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 88 KiB |
@@ -1,21 +1,41 @@
|
|||||||
{
|
{
|
||||||
"Version": 1,
|
"Version": 1,
|
||||||
"WorkspaceRootPath": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
|
"WorkspaceRootPath": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
|
||||||
"Documents": [
|
"Documents": [
|
||||||
{
|
{
|
||||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\pawn_comps\\ara_flight\\pawn_flighttrackerpatches.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\\buildings\\building_corpsevat\\building_corpsevat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
|
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_corpsevat\\building_corpsevat.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\\buildings\\building_corpsevat\\jobdriver_haulcorpsetovat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
|
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_corpsevat\\jobdriver_haulcorpsetovat.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\\buildings\\building_dormancyvat\\building_dormancyvat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
|
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_dormancyvat\\building_dormancyvat.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\\buildings\\building_corpsevat\\corpsevatextension.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
|
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_corpsevat\\corpsevatextension.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\\jobs\\jobdriver_followproducer\\thinknode_conditionalnotproducedbymechcarrier.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
|
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_followproducer\\thinknode_conditionalnotproducedbymechcarrier.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_flight\\pawn_flighttrackerpatches.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_flight\\pawn_flighttrackerpatches.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_flight\\pawn_flighttrackerpatches.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\\pawn_comps\\ara_flight\\compproperties_pawnflight.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_flight\\compproperties_pawnflight.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_flight\\compproperties_pawnflight.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_flight\\compproperties_pawnflight.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\\hediffs\\ara_productionqueue\\hediffcompproperties_productionqueue.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\\hediffs\\ara_productionqueue\\hediffcompproperties_productionqueue.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_productionqueue\\hediffcompproperties_productionqueue.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_productionqueue\\hediffcompproperties_productionqueue.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\\hediffs\\ara_productionqueue\\hediffcomp_productionqueue.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\\hediffs\\ara_productionqueue\\hediffcomp_productionqueue.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_productionqueue\\hediffcomp_productionqueue.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_productionqueue\\hediffcomp_productionqueue.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -26,19 +46,84 @@
|
|||||||
"DocumentGroups": [
|
"DocumentGroups": [
|
||||||
{
|
{
|
||||||
"DockedWidth": 200,
|
"DockedWidth": 200,
|
||||||
"SelectedChildIndex": 1,
|
"SelectedChildIndex": 2,
|
||||||
"Children": [
|
"Children": [
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 3,
|
||||||
|
"Title": "CorpseVatExtension.cs",
|
||||||
|
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CorpseVat\\CorpseVatExtension.cs",
|
||||||
|
"RelativeDocumentMoniker": "Buildings\\Building_CorpseVat\\CorpseVatExtension.cs",
|
||||||
|
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CorpseVat\\CorpseVatExtension.cs",
|
||||||
|
"RelativeToolTip": "Buildings\\Building_CorpseVat\\CorpseVatExtension.cs",
|
||||||
|
"ViewState": "AgIAAAYAAAAAAAAAAAAAABkAAAAIAAAAAAAAAA==",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
|
"WhenOpened": "2026-01-23T04:01:21.774Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 1,
|
||||||
|
"Title": "JobDriver_HaulCorpseToVat.cs",
|
||||||
|
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CorpseVat\\JobDriver_HaulCorpseToVat.cs",
|
||||||
|
"RelativeDocumentMoniker": "Buildings\\Building_CorpseVat\\JobDriver_HaulCorpseToVat.cs",
|
||||||
|
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CorpseVat\\JobDriver_HaulCorpseToVat.cs",
|
||||||
|
"RelativeToolTip": "Buildings\\Building_CorpseVat\\JobDriver_HaulCorpseToVat.cs",
|
||||||
|
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAAA0AAAAAAAAAA==",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
|
"WhenOpened": "2026-01-23T04:01:20.292Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 0,
|
||||||
|
"Title": "Building_CorpseVat.cs",
|
||||||
|
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CorpseVat\\Building_CorpseVat.cs",
|
||||||
|
"RelativeDocumentMoniker": "Buildings\\Building_CorpseVat\\Building_CorpseVat.cs",
|
||||||
|
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CorpseVat\\Building_CorpseVat.cs",
|
||||||
|
"RelativeToolTip": "Buildings\\Building_CorpseVat\\Building_CorpseVat.cs",
|
||||||
|
"ViewState": "AgIAAEYBAAAAAAAAAAAawFgBAAAMAAAAAAAAAA==",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
|
"WhenOpened": "2026-01-23T04:01:18.535Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 2,
|
||||||
|
"Title": "Building_DormancyVat.cs",
|
||||||
|
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_DormancyVat\\Building_DormancyVat.cs",
|
||||||
|
"RelativeDocumentMoniker": "Buildings\\Building_DormancyVat\\Building_DormancyVat.cs",
|
||||||
|
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_DormancyVat\\Building_DormancyVat.cs",
|
||||||
|
"RelativeToolTip": "Buildings\\Building_DormancyVat\\Building_DormancyVat.cs",
|
||||||
|
"ViewState": "AgIAACUAAAAAAAAAAIA8wDcAAAAAAAAAAAAAAA==",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
|
"WhenOpened": "2026-01-23T03:49:32.234Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"$type": "Bookmark",
|
"$type": "Bookmark",
|
||||||
"Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
|
"Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 0,
|
"DocumentIndex": 4,
|
||||||
|
"Title": "ThinkNode_ConditionalNotProducedByMechCarrier.cs",
|
||||||
|
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FollowProducer\\ThinkNode_ConditionalNotProducedByMechCarrier.cs",
|
||||||
|
"RelativeDocumentMoniker": "Jobs\\JobDriver_FollowProducer\\ThinkNode_ConditionalNotProducedByMechCarrier.cs",
|
||||||
|
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FollowProducer\\ThinkNode_ConditionalNotProducedByMechCarrier.cs",
|
||||||
|
"RelativeToolTip": "Jobs\\JobDriver_FollowProducer\\ThinkNode_ConditionalNotProducedByMechCarrier.cs",
|
||||||
|
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAA+AAAAAAAAAA==",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
|
"WhenOpened": "2026-01-23T02:44:35.619Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 5,
|
||||||
"Title": "Pawn_FlightTrackerPatches.cs",
|
"Title": "Pawn_FlightTrackerPatches.cs",
|
||||||
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_Flight\\Pawn_FlightTrackerPatches.cs",
|
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_Flight\\Pawn_FlightTrackerPatches.cs",
|
||||||
"RelativeDocumentMoniker": "Pawn_Comps\\ARA_Flight\\Pawn_FlightTrackerPatches.cs",
|
"RelativeDocumentMoniker": "Pawn_Comps\\ARA_Flight\\Pawn_FlightTrackerPatches.cs",
|
||||||
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_Flight\\Pawn_FlightTrackerPatches.cs",
|
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_Flight\\Pawn_FlightTrackerPatches.cs",
|
||||||
"RelativeToolTip": "Pawn_Comps\\ARA_Flight\\Pawn_FlightTrackerPatches.cs",
|
"RelativeToolTip": "Pawn_Comps\\ARA_Flight\\Pawn_FlightTrackerPatches.cs",
|
||||||
"ViewState": "AgIAAB0AAAAAAAAAAAAuwEsAAAAfAAAAAAAAAA==",
|
"ViewState": "AgIAAB0AAAAAAAAAAAAuwEsAAAAfAAAAAAAAAA==",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
@@ -47,42 +132,39 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 1,
|
"DocumentIndex": 6,
|
||||||
"Title": "CompProperties_PawnFlight.cs",
|
"Title": "CompProperties_PawnFlight.cs",
|
||||||
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_Flight\\CompProperties_PawnFlight.cs",
|
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_Flight\\CompProperties_PawnFlight.cs",
|
||||||
"RelativeDocumentMoniker": "Pawn_Comps\\ARA_Flight\\CompProperties_PawnFlight.cs",
|
"RelativeDocumentMoniker": "Pawn_Comps\\ARA_Flight\\CompProperties_PawnFlight.cs",
|
||||||
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_Flight\\CompProperties_PawnFlight.cs",
|
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_Flight\\CompProperties_PawnFlight.cs",
|
||||||
"RelativeToolTip": "Pawn_Comps\\ARA_Flight\\CompProperties_PawnFlight.cs",
|
"RelativeToolTip": "Pawn_Comps\\ARA_Flight\\CompProperties_PawnFlight.cs",
|
||||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAeAAAAAAAAAA==",
|
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAeAAAAAAAAAA==",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
"WhenOpened": "2026-01-22T14:02:45.434Z",
|
"WhenOpened": "2026-01-22T14:02:45.434Z"
|
||||||
"EditorCaption": ""
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 3,
|
"DocumentIndex": 8,
|
||||||
"Title": "HediffComp_ProductionQueue.cs",
|
"Title": "HediffComp_ProductionQueue.cs",
|
||||||
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_ProductionQueue\\HediffComp_ProductionQueue.cs",
|
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_ProductionQueue\\HediffComp_ProductionQueue.cs",
|
||||||
"RelativeDocumentMoniker": "Hediffs\\ARA_ProductionQueue\\HediffComp_ProductionQueue.cs",
|
"RelativeDocumentMoniker": "Hediffs\\ARA_ProductionQueue\\HediffComp_ProductionQueue.cs",
|
||||||
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_ProductionQueue\\HediffComp_ProductionQueue.cs",
|
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_ProductionQueue\\HediffComp_ProductionQueue.cs",
|
||||||
"RelativeToolTip": "Hediffs\\ARA_ProductionQueue\\HediffComp_ProductionQueue.cs",
|
"RelativeToolTip": "Hediffs\\ARA_ProductionQueue\\HediffComp_ProductionQueue.cs",
|
||||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAB8AAAAMAAAAAAAAAA==",
|
"ViewState": "AgIAAAAAAAAAAAAAAAAAAB8AAAAMAAAAAAAAAA==",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
"WhenOpened": "2026-01-22T10:31:06.201Z",
|
"WhenOpened": "2026-01-22T10:31:06.201Z"
|
||||||
"EditorCaption": ""
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 2,
|
"DocumentIndex": 7,
|
||||||
"Title": "HediffCompProperties_ProductionQueue.cs",
|
"Title": "HediffCompProperties_ProductionQueue.cs",
|
||||||
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_ProductionQueue\\HediffCompProperties_ProductionQueue.cs",
|
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_ProductionQueue\\HediffCompProperties_ProductionQueue.cs",
|
||||||
"RelativeDocumentMoniker": "Hediffs\\ARA_ProductionQueue\\HediffCompProperties_ProductionQueue.cs",
|
"RelativeDocumentMoniker": "Hediffs\\ARA_ProductionQueue\\HediffCompProperties_ProductionQueue.cs",
|
||||||
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_ProductionQueue\\HediffCompProperties_ProductionQueue.cs",
|
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_ProductionQueue\\HediffCompProperties_ProductionQueue.cs",
|
||||||
"RelativeToolTip": "Hediffs\\ARA_ProductionQueue\\HediffCompProperties_ProductionQueue.cs",
|
"RelativeToolTip": "Hediffs\\ARA_ProductionQueue\\HediffCompProperties_ProductionQueue.cs",
|
||||||
"ViewState": "AgIAAB8AAAAAAAAAAAAewEoAAAApAAAAAAAAAA==",
|
"ViewState": "AgIAAB8AAAAAAAAAAAAewEoAAAApAAAAAAAAAA==",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
"WhenOpened": "2026-01-22T09:30:17.721Z",
|
"WhenOpened": "2026-01-22T09:30:17.721Z"
|
||||||
"EditorCaption": ""
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,9 @@
|
|||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Compile Include="Buildings\Building_CorpseVat\Building_CorpseVat.cs" />
|
||||||
|
<Compile Include="Buildings\Building_CorpseVat\CorpseVatExtension.cs" />
|
||||||
|
<Compile Include="Buildings\Building_CorpseVat\JobDriver_HaulCorpseToVat.cs" />
|
||||||
<Compile Include="Damage\DamageDefExtension_TerrainCover.cs" />
|
<Compile Include="Damage\DamageDefExtension_TerrainCover.cs" />
|
||||||
<Compile Include="Damage\DamageWorker_ExplosionWithTerrain.cs" />
|
<Compile Include="Damage\DamageWorker_ExplosionWithTerrain.cs" />
|
||||||
<Compile Include="Hediffs\ARA_GestaltNode\CompGestalt.cs" />
|
<Compile Include="Hediffs\ARA_GestaltNode\CompGestalt.cs" />
|
||||||
@@ -311,6 +314,7 @@
|
|||||||
<Compile Include="Jobs\JobDriver_FollowProducer\JobGiver_AIDefendProducer.cs" />
|
<Compile Include="Jobs\JobDriver_FollowProducer\JobGiver_AIDefendProducer.cs" />
|
||||||
<Compile Include="Jobs\JobDriver_FollowProducer\JobGiver_AIFollowProducer.cs" />
|
<Compile Include="Jobs\JobDriver_FollowProducer\JobGiver_AIFollowProducer.cs" />
|
||||||
<Compile Include="Jobs\JobDriver_FollowProducer\JobGiver_WanderNearProducer.cs" />
|
<Compile Include="Jobs\JobDriver_FollowProducer\JobGiver_WanderNearProducer.cs" />
|
||||||
|
<Compile Include="Jobs\JobDriver_FollowProducer\ThinkNode_ConditionalNotProducedByMechCarrier.cs" />
|
||||||
<Compile Include="Jobs\JobDriver_FollowProducer\ThinkNode_ConditionalShouldFollowProducer.cs" />
|
<Compile Include="Jobs\JobDriver_FollowProducer\ThinkNode_ConditionalShouldFollowProducer.cs" />
|
||||||
<Compile Include="Jobs\JobDriver_Refuel_Nutrition.cs" />
|
<Compile Include="Jobs\JobDriver_Refuel_Nutrition.cs" />
|
||||||
<Compile Include="Jobs\JobDriver_StripChitin\CompProperties_ChitinStripping.cs" />
|
<Compile Include="Jobs\JobDriver_StripChitin\CompProperties_ChitinStripping.cs" />
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
using System;
|
||||||
|
using RimWorld;
|
||||||
|
using UnityEngine;
|
||||||
|
using Verse;
|
||||||
|
|
||||||
|
namespace ArachnaeSwarm
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 尸体保存建筑的扩展定义
|
||||||
|
/// </summary>
|
||||||
|
public class CorpseVatExtension : DefModExtension
|
||||||
|
{
|
||||||
|
// ===== 贴图配置 =====
|
||||||
|
public string topGraphicPath; // 顶部贴图路径
|
||||||
|
public Type graphicClass = typeof(Graphic_Multi); // 贴图类
|
||||||
|
|
||||||
|
// ===== 尸体绘制配置 =====
|
||||||
|
public Vector3 corpseDrawOffset = Vector3.zero; // 尸体绘制偏移
|
||||||
|
public float corpseDrawRotation = 0f; // 尸体绘制旋转
|
||||||
|
public float corpseDrawScale = 1f; // 尸体绘制缩放
|
||||||
|
public bool drawPreservationEffect = true; // 是否绘制保存效果
|
||||||
|
|
||||||
|
// ===== 功能配置 =====
|
||||||
|
public bool requiresPower = true; // 是否需要电源
|
||||||
|
public float slowDecayRate = 0.1f; // 腐烂减缓率(0-1,0=完全停止腐烂,1=正常腐烂)
|
||||||
|
|
||||||
|
// ===== 音效配置 =====
|
||||||
|
public SoundDef insertSound; // 放入音效
|
||||||
|
public SoundDef ejectSound; // 弹出音效
|
||||||
|
|
||||||
|
public string GetConfigSummary()
|
||||||
|
{
|
||||||
|
System.Text.StringBuilder sb = new System.Text.StringBuilder();
|
||||||
|
sb.AppendLine("=== CorpseVat 配置摘要 ===");
|
||||||
|
sb.AppendLine($"需要电源: {requiresPower}");
|
||||||
|
sb.AppendLine($"减缓腐烂: {(slowDecayRate * 100):F0}%");
|
||||||
|
sb.AppendLine($"顶部贴图: {topGraphicPath ?? "无"}");
|
||||||
|
sb.AppendLine($"绘制偏移: {corpseDrawOffset}");
|
||||||
|
sb.AppendLine($"绘制旋转: {corpseDrawRotation}");
|
||||||
|
sb.AppendLine($"绘制缩放: {corpseDrawScale}");
|
||||||
|
|
||||||
|
return sb.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
using Verse;
|
|
||||||
|
|
||||||
namespace ArachnaeSwarm
|
|
||||||
{
|
|
||||||
public class DefModExtension_CorpseContainer : DefModExtension
|
|
||||||
{
|
|
||||||
// 最大容量
|
|
||||||
public int maxCapacity = 1;
|
|
||||||
|
|
||||||
// 是否允许存储非人类尸体
|
|
||||||
public bool allowNonHumanCorpses = true;
|
|
||||||
|
|
||||||
// 是否允许存储腐烂的尸体
|
|
||||||
public bool allowRottingCorpses = true;
|
|
||||||
|
|
||||||
// 是否自动保鲜(防止腐烂)
|
|
||||||
public bool preserveCorpses = false;
|
|
||||||
|
|
||||||
// 自定义存储效果描述
|
|
||||||
public string storageEffectDescriptionKey;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
using RimWorld;
|
|
||||||
using Verse;
|
|
||||||
using Verse.AI;
|
|
||||||
|
|
||||||
namespace ArachnaeSwarm
|
|
||||||
{
|
|
||||||
public class JobDriver_HaulCorpseToContainer : JobDriver
|
|
||||||
{
|
|
||||||
private const TargetIndex CorpseIndex = TargetIndex.A;
|
|
||||||
private const TargetIndex ContainerIndex = TargetIndex.B;
|
|
||||||
private const TargetIndex StoreCellIndex = TargetIndex.C;
|
|
||||||
|
|
||||||
private Corpse Corpse => (Corpse)job.GetTarget(CorpseIndex).Thing;
|
|
||||||
private Building_CorpseContainer Container => (Building_CorpseContainer)job.GetTarget(ContainerIndex).Thing;
|
|
||||||
|
|
||||||
public override bool TryMakePreToilReservations(bool errorOnFailed)
|
|
||||||
{
|
|
||||||
return pawn.Reserve(Corpse, job, 1, -1, null, errorOnFailed) &&
|
|
||||||
pawn.Reserve(Container, job, 1, -1, null, errorOnFailed);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override IEnumerable<Toil> MakeNewToils()
|
|
||||||
{
|
|
||||||
// 验证目标
|
|
||||||
this.FailOnDestroyedOrNull(CorpseIndex);
|
|
||||||
this.FailOnDestroyedOrNull(ContainerIndex);
|
|
||||||
this.FailOnForbidden(CorpseIndex);
|
|
||||||
this.FailOnForbidden(ContainerIndex);
|
|
||||||
|
|
||||||
// 前往尸体
|
|
||||||
yield return Toils_Goto.GotoThing(CorpseIndex, PathEndMode.Touch)
|
|
||||||
.FailOnSomeonePhysicallyInteracting(CorpseIndex);
|
|
||||||
|
|
||||||
// 捡起尸体
|
|
||||||
yield return Toils_Haul.StartCarryThing(CorpseIndex);
|
|
||||||
|
|
||||||
// 前往容器
|
|
||||||
yield return Toils_Goto.GotoThing(ContainerIndex, PathEndMode.InteractionCell);
|
|
||||||
|
|
||||||
// 存储尸体到容器
|
|
||||||
Toil storeToil = new Toil();
|
|
||||||
storeToil.initAction = delegate
|
|
||||||
{
|
|
||||||
if (pawn.carryTracker.CarriedThing is Corpse carriedCorpse)
|
|
||||||
{
|
|
||||||
AcceptanceReport report = Container.TryAcceptCorpse(carriedCorpse);
|
|
||||||
|
|
||||||
if (report.Accepted)
|
|
||||||
{
|
|
||||||
// 尸体已成功存储,清空搬运
|
|
||||||
pawn.carryTracker.innerContainer.Clear();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// 存储失败,结束工作
|
|
||||||
EndJobWith(JobCondition.Incompletable);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
storeToil.defaultCompleteMode = ToilCompleteMode.Instant;
|
|
||||||
yield return storeToil;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
using RimWorld;
|
||||||
|
using Verse;
|
||||||
|
using Verse.AI;
|
||||||
|
|
||||||
|
namespace ArachnaeSwarm
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 自定义的搬运尸体工作驱动
|
||||||
|
/// </summary>
|
||||||
|
public class JobDriver_HaulCorpseToVat : JobDriver_HaulToContainer
|
||||||
|
{
|
||||||
|
protected override Toil CarryToContainerToil()
|
||||||
|
{
|
||||||
|
Toil toil = base.CarryToContainerToil();
|
||||||
|
|
||||||
|
// 添加自定义行为
|
||||||
|
toil.AddPreTickAction(() =>
|
||||||
|
{
|
||||||
|
Corpse corpse = TargetThingA as Corpse;
|
||||||
|
Building_CorpseVat vat = TargetThingB as Building_CorpseVat;
|
||||||
|
|
||||||
|
if (corpse != null && vat != null && pawn != null)
|
||||||
|
{
|
||||||
|
// 检查距离,如果太远可以取消工作
|
||||||
|
float distance = corpse.Position.DistanceTo(vat.Position);
|
||||||
|
if (distance > 100f) // 最大距离限制
|
||||||
|
{
|
||||||
|
pawn.jobs.EndCurrentJob(JobCondition.Incompletable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return toil;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override Toil FindCarryToCellToil()
|
||||||
|
{
|
||||||
|
Toil toil = base.FindCarryToCellToil();
|
||||||
|
|
||||||
|
// 添加额外条件检查
|
||||||
|
toil.AddFailCondition(() =>
|
||||||
|
{
|
||||||
|
Corpse corpse = TargetThingA as Corpse;
|
||||||
|
Building_CorpseVat vat = TargetThingB as Building_CorpseVat;
|
||||||
|
|
||||||
|
if (corpse == null || corpse.Destroyed || vat == null || vat.Destroyed)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查尸体是否仍然可以被接受
|
||||||
|
AcceptanceReport report = vat.CanAcceptCorpse(corpse);
|
||||||
|
return !report.Accepted;
|
||||||
|
});
|
||||||
|
|
||||||
|
return toil;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool TryMakePreToilReservations(bool errorOnFailed)
|
||||||
|
{
|
||||||
|
// 为尸体和建筑预留
|
||||||
|
if (!pawn.Reserve(TargetA, job, 1, -1, null, errorOnFailed))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!pawn.Reserve(TargetB, job, 1, -1, null, errorOnFailed))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
using RimWorld;
|
||||||
|
using Verse;
|
||||||
|
using Verse.AI;
|
||||||
|
|
||||||
|
namespace ArachnaeSwarm
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 反向条件节点:如果单位不是由生产者生产的,则进入此节点
|
||||||
|
/// 与ThinkNode_ConditionalShouldFollowProducer逻辑相反
|
||||||
|
/// </summary>
|
||||||
|
public class ThinkNode_ConditionalNotProducedByMechCarrier : ThinkNode_Conditional
|
||||||
|
{
|
||||||
|
// 可选:是否检查生产者是否存活
|
||||||
|
private bool checkProducerAlive = true;
|
||||||
|
|
||||||
|
// 可选:是否检查生产者是否在同一地图
|
||||||
|
private bool checkSameMap = true;
|
||||||
|
|
||||||
|
// 可选:是否检查生产者是否可到达
|
||||||
|
private bool checkReachable = true;
|
||||||
|
|
||||||
|
// 可选:是否检查生产者类型(pawn必须征召才跟随)
|
||||||
|
private bool checkProducerTypeConditions = true;
|
||||||
|
|
||||||
|
// 可选:额外条件类(可以通过XML添加额外条件)
|
||||||
|
public string extraConditionClass;
|
||||||
|
|
||||||
|
public ThinkNode_ConditionalNotProducedByMechCarrier()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override bool Satisfied(Pawn pawn)
|
||||||
|
{
|
||||||
|
// 基础检查:如果不是生产者生产的,返回true
|
||||||
|
bool isProduced = IsProducedByMechCarrier(pawn);
|
||||||
|
|
||||||
|
// 如果是生产者生产的,再检查其他条件
|
||||||
|
if (isProduced)
|
||||||
|
{
|
||||||
|
return false; // 是生产者生产的,不满足条件
|
||||||
|
}
|
||||||
|
|
||||||
|
// 不是生产者生产的,满足条件
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 检查pawn是否由生产者生产
|
||||||
|
/// </summary>
|
||||||
|
private bool IsProducedByMechCarrier(Pawn pawn)
|
||||||
|
{
|
||||||
|
if (!pawn.Spawned)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// 检查是否有生产者Comp
|
||||||
|
CompProducedByMechCarrier producerComp = pawn.TryGetComp<CompProducedByMechCarrier>();
|
||||||
|
if (producerComp == null || !producerComp.HasValidProducer)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
Thing producer = producerComp.Producer;
|
||||||
|
if (producer == null || producer.Destroyed)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// 检查生产者是否在同一地图
|
||||||
|
if (checkSameMap && producer.Map != pawn.Map)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// 检查是否可以到达生产者
|
||||||
|
if (checkReachable && !pawn.CanReach(producer, PathEndMode.OnCell, Danger.Deadly))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// 根据生产者类型检查特定条件
|
||||||
|
if (checkProducerTypeConditions && producer is Pawn pawnProducer)
|
||||||
|
{
|
||||||
|
// 如果生产者是pawn,则只在征召状态下才跟随
|
||||||
|
// 这是为了模拟原版动物跟随主人的逻辑
|
||||||
|
if (checkProducerAlive && (pawnProducer.Dead || pawnProducer.Downed))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// 只有在征召状态下才认为需要跟随
|
||||||
|
if (!pawnProducer.Drafted)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (checkProducerTypeConditions && producer is Building buildingProducer)
|
||||||
|
{
|
||||||
|
// 如果生产者是建筑,默认返回true
|
||||||
|
// 可以根据需要添加其他条件
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||