Compare commits
49 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
268ea3c681 | ||
|
|
8699c4c63e | ||
|
|
bb5e555acc | ||
|
|
4c1cc31983 | ||
|
|
67c14918f8 | ||
|
|
7da2bcc223 | ||
|
|
db7e4393bc | ||
|
|
0ac7be78ad | ||
|
|
2771ee610a | ||
|
|
23b1b6dd3b | ||
|
|
0b555a7d3a | ||
|
|
9e57d2e774 | ||
|
|
477f18f669 | ||
|
|
65860e9e43 | ||
|
|
6e40cbb817 | ||
|
|
f56d572227 | ||
|
|
59857fda42 | ||
|
|
b9e6d6ca8b | ||
|
|
a27f7a8289 | ||
|
|
d5d986e62a | ||
|
|
4fb30a03aa | ||
|
|
5d2d2c5e4d | ||
|
|
182cb72cb0 | ||
|
|
6000bb58f6 | ||
|
|
ec4a6631fd | ||
|
|
534cb901d4 | ||
|
|
feba171a2c | ||
|
|
5b231de977 | ||
|
|
fb5fd2b28c | ||
|
|
5bd9197d0a | ||
|
|
5f63216c5d | ||
|
|
a2c81a86ad | ||
|
|
2a6343097d | ||
|
|
0b6ae6c398 | ||
|
|
4fdfad7021 | ||
|
|
377cc3d7ce | ||
|
|
9f6208ebe4 | ||
|
|
29d5232ff2 | ||
|
|
b5fe07e968 | ||
|
|
4e5901a94e | ||
|
|
15a44726d5 | ||
|
|
fdee401817 | ||
|
|
ca2fba145a | ||
|
|
cfbb810aad | ||
|
|
662d20a27a | ||
|
|
969fc15f65 | ||
|
|
c3a2f33f26 | ||
|
|
fe6f2ad563 | ||
|
|
690de72ae8 |
@@ -31,6 +31,62 @@
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
<AbilityDef>
|
||||
<defName>ARA_RaceBaseSwarmProduceOn</defName>
|
||||
<label>取消繁育抑制</label>
|
||||
<description>重启该阿拉克涅督虫自动抚育辅虫的能力。</description>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_RaceBaseSwarmProduceOn</iconPath>
|
||||
<cooldownTicksRange>601</cooldownTicksRange>
|
||||
<hostile>false</hostile>
|
||||
<showOnCharacterCard>true</showOnCharacterCard>
|
||||
<aiCanUse>false</aiCanUse>
|
||||
<verbProperties>
|
||||
<verbClass>Verb_CastAbility</verbClass>
|
||||
<warmupTime>0</warmupTime>
|
||||
<drawAimPie>false</drawAimPie>
|
||||
<requireLineOfSight>false</requireLineOfSight>
|
||||
<targetable>false</targetable>
|
||||
<targetParams>
|
||||
<canTargetSelf>true</canTargetSelf>
|
||||
</targetParams>
|
||||
</verbProperties>
|
||||
<comps>
|
||||
<!-- 这是正确的用法 -->
|
||||
<li Class="RimWorld.CompProperties_AbilityRemoveHediff">
|
||||
<compClass>ArachnaeSwarm.CompAbilityEffect_RemoveSwitchHediff</compClass>
|
||||
<hediffDef>ARA_RaceBaseSwarmProduceSwitchHediff</hediffDef>
|
||||
<applyToSelf>true</applyToSelf>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
<AbilityDef>
|
||||
<defName>ARA_RaceBaseSwarmProduceOff</defName>
|
||||
<label>繁育抑制</label>
|
||||
<description>关闭该阿拉克涅督虫自动抚育辅虫的能力。</description>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_RaceBaseSwarmProduceOff</iconPath>
|
||||
<cooldownTicksRange>601</cooldownTicksRange>
|
||||
<hostile>false</hostile>
|
||||
<showOnCharacterCard>true</showOnCharacterCard>
|
||||
<aiCanUse>false</aiCanUse>
|
||||
<verbProperties>
|
||||
<verbClass>Verb_CastAbility</verbClass>
|
||||
<warmupTime>0</warmupTime>
|
||||
<drawAimPie>false</drawAimPie>
|
||||
<requireLineOfSight>false</requireLineOfSight>
|
||||
<targetable>false</targetable>
|
||||
<targetParams>
|
||||
<canTargetSelf>true</canTargetSelf>
|
||||
</targetParams>
|
||||
</verbProperties>
|
||||
<comps>
|
||||
<li Class="RimWorld.CompProperties_AbilityGiveHediff">
|
||||
<compClass>ArachnaeSwarm.CompAbilityEffect_GiveSwitchHediff</compClass>
|
||||
<hediffDef>ARA_RaceBaseSwarmProduceSwitchHediff</hediffDef>
|
||||
<applyToSelf>true</applyToSelf>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
|
||||
<AbilityDef>
|
||||
<defName>ARA_TrapSpew</defName>
|
||||
<label>酸爆茧投射</label>
|
||||
@@ -75,7 +131,7 @@
|
||||
<defName>ARA_TumorSpew</defName>
|
||||
<label>菌瘤释放</label>
|
||||
<description>排出一枚菌瘤,将附近的大片地区转变为菌毯地形,以方便虫群进行活动,并阻碍敌军的前进。</description>
|
||||
<iconPath>UI/Commands/EggSpew</iconPath>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_TumorSpew</iconPath>
|
||||
<cooldownTicksRange>5000</cooldownTicksRange>
|
||||
<aiCanUse>false</aiCanUse>
|
||||
<displayOrder>300</displayOrder>
|
||||
@@ -203,7 +259,7 @@
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
|
||||
<requiredResearch>ARA_Technology_6VXI</requiredResearch>
|
||||
<failMessage>需要科技 基因节点VXI-6"酸囊" 以解锁技能</failMessage>
|
||||
<failMessage>需要科技 节点VXI-6"酸囊" 以解锁技能</failMessage>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
@@ -277,7 +333,7 @@
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
|
||||
<requiredResearch>ARA_Technology_6VXI</requiredResearch>
|
||||
<failMessage>需要科技 基因节点VXI-6"酸囊" 以解锁技能</failMessage>
|
||||
<failMessage>需要科技 节点VXI-6"酸囊" 以解锁技能</failMessage>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
@@ -289,24 +345,23 @@
|
||||
<writeCombatLog>True</writeCombatLog>
|
||||
<showPsycastEffects>False</showPsycastEffects>
|
||||
<cooldownTicksRange>6000</cooldownTicksRange>
|
||||
<iconPath>UI/Abilities/AcidSpray</iconPath>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Toxic_Needle_Fire</iconPath>
|
||||
<verbProperties>
|
||||
<verbClass>Verb_AbilityShoot</verbClass>
|
||||
<defaultProjectile>Bullet_ARA_RW_Basic_Fist_Needle_Gun</defaultProjectile>
|
||||
<range>24.9</range>
|
||||
<verbClass>Verb_CastAbility</verbClass>
|
||||
<range>24</range>
|
||||
<warmupTime>1</warmupTime>
|
||||
<soundCast>Heatspikes_Shot</soundCast>
|
||||
<soundCastTail>Heatspikes_Tail</soundCastTail>
|
||||
<muzzleFlashScale>9</muzzleFlashScale>
|
||||
<ticksBetweenBurstShots>6</ticksBetweenBurstShots>
|
||||
<warmupTime>0</warmupTime>
|
||||
<burstShotCount>12</burstShotCount>
|
||||
<accuracyTouch>0.9</accuracyTouch>
|
||||
<accuracyShort>0.8</accuracyShort>
|
||||
<accuracyMedium>0.7</accuracyMedium>
|
||||
<accuracyLong>0.6</accuracyLong>
|
||||
<ai_IsWeapon>false</ai_IsWeapon>
|
||||
<violent>false</violent>
|
||||
<targetParams>
|
||||
<canTargetPawns>True</canTargetPawns>
|
||||
</targetParams>
|
||||
</verbProperties>
|
||||
<comps>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AbilityLaunchMultiProjectile">
|
||||
<projectileDef>Bullet_ARA_RW_Basic_Fist_Needle_Gun</projectileDef>
|
||||
<numProjectiles>12</numProjectiles>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AbilityNeedCost">
|
||||
<needDef>Food</needDef>
|
||||
<needCost>0.1</needCost>
|
||||
@@ -318,7 +373,7 @@
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
|
||||
<requiredResearch>ARA_Technology_5PAV</requiredResearch>
|
||||
<failMessage>需要科技 基因节点PAV-5"毒刺" 以解锁技能</failMessage>
|
||||
<failMessage>需要科技 节点PAV-5"毒刺" 以解锁技能</failMessage>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
@@ -410,11 +465,11 @@
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
<AbilityDef Name="LongJump">
|
||||
<AbilityDef>
|
||||
<defName>ARA_Skyraider_jump</defName>
|
||||
<label>高空机动</label>
|
||||
<description>使用强壮的翅膀瞬间加力,以重定位至一处新的地点。</description>
|
||||
<iconPath>UI/Abilities/Longjump</iconPath>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Skyraider_jump</iconPath> <!-- Placeholder Icon -->
|
||||
<cooldownTicksRange>5000</cooldownTicksRange>
|
||||
<hostile>false</hostile>
|
||||
<casterMustBeCapableOfViolence>false</casterMustBeCapableOfViolence>
|
||||
@@ -489,7 +544,7 @@
|
||||
<AbilityDef>
|
||||
<defName>ARA_Ability_Smokepop</defName>
|
||||
<label>信息素浓雾释放</label>
|
||||
<description>浓雾种将其腹部的大量释放阿拉克涅信息素烟雾,形成一大片足以遮蔽虫族身形的烟雾,并防止敌方使用火焰武器点燃虫族集群。这些信息素会吸引附近的阿拉克涅辅虫破土而出支援虫群,沾染信息素的目标越多(无论敌我),前来支援的虫族就越多。</description>
|
||||
<description>浓雾种使用其腹部释放大量阿拉克涅信息素烟雾,形成一大片可以遮蔽虫族身形和阻燃的烟雾。这些信息素会吸引附近的阿拉克涅辅虫破土而出支援虫群,沾染信息素的目标越多(无论敌我),前来支援的虫族就越多。</description>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Ability_Smokepop</iconPath>
|
||||
<cooldownTicksRange>6000</cooldownTicksRange>
|
||||
<targetRequired>false</targetRequired>
|
||||
@@ -537,10 +592,10 @@
|
||||
<AbilityDef>
|
||||
<defName>ARA_Ability_TrackingCharge</defName>
|
||||
<label>蛮力冲撞</label>
|
||||
<description>阿拉克涅盾头种对目标发起蓄势冲撞,对路径上的一切造成伤害。在冲击中途经的距离越远,伤害越高。</description>
|
||||
<description>对目标发起蓄势冲撞,对路径上的一切造成伤害。在冲击中途经的距离越远,伤害越高。</description>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Ability_TrackingCharge</iconPath> <!-- Placeholder Icon -->
|
||||
<cooldownTicksRange>6000</cooldownTicksRange>
|
||||
<charges>3</charges>
|
||||
<charges>2</charges>
|
||||
<cooldownPerCharge>true</cooldownPerCharge>
|
||||
<verbProperties>
|
||||
<verbClass>ArachnaeSwarm.Verb_CastAbilityTrackingCharge</verbClass>
|
||||
@@ -552,7 +607,7 @@
|
||||
<canTargetMechs>true</canTargetMechs>
|
||||
<canTargetSelf>false</canTargetSelf>
|
||||
</targetParams>
|
||||
<range>30</range>
|
||||
<range>18</range>
|
||||
<warmupTime>1.0</warmupTime>
|
||||
</verbProperties>
|
||||
<comps>
|
||||
@@ -573,7 +628,7 @@
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
|
||||
<requiredResearch>ARA_Technology_1VTE</requiredResearch>
|
||||
<failMessage>需要科技 基因节点VTE-1"爆发激素" 以解锁技能</failMessage>
|
||||
<failMessage>需要科技 节点VTE-1"爆发激素" 以解锁技能</failMessage>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AbilityNeedCost">
|
||||
<needDef>Food</needDef>
|
||||
@@ -590,4 +645,202 @@
|
||||
<heightFactor>0</heightFactor>
|
||||
</pawnFlyer>
|
||||
</ThingDef>
|
||||
|
||||
<AbilityDef>
|
||||
<defName>ARA_PsychicBrainburn</defName>
|
||||
<label>心灵烧灼</label>
|
||||
<description>以强大的纯净灵能冲击目标,烧毁目标的中枢神经系统——这会直接杀死目标。</description>
|
||||
<abilityClass>Psycast</abilityClass>
|
||||
<category>Psychic</category>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_PsychicBrainburn</iconPath>
|
||||
<cooldownTicksRange>18000</cooldownTicksRange>
|
||||
<aiCanUse>false</aiCanUse>
|
||||
<displayOrder>300</displayOrder>
|
||||
<displayGizmoWhileUndrafted>false</displayGizmoWhileUndrafted>
|
||||
<showPsycastEffects>true</showPsycastEffects>
|
||||
<sendMessageOnCooldownComplete>true</sendMessageOnCooldownComplete>
|
||||
<stunTargetWhileCasting>true</stunTargetWhileCasting>
|
||||
<moteOffsetAmountTowardsTarget>0.5</moteOffsetAmountTowardsTarget>
|
||||
<warmupMote>Mote_HoraxSmallSpellWarmup</warmupMote>
|
||||
<warmupEffecter>HoraxianAbilityCasting</warmupEffecter>
|
||||
<warmupSound>AnomalyAbilityWarmup</warmupSound>
|
||||
<writeCombatLog>true</writeCombatLog>
|
||||
<statBases>
|
||||
<Ability_EntropyGain>75</Ability_EntropyGain>
|
||||
<Ability_PsyfocusCost>-1</Ability_PsyfocusCost>
|
||||
<Ability_Duration>0</Ability_Duration>
|
||||
</statBases>
|
||||
<verbProperties>
|
||||
<verbClass>Verb_CastAbility</verbClass>
|
||||
<warmupTime>6</warmupTime>
|
||||
<range>18</range>
|
||||
<targetParams>
|
||||
<canTargetPawns>true</canTargetPawns>
|
||||
<canTargetBuildings>false</canTargetBuildings>
|
||||
<canTargetSelf>false</canTargetSelf>
|
||||
</targetParams>
|
||||
</verbProperties>
|
||||
<comps>
|
||||
<li Class="ArachnaeSwarm.CompProperties_PsychicBrainburn">
|
||||
<psychic>True</psychic>
|
||||
<!-- 视觉效果 -->
|
||||
<effecterDef>Skip_Entry</effecterDef>
|
||||
|
||||
<!-- 设为 true 则只能对血肉生物使用。设为 false 则也可以对机械体使用。 -->
|
||||
<requiresFlesh>false</requiresFlesh>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
<AbilityDef>
|
||||
<defName>ARA_NeuroSwarm_jump</defName>
|
||||
<label>高空机动</label>
|
||||
<description>增强用于使身体悬浮的力量快速进入较高的高度,然后飞到一处新的地点。</description>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Skyraider_jump</iconPath>
|
||||
<cooldownTicksRange>5000</cooldownTicksRange>
|
||||
<hostile>false</hostile>
|
||||
<casterMustBeCapableOfViolence>false</casterMustBeCapableOfViolence>
|
||||
<charges>1</charges>
|
||||
<cooldownPerCharge>true</cooldownPerCharge>
|
||||
<verbProperties>
|
||||
<verbClass>Verb_CastAbilityJump</verbClass>
|
||||
<label>jump</label>
|
||||
<violent>false</violent>
|
||||
<forceNormalTimeSpeed>false</forceNormalTimeSpeed>
|
||||
<warmupTime>0</warmupTime>
|
||||
<range>50</range>
|
||||
<requireLineOfSight>true</requireLineOfSight>
|
||||
<soundCast>Longjump_Jump</soundCast>
|
||||
<soundLanding>Longjump_Land</soundLanding>
|
||||
<targetParams>
|
||||
<canTargetLocations>true</canTargetLocations>
|
||||
<canTargetPawns>false</canTargetPawns>
|
||||
<canTargetBuildings>false</canTargetBuildings>
|
||||
</targetParams>
|
||||
</verbProperties>
|
||||
<jobDef>CastJump</jobDef>
|
||||
</AbilityDef>
|
||||
|
||||
<AbilityDef>
|
||||
<defName>ARA_MimicNematode_Needle_Fire</defName>
|
||||
<label>拟线种寄生针</label>
|
||||
<description>向目标喷射若干伤害较低但是会引发阿拉克涅拟线种寄生的囊针,随着感染的推进,目标将逐渐被拟线种控制,逐渐无视外部刺激以获得强大的抗击打能力。\n\n这是一种危险的交易,拟线种无法被女皇种控制,聪明的虫巢在使用拟线种的力量前,都需要思虑再三。</description>
|
||||
<writeCombatLog>True</writeCombatLog>
|
||||
<showPsycastEffects>False</showPsycastEffects>
|
||||
<cooldownTicksRange>6000</cooldownTicksRange>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Toxic_Needle_Fire</iconPath>
|
||||
<displayGizmoWhileUndrafted>false</displayGizmoWhileUndrafted>
|
||||
<verbProperties>
|
||||
<verbClass>Verb_AbilityShoot</verbClass>
|
||||
<defaultProjectile>Bullet_ARA_MimicNematode_Needle</defaultProjectile>
|
||||
<range>5</range>
|
||||
<soundCast>Heatspikes_Shot</soundCast>
|
||||
<soundCastTail>Heatspikes_Tail</soundCastTail>
|
||||
<muzzleFlashScale>9</muzzleFlashScale>
|
||||
<ticksBetweenBurstShots>2</ticksBetweenBurstShots>
|
||||
<warmupTime>0</warmupTime>
|
||||
<burstShotCount>32</burstShotCount>
|
||||
<accuracyTouch>1</accuracyTouch>
|
||||
<accuracyShort>1</accuracyShort>
|
||||
<accuracyMedium>1</accuracyMedium>
|
||||
<accuracyLong>1</accuracyLong>
|
||||
<ai_IsWeapon>false</ai_IsWeapon>
|
||||
</verbProperties>
|
||||
<comps>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AbilityNeedCost">
|
||||
<needDef>Food</needDef>
|
||||
<needCost>0.1</needCost>
|
||||
<failMessage>营养值不足,需要进食</failMessage>
|
||||
</li>
|
||||
<!-- <li Class="ArachnaeSwarm.CompProperties_AbilityBodyPartCheck">
|
||||
<requiredPart>ARA_Toxic_Needle</requiredPart>
|
||||
<failMessage>毒针腺受损或缺失,无法发射毒针</failMessage>
|
||||
</li> -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
|
||||
<requiredResearch>ARA_Technology_2MED</requiredResearch>
|
||||
<failMessage>需要科技 节点MED-2"拟线寄生" 以解锁技能</failMessage>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
<ThingDef ParentName="BaseBullet">
|
||||
<defName>Bullet_ARA_MimicNematode_Needle</defName>
|
||||
<label>拟线种寄生针</label>
|
||||
<graphicData>
|
||||
<texPath>Things/Projectile/Bullet_Small</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
<color>(117, 204, 49, 180)</color>
|
||||
</graphicData>
|
||||
<projectile>
|
||||
<damageDef>ARA_MimicNematodeBite</damageDef>
|
||||
<damageAmountBase>1</damageAmountBase>
|
||||
<speed>40</speed>
|
||||
</projectile>
|
||||
</ThingDef>
|
||||
|
||||
<AbilityDef>
|
||||
<defName>ARA_Fighter_Invisibility_jump</defName>
|
||||
<label>追猎种跳跃</label>
|
||||
<description>以强力的肌腱向目标地点跳跃,会暴露追猎种的身形。</description>
|
||||
<iconPath>UI/Abilities/Longjump</iconPath>
|
||||
<cooldownTicksRange>1000</cooldownTicksRange>
|
||||
<charges>3</charges>
|
||||
<cooldownPerCharge>true</cooldownPerCharge>
|
||||
<hostile>false</hostile>
|
||||
<casterMustBeCapableOfViolence>false</casterMustBeCapableOfViolence>
|
||||
<verbProperties>
|
||||
<verbClass>Verb_CastAbilityJump</verbClass>
|
||||
<violent>false</violent>
|
||||
<forceNormalTimeSpeed>false</forceNormalTimeSpeed>
|
||||
<!-- <warmupTime>0.5</warmupTime> -->
|
||||
<range>23</range>
|
||||
<requireLineOfSight>false</requireLineOfSight>
|
||||
<soundCast>Longjump_Jump</soundCast>
|
||||
<soundLanding>Longjump_Land</soundLanding>
|
||||
<targetParams>
|
||||
<canTargetLocations>true</canTargetLocations>
|
||||
<canTargetPawns>false</canTargetPawns>
|
||||
<canTargetBuildings>false</canTargetBuildings>
|
||||
</targetParams>
|
||||
</verbProperties>
|
||||
<jobDef>CastJump</jobDef>
|
||||
<comps>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AbilityNeedCost">
|
||||
<needDef>Food</needDef>
|
||||
<needCost>0.1</needCost>
|
||||
<failMessage>营养值不足,需要进食</failMessage>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
<AbilityDef>
|
||||
<defName>ARA_Fighter_Invisibility_Execution</defName>
|
||||
<label>巨镰处决</label>
|
||||
<description>追猎种挥动巨镰对敌人进行处决,造成一次高额伤害,处决完成后会暴露追猎种的身形。</description>
|
||||
<iconPath>UI/Abilities/Longjump</iconPath>
|
||||
<cooldownTicksRange>3800</cooldownTicksRange>
|
||||
<cooldownPerCharge>true</cooldownPerCharge>
|
||||
<hostile>false</hostile>
|
||||
<casterMustBeCapableOfViolence>false</casterMustBeCapableOfViolence>
|
||||
<stunTargetWhileCasting>true</stunTargetWhileCasting>
|
||||
<warmupMote>Mote_HoraxSmallSpellWarmup</warmupMote>
|
||||
<warmupEffecter>HoraxianAbilityCasting</warmupEffecter>
|
||||
<warmupSound>AnomalyAbilityWarmup</warmupSound>
|
||||
<jobDef>CastAbilityOnThingMelee</jobDef>
|
||||
<verbProperties>
|
||||
<verbClass>Verb_CastAbilityTouch</verbClass>
|
||||
<drawAimPie>false</drawAimPie>
|
||||
<range>-1</range>
|
||||
<warmupTime>1</warmupTime>
|
||||
<targetParams>
|
||||
<canTargetSelf>false</canTargetSelf>
|
||||
<canTargetMechs>false</canTargetMechs>
|
||||
<canTargetBuildings>false</canTargetBuildings>
|
||||
</targetParams>
|
||||
</verbProperties>
|
||||
<comps>
|
||||
<li Class="CompProperties_AbilityGiveHediff">
|
||||
<compClass>CompAbilityEffect_GiveHediff</compClass>
|
||||
<hediffDef>ARA_Fighter_Execution_Damage</hediffDef>
|
||||
<replaceExisting>true</replaceExisting>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
</Defs>
|
||||
@@ -130,4 +130,94 @@
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
<!-- T2 -->
|
||||
<AbilityDef ParentName="ARA_EggSpew_Base">
|
||||
<defName>ARA_EggSpew_2Stage</defName>
|
||||
<label>生育虫卵——等级2</label>
|
||||
<description>从卵巢中排出一颗休眠的虫卵,阿拉克涅女皇种可以通过与其交互将其激活,并选择孵化的督虫虫族类型——参阅虫卵的具体信息,了解各个督虫的特点。\n\n该虫卵只能孵化小型虫族。</description>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_EggSpew_2Stage</iconPath>
|
||||
<comps>
|
||||
<li Class="CompProperties_AbilityLaunchProjectile">
|
||||
<projectileDef>ARA_Proj_EggSac_2Stage</projectileDef>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
<AbilityDef ParentName="ARA_EggSpew_Base">
|
||||
<defName>ARA_EggSpew_Huge_2Stage</defName>
|
||||
<label>生育大型虫卵——等级2</label>
|
||||
<description>从卵巢中排出一颗休眠的大型虫卵,阿拉克涅女皇种可以通过与其交互将其激活,并选择孵化的督虫虫族类型——参阅虫卵的具体信息,了解各个督虫的特点。\n\n该虫卵只能孵化大型虫族。</description>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_EggSpew_Huge_2Stage</iconPath>
|
||||
<comps>
|
||||
<li Class="CompProperties_AbilityLaunchProjectile">
|
||||
<projectileDef>ARA_Proj_EggSac_Huge_2Stage</projectileDef>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
|
||||
<!-- T0 -->
|
||||
<AbilityDef ParentName="ARA_CocoonSpew_Base">
|
||||
<defName>ARA_Cocoon_Cloth</defName>
|
||||
<label>织物孵化茧</label>
|
||||
<description>投放一枚织物茧,内含可以孵化一套基础织物的营养和遗传物质——参阅茧的超链接,了解其能生产的所有装备的特点。</description>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Cloth</iconPath>
|
||||
<comps>
|
||||
<li Class="CompProperties_AbilityLaunchProjectile">
|
||||
<projectileDef>ARA_Cocoon_Proj_Cloth</projectileDef>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
|
||||
<requiredResearch>ARA_Technology_4DIL</requiredResearch>
|
||||
<failMessage>需要科技 节点DIL-4"编织" 以解锁此孵化路径</failMessage>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
<AbilityDef ParentName="ARA_CocoonSpew_Base">
|
||||
<defName>ARA_Cocoon_Weapon</defName>
|
||||
<label>武装器官孵化茧</label>
|
||||
<description>投放一枚武装器官茧,内含可以孵化一套基础武装器官的营养和遗传物质——参阅茧的超链接,了解其能生产的所有装备的特点。</description>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Weapon</iconPath>
|
||||
<comps>
|
||||
<li Class="CompProperties_AbilityLaunchProjectile">
|
||||
<projectileDef>ARA_Cocoon_Proj_Weapon</projectileDef>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
<!-- T1 -->
|
||||
<AbilityDef ParentName="ARA_CocoonSpew_Base">
|
||||
<defName>ARA_Cocoon_Cloth_1Stage</defName>
|
||||
<label>织物孵化茧——等级1</label>
|
||||
<description>投放一枚织物茧,内含可以孵化一套基础织物的营养和遗传物质——参阅茧的超链接,了解其能生产的所有装备的特点。</description>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Cloth_1Stage</iconPath>
|
||||
<comps>
|
||||
<li Class="CompProperties_AbilityLaunchProjectile">
|
||||
<projectileDef>ARA_Cocoon_Proj_Cloth</projectileDef>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
|
||||
<requiredResearch>ARA_Technology_4DIL</requiredResearch>
|
||||
<failMessage>需要科技 节点DIL-4"编织" 以解锁此孵化路径</failMessage>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
<AbilityDef ParentName="ARA_CocoonSpew_Base">
|
||||
<defName>ARA_Cocoon_Weapon_1Stage</defName>
|
||||
<label>武装器官孵化茧——等级1</label>
|
||||
<description>投放一枚武装器官茧,内含可以孵化一套基础武装器官的营养和遗传物质——参阅茧的超链接,了解其能生产的所有装备的特点。</description>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Weapon_1Stage</iconPath>
|
||||
<comps>
|
||||
<li Class="CompProperties_AbilityLaunchProjectile">
|
||||
<projectileDef>ARA_Cocoon_Proj_Weapon_1Stage</projectileDef>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
|
||||
<AbilityDef ParentName="ARA_CocoonSpew_Base">
|
||||
<defName>ARA_Cocoon_Medicine</defName>
|
||||
<label>织物医药茧</label>
|
||||
<description>投放一枚医药茧,内含可以孵化一组医疗用品或化学品的营养和遗传物质——参阅茧的超链接,了解其能生产的所有装备的特点。</description>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Medicine</iconPath>
|
||||
<comps>
|
||||
<li Class="CompProperties_AbilityLaunchProjectile">
|
||||
<projectileDef>ARA_Cocoon_Proj_Medicine</projectileDef>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
</Defs>
|
||||
@@ -1,43 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
|
||||
<AbilityDef>
|
||||
<defName>ARA_PsychicBrainburn</defName>
|
||||
<label>心灵烧灼</label>
|
||||
<description>通过一次强力的心灵冲击,直接摧毁目标生物的意识核心,使其永久失去知觉。</description>
|
||||
<iconPath>UI/Abilities/Slaughter</iconPath>
|
||||
<cooldownTicksRange>5000</cooldownTicksRange>
|
||||
<aiCanUse>false</aiCanUse>
|
||||
<displayOrder>300</displayOrder>
|
||||
<displayGizmoWhileUndrafted>true</displayGizmoWhileUndrafted>
|
||||
<disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
|
||||
<showPsycastEffects>false</showPsycastEffects>
|
||||
<sendMessageOnCooldownComplete>true</sendMessageOnCooldownComplete>
|
||||
<stunTargetWhileCasting>true</stunTargetWhileCasting>
|
||||
<moteOffsetAmountTowardsTarget>0.5</moteOffsetAmountTowardsTarget>
|
||||
<warmupMote>Mote_HoraxSmallSpellWarmup</warmupMote>
|
||||
<warmupEffecter>HoraxianAbilityCasting</warmupEffecter>
|
||||
<warmupSound>AnomalyAbilityWarmup</warmupSound>
|
||||
<writeCombatLog>true</writeCombatLog>
|
||||
<verbProperties>
|
||||
<verbClass>Verb_CastAbility</verbClass>
|
||||
<warmupTime>1.5</warmupTime>
|
||||
<range>25</range>
|
||||
<targetParams>
|
||||
<canTargetPawns>true</canTargetPawns>
|
||||
<canTargetBuildings>false</canTargetBuildings>
|
||||
<canTargetSelf>false</canTargetSelf>
|
||||
</targetParams>
|
||||
</verbProperties>
|
||||
<comps>
|
||||
<li Class="ArachnaeSwarm.CompProperties_PsychicBrainburn">
|
||||
<!-- 视觉效果 -->
|
||||
<effecterDef>Skip_Entry</effecterDef>
|
||||
|
||||
<!-- 设为 true 则只能对血肉生物使用。设为 false 则也可以对机械体使用。 -->
|
||||
<requiresFlesh>false</requiresFlesh>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
|
||||
</Defs>
|
||||
@@ -1,12 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
|
||||
<!-- 变形技能的定义 -->
|
||||
<AbilityDef>
|
||||
<defName>ARA_Ability_Morph</defName>
|
||||
<label>织域形态</label>
|
||||
<description>将自己转换为一个坚固的静态建筑形态,或从建筑形态恢复。</description>
|
||||
<iconPath>UI/Commands/EggSpew</iconPath> <!-- TODO: 替换为你的图标路径 -->
|
||||
<iconPath>UI/Commands/EggSpew</iconPath>
|
||||
<cooldownTicksRange>6000</cooldownTicksRange>
|
||||
<hotKey>Misc12</hotKey>
|
||||
<targetRequired>false</targetRequired>
|
||||
@@ -30,81 +29,5 @@
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
|
||||
<ThingDef ParentName="BuildingBase">
|
||||
<defName>ARA_MorphableResearchBench</defName>
|
||||
<hasInteractionCell>true</hasInteractionCell>
|
||||
<interactionCellOffset>(0,0,-1)</interactionCellOffset>
|
||||
<label>阿拉克涅织域织座</label>
|
||||
<description>一个供阿拉克涅虫族进行研究的活体结构,可以让虫群尽情地探索变异和进化方向。其研究能力完全取决于内部的阿拉克涅织域种。</description>
|
||||
<thingClass>ArachnaeSwarm.Building_Morphable</thingClass>
|
||||
<tickerType>Normal</tickerType>
|
||||
<size>(3,3)</size>
|
||||
<graphicData>
|
||||
<texPath>ArachnaeSwarm/Building/ARA_ResearchBench</texPath>
|
||||
<graphicClass>Graphic_Multi</graphicClass>
|
||||
<shaderType>CutoutComplex</shaderType>
|
||||
<drawSize>(3,4.5)</drawSize>
|
||||
</graphicData>
|
||||
<altitudeLayer>Building</altitudeLayer>
|
||||
<passability>Impassable</passability>
|
||||
<castEdgeShadows>false</castEdgeShadows>
|
||||
<fillPercent>0.8</fillPercent>
|
||||
<staticSunShadowHeight>0</staticSunShadowHeight>
|
||||
<terrainAffordanceNeeded>ARA_Creep</terrainAffordanceNeeded>
|
||||
<statBases>
|
||||
<MaxHitPoints>1000</MaxHitPoints>
|
||||
<WorkToBuild>2800</WorkToBuild>
|
||||
<Flammability>1.0</Flammability>
|
||||
<ResearchSpeedFactor>1.0</ResearchSpeedFactor>
|
||||
</statBases>
|
||||
<uiOrder>2600</uiOrder>
|
||||
<surfaceType>Item</surfaceType>
|
||||
<building>
|
||||
<workTableRoomRole>Laboratory</workTableRoomRole>
|
||||
<workTableNotInRoomRoleFactor>0.8</workTableNotInRoomRoleFactor>
|
||||
<deconstructible>false</deconstructible>
|
||||
</building>
|
||||
<!-- 不可建造,只能通过变形生成 -->
|
||||
<comps Inherit="False">
|
||||
<li Class="CompProperties_ReportWorkSpeed">
|
||||
<workSpeedStat>ResearchSpeedFactor</workSpeedStat>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_Morphable">
|
||||
<!-- 休息速度增益,例如1.0代表200%的速度 -->
|
||||
<restGainMultiplier>1.0</restGainMultiplier>
|
||||
|
||||
<!-- 操作按钮的自定义标签 -->
|
||||
<gizmoLabel>离开织座</gizmoLabel>
|
||||
|
||||
<!-- 操作按钮的自定义描述 -->
|
||||
<gizmoDesc>使织域种离开织座。</gizmoDesc>
|
||||
|
||||
<!--
|
||||
操作按钮的自定义图标路径。
|
||||
路径相对于"Textures"文件夹。
|
||||
例如,如果你的图标在 "YourMod/Textures/UI/Icons/Revert.png",路径就是 "UI/Icons/Revert"。
|
||||
游戏会自动处理.png扩展名。
|
||||
-->
|
||||
<gizmoIconPath>UI/Commands/EggSpew</gizmoIconPath>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
|
||||
<fuelFilter>
|
||||
<categories>
|
||||
<li>Foods</li>
|
||||
</categories>
|
||||
</fuelFilter>
|
||||
<fuelCapacity>2.0</fuelCapacity>
|
||||
<targetFuelLevelConfigurable>false</targetFuelLevelConfigurable>
|
||||
<fuelGizmoLabel>营养</fuelGizmoLabel>
|
||||
<outOfFuelMessage>没有营养</outOfFuelMessage>
|
||||
</li>
|
||||
|
||||
<li Class="CompProperties_AffectedByFacilities">
|
||||
<linkableFacilities>
|
||||
<li>ARA_NutrientNetworkTower</li>
|
||||
</linkableFacilities>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
</Defs>
|
||||
@@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
<!-- 翅膀飞行 -->
|
||||
<AnimationDef>
|
||||
<defName>ARA_FlyEast</defName>
|
||||
<durationTicks>60</durationTicks>
|
||||
@@ -30,7 +31,6 @@
|
||||
</li>
|
||||
</keyframeParts>
|
||||
</AnimationDef>
|
||||
|
||||
<AnimationDef>
|
||||
<defName>ARA_FlyNorth</defName>
|
||||
<durationTicks>60</durationTicks>
|
||||
@@ -61,7 +61,6 @@
|
||||
</li>
|
||||
</keyframeParts>
|
||||
</AnimationDef>
|
||||
|
||||
<AnimationDef>
|
||||
<defName>ARA_FlySouth</defName>
|
||||
<durationTicks>60</durationTicks>
|
||||
@@ -92,4 +91,75 @@
|
||||
</li>
|
||||
</keyframeParts>
|
||||
</AnimationDef>
|
||||
|
||||
<!-- 灵能飞行 -->
|
||||
<AnimationDef>
|
||||
<defName>ARA_Psi_FlyEast</defName>
|
||||
<durationTicks>60</durationTicks>
|
||||
<keyframeParts>
|
||||
<!-- <li>
|
||||
<key>ARA_Flight_Attachment</key>
|
||||
<value>
|
||||
<keyframes>
|
||||
<li><graphicState>ARA_FlyEast_0</graphicState><tick>6</tick></li>
|
||||
<li><graphicState>ARA_FlyEast_1</graphicState><tick>12</tick></li>
|
||||
</keyframes>
|
||||
</value>
|
||||
</li> -->
|
||||
<li>
|
||||
<key>Root</key>
|
||||
<value><workerType>AnimationWorker_Keyframes</workerType><keyframes>
|
||||
<li><tick>0</tick><offset>(0,0,-0.05)</offset></li>
|
||||
<li><tick>30</tick><offset>(0,0,0.05)</offset></li>
|
||||
<li><tick>60</tick><offset>(0,0,-0.05)</offset></li>
|
||||
</keyframes></value>
|
||||
</li>
|
||||
</keyframeParts>
|
||||
</AnimationDef>
|
||||
<AnimationDef>
|
||||
<defName>ARA_Psi_FlyNorth</defName>
|
||||
<durationTicks>60</durationTicks>
|
||||
<keyframeParts>
|
||||
<!-- <li>
|
||||
<key>ARA_Flight_Attachment</key>
|
||||
<value>
|
||||
<keyframes>
|
||||
<li><graphicState>ARA_FlyNorth_0</graphicState><tick>6</tick></li>
|
||||
<li><graphicState>ARA_FlyNorth_1</graphicState><tick>12</tick></li>
|
||||
</keyframes>
|
||||
</value>
|
||||
</li> -->
|
||||
<li>
|
||||
<key>Root</key>
|
||||
<value><workerType>AnimationWorker_Keyframes</workerType><keyframes>
|
||||
<li><tick>0</tick><offset>(0,0,-0.05)</offset></li>
|
||||
<li><tick>30</tick><offset>(0,0,0.05)</offset></li>
|
||||
<li><tick>60</tick><offset>(0,0,-0.05)</offset></li>
|
||||
</keyframes></value>
|
||||
</li>
|
||||
</keyframeParts>
|
||||
</AnimationDef>
|
||||
<AnimationDef>
|
||||
<defName>ARA_Psi_FlySouth</defName>
|
||||
<durationTicks>60</durationTicks>
|
||||
<keyframeParts>
|
||||
<!-- <li>
|
||||
<key>ARA_Flight_Attachment</key>
|
||||
<value>
|
||||
<keyframes>
|
||||
<li><graphicState>ARA_FlySouth_0</graphicState><tick>6</tick></li>
|
||||
<li><graphicState>ARA_FlySouth_1</graphicState><tick>12</tick></li>
|
||||
</keyframes>
|
||||
</value>
|
||||
</li> -->
|
||||
<li>
|
||||
<key>Root</key>
|
||||
<value><workerType>AnimationWorker_Keyframes</workerType><keyframes>
|
||||
<li><tick>0</tick><offset>(0,0,-0.05)</offset></li>
|
||||
<li><tick>30</tick><offset>(0,0,0.05)</offset></li>
|
||||
<li><tick>60</tick><offset>(0,0,-0.05)</offset></li>
|
||||
</keyframes></value>
|
||||
</li>
|
||||
</keyframeParts>
|
||||
</AnimationDef>
|
||||
</Defs>
|
||||
@@ -2,6 +2,12 @@
|
||||
<Defs>
|
||||
<AlienRace.AlienBackstoryDef Name="ARA_BaseBackStory" Abstract="True">
|
||||
<requiresSpawnCategory>true</requiresSpawnCategory>
|
||||
<forcedTraitsChance>
|
||||
<li>
|
||||
<defName Degree="0">ARA_CreepyCrawly</defName>
|
||||
<chance>100</chance>
|
||||
</li>
|
||||
</forcedTraitsChance>
|
||||
</AlienRace.AlienBackstoryDef>
|
||||
|
||||
<AlienRace.AlienBackstoryDef ParentName="ARA_BaseBackStory">
|
||||
@@ -85,7 +91,7 @@
|
||||
<li>Crafting</li>
|
||||
<!-- <li>Cooking</li> -->
|
||||
<li>Constructing</li>
|
||||
<li>Caring</li>
|
||||
<!-- <li>Caring</li> -->
|
||||
<li>Social</li>
|
||||
<li>Artistic</li>
|
||||
<li>Intellectual</li>
|
||||
@@ -204,7 +210,7 @@
|
||||
<li>Crafting</li>
|
||||
<li>Cooking</li>
|
||||
<li>Constructing</li>
|
||||
<!-- <li>Caring</li> -->
|
||||
<li>Caring</li>
|
||||
<li>Social</li>
|
||||
<li>Artistic</li>
|
||||
<li>Intellectual</li>
|
||||
@@ -275,7 +281,6 @@
|
||||
<li>ArachnaeNode_spawnCategories_Facehugger</li>
|
||||
</spawnCategories>
|
||||
</AlienRace.AlienBackstoryDef>
|
||||
|
||||
<AlienRace.AlienBackstoryDef ParentName="ARA_BaseBackStory">
|
||||
<defName>Arachnae_Node_BS_Adult_NeuroSwarm</defName>
|
||||
<title>阿拉克涅织域种</title>
|
||||
|
||||
@@ -1068,6 +1068,15 @@
|
||||
<li>ARA_Acid_sacs</li>
|
||||
</groups>
|
||||
</li>
|
||||
<!-- 毒针腺 -->
|
||||
<li>
|
||||
<def>ARA_Toxic_Needle</def>
|
||||
<coverage>0.005</coverage>
|
||||
<depth>Inside</depth>
|
||||
<groups>
|
||||
<li>ARA_Toxic_Needles</li>
|
||||
</groups>
|
||||
</li>
|
||||
</parts>
|
||||
</li>
|
||||
</parts>
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
<additionalHediffs>
|
||||
<li>
|
||||
<hediff>ARA_MimicNematode</hediff>
|
||||
<severityPerDamageDealt>0.001</severityPerDamageDealt>
|
||||
<severityPerDamageDealt>0.05</severityPerDamageDealt>
|
||||
</li>
|
||||
</additionalHediffs>
|
||||
</DamageDef>
|
||||
@@ -90,4 +90,30 @@
|
||||
</additionalHediffs>
|
||||
</DamageDef>
|
||||
|
||||
<DamageDef ParentName="Wula_Dark_Matter_Beam_DMG">
|
||||
<defName>ARA_Psi_Damage</defName>
|
||||
<ignoreShields>true</ignoreShields>
|
||||
<igniteChanceByTargetFlammability>
|
||||
<points>
|
||||
<li>(0, 0)</li>
|
||||
<li>(1, 0.5)</li>
|
||||
</points>
|
||||
</igniteChanceByTargetFlammability>
|
||||
<label>灵能闪电</label>
|
||||
<ignoreShields>true</ignoreShields>
|
||||
<workerClass>DamageWorker_AddInjury</workerClass>
|
||||
<externalViolence>true</externalViolence>
|
||||
<deathMessage>{0} 被灵能闪电烧死了。</deathMessage>
|
||||
<harmAllLayersUntilOutside>true</harmAllLayersUntilOutside>
|
||||
<impactSoundType>Bullet</impactSoundType>
|
||||
<hediff>Burn</hediff>
|
||||
<armorCategory>Heat</armorCategory>
|
||||
<overkillPctToDestroyPart>0~0.7</overkillPctToDestroyPart>
|
||||
<isRanged>true</isRanged>
|
||||
<makesAnimalsFlee>false</makesAnimalsFlee>
|
||||
<defaultDamage>20</defaultDamage>
|
||||
<defaultArmorPenetration>1.5</defaultArmorPenetration>
|
||||
<buildingDamageFactorImpassable>1</buildingDamageFactorImpassable>
|
||||
<buildingDamageFactorPassable>1</buildingDamageFactorPassable>
|
||||
</DamageDef>
|
||||
</Defs>
|
||||
782
1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml
Normal file
@@ -0,0 +1,782 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
<!-- 女皇 -->
|
||||
<!-- T0 -->
|
||||
<HediffDef>
|
||||
<defName>ARA_Queen_0_Stage</defName>
|
||||
<label>进化等级——无</label>
|
||||
<description>这只阿拉克涅女皇种刚刚步入纷乱的边缘世界,其基因表达尚未明晰,她也需要更多的经验以思考要如何带领巢穴前进。</description>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<maxSeverity>2.0</maxSeverity>
|
||||
<!-- <stages>
|
||||
<li>
|
||||
<becomeVisible>ture</becomeVisible>
|
||||
</li>
|
||||
<li>
|
||||
<minSeverity>1.01</minSeverity>
|
||||
<becomeVisible>false</becomeVisible>
|
||||
</li>
|
||||
</stages> -->
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_GiveAbility">
|
||||
<abilityDefs>
|
||||
<li>ARA_EggSpew</li>
|
||||
<li>ARA_EggSpew_Huge</li>
|
||||
<li>ARA_BindDrone</li>
|
||||
<li>ARA_AcidSprayBurst_Queen</li>
|
||||
<li>ARA_Queen_Upgrade_1_Stage</li>
|
||||
</abilityDefs>
|
||||
</li>
|
||||
<li Class="HediffCompProperties_RemoveIfOtherHediff">
|
||||
<hediffs>
|
||||
<li>ARA_Queen_1_Stage_Transition_Period</li>
|
||||
</hediffs>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
<AbilityDef>
|
||||
<defName>ARA_Queen_Upgrade_1_Stage</defName>
|
||||
<label>女皇种进化——阶段1</label>
|
||||
<description>使女皇种发生内驱性进化,解锁下一等级的阿拉克涅卵。\n\n注意:女皇种进化后所孵化的阿拉克涅卵仍可以孕育低等级的虫族,但是越高级的阿拉克涅卵对温度越敏感。</description>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Queen_Upgrade_1_Stage</iconPath>
|
||||
<cooldownTicksRange>1800</cooldownTicksRange>
|
||||
<hostile>false</hostile>
|
||||
<groupAbility>true</groupAbility>
|
||||
<displayGizmoWhileUndrafted>true</displayGizmoWhileUndrafted>
|
||||
<disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
|
||||
<aiCanUse>true</aiCanUse>
|
||||
<ai_IsOffensive>true</ai_IsOffensive>
|
||||
<targetRequired>false</targetRequired>
|
||||
<jobDef>CastAbilityOnThing</jobDef>
|
||||
<verbProperties>
|
||||
<verbClass>Verb_CastAbility</verbClass>
|
||||
<range>1</range>
|
||||
<warmupTime>12</warmupTime>
|
||||
<soundCast>AcidSpray_Resolve</soundCast>
|
||||
<violent>false</violent>
|
||||
<targetable>false</targetable>
|
||||
<targetParams>
|
||||
<canTargetSelf>True</canTargetSelf>
|
||||
</targetParams>
|
||||
</verbProperties>
|
||||
<comps>
|
||||
<li Class="CompProperties_AbilityGiveHediff">
|
||||
<compClass>CompAbilityEffect_GiveHediff</compClass>
|
||||
<hediffDef>ARA_Queen_1_Stage_Transition_Period</hediffDef>
|
||||
<onlyApplyToSelf>True</onlyApplyToSelf>
|
||||
<replaceExisting>true</replaceExisting>
|
||||
<severity>1</severity>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
|
||||
<requiredResearch>ARA_Technology_1WMT</requiredResearch>
|
||||
<failMessage>需要科技 节点WMT-1"突破" 以解锁进化</failMessage>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
<HediffDef>
|
||||
<defName>ARA_Queen_1_Stage_Transition_Period</defName>
|
||||
<label>女皇种进化——阶段1</label>
|
||||
<description>使女皇种发生内驱性进化,解锁下一等级的虫群植入物和阿拉克涅卵</description>
|
||||
<!-- <hediffClass>HediffWithComps</hediffClass> -->
|
||||
<hediffClass>Hediff_High</hediffClass>
|
||||
<initialSeverity>1</initialSeverity>
|
||||
<maxSeverity>1.01</maxSeverity>
|
||||
<alwaysShowSeverity>true</alwaysShowSeverity>
|
||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_ReplaceHediff">
|
||||
<hediffs>
|
||||
<li>
|
||||
<hediff>ARA_Queen_1_Stage</hediff>
|
||||
<severityRange>0.02~0.15</severityRange>
|
||||
</li>
|
||||
</hediffs>
|
||||
<message>{PAWN_nameDef} 获得了一定的见解以发展巢穴,她可以用基因的织网编织更加复杂更加强大的虫群。</message>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
<!-- T1 -->
|
||||
<HediffDef>
|
||||
<defName>ARA_Queen_1_Stage</defName>
|
||||
<label>进化等级——等级1</label>
|
||||
<description>这只阿拉克涅女皇种获得了一定的见解以发展巢穴,她可以用基因的织网编织更加复杂更加强大的虫群。</description>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<maxSeverity>1.0</maxSeverity>
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_GiveAbility">
|
||||
<abilityDefs>
|
||||
<li>ARA_EggSpew_1Stage</li>
|
||||
<li>ARA_EggSpew_Huge_1Stage</li>
|
||||
<li>ARA_BindDrone</li>
|
||||
<li>ARA_AcidSprayBurst_Queen</li>
|
||||
<li>ARA_TumorSpew</li>
|
||||
<li>ARA_Queen_Upgrade_2_Stage</li>
|
||||
</abilityDefs>
|
||||
</li>
|
||||
<li Class="HediffCompProperties_RemoveIfOtherHediff">
|
||||
<hediffs>
|
||||
<li>ARA_Queen_2_Stage_Transition_Period</li>
|
||||
</hediffs>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
<AbilityDef>
|
||||
<defName>ARA_Queen_Upgrade_2_Stage</defName>
|
||||
<label>女皇种进化——阶段2</label>
|
||||
<description>使女皇种发生内驱性进化,解锁下一等级的阿拉克涅卵。\n\n注意:女皇种进化后所孵化的阿拉克涅卵仍可以孕育低等级的虫族,但是越高级的阿拉克涅卵对温度越敏感。</description>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Queen_Upgrade_2_Stage</iconPath>
|
||||
<cooldownTicksRange>1800</cooldownTicksRange>
|
||||
<hostile>false</hostile>
|
||||
<groupAbility>true</groupAbility>
|
||||
<displayGizmoWhileUndrafted>true</displayGizmoWhileUndrafted>
|
||||
<disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
|
||||
<aiCanUse>true</aiCanUse>
|
||||
<ai_IsOffensive>true</ai_IsOffensive>
|
||||
<targetRequired>false</targetRequired>
|
||||
<jobDef>CastAbilityOnThing</jobDef>
|
||||
<verbProperties>
|
||||
<verbClass>Verb_CastAbility</verbClass>
|
||||
<range>1</range>
|
||||
<warmupTime>12</warmupTime>
|
||||
<soundCast>AcidSpray_Resolve</soundCast>
|
||||
<violent>false</violent>
|
||||
<targetable>false</targetable>
|
||||
<targetParams>
|
||||
<canTargetSelf>True</canTargetSelf>
|
||||
</targetParams>
|
||||
</verbProperties>
|
||||
<comps>
|
||||
<li Class="CompProperties_AbilityGiveHediff">
|
||||
<compClass>CompAbilityEffect_GiveHediff</compClass>
|
||||
<hediffDef>ARA_Queen_2_Stage_Transition_Period</hediffDef>
|
||||
<onlyApplyToSelf>True</onlyApplyToSelf>
|
||||
<replaceExisting>true</replaceExisting>
|
||||
<severity>1</severity>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
|
||||
<requiredResearch>ARA_Technology_2WMT</requiredResearch>
|
||||
<failMessage>需要科技 节点WMT-2"突破2" 以解锁进化</failMessage>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
<HediffDef>
|
||||
<defName>ARA_Queen_2_Stage_Transition_Period</defName>
|
||||
<label>女皇种进化——阶段2</label>
|
||||
<description>使女皇种发生内驱性进化,解锁下一等级的虫群植入物和阿拉克涅卵</description>
|
||||
<!-- <hediffClass>HediffWithComps</hediffClass> -->
|
||||
<hediffClass>Hediff_High</hediffClass>
|
||||
<initialSeverity>1</initialSeverity>
|
||||
<maxSeverity>1.01</maxSeverity>
|
||||
<alwaysShowSeverity>true</alwaysShowSeverity>
|
||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_ReplaceHediff">
|
||||
<hediffs>
|
||||
<li>
|
||||
<hediff>ARA_Queen_2_Stage</hediff>
|
||||
<severityRange>0.02~0.15</severityRange>
|
||||
</li>
|
||||
</hediffs>
|
||||
<message>{PAWN_nameDef} 获得了一定的见解以发展巢穴,她可以用基因的织网编织更加复杂更加强大的虫群。</message>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
<!-- T2 -->
|
||||
<HediffDef>
|
||||
<defName>ARA_Queen_2_Stage</defName>
|
||||
<label>进化等级——等级2</label>
|
||||
<description>这只阿拉克涅女皇种获得了一定的见解以发展巢穴,她可以用基因的织网编织更加复杂更加强大的虫群。</description>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<maxSeverity>1.0</maxSeverity>
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_GiveAbility">
|
||||
<abilityDefs>
|
||||
<li>ARA_EggSpew_2Stage</li>
|
||||
<li>ARA_EggSpew_Huge_2Stage</li>
|
||||
<li>ARA_BindDrone</li>
|
||||
<li>ARA_AcidSprayBurst_Queen</li>
|
||||
<li>ARA_TumorSpew</li>
|
||||
</abilityDefs>
|
||||
</li>
|
||||
<!-- <li Class="HediffCompProperties_RemoveIfOtherHediff">
|
||||
<hediffs>
|
||||
<li>ARA_Queen_3_Stage_Transition_Period</li>
|
||||
</hediffs>
|
||||
</li> -->
|
||||
</comps>
|
||||
</HediffDef>
|
||||
|
||||
<!-- 工艺 -->
|
||||
<!-- T0 -->
|
||||
<HediffDef>
|
||||
<defName>ARA_WeaponSmith_0_Stage</defName>
|
||||
<label>进化等级——无</label>
|
||||
<description>这只阿拉克涅工艺种尚未得到任何强化,只能孵化最普通的茧以生产一些早期装备。</description>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<maxSeverity>2.0</maxSeverity>
|
||||
<!-- <stages>
|
||||
<li>
|
||||
<becomeVisible>ture</becomeVisible>
|
||||
</li>
|
||||
<li>
|
||||
<minSeverity>1.01</minSeverity>
|
||||
<becomeVisible>false</becomeVisible>
|
||||
</li>
|
||||
</stages> -->
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_GiveAbility">
|
||||
<abilityDefs>
|
||||
<li>ARA_Cocoon_Cloth</li>
|
||||
<li>ARA_Cocoon_Weapon</li>
|
||||
<li>ARA_WeaponSmith_Upgrade_1_Stage</li>
|
||||
</abilityDefs>
|
||||
</li>
|
||||
<li Class="HediffCompProperties_RemoveIfOtherHediff">
|
||||
<hediffs>
|
||||
<li>ARA_WeaponSmith_1_Stage_Transition_Period</li>
|
||||
</hediffs>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
<AbilityDef>
|
||||
<defName>ARA_WeaponSmith_Upgrade_1_Stage</defName>
|
||||
<label>工艺种进化——阶段1</label>
|
||||
<description>使工艺种发生内驱性进化,解锁下一等级的阿拉克涅工艺茧。\n\n注意:和女皇种的进化不同,工艺种一旦进化到下一阶段,此后所孵的阿拉克涅工艺茧将无法再制作现阶段及之前的装备,并且越高级的阿拉克涅工艺茧对温度越敏感。</description>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Queen_Upgrade_1_Stage</iconPath>
|
||||
<cooldownTicksRange>1800</cooldownTicksRange>
|
||||
<hostile>false</hostile>
|
||||
<groupAbility>true</groupAbility>
|
||||
<displayGizmoWhileUndrafted>true</displayGizmoWhileUndrafted>
|
||||
<disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
|
||||
<aiCanUse>true</aiCanUse>
|
||||
<ai_IsOffensive>true</ai_IsOffensive>
|
||||
<targetRequired>false</targetRequired>
|
||||
<jobDef>CastAbilityOnThing</jobDef>
|
||||
<verbProperties>
|
||||
<verbClass>Verb_CastAbility</verbClass>
|
||||
<range>1</range>
|
||||
<warmupTime>12</warmupTime>
|
||||
<soundCast>AcidSpray_Resolve</soundCast>
|
||||
<violent>false</violent>
|
||||
<targetable>false</targetable>
|
||||
<targetParams>
|
||||
<canTargetSelf>True</canTargetSelf>
|
||||
</targetParams>
|
||||
</verbProperties>
|
||||
<comps>
|
||||
<li Class="CompProperties_AbilityGiveHediff">
|
||||
<compClass>CompAbilityEffect_GiveHediff</compClass>
|
||||
<hediffDef>ARA_WeaponSmith_1_Stage_Transition_Period</hediffDef>
|
||||
<onlyApplyToSelf>True</onlyApplyToSelf>
|
||||
<replaceExisting>true</replaceExisting>
|
||||
<severity>1</severity>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
|
||||
<requiredResearch>ARA_Technology_1WMT</requiredResearch>
|
||||
<failMessage>需要科技 节点WMT-1"突破" 以解锁进化</failMessage>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
<HediffDef>
|
||||
<defName>ARA_WeaponSmith_1_Stage_Transition_Period</defName>
|
||||
<label>工艺种进化——阶段1</label>
|
||||
<description>为该工艺种进行基因调整,以使其获得进化并得以孵化更多的武装器官和织物。</description>
|
||||
<!-- <hediffClass>HediffWithComps</hediffClass> -->
|
||||
<hediffClass>Hediff_High</hediffClass>
|
||||
<initialSeverity>1</initialSeverity>
|
||||
<maxSeverity>1.01</maxSeverity>
|
||||
<alwaysShowSeverity>true</alwaysShowSeverity>
|
||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_ReplaceHediff">
|
||||
<hediffs>
|
||||
<li>
|
||||
<hediff>ARA_WeaponSmith_1_Stage</hediff>
|
||||
<severityRange>0.02~0.15</severityRange>
|
||||
</li>
|
||||
</hediffs>
|
||||
<message>{PAWN_nameDef} 通过蜂巢意志的拔耀获得了更强大的孵化能力,现在她可以孕育更复杂的茧以获取强大的装备。</message>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
<!-- T1 -->
|
||||
<HediffDef>
|
||||
<defName>ARA_WeaponSmith_1_Stage</defName>
|
||||
<label>进化等级——等级1</label>
|
||||
<description>这只阿拉科涅工艺种通过蜂巢意志的拔耀获得了更强大的孵化能力,现在她可以孕育更复杂的茧以获取强大的装备。</description>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<maxSeverity>2.0</maxSeverity>
|
||||
<!-- <stages>
|
||||
<li>
|
||||
<becomeVisible>ture</becomeVisible>
|
||||
</li>
|
||||
<li>
|
||||
<minSeverity>1.01</minSeverity>
|
||||
<becomeVisible>false</becomeVisible>
|
||||
</li>
|
||||
</stages> -->
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_GiveAbility">
|
||||
<abilityDefs>
|
||||
<li>ARA_Cocoon_Cloth_1Stage</li>
|
||||
<li>ARA_Cocoon_Weapon_1Stage</li>
|
||||
</abilityDefs>
|
||||
</li>
|
||||
<li Class="HediffCompProperties_RemoveIfOtherHediff">
|
||||
<hediffs>
|
||||
<li>ARA_Queen_1_Stage_Transition_Period</li>
|
||||
</hediffs>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
|
||||
<!-- 蜜罐种 -->
|
||||
<HediffDef>
|
||||
<defName>ARA_Myrmecocystus_Production_InsectJelly</defName>
|
||||
<label>产出虫蜜</label>
|
||||
<description>这只阿拉克涅蜜罐种正在产出虫蜜,以滋养虫群。一只蜜罐种每天产出10份阿拉克涅虫蜜。</description>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ARA_InsectJelly</ThingDef>
|
||||
<HediffDef>ARA_Myrmecocystus_Production_Medicine</HediffDef>
|
||||
</descriptionHyperlinks>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<maxSeverity>1.0</maxSeverity>
|
||||
<!-- <stages>
|
||||
<li>
|
||||
<becomeVisible>ture</becomeVisible>
|
||||
</li>
|
||||
<li>
|
||||
<minSeverity>1.01</minSeverity>
|
||||
<becomeVisible>false</becomeVisible>
|
||||
</li>
|
||||
</stages> -->
|
||||
<comps>
|
||||
<li Class="ArachnaeSwarm.MoharHediffs.HediffCompProperties_Spawner">
|
||||
<!--
|
||||
==================================================
|
||||
基础设置 (Basic Settings)
|
||||
==================================================
|
||||
-->
|
||||
<!-- [DEBUG] 如果为true,则为此组件启用详细的调试日志记录。 -->
|
||||
<debug>true</debug>
|
||||
<!-- 要生成的物品的ThingDef。 -->
|
||||
<thingToSpawn>ARA_InsectJelly</thingToSpawn>
|
||||
<!-- 每次生成的基础物品数量。 -->
|
||||
<spawnCount>10</spawnCount>
|
||||
<!--
|
||||
==================================================
|
||||
生成周期 (Spawning Interval)
|
||||
==================================================
|
||||
-->
|
||||
<!-- 下一次生成事件发生前的最少天数。 -->
|
||||
<minDaysB4Next>1</minDaysB4Next>
|
||||
<!-- 下一次生成事件发生前的最大天数。 -->
|
||||
<maxDaysB4Next>1</maxDaysB4Next>
|
||||
<randomGrace>0</randomGrace>
|
||||
<!--
|
||||
==================================================
|
||||
与年龄相关的调整 (Age-Related Adjustments)
|
||||
==================================================
|
||||
-->
|
||||
<!-- 如果为true,生成数量将根据宿主的年龄进行调整。 -->
|
||||
<ageWeightedQuantity>false</ageWeightedQuantity>
|
||||
<!-- 如果为true且ageWeightedQuantity为true,则随着宿主年龄增长,生成数量变多。 -->
|
||||
<olderBiggerQuantity>true</olderBiggerQuantity>
|
||||
<!-- 如果为true且ageWeightedQuantity为true,则随年龄增长的数量缩放将是指数性的而非线性的。 -->
|
||||
<exponentialQuantity>true</exponentialQuantity>
|
||||
<!-- 指数级数量缩放的最大乘数,以防止出现荒谬的数字。 -->
|
||||
<exponentialRatioLimit>20</exponentialRatioLimit>
|
||||
<!--
|
||||
==================================================
|
||||
生成条件 (Spawning Conditions)
|
||||
==================================================
|
||||
-->
|
||||
<!-- 如果为true,当宿主Pawn饥饿时,生成将暂停。 -->
|
||||
<hungerRelative>true</hungerRelative>
|
||||
<!-- 如果为true,当宿主Pawn受伤时,生成将暂停。 -->
|
||||
<healthRelative>false</healthRelative>
|
||||
</li>
|
||||
<li Class="HediffCompProperties_GiveAbility">
|
||||
<abilityDefs>
|
||||
<li>ARA_Myrmecocystus_Production_Medicine</li>
|
||||
</abilityDefs>
|
||||
</li>
|
||||
<li Class="HediffCompProperties_RemoveIfOtherHediff">
|
||||
<hediffs>
|
||||
<li>ARA_Myrmecocystus_Production_Medicine</li>
|
||||
</hediffs>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
<AbilityDef>
|
||||
<defName>ARA_Myrmecocystus_Production_Medicine</defName>
|
||||
<label>蜜罐种转换——医药专精</label>
|
||||
<description>使蜜罐种发生内驱性进化,以牺牲生产阿拉克涅虫蜜的代价,使其可以孵化医药茧,并允许使用医疗能力和操纵拟线种。\n\n该进化过程不可逆!</description>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Myrmecocystus_Production_Medicine</iconPath>
|
||||
<cooldownTicksRange>1800</cooldownTicksRange>
|
||||
<hostile>false</hostile>
|
||||
<groupAbility>true</groupAbility>
|
||||
<displayGizmoWhileUndrafted>true</displayGizmoWhileUndrafted>
|
||||
<disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
|
||||
<aiCanUse>true</aiCanUse>
|
||||
<ai_IsOffensive>true</ai_IsOffensive>
|
||||
<targetRequired>false</targetRequired>
|
||||
<jobDef>CastAbilityOnThing</jobDef>
|
||||
<verbProperties>
|
||||
<verbClass>Verb_CastAbility</verbClass>
|
||||
<range>1</range>
|
||||
<warmupTime>12</warmupTime>
|
||||
<soundCast>AcidSpray_Resolve</soundCast>
|
||||
<violent>false</violent>
|
||||
<targetable>false</targetable>
|
||||
<targetParams>
|
||||
<canTargetSelf>True</canTargetSelf>
|
||||
</targetParams>
|
||||
</verbProperties>
|
||||
<comps>
|
||||
<li Class="CompProperties_AbilityGiveHediff">
|
||||
<compClass>CompAbilityEffect_GiveHediff</compClass>
|
||||
<hediffDef>ARA_Myrmecocystus_Production_Medicine</hediffDef>
|
||||
<onlyApplyToSelf>True</onlyApplyToSelf>
|
||||
<replaceExisting>true</replaceExisting>
|
||||
<severity>1</severity>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
|
||||
<requiredResearch>ARA_Technology_1MED</requiredResearch>
|
||||
<failMessage>需要科技 节点MED-1"制药" 以解锁进化</failMessage>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
<HediffDef>
|
||||
<defName>ARA_Myrmecocystus_Production_Medicine</defName>
|
||||
<label>亚种-疗愈种</label>
|
||||
<description>这只阿拉克涅蜜罐种已经获得拔耀,不再生产虫蜜,而是生产巢穴所稀缺的药物、化学品,并可以操纵拟线种寄生虫。</description>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ARA_InsectJelly</ThingDef>
|
||||
</descriptionHyperlinks>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<maxSeverity>1.0</maxSeverity>
|
||||
<stages>
|
||||
<li>
|
||||
<minSeverity>0.01</minSeverity>
|
||||
<statOffsets>
|
||||
<MedicalTendQualityOffset>1</MedicalTendQualityOffset>
|
||||
</statOffsets>
|
||||
</li>
|
||||
</stages>
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_GiveAbility">
|
||||
<abilityDefs>
|
||||
<li>ARA_Cocoon_Medicine</li>
|
||||
<li>ARA_MimicNematode_Needle_Fire</li>
|
||||
</abilityDefs>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
|
||||
<!-- 战士种 -->
|
||||
<HediffDef>
|
||||
<defName>ARA_Fighter_Base</defName>
|
||||
<label>虫巢战士</label>
|
||||
<description>阿拉克涅的战士虫们可以将身体变成自己的最强大的武装,随着科技的解锁,它们将获得繁多的技能以供使用。</description>
|
||||
<descriptionHyperlinks>
|
||||
<HediffDef>ARA_Fighter_Invisibility</HediffDef>
|
||||
</descriptionHyperlinks>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<maxSeverity>1.0</maxSeverity>
|
||||
<!-- <stages>
|
||||
<li>
|
||||
<becomeVisible>ture</becomeVisible>
|
||||
</li>
|
||||
<li>
|
||||
<minSeverity>1.01</minSeverity>
|
||||
<becomeVisible>false</becomeVisible>
|
||||
</li>
|
||||
</stages> -->
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_GiveAbility">
|
||||
<abilityDefs>
|
||||
<li>ARA_AcidSprayBurst</li>
|
||||
<li>ARA_Toxic_Needle_Fire</li>
|
||||
<li>ARA_Fighter_Invisibility</li>
|
||||
</abilityDefs>
|
||||
</li>
|
||||
<li Class="HediffCompProperties_RemoveIfOtherHediff">
|
||||
<hediffs>
|
||||
<li>ARA_Fighter_Invisibility</li>
|
||||
</hediffs>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
<AbilityDef>
|
||||
<defName>ARA_Fighter_Invisibility</defName>
|
||||
<label>战士种转换——隐形杀手</label>
|
||||
<description>使战士种发生内驱性进化,极大地损害其远程武器和特殊技能的使用能力,以换取近乎永久的隐形和强大的近战能力。\n\n该进化过程不可逆!</description>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Myrmecocystus_Production_Medicine</iconPath>
|
||||
<cooldownTicksRange>1800</cooldownTicksRange>
|
||||
<hostile>false</hostile>
|
||||
<groupAbility>true</groupAbility>
|
||||
<displayGizmoWhileUndrafted>true</displayGizmoWhileUndrafted>
|
||||
<disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
|
||||
<aiCanUse>true</aiCanUse>
|
||||
<ai_IsOffensive>true</ai_IsOffensive>
|
||||
<targetRequired>false</targetRequired>
|
||||
<jobDef>CastAbilityOnThing</jobDef>
|
||||
<verbProperties>
|
||||
<verbClass>Verb_CastAbility</verbClass>
|
||||
<range>1</range>
|
||||
<warmupTime>12</warmupTime>
|
||||
<soundCast>AcidSpray_Resolve</soundCast>
|
||||
<violent>false</violent>
|
||||
<targetable>false</targetable>
|
||||
<targetParams>
|
||||
<canTargetSelf>True</canTargetSelf>
|
||||
</targetParams>
|
||||
</verbProperties>
|
||||
<comps>
|
||||
<li Class="CompProperties_AbilityGiveHediff">
|
||||
<compClass>CompAbilityEffect_GiveHediff</compClass>
|
||||
<hediffDef>ARA_Fighter_Invisibility</hediffDef>
|
||||
<onlyApplyToSelf>True</onlyApplyToSelf>
|
||||
<replaceExisting>true</replaceExisting>
|
||||
<severity>1</severity>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
|
||||
<requiredResearch>ARA_Technology_1MED</requiredResearch>
|
||||
<failMessage>需要科技 节点MED-1"制药" 以解锁进化</failMessage>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
<HediffDef>
|
||||
<defName>ARA_Fighter_Invisibility</defName>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<label>亚种-追猎种</label>
|
||||
<description>经过进化的战士种获得了特殊的覆盖全身的虹细胞,这些含纳米晶体的细胞可以折射各处的光线以达到永久隐身状态,直到其发起攻击。此外,它们也获得了更强大的近距离作战能力,缺点则是复眼的退化使其难以进行射击。</description>
|
||||
<isBad>false</isBad>
|
||||
<stages>
|
||||
<li>
|
||||
<minSeverity>0.01</minSeverity>
|
||||
<statFactors>
|
||||
<RangedCooldownFactor>2</RangedCooldownFactor>
|
||||
<ShootingAccuracyPawn>0.05</ShootingAccuracyPawn>
|
||||
<AimingDelayFactor>5</AimingDelayFactor>
|
||||
<StaggerDurationFactor>0</StaggerDurationFactor>
|
||||
</statFactors>
|
||||
</li>
|
||||
</stages>
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_Invisibility">
|
||||
<visibleToPlayer>true</visibleToPlayer>
|
||||
<fadeDurationTicks>60</fadeDurationTicks>
|
||||
<recoverFromDisruptedTicks>90</recoverFromDisruptedTicks>
|
||||
</li>
|
||||
<li Class="HediffCompProperties_GiveAbility">
|
||||
<abilityDefs>
|
||||
<li>ARA_Fighter_Invisibility_Execution</li>
|
||||
<li>ARA_Fighter_Invisibility_jump</li>
|
||||
</abilityDefs>
|
||||
</li>
|
||||
<li Class="HediffCompProperties_DisappearsOnDeath" />
|
||||
</comps>
|
||||
</HediffDef>
|
||||
|
||||
<!-- 蜜罐种 -->
|
||||
<HediffDef>
|
||||
<defName>ARA_Smokepop_Base</defName>
|
||||
<label>活体烟罐</label>
|
||||
<description>迷雾种是阿拉克涅虫族中的大家伙,它们毕不仅拥有厚实的外壳,其灌满信息素浓烟的腹部可以喷出覆盖战场的气体,吸引那些较小的辅虫破土而出对敌方发起疯狂的攻击。</description>
|
||||
<descriptionHyperlinks>
|
||||
<HediffDef>ARA_Smokepop_Production_Bacterium</HediffDef>
|
||||
</descriptionHyperlinks>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<maxSeverity>1.0</maxSeverity>
|
||||
<renderNodeProperties>
|
||||
<li>
|
||||
<nodeClass>PawnRenderNode_AttachmentHead</nodeClass>
|
||||
<workerClass>PawnRenderNodeWorker_FlipWhenCrawling</workerClass>
|
||||
<texPath>ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Addons_Smokepop_Armor</texPath>
|
||||
<parentTagDef>Body</parentTagDef>
|
||||
<useSkinShader>false</useSkinShader>
|
||||
<useRottenColor>false</useRottenColor>
|
||||
<rotDrawMode>Fresh, Rotting</rotDrawMode>
|
||||
<drawSize>0.85</drawSize>
|
||||
<drawData>
|
||||
<dataNorth>
|
||||
<offset>(0, 0, 0.2)</offset>
|
||||
</dataNorth>
|
||||
<dataEast>
|
||||
<offset>(0, 0, 0.2)</offset>
|
||||
</dataEast>
|
||||
<dataSouth>
|
||||
<offset>(0, 0, 0.2)</offset>
|
||||
</dataSouth>
|
||||
<dataWest>
|
||||
<offset>(0, 0, 0.2)</offset>
|
||||
</dataWest>
|
||||
<defaultData>
|
||||
<layer>800</layer>
|
||||
</defaultData>
|
||||
</drawData>
|
||||
</li>
|
||||
</renderNodeProperties>
|
||||
<stages>
|
||||
<li>
|
||||
<minSeverity>0</minSeverity>
|
||||
<statOffsets>
|
||||
<ArmorRating_Blunt>0.75</ArmorRating_Blunt>
|
||||
<ArmorRating_Sharp>0.8</ArmorRating_Sharp>
|
||||
</statOffsets>
|
||||
</li>
|
||||
</stages>
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_GiveAbility">
|
||||
<abilityDefs>
|
||||
<li>ARA_Ability_Smokepop</li>
|
||||
<li>ARA_Smokepop_Production_Bacterium</li>
|
||||
</abilityDefs>
|
||||
</li>
|
||||
<li Class="HediffCompProperties_RemoveIfOtherHediff">
|
||||
<hediffs>
|
||||
<li>ARA_Smokepop_Production_Bacterium</li>
|
||||
</hediffs>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
<AbilityDef>
|
||||
<defName>ARA_Smokepop_Production_Bacterium</defName>
|
||||
<label>迷雾种转换——钜菌专精</label>
|
||||
<description>使迷雾种发生内驱性进化,以牺牲喷射信息素和降低护甲为代价,使其可以定期产出阿拉克涅虫族的高级材料——活化钜菌。\n\n该进化过程不可逆!</description>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Myrmecocystus_Production_Medicine</iconPath>
|
||||
<cooldownTicksRange>1800</cooldownTicksRange>
|
||||
<hostile>false</hostile>
|
||||
<groupAbility>true</groupAbility>
|
||||
<displayGizmoWhileUndrafted>true</displayGizmoWhileUndrafted>
|
||||
<disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
|
||||
<aiCanUse>true</aiCanUse>
|
||||
<ai_IsOffensive>true</ai_IsOffensive>
|
||||
<targetRequired>false</targetRequired>
|
||||
<jobDef>CastAbilityOnThing</jobDef>
|
||||
<verbProperties>
|
||||
<verbClass>Verb_CastAbility</verbClass>
|
||||
<range>1</range>
|
||||
<warmupTime>12</warmupTime>
|
||||
<soundCast>AcidSpray_Resolve</soundCast>
|
||||
<violent>false</violent>
|
||||
<targetable>false</targetable>
|
||||
<targetParams>
|
||||
<canTargetSelf>True</canTargetSelf>
|
||||
</targetParams>
|
||||
</verbProperties>
|
||||
<comps>
|
||||
<li Class="CompProperties_AbilityGiveHediff">
|
||||
<compClass>CompAbilityEffect_GiveHediff</compClass>
|
||||
<hediffDef>ARA_Smokepop_Production_Bacterium</hediffDef>
|
||||
<onlyApplyToSelf>True</onlyApplyToSelf>
|
||||
<replaceExisting>true</replaceExisting>
|
||||
<severity>1</severity>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
|
||||
<requiredResearch>ARA_Technology_1MED</requiredResearch>
|
||||
<failMessage>需要科技 节点MED-1"制药" 以解锁进化</failMessage>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
<HediffDef>
|
||||
<defName>ARA_Smokepop_Production_Bacterium</defName>
|
||||
<label>亚种-育菌种</label>
|
||||
<description>这只阿拉克涅迷雾种已经获得拔耀,前部甲壳脱落且无法再喷射信息素,转而换取了生产活化钜菌的能力。</description>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ARA_Activated_Bacterium</ThingDef>
|
||||
</descriptionHyperlinks>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<maxSeverity>1.0</maxSeverity>
|
||||
<stages>
|
||||
<li>
|
||||
<minSeverity>0.01</minSeverity>
|
||||
</li>
|
||||
</stages>
|
||||
<comps>
|
||||
<li Class="ArachnaeSwarm.MoharHediffs.HediffCompProperties_Spawner">
|
||||
<!--
|
||||
==================================================
|
||||
基础设置 (Basic Settings)
|
||||
==================================================
|
||||
-->
|
||||
<!-- [DEBUG] 如果为true,则为此组件启用详细的调试日志记录。 -->
|
||||
<debug>true</debug>
|
||||
<!-- 要生成的物品的ThingDef。 -->
|
||||
<thingToSpawn>ARA_Activated_Bacterium</thingToSpawn>
|
||||
<!-- 每次生成的基础物品数量。 -->
|
||||
<spawnCount>3</spawnCount>
|
||||
<!--
|
||||
==================================================
|
||||
生成周期 (Spawning Interval)
|
||||
==================================================
|
||||
-->
|
||||
<!-- 下一次生成事件发生前的最少天数。 -->
|
||||
<minDaysB4Next>1</minDaysB4Next>
|
||||
<!-- 下一次生成事件发生前的最大天数。 -->
|
||||
<maxDaysB4Next>1</maxDaysB4Next>
|
||||
<randomGrace>0</randomGrace>
|
||||
<!--
|
||||
==================================================
|
||||
与年龄相关的调整 (Age-Related Adjustments)
|
||||
==================================================
|
||||
-->
|
||||
<!-- 如果为true,生成数量将根据宿主的年龄进行调整。 -->
|
||||
<ageWeightedQuantity>false</ageWeightedQuantity>
|
||||
<!-- 如果为true且ageWeightedQuantity为true,则随着宿主年龄增长,生成数量变多。 -->
|
||||
<olderBiggerQuantity>true</olderBiggerQuantity>
|
||||
<!-- 如果为true且ageWeightedQuantity为true,则随年龄增长的数量缩放将是指数性的而非线性的。 -->
|
||||
<exponentialQuantity>true</exponentialQuantity>
|
||||
<!-- 指数级数量缩放的最大乘数,以防止出现荒谬的数字。 -->
|
||||
<exponentialRatioLimit>20</exponentialRatioLimit>
|
||||
<!--
|
||||
==================================================
|
||||
生成条件 (Spawning Conditions)
|
||||
==================================================
|
||||
-->
|
||||
<!-- 如果为true,当宿主Pawn饥饿时,生成将暂停。 -->
|
||||
<hungerRelative>true</hungerRelative>
|
||||
<!-- 如果为true,当宿主Pawn受伤时,生成将暂停。 -->
|
||||
<healthRelative>false</healthRelative>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
</Defs>
|
||||
@@ -39,36 +39,30 @@
|
||||
<defName>ARA_New_Hive_NamerFaction</defName>
|
||||
<rulePack>
|
||||
<rulesStrings>
|
||||
<li>r_name->[msyl] [hivename]</li>
|
||||
<li>r_name->[hivename1] [hivename2]</li>
|
||||
<li>hivename1->猩红</li>
|
||||
<li>hivename1->至高</li>
|
||||
<li>hivename1->唯一</li>
|
||||
<li>hivename1->蔓延</li>
|
||||
<li>hivename1->永恒</li>
|
||||
<li>hivename1->永续</li>
|
||||
|
||||
<li>hivename->虫巢</li>
|
||||
<li>msyl->伊尔瓦巴</li>
|
||||
<li>msyl->赞诺瓦</li>
|
||||
<li>msyl->比丘</li>
|
||||
<li>msyl->珀尔迪达</li>
|
||||
<li>msyl->西萨力克</li>
|
||||
<li>msyl->希莱克</li>
|
||||
<li>msyl->切利斯</li>
|
||||
<li>msyl->韦恩娜</li>
|
||||
<li>msyl->卡索恩</li>
|
||||
<li>msyl->卓尔克</li>
|
||||
<li>msyl->叩科马</li>
|
||||
<li>msyl->阿琳</li>
|
||||
<li>msyl->杜布罗格那格</li>
|
||||
<li>msyl->伊塔克</li>
|
||||
<li>msyl->代德申科</li>
|
||||
<li>msyl->鲍特罗</li>
|
||||
<li>msyl->弗尔特维尔</li>
|
||||
<li>msyl->捷库阿</li>
|
||||
<li>msyl->克里斯特森</li>
|
||||
<li>msyl->巴恩斯</li>
|
||||
<li>msyl->伊瑞希尔</li>
|
||||
<li>msyl->新瓷器</li>
|
||||
<li>msyl->哈德斯</li>
|
||||
<li>msyl->伊弗尔</li>
|
||||
<li>msyl->阿切斯塔</li>
|
||||
<li>msyl->欧德斯</li>
|
||||
<li>msyl->伊拉戴尔夫</li>
|
||||
<li>hivename2->核心</li>
|
||||
<li>hivename2->内核</li>
|
||||
<li>hivename2->要点</li>
|
||||
<li>hivename2->中心</li>
|
||||
<li>hivename2->焦点</li>
|
||||
<li>hivename2->原点</li>
|
||||
<li>hivename2->支点</li>
|
||||
<li>hivename2->枢轴</li>
|
||||
<li>hivename2->中枢</li>
|
||||
<li>hivename2->母体</li>
|
||||
<li>hivename2->源泉</li>
|
||||
<li>hivename2->源地</li>
|
||||
<li>hivename2->基体</li>
|
||||
<li>hivename2->始祖</li>
|
||||
<li>hivename2->主脑</li>
|
||||
<li>hivename2->巢心</li>
|
||||
</rulesStrings>
|
||||
</rulePack>
|
||||
</RulePackDef>
|
||||
|
||||
@@ -1,18 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
|
||||
<HediffDef>
|
||||
<defName>ARA_TerrainBasedHediff</defName>
|
||||
<label>菌毯刺激</label>
|
||||
<description>根据所处地形而强化自身。</description>
|
||||
<defName>ARA_TerrainMoveSpeedHediff</defName>
|
||||
<label>菌毯加成:移动速度</label>
|
||||
<description>这只阿拉克捏督虫所着织物使其可以在菌毯上获得更高的移动速度。在菌毯上呆的越久,效果越强,离开菌毯后效果将逐渐衰减。</description>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<maxSeverity>1.0</maxSeverity>
|
||||
<minSeverity>-0.01</minSeverity>
|
||||
<isBad>false</isBad>
|
||||
<comps>
|
||||
<li Class="ArachnaeSwarm.HediffCompProperties_TerrainBasedSeverity">
|
||||
<!-- 每60 ticks(1秒)检查一次 -->
|
||||
<interval>60</interval>
|
||||
<interval>180</interval>
|
||||
|
||||
<!-- 目标地形列表 -->
|
||||
<terrainDefs>
|
||||
@@ -22,10 +20,10 @@
|
||||
</terrainDefs>
|
||||
|
||||
<!-- 站在目标地形上时,每次检查的严重性变化量 -->
|
||||
<severityOnTerrain>0.0167</severityOnTerrain>
|
||||
<severityOnTerrain>0.05</severityOnTerrain>
|
||||
|
||||
<!-- 不在目标地形上时,每次检查的严重性变化量 (负数表示减少) -->
|
||||
<severityOffTerrain>-0.0083</severityOffTerrain>
|
||||
<severityOffTerrain>-0.0249</severityOffTerrain>
|
||||
</li>
|
||||
<li Class="HediffCompProperties_RemoveIfApparelDropped" />
|
||||
</comps>
|
||||
@@ -36,26 +34,23 @@
|
||||
<label>无</label>
|
||||
</li>
|
||||
<li>
|
||||
<minSeverity>0.4</minSeverity>
|
||||
<label>适应</label>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Consciousness</capacity>
|
||||
<offset>0.1</offset>
|
||||
</li>
|
||||
</capMods>
|
||||
<minSeverity>0.1</minSeverity>
|
||||
<statOffsets>
|
||||
<MoveSpeed>0.1</MoveSpeed>
|
||||
</statOffsets>
|
||||
</li>
|
||||
<li>
|
||||
<minSeverity>0.5</minSeverity>
|
||||
<statOffsets>
|
||||
<MoveSpeed>0.25</MoveSpeed>
|
||||
</statOffsets>
|
||||
</li>
|
||||
<li>
|
||||
<minSeverity>0.8</minSeverity>
|
||||
<label>舒适</label>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Consciousness</capacity>
|
||||
<offset>0.25</offset>
|
||||
</li>
|
||||
</capMods>
|
||||
<statOffsets>
|
||||
<MoveSpeed>0.5</MoveSpeed>
|
||||
</statOffsets>
|
||||
</li>
|
||||
</stages>
|
||||
</HediffDef>
|
||||
|
||||
</Defs>
|
||||
@@ -3,7 +3,7 @@
|
||||
<HediffDef>
|
||||
<defName>ARA_AcidCoverd</defName>
|
||||
<label>阿拉克涅酸液</label>
|
||||
<description>一支拥有酸囊的阿拉克涅虫族向此人喷射了强酸,沾染的液体将使得此人痛不欲生,盔甲和表皮软化,并持续灼烧它的身体。</description>
|
||||
<description>一只拥有酸囊的阿拉克涅虫族向此人喷射了强酸,沾染的液体将使得此人痛不欲生,盔甲和表皮软化,并持续灼烧它的身体。</description>
|
||||
<defaultLabelColor>(1, 1, 0.8)</defaultLabelColor>
|
||||
<hediffClass>ArachnaeSwarm.HediffCurseFlame</hediffClass>
|
||||
<comps>
|
||||
@@ -197,5 +197,87 @@
|
||||
</comps>
|
||||
</HediffDef>
|
||||
|
||||
|
||||
<HediffDef>
|
||||
<defName>ARA_ChainReload</defName>
|
||||
<label>链式装填</label>
|
||||
<description>使用的武器拥有链式装填能力, 装填速度将随每次射击后提升。</description>
|
||||
<defaultLabelColor>(0.52, 1, 0.95)</defaultLabelColor>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_DisappearsOnDeath" />
|
||||
<li Class="HediffCompProperties_Disappears">
|
||||
<disappearsAfterTicks>1800</disappearsAfterTicks> <!-- 30 seconds -->
|
||||
<showRemainingTime>true</showRemainingTime>
|
||||
</li>
|
||||
</comps>
|
||||
<stages>
|
||||
<li>
|
||||
<label>等级1/5</label>
|
||||
<becomeVisible>true</becomeVisible>
|
||||
<statFactors>
|
||||
<AimingDelayFactor>0.9</AimingDelayFactor>
|
||||
<RangedCooldownFactor>0.9</RangedCooldownFactor>
|
||||
</statFactors>
|
||||
</li>
|
||||
<li>
|
||||
<label>等级2/5</label>
|
||||
<minSeverity>4</minSeverity>
|
||||
<statFactors>
|
||||
<AimingDelayFactor>0.8</AimingDelayFactor>
|
||||
<RangedCooldownFactor>0.8</RangedCooldownFactor>
|
||||
</statFactors>
|
||||
</li>
|
||||
<li>
|
||||
<label>等级3/5</label>
|
||||
<minSeverity>8</minSeverity>
|
||||
<statFactors>
|
||||
<AimingDelayFactor>0.65</AimingDelayFactor>
|
||||
<RangedCooldownFactor>0.65</RangedCooldownFactor>
|
||||
</statFactors>
|
||||
</li>
|
||||
<li>
|
||||
<label>等级4/5</label>
|
||||
<minSeverity>12</minSeverity>
|
||||
<statFactors>
|
||||
<AimingDelayFactor>0.45</AimingDelayFactor>
|
||||
<RangedCooldownFactor>0.45</RangedCooldownFactor>
|
||||
</statFactors>
|
||||
</li>
|
||||
<li>
|
||||
<label>等级5/5</label>
|
||||
<minSeverity>16</minSeverity>
|
||||
<statFactors>
|
||||
<AimingDelayFactor>0.25</AimingDelayFactor>
|
||||
<RangedCooldownFactor>0.25</RangedCooldownFactor>
|
||||
</statFactors>
|
||||
</li>
|
||||
</stages>
|
||||
</HediffDef>
|
||||
|
||||
<HediffDef>
|
||||
<defName>ARA_Fighter_Execution_Damage</defName>
|
||||
<label>处决</label>
|
||||
<description></description>
|
||||
<defaultLabelColor>(1, 1, 0.8)</defaultLabelColor>
|
||||
<hediffClass>ArachnaeSwarm.HediffCurseFlame</hediffClass>
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_Disappears">
|
||||
<disappearsAfterTicks>2</disappearsAfterTicks>
|
||||
</li>
|
||||
<li Class="HediffCompProperties_DisappearsOnDeath"/>
|
||||
</comps>
|
||||
<modExtensions>
|
||||
<li Class="ArachnaeSwarm.CurseFlameModExt">
|
||||
<damageDefName>Cut</damageDefName>
|
||||
<damageRange>300</damageRange>
|
||||
<damageIntervalTicks>1</damageIntervalTicks>
|
||||
</li>
|
||||
</modExtensions>
|
||||
<stages>
|
||||
<li>
|
||||
<label>minor</label>
|
||||
<becomeVisible>false</becomeVisible>
|
||||
</li>
|
||||
</stages>
|
||||
</HediffDef>
|
||||
</Defs>
|
||||
@@ -9,17 +9,11 @@
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<maxSeverity>100</maxSeverity>
|
||||
<comps>
|
||||
<li Class="ArachnaeSwarm.HediffCompProperties_HiveMindMaster">
|
||||
<scanIntervalTicks>3200</scanIntervalTicks>
|
||||
</li>
|
||||
</comps>
|
||||
<stages>
|
||||
<li>
|
||||
<label>连接至 {0} 个虫群工蜂</label>
|
||||
<minSeverity>0</minSeverity>
|
||||
<foodPoisoningChanceFactor>0</foodPoisoningChanceFactor>
|
||||
<regeneration>500</regeneration>
|
||||
<!-- Stat offsets will be added here later -->
|
||||
<disablesNeeds>
|
||||
<li>Joy</li>
|
||||
@@ -33,8 +27,12 @@
|
||||
</enablesNeeds>
|
||||
</li>
|
||||
</stages>
|
||||
<comps>
|
||||
<li Class="ArachnaeSwarm.HediffCompProperties_HiveMindMaster">
|
||||
<scanIntervalTicks>3200</scanIntervalTicks>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
|
||||
<HediffDef>
|
||||
<defName>ARA_HiveMindDrone</defName>
|
||||
<label>阿拉克涅督虫</label>
|
||||
@@ -43,17 +41,6 @@
|
||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<comps>
|
||||
<li Class="ArachnaeSwarm.HediffCompProperties_HiveMindDrone">
|
||||
<unlinkedDieDelayTicks>6400</unlinkedDieDelayTicks> <!-- Default to 30 seconds -->
|
||||
</li>
|
||||
<li Class="HediffCompProperties_MessageAfterTicks">
|
||||
<ticks>1</ticks>
|
||||
<letterLabel>{0_labelShort} 诞生</letterLabel>
|
||||
<letterText>一只新的阿拉克涅督虫 {0_labelShort} 已经破茧而出!她正在四处徘徊,等待女皇种的指示——使用阿拉克涅女皇种的信息素标记技能完成链接,或者等待其自行建立链接。</letterText>
|
||||
<letterType>HumanPregnancy</letterType>
|
||||
</li>
|
||||
</comps>
|
||||
<stages>
|
||||
<li>
|
||||
<minSeverity>0</minSeverity>
|
||||
@@ -70,8 +57,18 @@
|
||||
</disablesNeeds>
|
||||
</li>
|
||||
</stages>
|
||||
<comps>
|
||||
<li Class="ArachnaeSwarm.HediffCompProperties_HiveMindDrone">
|
||||
<unlinkedDieDelayTicks>6400</unlinkedDieDelayTicks> <!-- Default to 30 seconds -->
|
||||
</li>
|
||||
<li Class="HediffCompProperties_MessageAfterTicks">
|
||||
<ticks>1</ticks>
|
||||
<letterLabel>{0_labelShort} 诞生</letterLabel>
|
||||
<letterText>一只新的阿拉克涅督虫 {0_labelShort} 已经破茧而出!她正在四处徘徊,等待女皇种的指示——使用阿拉克涅女皇种的信息素标记技能完成链接,或者等待其自行建立链接。</letterText>
|
||||
<letterType>HumanPregnancy</letterType>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
|
||||
<HediffDef>
|
||||
<defName>ARA_HiveMindWorker</defName>
|
||||
<label>阿拉克涅辅虫</label>
|
||||
@@ -92,4 +89,216 @@
|
||||
</li>
|
||||
</stages>
|
||||
</HediffDef>
|
||||
|
||||
<HediffDef>
|
||||
<defName>ARA_HiveStrength</defName>
|
||||
<label>虫群活力</label>
|
||||
<description>这只阿拉克涅虫族的修复细胞与众不同,它能以非常快的速度自动治愈伤势,甚至是再生出一些已经损失的器官。</description>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<comps>
|
||||
</comps>
|
||||
<stages>
|
||||
<li>
|
||||
<minSeverity>0</minSeverity>
|
||||
<regeneration>100</regeneration>
|
||||
</li>
|
||||
</stages>
|
||||
</HediffDef>
|
||||
|
||||
<HediffDef>
|
||||
<defName>ARA_TemperatureRegulation</defName>
|
||||
<label>冷血动物</label>
|
||||
<description>阿拉克涅虫族是冷血动物,这代表着她们对外界的温度变化更加敏感——在适宜温度下她们将变得敏捷而致命,在不适温度下她们将难以行动。\n\n此类阿拉克涅虫族可以接受在16~26°C的温度下活动,温度接近21°C时会获得额外的意识加成。</description>
|
||||
<hediffClass>Hediff_High</hediffClass>
|
||||
<defaultLabelColor>(0.6, 0.8, 0.9)</defaultLabelColor>
|
||||
<maxSeverity>1.0</maxSeverity>
|
||||
<minSeverity>0.01</minSeverity>
|
||||
<initialSeverity>0.5</initialSeverity>
|
||||
<comps>
|
||||
<li Class="ArachnaeSwarm.HediffCompProperties_Temperature">
|
||||
<minComfortableTemperature>16</minComfortableTemperature>
|
||||
<maxComfortableTemperature>26</maxComfortableTemperature>
|
||||
<severityChangeIn>0.01</severityChangeIn>
|
||||
<severityChangeOut>-0.01</severityChangeOut>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.HediffCompProperties_GiveHediffsInRangeToRace">
|
||||
<range>6</range>
|
||||
<hediff>ARA_CreepyCrawly_Hediff</hediff>
|
||||
<mote>Mote_ARA_CreepyCrawly_HediffLinkLine</mote>
|
||||
|
||||
<!-- 定义可以被影响的种族列表 -->
|
||||
<!-- <targetRaces>
|
||||
<li>Human</li>
|
||||
</targetRaces> -->
|
||||
|
||||
<!-- 其他参数和原版一样 -->
|
||||
<targetingParameters>
|
||||
<canTargetBuildings>false</canTargetBuildings>
|
||||
<canTargetAnimals>false</canTargetAnimals>
|
||||
<canTargetMechs>false</canTargetMechs>
|
||||
<canTargetSelf>true</canTargetSelf>
|
||||
<onlyTargetColonists>true</onlyTargetColonists>
|
||||
</targetingParameters>
|
||||
<onlyPawnsInSameFaction>false</onlyPawnsInSameFaction>
|
||||
<hideMoteWhenNotDrafted>true</hideMoteWhenNotDrafted>
|
||||
</li>
|
||||
</comps>
|
||||
<stages>
|
||||
<li>
|
||||
<minSeverity>0</minSeverity>
|
||||
<label>不适</label>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Consciousness</capacity>
|
||||
<offset>-0.5</offset>
|
||||
</li>
|
||||
</capMods>
|
||||
</li>
|
||||
<li>
|
||||
<minSeverity>0.4</minSeverity>
|
||||
<label>适应</label>
|
||||
</li>
|
||||
<li>
|
||||
<minSeverity>0.8</minSeverity>
|
||||
<label>舒适</label>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Consciousness</capacity>
|
||||
<offset>0.25</offset>
|
||||
</li>
|
||||
</capMods>
|
||||
</li>
|
||||
</stages>
|
||||
</HediffDef>
|
||||
<HediffDef>
|
||||
<defName>ARA_CreepyCrawly_Hediff</defName>
|
||||
<label>原始恐惧</label>
|
||||
<description>快把这些虫子从我身边支开!</description>
|
||||
<defaultLabelColor>(0.52, 1, 0.95)</defaultLabelColor>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<isBad>false</isBad>
|
||||
<debugLabelExtra>other</debugLabelExtra>
|
||||
<initialSeverity>1</initialSeverity> <!-- 初始层数设置为10 -->
|
||||
<maxSeverity>1</maxSeverity> <!-- 最大层数,可以根据需要调整 -->
|
||||
<stages>
|
||||
<li>
|
||||
<minSeverity>0</minSeverity>
|
||||
<becomeVisible>false</becomeVisible>
|
||||
</li>
|
||||
</stages>
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_Disappears">
|
||||
<showRemainingTime>false</showRemainingTime>
|
||||
</li>
|
||||
<li Class="HediffCompProperties_DisappearsOnDeath"/>
|
||||
<li Class="HediffCompProperties_Link">
|
||||
<requireLinkOnOtherPawn>false</requireLinkOnOtherPawn>
|
||||
<maxDistance>0</maxDistance>
|
||||
<customMote>Mote_ARA_CreepyCrawly_HediffLinkLine</customMote>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
<ThingDef ParentName="MoteBase">
|
||||
<defName>Mote_ARA_CreepyCrawly_HediffLinkLine</defName>
|
||||
<thingClass>MoteDualAttached</thingClass>
|
||||
<altitudeLayer>MoteLow</altitudeLayer>
|
||||
<mote>
|
||||
<fadeInTime>0.1</fadeInTime>
|
||||
<fadeOutTime>0.1</fadeOutTime>
|
||||
<solidTime>999999</solidTime>
|
||||
<needsMaintenance>True</needsMaintenance>
|
||||
<rotateTowardsTarget>True</rotateTowardsTarget>
|
||||
<scaleToConnectTargets>True</scaleToConnectTargets>
|
||||
</mote>
|
||||
<graphicData>
|
||||
<shaderType>MoteGlow</shaderType>
|
||||
<texPath>Things/Mote/WorkCommandLinkLine</texPath>
|
||||
<color>(0,0,0,0)</color>
|
||||
</graphicData>
|
||||
</ThingDef>
|
||||
|
||||
<HediffDef>
|
||||
<defName>ARA_RaceBaseSwarmProduceSwitchHediff</defName>
|
||||
<label>繁育抑制</label>
|
||||
<description>该阿拉克涅督虫已被蜂巢思维禁止进行辅虫的繁育。</description>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<isBad>false</isBad>
|
||||
<defaultLabelColor>(0.6, 0.6, 0.6)</defaultLabelColor>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
</HediffDef>
|
||||
|
||||
<HediffDef>
|
||||
<defName>ARA_Psi_Master</defName>
|
||||
<label>灵能专家</label>
|
||||
<description>阿拉克涅织域种是虫巢中的灵能大师,她们对使用灵能能力得心应手,不仅自身可以依靠灵能进行飞行,还能为附近的己方单位提供保护,并将其作为灵能导线对敌人发射能量攻击。</description>
|
||||
<hediffClass>Hediff_High</hediffClass>
|
||||
<defaultLabelColor>(0.6, 0.8, 0.9)</defaultLabelColor>
|
||||
<maxSeverity>1.0</maxSeverity>
|
||||
<minSeverity>0.01</minSeverity>
|
||||
<initialSeverity>0.5</initialSeverity>
|
||||
<comps>
|
||||
<li Class="ArachnaeSwarm.HediffCompProperties_GiveHediffsInRangeToRace">
|
||||
<range>18</range>
|
||||
<hediff>ARA_Psi_Conductor</hediff>
|
||||
<!-- <mote>Mote_ARA_CreepyCrawly_HediffLinkLine</mote> -->
|
||||
|
||||
<!-- 定义可以被影响的种族列表 -->
|
||||
<!-- <targetRaces>
|
||||
<li>Human</li>
|
||||
</targetRaces> -->
|
||||
|
||||
<!-- 其他参数和原版一样 -->
|
||||
<targetingParameters>
|
||||
<canTargetBuildings>false</canTargetBuildings>
|
||||
<canTargetAnimals>true</canTargetAnimals>
|
||||
<canTargetMechs>false</canTargetMechs>
|
||||
<canTargetSelf>true</canTargetSelf>
|
||||
<onlyTargetColonists>true</onlyTargetColonists>
|
||||
</targetingParameters>
|
||||
<onlyPawnsInSameFaction>true</onlyPawnsInSameFaction>
|
||||
<hideMoteWhenNotDrafted>true</hideMoteWhenNotDrafted>
|
||||
</li>
|
||||
</comps>
|
||||
<stages>
|
||||
</stages>
|
||||
</HediffDef>
|
||||
<HediffDef>
|
||||
<defName>ARA_Psi_Conductor</defName>
|
||||
<label>灵能导体</label>
|
||||
<description>一只阿拉克涅织域种将这个殖民者作为其强大灵能力量的导体,织域种可以通过控制这个殖民者的灵能对敌方发起自动攻击,并使得这个殖民者更加难以击倒——代价则是殖民者自身会短暂地出现灵能失聪的情况。</description>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ARA_Psi_Conductor_Turret</ThingDef>
|
||||
</descriptionHyperlinks>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<isBad>false</isBad>
|
||||
<defaultLabelColor>(0.6, 0.6, 0.6)</defaultLabelColor>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<stages>
|
||||
<li>
|
||||
<statFactors>
|
||||
<IncomingDamageFactor>0.75</IncomingDamageFactor>
|
||||
<PsychicSensitivity>0</PsychicSensitivity>
|
||||
</statFactors>
|
||||
</li>
|
||||
</stages>
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_Disappears">
|
||||
<showRemainingTime>false</showRemainingTime>
|
||||
</li>
|
||||
<li Class="HediffCompProperties_DisappearsOnDeath"/>
|
||||
<li Class="HediffCompProperties_Link">
|
||||
<requireLinkOnOtherPawn>false</requireLinkOnOtherPawn>
|
||||
<maxDistance>18</maxDistance>
|
||||
<!-- <customMote>Mote_ARA_CreepyCrawly_HediffLinkLine</customMote> -->
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.HediffCompProperties_TopTurret">
|
||||
<turretDef>ARA_Psi_Conductor_Turret</turretDef>
|
||||
<angleOffset>0</angleOffset>
|
||||
<autoAttack>true</autoAttack>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
</Defs>
|
||||
@@ -1,10 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
|
||||
<HediffDef>
|
||||
<HediffDef>
|
||||
<defName>ARA_MimicNematode</defName>
|
||||
<label>拟线种虫族寄生</label>
|
||||
<description>被阿拉克涅拟线种虫族寄生了,如果不加以干预,拟线虫最终会杀死宿主并将其转化为没有意识的寄生体。拟线虫会通过寄生体的攻击行为感染其他躯体。</description>
|
||||
<description>该殖民者被阿拉克涅拟线种寄生了,如果不加以干预,拟线虫最终会杀死宿主并将其转化为没有意识的寄生体。拟线虫会通过寄生体的攻击行为感染其他躯体。</description>
|
||||
|
||||
<!-- 1. 指向我们创建的包含Comp的Hediff类 -->
|
||||
<hediffClass>ArachnaeSwarm.Hediff_NecroticVirus</hediffClass>
|
||||
@@ -29,7 +28,7 @@
|
||||
<vomitMtbDays>1</vomitMtbDays>
|
||||
<painFactor>0.5</painFactor>
|
||||
<totalBleedFactor>0.9</totalBleedFactor>
|
||||
<becomeVisible>false</becomeVisible>
|
||||
<becomeVisible>true</becomeVisible>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Talking</capacity>
|
||||
@@ -148,13 +147,12 @@
|
||||
<extraDamageType>ARA_MimicNematodeBite</extraDamageType>
|
||||
</li>
|
||||
</modExtensions>
|
||||
|
||||
</HediffDef>
|
||||
|
||||
<RecipeDef ParentName="SurgeryFlesh">
|
||||
<defName>ARA_CureBloodRot</defName>
|
||||
<label>清除拟线虫感染</label>
|
||||
<description>通过多种药物联合靶向治疗清除患者体内的阿拉克涅拟线种虫族感染。</description>
|
||||
<description>通过多种药物联合靶向治疗清除患者体内的阿拉克涅拟线种虫族感染,这种手术非常复杂,只能使用来自闪耀世界的医药进行。</description>
|
||||
<workerClass>Recipe_RemoveHediff</workerClass>
|
||||
<jobString>清除拟线虫感染.</jobString>
|
||||
<workAmount>2000</workAmount>
|
||||
@@ -173,7 +171,7 @@
|
||||
<li>MedicineUltratech</li>
|
||||
</thingDefs>
|
||||
</filter>
|
||||
<count>10</count>
|
||||
<count>2</count>
|
||||
</li>
|
||||
</ingredients>
|
||||
<fixedIngredientFilter>
|
||||
@@ -301,5 +299,4 @@
|
||||
</li>
|
||||
</renderNodeProperties>
|
||||
</HediffDef>
|
||||
|
||||
</Defs>
|
||||
@@ -1,47 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
<HediffDef>
|
||||
<defName>ARA_TemperatureRegulation</defName>
|
||||
<label>冷血动物</label>
|
||||
<description>阿拉克涅虫族是冷血动物,这代表着她们对外界的温度变化更加敏感——在适宜温度下她们将变得敏捷而致命,在不适温度下她们将难以行动。\n\n此类阿拉克涅虫族可以接受在16~26°C的温度下活动,温度接近21°C时会获得额外的意识加成。</description>
|
||||
<hediffClass>Hediff_High</hediffClass>
|
||||
<defaultLabelColor>(0.6, 0.8, 0.9)</defaultLabelColor>
|
||||
<maxSeverity>1.0</maxSeverity>
|
||||
<minSeverity>-0.01</minSeverity>
|
||||
<initialSeverity>0.5</initialSeverity>
|
||||
<comps>
|
||||
<li Class="ArachnaeSwarm.HediffCompProperties_Temperature">
|
||||
<minComfortableTemperature>16</minComfortableTemperature>
|
||||
<maxComfortableTemperature>26</maxComfortableTemperature>
|
||||
<severityChangeIn>0.01</severityChangeIn>
|
||||
<severityChangeOut>-0.01</severityChangeOut>
|
||||
</li>
|
||||
</comps>
|
||||
<stages>
|
||||
<li>
|
||||
<minSeverity>0</minSeverity>
|
||||
<label>不适</label>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Consciousness</capacity>
|
||||
<offset>-0.5</offset>
|
||||
</li>
|
||||
</capMods>
|
||||
</li>
|
||||
<li>
|
||||
<minSeverity>0.4</minSeverity>
|
||||
<label>适应</label>
|
||||
</li>
|
||||
<li>
|
||||
<minSeverity>0.8</minSeverity>
|
||||
<label>舒适</label>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Consciousness</capacity>
|
||||
<offset>0.25</offset>
|
||||
</li>
|
||||
</capMods>
|
||||
</li>
|
||||
</stages>
|
||||
</HediffDef>
|
||||
</Defs>
|
||||
11
1.6/1.6/Defs/JobDefs/ARA_Jobs_Wormhole.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
|
||||
<JobDef>
|
||||
<defName>ARA_DeployWormhole</defName>
|
||||
<driverClass>ArachnaeSwarm.JobDriver_DeployWormhole</driverClass>
|
||||
<reportString>正在部署虫洞。</reportString>
|
||||
<allowOpportunisticPrefix>true</allowOpportunisticPrefix>
|
||||
</JobDef>
|
||||
|
||||
</Defs>
|
||||
@@ -70,7 +70,7 @@
|
||||
<forceNormalGearQuality>true</forceNormalGearQuality>
|
||||
<initialWillRange>99~99</initialWillRange>
|
||||
<initialResistanceRange>99~99</initialResistanceRange>
|
||||
<maxGenerationAge>0</maxGenerationAge>
|
||||
<maxGenerationAge>0.01</maxGenerationAge>
|
||||
<minGenerationAge>0</minGenerationAge>
|
||||
<canBeScattered>false</canBeScattered>
|
||||
<xenotypeSet>
|
||||
@@ -119,6 +119,8 @@
|
||||
</backstoryFiltersOverride>
|
||||
<abilities>
|
||||
<li>ARA_AcidSprayBurst</li>
|
||||
<li>ARA_RaceBaseSwarmProduceOff</li>
|
||||
<li>ARA_RaceBaseSwarmProduceOn</li>
|
||||
</abilities>
|
||||
<apparelTags>
|
||||
</apparelTags>
|
||||
@@ -143,6 +145,8 @@
|
||||
<apparelMoney>0</apparelMoney>
|
||||
<abilities>
|
||||
<li>ARA_Ability_TrackingCharge</li>
|
||||
<li>ARA_RaceBaseSwarmProduceOff</li>
|
||||
<li>ARA_RaceBaseSwarmProduceOn</li>
|
||||
</abilities>
|
||||
</PawnKindDef>
|
||||
<PawnKindDef ParentName="ArachnaeNodeABasePawnKind">
|
||||
@@ -162,6 +166,10 @@
|
||||
<apparelTags>
|
||||
</apparelTags>
|
||||
<apparelMoney>0</apparelMoney>
|
||||
<abilities>
|
||||
<li>ARA_RaceBaseSwarmProduceOff</li>
|
||||
<li>ARA_RaceBaseSwarmProduceOn</li>
|
||||
</abilities>
|
||||
</PawnKindDef>
|
||||
<PawnKindDef ParentName="ArachnaeNodeABasePawnKind">
|
||||
<defName>ArachnaeNode_Race_Facehugger</defName>
|
||||
@@ -188,6 +196,7 @@
|
||||
<defName>ArachnaeNode_Race_Fighter</defName>
|
||||
<label>阿拉克涅战士种</label>
|
||||
<race>ArachnaeNode_Race_Fighter</race>
|
||||
<collidesWithPawns>false</collidesWithPawns>
|
||||
<defaultFactionType>PlayerColony</defaultFactionType>
|
||||
<invNutrition>0</invNutrition>
|
||||
<backstoryFiltersOverride>
|
||||
@@ -200,8 +209,6 @@
|
||||
</backstoryFiltersOverride>
|
||||
<abilities>
|
||||
<li>ARA_BaseRace_Acid_Launcher</li>
|
||||
<li>ARA_AcidSprayBurst</li>
|
||||
<li>ARA_Toxic_Needle_Fire</li>
|
||||
</abilities>
|
||||
<apparelTags>
|
||||
</apparelTags>
|
||||
@@ -223,6 +230,8 @@
|
||||
</backstoryFiltersOverride>
|
||||
<abilities>
|
||||
<li>ARA_Ability_Smokepop</li>
|
||||
<li>ARA_RaceBaseSwarmProduceOff</li>
|
||||
<li>ARA_RaceBaseSwarmProduceOn</li>
|
||||
</abilities>
|
||||
<apparelTags>
|
||||
</apparelTags>
|
||||
@@ -261,6 +270,11 @@
|
||||
<race>ArachnaeNode_Race_NeuroSwarm</race>
|
||||
<defaultFactionType>PlayerColony</defaultFactionType>
|
||||
<invNutrition>0</invNutrition>
|
||||
<flyingAnimationFramePathPrefix>ArachnaeSwarm/Things/ARA_NeuroSwarm/Addons/Flying/ARA_NeuroSwarm_Flying_</flyingAnimationFramePathPrefix>
|
||||
<flyingAnimationDrawSize>1</flyingAnimationDrawSize>
|
||||
<flyingAnimationFrameCount>1</flyingAnimationFrameCount>
|
||||
<flyingAnimationTicksPerFrame>2</flyingAnimationTicksPerFrame>
|
||||
<flyingAnimationInheritColors>false</flyingAnimationInheritColors>
|
||||
<backstoryFiltersOverride>
|
||||
<li>
|
||||
<categories>
|
||||
@@ -270,7 +284,9 @@
|
||||
</li>
|
||||
</backstoryFiltersOverride>
|
||||
<abilities>
|
||||
<li>ARA_Ability_Morph</li>
|
||||
<li>ARA_PsychicBrainburn</li>
|
||||
<li>ARA_NeuroSwarm_jump</li>
|
||||
<!-- <li>ARA_Ability_Morph</li> -->
|
||||
</abilities>
|
||||
<apparelTags>
|
||||
</apparelTags>
|
||||
@@ -285,7 +301,7 @@
|
||||
<forceNoDeathNotification>true</forceNoDeathNotification>
|
||||
<combatPower>75</combatPower>
|
||||
<ecoSystemWeight>0</ecoSystemWeight>
|
||||
<maxGenerationAge>0</maxGenerationAge>
|
||||
<maxGenerationAge>0.01</maxGenerationAge>
|
||||
<minGenerationAge>0</minGenerationAge>
|
||||
<moveSpeedFactorByTerrainTag>
|
||||
<li>
|
||||
|
||||
@@ -1,344 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
<!-- T0 -->
|
||||
<HediffDef>
|
||||
<defName>ARA_Queen_0_Stage</defName>
|
||||
<label>进化等级——无</label>
|
||||
<description>这只阿拉克涅女皇种刚刚步入纷乱的边缘世界,其基因表达尚未明晰,她也需要更多的经验以思考要如何带领巢穴前进。</description>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<maxSeverity>2.0</maxSeverity>
|
||||
<!-- <stages>
|
||||
<li>
|
||||
<becomeVisible>ture</becomeVisible>
|
||||
</li>
|
||||
<li>
|
||||
<minSeverity>1.01</minSeverity>
|
||||
<becomeVisible>false</becomeVisible>
|
||||
</li>
|
||||
</stages> -->
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_GiveAbility">
|
||||
<abilityDefs>
|
||||
<li>ARA_EggSpew</li>
|
||||
<li>ARA_EggSpew_Huge</li>
|
||||
<li>ARA_BindDrone</li>
|
||||
<li>ARA_AcidSprayBurst_Queen</li>
|
||||
<li>ARA_Queen_Upgrade_1_Stage</li>
|
||||
</abilityDefs>
|
||||
</li>
|
||||
<li Class="HediffCompProperties_RemoveIfOtherHediff">
|
||||
<hediffs>
|
||||
<li>ARA_Queen_1_Stage_Transition_Period</li>
|
||||
</hediffs>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
<AbilityDef>
|
||||
<defName>ARA_Queen_Upgrade_1_Stage</defName>
|
||||
<label>女皇种进化——阶段1</label>
|
||||
<description>使女皇种发生内驱性进化,解锁下一等级的虫群植入物和阿拉克涅卵</description>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Queen_Upgrade_1_Stage</iconPath>
|
||||
<cooldownTicksRange>1800</cooldownTicksRange>
|
||||
<hostile>false</hostile>
|
||||
<groupAbility>true</groupAbility>
|
||||
<displayGizmoWhileUndrafted>true</displayGizmoWhileUndrafted>
|
||||
<disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
|
||||
<aiCanUse>true</aiCanUse>
|
||||
<ai_IsOffensive>true</ai_IsOffensive>
|
||||
<targetRequired>false</targetRequired>
|
||||
<jobDef>CastAbilityOnThing</jobDef>
|
||||
<verbProperties>
|
||||
<verbClass>Verb_CastAbility</verbClass>
|
||||
<range>1</range>
|
||||
<warmupTime>12</warmupTime>
|
||||
<soundCast>AcidSpray_Resolve</soundCast>
|
||||
<violent>false</violent>
|
||||
<targetable>false</targetable>
|
||||
<targetParams>
|
||||
<canTargetSelf>True</canTargetSelf>
|
||||
</targetParams>
|
||||
</verbProperties>
|
||||
<comps>
|
||||
<li Class="CompProperties_AbilityGiveHediff">
|
||||
<compClass>CompAbilityEffect_GiveHediff</compClass>
|
||||
<hediffDef>ARA_Queen_1_Stage_Transition_Period</hediffDef>
|
||||
<onlyApplyToSelf>True</onlyApplyToSelf>
|
||||
<replaceExisting>true</replaceExisting>
|
||||
<severity>1</severity>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
|
||||
<requiredResearch>ARA_Technology_1WMT</requiredResearch>
|
||||
<failMessage>需要科技 基因节点WMT-1"内在突破" 以解锁进化</failMessage>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
<HediffDef>
|
||||
<defName>ARA_Queen_1_Stage_Transition_Period</defName>
|
||||
<label>女皇种进化——阶段1</label>
|
||||
<description>使女皇种发生内驱性进化,解锁下一等级的虫群植入物和阿拉克涅卵</description>
|
||||
<!-- <hediffClass>HediffWithComps</hediffClass> -->
|
||||
<hediffClass>Hediff_High</hediffClass>
|
||||
<initialSeverity>1</initialSeverity>
|
||||
<maxSeverity>1.01</maxSeverity>
|
||||
<alwaysShowSeverity>true</alwaysShowSeverity>
|
||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_ReplaceHediff">
|
||||
<hediffs>
|
||||
<li>
|
||||
<hediff>ARA_Queen_1_Stage</hediff>
|
||||
<severityRange>0.02~0.15</severityRange>
|
||||
</li>
|
||||
</hediffs>
|
||||
<message>{PAWN_nameDef} 获得了一定的见解以发展巢穴,她可以用基因的织网编织更加复杂更加强大的虫群。</message>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
<!-- T1 -->
|
||||
<HediffDef>
|
||||
<defName>ARA_Queen_1_Stage</defName>
|
||||
<label>进化等级——等级1</label>
|
||||
<description>这只阿拉克涅女皇种获得了一定的见解以发展巢穴,她可以用基因的织网编织更加复杂更加强大的虫群。</description>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<maxSeverity>1.0</maxSeverity>
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_GiveAbility">
|
||||
<abilityDefs>
|
||||
<li>ARA_EggSpew_1Stage</li>
|
||||
<li>ARA_EggSpew_Huge_1Stage</li>
|
||||
<li>ARA_BindDrone</li>
|
||||
<li>ARA_AcidSprayBurst_Queen</li>
|
||||
<li>ARA_TumorSpew</li>
|
||||
<li>ARA_Queen_Upgrade_2_Stage</li>
|
||||
</abilityDefs>
|
||||
</li>
|
||||
<li Class="HediffCompProperties_RemoveIfOtherHediff">
|
||||
<hediffs>
|
||||
<li>ARA_Queen_2_Stage_Transition_Period</li>
|
||||
</hediffs>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
<AbilityDef>
|
||||
<defName>ARA_Queen_Upgrade_2_Stage</defName>
|
||||
<label>女皇种进化——阶段2</label>
|
||||
<description>使女皇种发生内驱性进化,解锁下一等级的虫群植入物和阿拉克涅卵</description>
|
||||
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Queen_Upgrade_2_Stage</iconPath>
|
||||
<cooldownTicksRange>1800</cooldownTicksRange>
|
||||
<hostile>false</hostile>
|
||||
<groupAbility>true</groupAbility>
|
||||
<displayGizmoWhileUndrafted>true</displayGizmoWhileUndrafted>
|
||||
<disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
|
||||
<aiCanUse>true</aiCanUse>
|
||||
<ai_IsOffensive>true</ai_IsOffensive>
|
||||
<targetRequired>false</targetRequired>
|
||||
<jobDef>CastAbilityOnThing</jobDef>
|
||||
<verbProperties>
|
||||
<verbClass>Verb_CastAbility</verbClass>
|
||||
<range>1</range>
|
||||
<warmupTime>12</warmupTime>
|
||||
<soundCast>AcidSpray_Resolve</soundCast>
|
||||
<violent>false</violent>
|
||||
<targetable>false</targetable>
|
||||
<targetParams>
|
||||
<canTargetSelf>True</canTargetSelf>
|
||||
</targetParams>
|
||||
</verbProperties>
|
||||
<comps>
|
||||
<li Class="CompProperties_AbilityGiveHediff">
|
||||
<compClass>CompAbilityEffect_GiveHediff</compClass>
|
||||
<hediffDef>ARA_Queen_2_Stage_Transition_Period</hediffDef>
|
||||
<onlyApplyToSelf>True</onlyApplyToSelf>
|
||||
<replaceExisting>true</replaceExisting>
|
||||
<severity>1</severity>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
|
||||
<requiredResearch>ARA_Technology_2WMT</requiredResearch>
|
||||
<failMessage>需要科技 基因节点WMT-2"内在突破2" 以解锁进化</failMessage>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
<HediffDef>
|
||||
<defName>ARA_Queen_2_Stage_Transition_Period</defName>
|
||||
<label>女皇种进化——阶段2</label>
|
||||
<description>使女皇种发生内驱性进化,解锁下一等级的虫群植入物和阿拉克涅卵</description>
|
||||
<!-- <hediffClass>HediffWithComps</hediffClass> -->
|
||||
<hediffClass>Hediff_High</hediffClass>
|
||||
<initialSeverity>1</initialSeverity>
|
||||
<maxSeverity>1.01</maxSeverity>
|
||||
<alwaysShowSeverity>true</alwaysShowSeverity>
|
||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_ReplaceHediff">
|
||||
<hediffs>
|
||||
<li>
|
||||
<hediff>ARA_Queen_2_Stage</hediff>
|
||||
<severityRange>0.02~0.15</severityRange>
|
||||
</li>
|
||||
</hediffs>
|
||||
<message>{PAWN_nameDef} 获得了一定的见解以发展巢穴,她可以用基因的织网编织更加复杂更加强大的虫群。</message>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
<!-- T2 -->
|
||||
<HediffDef>
|
||||
<defName>ARA_Queen_2_Stage</defName>
|
||||
<label>进化等级——等级2</label>
|
||||
<description>这只阿拉克涅女皇种获得了一定的见解以发展巢穴,她可以用基因的织网编织更加复杂更加强大的虫群。</description>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<maxSeverity>1.0</maxSeverity>
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_GiveAbility">
|
||||
<abilityDefs>
|
||||
<li>ARA_EggSpew</li>
|
||||
<li>ARA_BindDrone</li>
|
||||
<li>ARA_AcidSprayBurst_Queen</li>
|
||||
<!-- <li>ARA_Queen_Upgrade_2_Stage</li> -->
|
||||
</abilityDefs>
|
||||
</li>
|
||||
<!-- <li Class="HediffCompProperties_RemoveIfOtherHediff">
|
||||
<hediffs>
|
||||
<li>ARA_Queen_3_Stage_Transition_Period</li>
|
||||
</hediffs>
|
||||
</li> -->
|
||||
</comps>
|
||||
</HediffDef>
|
||||
|
||||
<!-- T0 -->
|
||||
<HediffDef>
|
||||
<defName>ARA_WeaponSmith_0_Stage</defName>
|
||||
<label>进化等级——无</label>
|
||||
<description>这只阿拉克涅工艺种尚未得到任何强化,只能孵化最普通的茧以生产一些早期装备。</description>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<maxSeverity>2.0</maxSeverity>
|
||||
<!-- <stages>
|
||||
<li>
|
||||
<becomeVisible>ture</becomeVisible>
|
||||
</li>
|
||||
<li>
|
||||
<minSeverity>1.01</minSeverity>
|
||||
<becomeVisible>false</becomeVisible>
|
||||
</li>
|
||||
</stages> -->
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_GiveAbility">
|
||||
<abilityDefs>
|
||||
<li>ARA_Cocoon_Cloth</li>
|
||||
<li>ARA_Cocoon_Weapon</li>
|
||||
</abilityDefs>
|
||||
</li>
|
||||
<li Class="HediffCompProperties_RemoveIfOtherHediff">
|
||||
<hediffs>
|
||||
<li>ARA_Queen_1_Stage_Transition_Period</li>
|
||||
</hediffs>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
<RecipeDef ParentName="SurgeryInstallBodyPartArtificialBase">
|
||||
<defName>ARA_WeaponSmith_Upgrade_1_Stage</defName>
|
||||
<label>工艺种进化——阶段1</label>
|
||||
<description>由阿拉科涅女皇种为该工艺种进行基因调整,以使其获得进化并得以孵化更多的武装器官和织物。</description>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>WULA_Energy_Furnace_DM_Engine</ThingDef>
|
||||
<HediffDef>WULA_Energy_Furnace_Hediff_DM_Engine</HediffDef>
|
||||
</descriptionHyperlinks>
|
||||
<jobString>安装暗物质能源炉中</jobString>
|
||||
<anesthetize>false</anesthetize>
|
||||
<!-- <ingredients Inherit="False">
|
||||
<li>
|
||||
<filter>
|
||||
<thingDefs>
|
||||
<li>WULA_Energy_Furnace_DM_Engine</li>
|
||||
</thingDefs>
|
||||
</filter>
|
||||
<count>1</count>
|
||||
</li>
|
||||
</ingredients> -->
|
||||
|
||||
<!-- <fixedIngredientFilter>
|
||||
<thingDefs>
|
||||
<li>WULA_Energy_Furnace_DM_Engine</li>
|
||||
</thingDefs>
|
||||
</fixedIngredientFilter> -->
|
||||
<!-- <appliedOnFixedBodyParts>
|
||||
<li>WULA_Energy_Furnace_Bodypart</li>
|
||||
</appliedOnFixedBodyParts> -->
|
||||
<addsHediff>ARA_WeaponSmith_1_Stage_Transition_Period</addsHediff>
|
||||
<recipeUsers Inherit="False">
|
||||
<li>ArachnaeNode_Race_WeaponSmith</li>
|
||||
</recipeUsers>
|
||||
</RecipeDef>
|
||||
<HediffDef>
|
||||
<defName>ARA_WeaponSmith_1_Stage_Transition_Period</defName>
|
||||
<label>工艺种进化——阶段1</label>
|
||||
<description>由阿拉科涅女皇种为该工艺种进行基因调整,以使其获得进化并得以孵化更多的武装器官和织物。</description>
|
||||
<!-- <hediffClass>HediffWithComps</hediffClass> -->
|
||||
<hediffClass>Hediff_High</hediffClass>
|
||||
<initialSeverity>1</initialSeverity>
|
||||
<maxSeverity>1.01</maxSeverity>
|
||||
<alwaysShowSeverity>true</alwaysShowSeverity>
|
||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_ReplaceHediff">
|
||||
<hediffs>
|
||||
<li>
|
||||
<hediff>ARA_WeaponSmith_1_Stage</hediff>
|
||||
<severityRange>0.02~0.15</severityRange>
|
||||
</li>
|
||||
</hediffs>
|
||||
<message>{PAWN_nameDef} 通过女皇种的拔耀获得了更强大的孵化能力,现在她可以孕育更复杂的茧以获取强大的装备。</message>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
<!-- T1 -->
|
||||
<HediffDef>
|
||||
<defName>ARA_WeaponSmith_1_Stage</defName>
|
||||
<label>进化等级——等级1</label>
|
||||
<description>这只阿拉科涅工艺种通过女皇种的拔耀获得了更强大的孵化能力,现在她可以孕育更复杂的茧以获取强大的装备。</description>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<defaultLabelColor>(0.6, 0.4, 0.8)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<maxSeverity>2.0</maxSeverity>
|
||||
<!-- <stages>
|
||||
<li>
|
||||
<becomeVisible>ture</becomeVisible>
|
||||
</li>
|
||||
<li>
|
||||
<minSeverity>1.01</minSeverity>
|
||||
<becomeVisible>false</becomeVisible>
|
||||
</li>
|
||||
</stages> -->
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_GiveAbility">
|
||||
<abilityDefs>
|
||||
<li>ARA_Cocoon_Cloth_1Stage</li>
|
||||
<li>ARA_Cocoon_Weapon_1Stage</li>
|
||||
</abilityDefs>
|
||||
</li>
|
||||
<li Class="HediffCompProperties_RemoveIfOtherHediff">
|
||||
<hediffs>
|
||||
<li>ARA_Queen_1_Stage_Transition_Period</li>
|
||||
</hediffs>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
</Defs>
|
||||
@@ -17,11 +17,11 @@
|
||||
</ResearchProjectDef>
|
||||
<ResearchProjectDef ParentName="ARA_techBase">
|
||||
<defName>ARA_Technology_1WMT</defName>
|
||||
<label>基因节点WMT-1"内在突破"</label>
|
||||
<label>节点WMT-1"突破"</label>
|
||||
<description>允许女皇种进化到下一个阶段。</description>
|
||||
<baseCost>150</baseCost>
|
||||
<researchViewX>4.50</researchViewX>
|
||||
<researchViewY>3.10</researchViewY>
|
||||
<researchViewY>3.20</researchViewY>
|
||||
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
|
||||
<prerequisites>
|
||||
<li>ARA_Base_Technology</li>
|
||||
@@ -29,20 +29,21 @@
|
||||
</ResearchProjectDef>
|
||||
<ResearchProjectDef ParentName="ARA_techBase">
|
||||
<defName>ARA_Technology_2WMT</defName>
|
||||
<label>基因节点WMT-2"内在突破2"</label>
|
||||
<label>节点WMT-2"突破2"</label>
|
||||
<description>允许女皇种进化到下一个阶段。</description>
|
||||
<baseCost>150</baseCost>
|
||||
<researchViewX>8.50</researchViewX>
|
||||
<researchViewY>3.10</researchViewY>
|
||||
<researchViewY>3.20</researchViewY>
|
||||
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
|
||||
<prerequisites>
|
||||
<li>ARA_Technology_1WMT</li>
|
||||
<li>ARA_Technology_6KYC</li>
|
||||
</prerequisites>
|
||||
</ResearchProjectDef>
|
||||
<!-- 酸类发展 -->
|
||||
<ResearchProjectDef ParentName="ARA_techBase">
|
||||
<defName>ARA_Technology_6VXI</defName>
|
||||
<label>基因节点VXI-6"酸囊"</label>
|
||||
<label>节点VXI-6"酸囊"</label>
|
||||
<description>使拥有酸囊的虫族允许喷射强酸击退敌人。</description>
|
||||
<baseCost>150</baseCost>
|
||||
<researchViewX>1.00</researchViewX>
|
||||
@@ -54,7 +55,7 @@
|
||||
</ResearchProjectDef>
|
||||
<ResearchProjectDef ParentName="ARA_techBase">
|
||||
<defName>ARA_Technology_7VXI</defName>
|
||||
<label>基因节点VXI-7"外置酸袋"</label>
|
||||
<label>节点VXI-7"外置酸袋"</label>
|
||||
<description>允许工艺种孵化新的武器。</description>
|
||||
<baseCost>150</baseCost>
|
||||
<researchViewX>2.00</researchViewX>
|
||||
@@ -64,14 +65,27 @@
|
||||
<li>ARA_Technology_6VXI</li>
|
||||
</prerequisites>
|
||||
</ResearchProjectDef>
|
||||
<ResearchProjectDef ParentName="ARA_techBase">
|
||||
<defName>ARA_Technology_8VXI</defName>
|
||||
<label>节点VXI-7"巨型酸腺"</label>
|
||||
<description>允许工艺种孵化新的武器。</description>
|
||||
<baseCost>150</baseCost>
|
||||
<researchViewX>5.50</researchViewX>
|
||||
<researchViewY>0.30</researchViewY>
|
||||
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
|
||||
<prerequisites>
|
||||
<li>ARA_Technology_6VXI</li>
|
||||
<li>ARA_Technology_1WMT</li>
|
||||
</prerequisites>
|
||||
</ResearchProjectDef>
|
||||
<!-- 孵化发展 -->
|
||||
<ResearchProjectDef ParentName="ARA_techBase">
|
||||
<defName>ARA_Technology_1KYC</defName>
|
||||
<label>基因节点KYC-1"战士虫"</label>
|
||||
<label>节点KYC-1"战士虫"</label>
|
||||
<description>允许女皇种孵化新的虫族——战士种。</description>
|
||||
<baseCost>150</baseCost>
|
||||
<researchViewX>1.00</researchViewX>
|
||||
<researchViewY>2.20</researchViewY>
|
||||
<researchViewY>5.10</researchViewY>
|
||||
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
|
||||
<prerequisites>
|
||||
<li>ARA_Base_Technology</li>
|
||||
@@ -79,11 +93,11 @@
|
||||
</ResearchProjectDef>
|
||||
<ResearchProjectDef ParentName="ARA_techBase">
|
||||
<defName>ARA_Technology_2KYC</defName>
|
||||
<label>基因节点KYC-2"飞行翼膜"</label>
|
||||
<label>节点KYC-2"飞行翼膜"</label>
|
||||
<description>允许女皇种孵化新的虫族——空天种,敏捷而致命的精锐虫族,拥有以飞行姿态穿梭于战场的能力。</description>
|
||||
<baseCost>150</baseCost>
|
||||
<researchViewX>5.50</researchViewX>
|
||||
<researchViewY>2.60</researchViewY>
|
||||
<researchViewX>6.50</researchViewX>
|
||||
<researchViewY>4.60</researchViewY>
|
||||
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
|
||||
<prerequisites>
|
||||
<li>ARA_Technology_1WMT</li>
|
||||
@@ -91,11 +105,11 @@
|
||||
</ResearchProjectDef>
|
||||
<ResearchProjectDef ParentName="ARA_techBase">
|
||||
<defName>ARA_Technology_4KYC</defName>
|
||||
<label>基因节点KYC-4"原虫"</label>
|
||||
<label>节点KYC-4"原虫"</label>
|
||||
<description>允许女皇种孵化新的虫族——原虫种,一种可以寄生在别的种族身上以控制它们的特殊督虫。</description>
|
||||
<baseCost>150</baseCost>
|
||||
<researchViewX>5.50</researchViewX>
|
||||
<researchViewY>1.30</researchViewY>
|
||||
<researchViewY>4.10</researchViewY>
|
||||
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
|
||||
<prerequisites>
|
||||
<li>ARA_Technology_1WMT</li>
|
||||
@@ -103,11 +117,23 @@
|
||||
</ResearchProjectDef>
|
||||
<ResearchProjectDef ParentName="ARA_techBase">
|
||||
<defName>ARA_Technology_5KYC</defName>
|
||||
<label>基因节点KYC-5"巨甲"</label>
|
||||
<description>允许女皇种孵化新的虫族——浓雾种,一种拥有厚重甲壳的大型督虫,可以铺设菌毯、释放烟雾和阻燃剂以协助虫群进行集群冲击。</description>
|
||||
<label>节点KYC-5"巨甲"</label>
|
||||
<description>允许女皇种孵化新的虫族——浓雾种,一种拥有厚重甲壳的大型督虫,可以释放烟雾、阻燃剂和召唤虫族增援的信息素以协助虫群进行集群冲击。</description>
|
||||
<baseCost>150</baseCost>
|
||||
<researchViewX>5.50</researchViewX>
|
||||
<researchViewY>2.00</researchViewY>
|
||||
<researchViewY>4.60</researchViewY>
|
||||
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
|
||||
<prerequisites>
|
||||
<li>ARA_Technology_1WMT</li>
|
||||
</prerequisites>
|
||||
</ResearchProjectDef>
|
||||
<ResearchProjectDef ParentName="ARA_techBase">
|
||||
<defName>ARA_Technology_6KYC</defName>
|
||||
<label>节点KYC-6"灵脑"</label>
|
||||
<description>允许女皇种孵化新的虫族——织域种,一种寿命长且拥有强大灵能的特殊,不仅能协助虫群的科研工作,也能承担战场指挥官的责任。</description>
|
||||
<baseCost>150</baseCost>
|
||||
<researchViewX>7.50</researchViewX>
|
||||
<researchViewY>3.60</researchViewY>
|
||||
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
|
||||
<prerequisites>
|
||||
<li>ARA_Technology_1WMT</li>
|
||||
@@ -116,11 +142,11 @@
|
||||
<!-- 织物发展 -->
|
||||
<ResearchProjectDef ParentName="ARA_techBase">
|
||||
<defName>ARA_Technology_4DIL</defName>
|
||||
<label>基因节点DIL-4"编织"</label>
|
||||
<label>节点DIL-4"编织"</label>
|
||||
<description>允许工艺种孵化织物茧,为虫族提供基础防具。</description>
|
||||
<baseCost>150</baseCost>
|
||||
<researchViewX>1.00</researchViewX>
|
||||
<researchViewY>5.10</researchViewY>
|
||||
<researchViewY>1.40</researchViewY>
|
||||
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
|
||||
<prerequisites>
|
||||
<li>ARA_Base_Technology</li>
|
||||
@@ -128,37 +154,63 @@
|
||||
</ResearchProjectDef>
|
||||
<ResearchProjectDef ParentName="ARA_techBase">
|
||||
<defName>ARA_Technology_1VTE</defName>
|
||||
<label>基因节点VTE-1"爆发激素"</label>
|
||||
<label>节点VTE-1"爆发激素"</label>
|
||||
<description>允许一部分拥有厚重甲壳的阿拉克涅督虫使用追踪冲撞攻击敌军。</description>
|
||||
<baseCost>150</baseCost>
|
||||
<researchViewX>1.00</researchViewX>
|
||||
<researchViewX>6.50</researchViewX>
|
||||
<researchViewY>5.10</researchViewY>
|
||||
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
|
||||
<prerequisites>
|
||||
<li>ARA_Technology_4DIL</li>
|
||||
<li>ARA_Technology_1KYC</li>
|
||||
<li>ARA_Technology_5KYC</li>
|
||||
</prerequisites>
|
||||
</ResearchProjectDef>
|
||||
<!-- 毒类发展 -->
|
||||
<ResearchProjectDef ParentName="ARA_techBase">
|
||||
<defName>ARA_Technology_5PAV</defName>
|
||||
<label>基因节点PAV-5"毒刺"</label>
|
||||
<label>节点PAV-5"毒刺"</label>
|
||||
<description>允许工艺种孵化新的毒针类武器茧,并允许部分带毒针的虫族进行毒针喷射。</description>
|
||||
<baseCost>150</baseCost>
|
||||
<researchViewX>1.00</researchViewX>
|
||||
<researchViewY>4.40</researchViewY>
|
||||
<researchViewY>0.80</researchViewY>
|
||||
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
|
||||
<prerequisites>
|
||||
<li>ARA_Base_Technology</li>
|
||||
</prerequisites>
|
||||
</ResearchProjectDef>
|
||||
<ResearchProjectDef ParentName="ARA_techBase">
|
||||
<defName>ARA_Technology_6PAV</defName>
|
||||
<label>节点PAV-6"暴雨"</label>
|
||||
<description>允许工艺种孵化新的毒针类武器茧。</description>
|
||||
<baseCost>150</baseCost>
|
||||
<researchViewX>5.50</researchViewX>
|
||||
<researchViewY>0.90</researchViewY>
|
||||
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
|
||||
<prerequisites>
|
||||
<li>ARA_Technology_5PAV</li>
|
||||
<li>ARA_Technology_1WMT</li>
|
||||
</prerequisites>
|
||||
</ResearchProjectDef>
|
||||
<!-- 建筑发展 -->
|
||||
<ResearchProjectDef ParentName="ARA_techBase">
|
||||
<defName>ARA_Technology_5SHL</defName>
|
||||
<label>基因节点SHL-5"光瘤"</label>
|
||||
<label>节点SHL-5"光瘤"</label>
|
||||
<description>允许虫族建造一种可以提供直射光源以供植物生长的特殊菌瘤。</description>
|
||||
<baseCost>150</baseCost>
|
||||
<researchViewX>1.00</researchViewX>
|
||||
<researchViewY>1.20</researchViewY>
|
||||
<researchViewY>2.00</researchViewY>
|
||||
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
|
||||
<prerequisites>
|
||||
<li>ARA_Base_Technology</li>
|
||||
</prerequisites>
|
||||
</ResearchProjectDef>
|
||||
<ResearchProjectDef ParentName="ARA_techBase">
|
||||
<defName>ARA_Technology_6SHL</defName>
|
||||
<label>节点SHL-6"温度控制"</label>
|
||||
<description>允许虫族建造一种可以控制房间温度的特殊固定辅虫。</description>
|
||||
<baseCost>150</baseCost>
|
||||
<researchViewX>2.00</researchViewX>
|
||||
<researchViewY>2.00</researchViewY>
|
||||
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
|
||||
<prerequisites>
|
||||
<li>ARA_Base_Technology</li>
|
||||
@@ -167,14 +219,41 @@
|
||||
<!-- 子巢发展 -->
|
||||
<ResearchProjectDef ParentName="ARA_techBase">
|
||||
<defName>ARA_Technology_6SPV</defName>
|
||||
<label>基因节点SPV-6"天巢种之巢"</label>
|
||||
<label>节点SPV-6"辅虫巢"</label>
|
||||
<description>允许工艺种孵化新的武器。</description>
|
||||
<baseCost>150</baseCost>
|
||||
<researchViewX>1.00</researchViewX>
|
||||
<researchViewY>2.20</researchViewY>
|
||||
<researchViewX>5.50</researchViewX>
|
||||
<researchViewY>1.50</researchViewY>
|
||||
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
|
||||
<prerequisites>
|
||||
<li>ARA_Technology_1WMT</li>
|
||||
<li>ARA_Technology_5PAV</li>
|
||||
</prerequisites>
|
||||
</ResearchProjectDef>
|
||||
<!-- 药物发展 -->
|
||||
<ResearchProjectDef ParentName="ARA_techBase">
|
||||
<defName>ARA_Technology_1MED</defName>
|
||||
<label>节点MED-1"制药"</label>
|
||||
<description>允许蜜罐种进行定向进化,以强化其自身的医疗能力并解锁孵化医药茧的技能。</description>
|
||||
<baseCost>150</baseCost>
|
||||
<researchViewX>5.50</researchViewX>
|
||||
<researchViewY>2.70</researchViewY>
|
||||
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
|
||||
<prerequisites>
|
||||
<li>ARA_Technology_1WMT</li>
|
||||
</prerequisites>
|
||||
</ResearchProjectDef>
|
||||
</Defs>
|
||||
<ResearchProjectDef ParentName="ARA_techBase">
|
||||
<defName>ARA_Technology_2MED</defName>
|
||||
<label>节点MED-2"拟线寄生"</label>
|
||||
<description>允许蜜罐种使用拟线种寄生的能力,并在医药茧中解锁拟线种抑制剂的制作。</description>
|
||||
<baseCost>150</baseCost>
|
||||
<researchViewX>6.50</researchViewX>
|
||||
<researchViewY>2.70</researchViewY>
|
||||
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
|
||||
<prerequisites>
|
||||
<li>ARA_Technology_1MED</li>
|
||||
<li>ARA_Technology_5PAV</li>
|
||||
</prerequisites>
|
||||
</ResearchProjectDef>
|
||||
</Defs>
|
||||
|
||||
190
1.6/1.6/Defs/StoryTellers/ARA_Storytellers.xml
Normal file
@@ -0,0 +1,190 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Defs>
|
||||
<StorytellerDef ParentName="BaseStoryteller">
|
||||
<defName>ARA_Lyne</defName>
|
||||
<label>「织域种」蛉</label>
|
||||
<description>蛉是一只阿拉克涅织域种督虫,作为讲述者时行为和「经典」卡桑德拉相近,但是会加强大型袭击的难度。此外,选择蛉作为讲述者时,将会开启阿拉克涅虫巢的新手引导,以帮助新巢穴适应这个世界。</description>
|
||||
<portraitLarge>ArachnaeSwarm/Storyteller/ARA_Lyne</portraitLarge>
|
||||
<portraitTiny>ArachnaeSwarm/Storyteller/ARA_Lyne_TINY</portraitTiny>
|
||||
<listOrder>20</listOrder>
|
||||
<comps>
|
||||
<!-- Intro -->
|
||||
<!-- <li Class="StorytellerCompProperties_ClassicIntro"/> -->
|
||||
<!-- 袭击生成器 -->
|
||||
<li Class="StorytellerCompProperties_OnOffCycle">
|
||||
<category>ThreatBig</category> <!-- 大型袭击 -->
|
||||
<minDaysPassed>15.0</minDaysPassed> <!-- 最低在15日后开始生成 -->
|
||||
<onDays>2</onDays> <!-- 每个周期(12天)有多少天允许生成袭击 -->
|
||||
<offDays>9</offDays> <!-- 每个周期(12天)有多少天不生成袭击 -->
|
||||
<minSpacingDays>0.25</minSpacingDays> <!-- 事件最小间隔 -->
|
||||
<numIncidentsRange>2~3</numIncidentsRange> <!-- 事件点数 -->
|
||||
<!-- <forceRaidEnemyBeforeDaysPassed>20</forceRaidEnemyBeforeDaysPassed> -->
|
||||
<disallowedTargetTags>
|
||||
<li>Map_RaidBeacon</li>
|
||||
</disallowedTargetTags>
|
||||
</li>
|
||||
<li Class="StorytellerCompProperties_OnOffCycle">
|
||||
<category>ThreatSmall</category>
|
||||
<minDaysPassed>11.0</minDaysPassed>
|
||||
<onDays>4.6</onDays>
|
||||
<offDays>6.0</offDays>
|
||||
<numIncidentsRange>0.2~1</numIncidentsRange>
|
||||
<acceptPercentFactorPerThreatPointsCurve>
|
||||
<points>
|
||||
<li>(800, 1)</li>
|
||||
<li>(2800, 0)</li>
|
||||
</points>
|
||||
</acceptPercentFactorPerThreatPointsCurve>
|
||||
</li>
|
||||
<li Class="StorytellerCompProperties_ThreatsGenerator">
|
||||
<allowedTargetTags>
|
||||
<li>Map_RaidBeacon</li>
|
||||
</allowedTargetTags>
|
||||
<parms>
|
||||
<allowedThreats>Raids</allowedThreats>
|
||||
<onDays>1.0</onDays>
|
||||
<offDays>0.5</offDays>
|
||||
<minSpacingDays>0.04</minSpacingDays>
|
||||
<numIncidentsRange>1~2</numIncidentsRange>
|
||||
<minThreatPoints>500</minThreatPoints>
|
||||
</parms>
|
||||
</li>
|
||||
<!-- Home misc incidents-->
|
||||
<li Class="StorytellerCompProperties_CategoryMTB">
|
||||
<category>Misc</category>
|
||||
<allowedTargetTags>
|
||||
<li>Map_PlayerHome</li>
|
||||
</allowedTargetTags>
|
||||
<minDaysPassed>5</minDaysPassed>
|
||||
<mtbDays>4.8</mtbDays>
|
||||
</li>
|
||||
<li Class="StorytellerCompProperties_ShipChunkDrop"/>
|
||||
<li Class="StorytellerCompProperties_Disease">
|
||||
<category>DiseaseHuman</category>
|
||||
<minDaysPassed>9</minDaysPassed>
|
||||
</li>
|
||||
<li Class="StorytellerCompProperties_Disease">
|
||||
<category>DiseaseAnimal</category>
|
||||
<minDaysPassed>9</minDaysPassed>
|
||||
</li>
|
||||
<!-- Ally/neutral interaction -->
|
||||
<li Class="StorytellerCompProperties_FactionInteraction">
|
||||
<incident>RaidFriendly</incident>
|
||||
<baseIncidentsPerYear>15</baseIncidentsPerYear>
|
||||
<minSpacingDays>0.4</minSpacingDays>
|
||||
<fullAlliesOnly>true</fullAlliesOnly>
|
||||
<minDanger>High</minDanger>
|
||||
</li>
|
||||
<li Class="StorytellerCompProperties_FactionInteraction">
|
||||
<incident>TraderCaravanArrival</incident>
|
||||
<minDaysPassed>5</minDaysPassed>
|
||||
<baseIncidentsPerYear>5</baseIncidentsPerYear>
|
||||
<minSpacingDays>6</minSpacingDays>
|
||||
<allowedTargetTags>
|
||||
<li>Map_PlayerHome</li>
|
||||
</allowedTargetTags>
|
||||
</li>
|
||||
<li Class="StorytellerCompProperties_FactionInteraction">
|
||||
<incident>VisitorGroup</incident>
|
||||
<minDaysPassed>3</minDaysPassed>
|
||||
<baseIncidentsPerYear>4</baseIncidentsPerYear>
|
||||
<minSpacingDays>5</minSpacingDays>
|
||||
<allowedTargetTags>
|
||||
<li>Map_PlayerHome</li>
|
||||
</allowedTargetTags>
|
||||
</li>
|
||||
<li Class="StorytellerCompProperties_FactionInteraction">
|
||||
<incident>TravelerGroup</incident>
|
||||
<minDaysPassed>1</minDaysPassed>
|
||||
<baseIncidentsPerYear>6</baseIncidentsPerYear>
|
||||
<minSpacingDays>1</minSpacingDays>
|
||||
<allowedTargetTags>
|
||||
<li>Map_PlayerHome</li>
|
||||
</allowedTargetTags>
|
||||
</li>
|
||||
<!-- Caravan / temp map -->
|
||||
<li Class="StorytellerCompProperties_CategoryIndividualMTBByBiome">
|
||||
<category>Misc</category>
|
||||
<allowedTargetTags>
|
||||
<li>Caravan</li>
|
||||
<li>Map_TempIncident</li>
|
||||
</allowedTargetTags>
|
||||
</li>
|
||||
<li Class="StorytellerCompProperties_CategoryIndividualMTBByBiome">
|
||||
<category>ThreatSmall</category>
|
||||
<applyCaravanVisibility>true</applyCaravanVisibility>
|
||||
<allowedTargetTags>
|
||||
<li>Caravan</li>
|
||||
<li>Map_TempIncident</li>
|
||||
</allowedTargetTags>
|
||||
</li>
|
||||
<li Class="StorytellerCompProperties_CategoryIndividualMTBByBiome">
|
||||
<category>ThreatBig</category>
|
||||
<applyCaravanVisibility>true</applyCaravanVisibility>
|
||||
<allowedTargetTags>
|
||||
<li>Caravan</li>
|
||||
<li>Map_TempIncident</li>
|
||||
</allowedTargetTags>
|
||||
</li>
|
||||
<!-- Quests - non-Royalty -->
|
||||
<li Class="StorytellerCompProperties_RandomQuest">
|
||||
<category>GiveQuest</category>
|
||||
<allowedTargetTags>
|
||||
<li>World</li>
|
||||
</allowedTargetTags>
|
||||
<onDays>10</onDays>
|
||||
<numIncidentsRange>1</numIncidentsRange>
|
||||
<acceptFractionByDaysPassedCurve>
|
||||
<points>
|
||||
<li>(8, 0)</li>
|
||||
<li>(15, 1)</li>
|
||||
</points>
|
||||
</acceptFractionByDaysPassedCurve>
|
||||
<minSpacingDays>3</minSpacingDays>
|
||||
<disableIfAnyModActive>
|
||||
<li>Ludeon.RimWorld.Royalty</li>
|
||||
</disableIfAnyModActive>
|
||||
</li>
|
||||
<!-- Quests - Royalty -->
|
||||
<li Class="StorytellerCompProperties_RandomQuest">
|
||||
<category>GiveQuest</category>
|
||||
<allowedTargetTags>
|
||||
<li>World</li>
|
||||
</allowedTargetTags>
|
||||
<onDays>12</onDays>
|
||||
<numIncidentsRange>2</numIncidentsRange>
|
||||
<acceptFractionByDaysPassedCurve>
|
||||
<points>
|
||||
<li>(8, 0)</li>
|
||||
<li>(15, 1)</li>
|
||||
</points>
|
||||
</acceptFractionByDaysPassedCurve>
|
||||
<minSpacingDays>3</minSpacingDays>
|
||||
<enableIfAnyModActive>
|
||||
<li>Ludeon.RimWorld.Royalty</li>
|
||||
</enableIfAnyModActive>
|
||||
</li>
|
||||
<!-- World misc incidents-->
|
||||
<li Class="StorytellerCompProperties_CategoryMTB">
|
||||
<category>Misc</category>
|
||||
<allowedTargetTags>
|
||||
<li>World</li>
|
||||
</allowedTargetTags>
|
||||
<minDaysPassed>15</minDaysPassed>
|
||||
<mtbDays>15</mtbDays>
|
||||
</li>
|
||||
<!-- Orbital trader -->
|
||||
<li Class="StorytellerCompProperties_OnOffCycle">
|
||||
<incident>OrbitalTraderArrival</incident>
|
||||
<onDays>7</onDays>
|
||||
<offDays>8</offDays>
|
||||
<numIncidentsRange>1</numIncidentsRange>
|
||||
</li>
|
||||
<!-- Triggered -->
|
||||
<li Class="StorytellerCompProperties_Triggered">
|
||||
<incident>StrangerInBlackJoin</incident>
|
||||
<delayTicks>180</delayTicks>
|
||||
</li>
|
||||
</comps>
|
||||
</StorytellerDef>
|
||||
</Defs>
|
||||
@@ -34,7 +34,6 @@
|
||||
<baseBodySize>0.5</baseBodySize>
|
||||
<baseHealthScale>1</baseHealthScale>
|
||||
<useMeatFrom>Megaspider</useMeatFrom>
|
||||
<lifeExpectancy>0.1</lifeExpectancy>
|
||||
<trainability>Advanced</trainability>
|
||||
<!-- <hasCorpse>false</hasCorpse> -->
|
||||
<!-- <specialTrainables>
|
||||
@@ -68,7 +67,7 @@
|
||||
</race>
|
||||
<comps>
|
||||
<li Class="CompProperties_MechPowerCell">
|
||||
<totalPowerTicks>72000</totalPowerTicks> <!-- 2 hours -->
|
||||
<totalPowerTicks>1440000</totalPowerTicks> <!-- 2 hours -->
|
||||
<labelOverride>寿命</labelOverride>
|
||||
<tooltipOverride>这种特殊的阿拉克涅辅虫从出生起就走在死亡的道路上了——它们的寿命就是如此短暂。</tooltipOverride>
|
||||
<showGizmoOnNonPlayerControlled>true</showGizmoOnNonPlayerControlled>
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
<hasGenders>false</hasGenders>
|
||||
<hasCorpse>false</hasCorpse>
|
||||
<foodType>None</foodType>
|
||||
<lifeExpectancy>2500</lifeExpectancy>
|
||||
<bloodDef>Filth_BloodInsect</bloodDef>
|
||||
<disableIgniteVerb>true</disableIgniteVerb>
|
||||
<trainability>None</trainability>
|
||||
@@ -37,6 +36,14 @@
|
||||
</tools>
|
||||
<killedLeavings>
|
||||
</killedLeavings>
|
||||
<comps>
|
||||
<li Class="CompProperties_MechPowerCell">
|
||||
<totalPowerTicks>4400</totalPowerTicks> <!-- 2 hours -->
|
||||
<labelOverride>寿命</labelOverride>
|
||||
<tooltipOverride>这种特殊的阿拉克涅辅虫从出生起就走在死亡的道路上了——它们的寿命就是如此短暂。</tooltipOverride>
|
||||
<showGizmoOnNonPlayerControlled>true</showGizmoOnNonPlayerControlled>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
<ThingDef ParentName="ARA_BaseDroneSwarm">
|
||||
<defName>ArachnaeBase_Race_Acid</defName>
|
||||
@@ -61,14 +68,6 @@
|
||||
<statBases>
|
||||
<MoveSpeed>6</MoveSpeed>
|
||||
</statBases>
|
||||
<comps>
|
||||
<li Class="CompProperties_MechPowerCell">
|
||||
<totalPowerTicks>4400</totalPowerTicks> <!-- 2 hours -->
|
||||
<labelOverride>寿命</labelOverride>
|
||||
<tooltipOverride>这种特殊的阿拉克涅辅虫从出生起就走在死亡的道路上了——它们的寿命就是如此短暂。</tooltipOverride>
|
||||
<showGizmoOnNonPlayerControlled>true</showGizmoOnNonPlayerControlled>
|
||||
</li>
|
||||
</comps>
|
||||
<tools Inherit="False">
|
||||
<li>
|
||||
<label>酸性巨颚</label>
|
||||
@@ -109,14 +108,6 @@
|
||||
<MaxFlightTime>9999</MaxFlightTime>
|
||||
<FlightCooldown>0</FlightCooldown>
|
||||
</statBases>
|
||||
<comps>
|
||||
<li Class="CompProperties_MechPowerCell">
|
||||
<totalPowerTicks>4400</totalPowerTicks> <!-- 2 hours -->
|
||||
<labelOverride>寿命</labelOverride>
|
||||
<tooltipOverride>这种特殊的阿拉克涅辅虫从出生起就走在死亡的道路上了——它们的寿命就是如此短暂。</tooltipOverride>
|
||||
<showGizmoOnNonPlayerControlled>true</showGizmoOnNonPlayerControlled>
|
||||
</li>
|
||||
</comps>
|
||||
<tools Inherit="False">
|
||||
<li>
|
||||
<label>巨颚</label>
|
||||
@@ -130,11 +121,10 @@
|
||||
</li>
|
||||
</tools>
|
||||
</ThingDef>
|
||||
|
||||
<ThingDef ParentName="ARA_BaseDroneSwarm">
|
||||
<defName>ArachnaeBase_Race_Acidling</defName>
|
||||
<label>阿拉克涅酸爆种</label>
|
||||
<description>阿拉克涅辅虫之一,智力低下,一般被作为自杀式无人机打出,靠近敌人后就会引爆酸囊产生危险的酸性雾气。</description>
|
||||
<label>阿拉克涅爆裂种</label>
|
||||
<description>阿拉克涅辅虫之一,智力低下,一般以自杀式袭击的方式伤害敌军,靠近敌人后就会引爆酸囊产生危险的酸性雾气。</description>
|
||||
<race>
|
||||
<thinkTreeConstant>HunterDroneConstant</thinkTreeConstant>
|
||||
<baseBodySize>0.5</baseBodySize>
|
||||
@@ -155,12 +145,6 @@
|
||||
<MoveSpeed>6</MoveSpeed>
|
||||
</statBases>
|
||||
<comps>
|
||||
<li Class="CompProperties_MechPowerCell">
|
||||
<totalPowerTicks>4400</totalPowerTicks> <!-- 2 hours -->
|
||||
<labelOverride>寿命</labelOverride>
|
||||
<tooltipOverride>这种特殊的阿拉克涅辅虫从出生起就走在死亡的道路上了——它们的寿命就是如此短暂。</tooltipOverride>
|
||||
<showGizmoOnNonPlayerControlled>true</showGizmoOnNonPlayerControlled>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_HunterExplosion">
|
||||
<explosionRadius>3.9</explosionRadius> <!-- Mapped from smokeRadius -->
|
||||
<explosionDamageType>ARA_AcidBurn</explosionDamageType>
|
||||
@@ -185,6 +169,7 @@
|
||||
</li>
|
||||
</tools>
|
||||
</ThingDef>
|
||||
|
||||
<ToolCapacityDef>
|
||||
<defName>ARA_AcidCut</defName>
|
||||
<label>酸性撕咬</label>
|
||||
@@ -202,7 +187,6 @@
|
||||
<combatLogRulesMiss>Maneuver_Slash_MeleeMiss</combatLogRulesMiss>
|
||||
<combatLogRulesDodge>Maneuver_Slash_MeleeDodge</combatLogRulesDodge>
|
||||
</ManeuverDef>
|
||||
|
||||
<ToolCapacityDef>
|
||||
<defName>ARA_Bite</defName>
|
||||
<label>撕咬</label>
|
||||
|
||||
@@ -320,6 +320,8 @@
|
||||
<!-- 食物列表 -->
|
||||
<whiteFoodList>
|
||||
<li>ARA_InsectJelly</li>
|
||||
<li>ARA_NutrientPasteMeal</li>
|
||||
<li>ARA_PheromoneSolvent</li>
|
||||
</whiteFoodList>
|
||||
<onlyEatRaceRestrictedFood>true</onlyEatRaceRestrictedFood>
|
||||
<!-- 武器列表 -->
|
||||
@@ -735,14 +737,14 @@
|
||||
</race>
|
||||
|
||||
<comps>
|
||||
<li Class="ArachnaeSwarm.CompProperties_MilkableArachnae">
|
||||
<!-- <li Class="ArachnaeSwarm.CompProperties_MilkableArachnae">
|
||||
<milkDef>ARA_InsectJelly</milkDef>
|
||||
<milkIntervalDays>1</milkIntervalDays>
|
||||
<milkAmount>10</milkAmount>
|
||||
</li>
|
||||
</li> -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_AutoMechCarrier">
|
||||
<freeProduction>true</freeProduction>
|
||||
<disableHediff>WULA_MechCarrierSwitchHediff</disableHediff>
|
||||
<disableHediff>ARA_RaceBaseSwarmProduceSwitchHediff</disableHediff>
|
||||
<fixedIngredient>ARA_InsectJelly</fixedIngredient>
|
||||
<maxIngredientCount>500</maxIngredientCount>
|
||||
<startingIngredientCount>500</startingIngredientCount>
|
||||
@@ -763,6 +765,13 @@
|
||||
<tooltipOverride>阿拉克涅的督虫们生命如精密的发条般运转着。</tooltipOverride>
|
||||
<showGizmoOnNonPlayerControlled>true</showGizmoOnNonPlayerControlled>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_HediffGiver">
|
||||
<hediffs>
|
||||
<li>ARA_Myrmecocystus_Production_InsectJelly</li>
|
||||
</hediffs>
|
||||
<addChance>1.0</addChance>
|
||||
<allowDuplicates>false</allowDuplicates>
|
||||
</li>
|
||||
</comps>
|
||||
</AlienRace.ThingDef_AlienRace>
|
||||
<AlienRace.ThingDef_AlienRace ParentName="ARA_NodeBase">
|
||||
@@ -869,7 +878,7 @@
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AutoMechCarrier">
|
||||
<freeProduction>true</freeProduction>
|
||||
<disableHediff>WULA_MechCarrierSwitchHediff</disableHediff>
|
||||
<disableHediff>ARA_RaceBaseSwarmProduceSwitchHediff</disableHediff>
|
||||
<fixedIngredient>ARA_InsectJelly</fixedIngredient>
|
||||
<maxIngredientCount>500</maxIngredientCount>
|
||||
<startingIngredientCount>500</startingIngredientCount>
|
||||
@@ -957,11 +966,6 @@
|
||||
<baseHealthScale>0.75</baseHealthScale>
|
||||
</race>
|
||||
|
||||
|
||||
<recipes Inherit="False">
|
||||
<li>ARA_WeaponSmith_Upgrade_1_Stage</li>
|
||||
</recipes>
|
||||
|
||||
<comps>
|
||||
<li Class="ArachnaeSwarm.CompProperties_HediffGiver">
|
||||
<hediffs>
|
||||
@@ -972,7 +976,7 @@
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AutoMechCarrier">
|
||||
<freeProduction>true</freeProduction>
|
||||
<disableHediff>WULA_MechCarrierSwitchHediff</disableHediff>
|
||||
<disableHediff>ARA_RaceBaseSwarmProduceSwitchHediff</disableHediff>
|
||||
<fixedIngredient>ARA_InsectJelly</fixedIngredient>
|
||||
<maxIngredientCount>500</maxIngredientCount>
|
||||
<startingIngredientCount>500</startingIngredientCount>
|
||||
@@ -1087,6 +1091,17 @@
|
||||
<tooltipOverride>阿拉克涅的督虫们生命如精密的发条般运转着。</tooltipOverride>
|
||||
<showGizmoOnNonPlayerControlled>true</showGizmoOnNonPlayerControlled>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_HediffGiver">
|
||||
<hediffs>
|
||||
<li>ARA_Fighter_Base</li>
|
||||
</hediffs>
|
||||
<addChance>1.0</addChance>
|
||||
<allowDuplicates>false</allowDuplicates>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_FighterInvisible">
|
||||
<InvisibilityDef>ARA_Fighter_Invisibility</InvisibilityDef>
|
||||
<stealthCooldownTicks>120</stealthCooldownTicks>
|
||||
</li>
|
||||
</comps>
|
||||
</AlienRace.ThingDef_AlienRace>
|
||||
<AlienRace.ThingDef_AlienRace ParentName="ARA_NodeBase">
|
||||
@@ -1186,7 +1201,7 @@
|
||||
<comps>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AutoMechCarrier">
|
||||
<freeProduction>true</freeProduction>
|
||||
<disableHediff>WULA_MechCarrierSwitchHediff</disableHediff>
|
||||
<disableHediff>ARA_RaceBaseSwarmProduceSwitchHediff</disableHediff>
|
||||
<fixedIngredient>ARA_InsectJelly</fixedIngredient>
|
||||
<maxIngredientCount>500</maxIngredientCount>
|
||||
<startingIngredientCount>500</startingIngredientCount>
|
||||
@@ -1226,8 +1241,8 @@
|
||||
<!-- <TradePriceImprovement>0.5</TradePriceImprovement> -->
|
||||
|
||||
<!-- 自带的甲壳可以防御外部攻击 -->
|
||||
<ArmorRating_Blunt>1</ArmorRating_Blunt>
|
||||
<ArmorRating_Sharp>1.2</ArmorRating_Sharp>
|
||||
<ArmorRating_Blunt>0.25</ArmorRating_Blunt>
|
||||
<ArmorRating_Sharp>0.4</ArmorRating_Sharp>
|
||||
<ArmorRating_Heat>0.75</ArmorRating_Heat>
|
||||
|
||||
</statBases>
|
||||
@@ -1275,21 +1290,6 @@
|
||||
</raceRestriction>
|
||||
</alienRace>
|
||||
|
||||
<comps>
|
||||
<!-- Add our new flight component here -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_PawnFlight"> <!-- 2. 添加我们的飞行组件 -->
|
||||
|
||||
<!-- 飞行触发条件:仅在征召时飞行 -->
|
||||
<flightCondition>Drafted</flightCondition>
|
||||
|
||||
<!-- 链接到我们刚刚创建的 AnimationDef -->
|
||||
<flyingAnimationNorth>ARA_FlyNorth</flyingAnimationNorth>
|
||||
<flyingAnimationEast>ARA_FlyEast</flyingAnimationEast>
|
||||
<flyingAnimationSouth>ARA_FlySouth</flyingAnimationSouth>
|
||||
|
||||
</li>
|
||||
</comps>
|
||||
|
||||
<!-- 基础属性设置 -->
|
||||
<statBases>
|
||||
<!-- 移动速度 -->
|
||||
@@ -1331,6 +1331,17 @@
|
||||
</race>
|
||||
|
||||
<comps>
|
||||
<!-- Add our new flight component here -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_PawnFlight"> <!-- 2. 添加我们的飞行组件 -->
|
||||
|
||||
<!-- 飞行触发条件:仅在征召时飞行 -->
|
||||
<flightCondition>Drafted</flightCondition>
|
||||
|
||||
<!-- 链接到我们刚刚创建的 AnimationDef -->
|
||||
<flyingAnimationNorth>ARA_FlyNorth</flyingAnimationNorth>
|
||||
<flyingAnimationEast>ARA_FlyEast</flyingAnimationEast>
|
||||
<flyingAnimationSouth>ARA_FlySouth</flyingAnimationSouth>
|
||||
</li>
|
||||
<li Class="CompProperties_MechPowerCell">
|
||||
<totalPowerTicks>7200000</totalPowerTicks>
|
||||
<labelOverride>寿命</labelOverride>
|
||||
@@ -1340,71 +1351,442 @@
|
||||
</comps>
|
||||
</AlienRace.ThingDef_AlienRace>
|
||||
|
||||
<AlienRace.ThingDef_AlienRace ParentName="ARA_NodeBase">
|
||||
<AlienRace.ThingDef_AlienRace ParentName="ARA_PawnBase">
|
||||
<defName>ArachnaeNode_Race_NeuroSwarm</defName>
|
||||
<label>阿拉克涅织域种</label>
|
||||
<description>阿拉克涅督虫之一,是阿拉克涅虫群中最为特殊的虫族,织域种虽然受到女皇种监管,但仍然具有强大的高级智慧和自我意志,织域种之间能够构建一种高度互联的神经网络从而进行复杂的研究和计算工作,织域种进行计算工作时无法感知外界环境,因此她们是虫群的重要保护对象。</description>
|
||||
|
||||
<alienRace>
|
||||
<!-- 核心设置 -->
|
||||
<generalSettings>
|
||||
<!-- 男性生成几率 -->
|
||||
<maleGenderProbability>0</maleGenderProbability>
|
||||
<!-- 无视年龄疾病 -->
|
||||
<immuneToAge>true</immuneToAge>
|
||||
<!-- 在口角中造成的最大伤害 -->
|
||||
<maxDamageForSocialfight>15</maxDamageForSocialfight>
|
||||
<!-- 免疫人类的异形歧视 -->
|
||||
<immuneToXenophobia>false</immuneToXenophobia>
|
||||
<!-- 最小的可生成成人背景的年龄 -->
|
||||
<minAgeForAdulthood>0</minAgeForAdulthood>
|
||||
<!-- 手术继承自人类 -->
|
||||
<humanRecipeImport>false</humanRecipeImport>
|
||||
<!-- 睡觉定义 -->
|
||||
<canLayDown>false</canLayDown>
|
||||
<!-- 各种零件定义 -->
|
||||
<alienPartGenerator>
|
||||
<alienPartGenerator Inherit="False">
|
||||
<!-- 允许的头部 -->
|
||||
<headTypes Inherit="False">
|
||||
<li>Female_AverageNormal</li>
|
||||
<!-- <li>Female_AverageWide</li>
|
||||
<li>Female_AveragePointy</li> -->
|
||||
</headTypes>
|
||||
<!-- 身体类型 -->
|
||||
<bodyTypes Inherit="False">
|
||||
<li>Thin</li>
|
||||
</bodyTypes>
|
||||
<!-- 颜色设置 -->
|
||||
<colorChannels Inherit="false">
|
||||
<!-- 皮肤是特殊的,因为现在由基因定义肤色 -->
|
||||
<li>
|
||||
<name>skin</name>
|
||||
<first Class="AlienRace.ColorGenerator_SkinColorMelanin">
|
||||
<minMelanin>0</minMelanin>
|
||||
<maxMelanin>0</maxMelanin>
|
||||
</first>
|
||||
</li>
|
||||
<!-- 头发颜色 -->
|
||||
<li>
|
||||
<name>hair</name>
|
||||
<first Class="ColorGenerator_Options">
|
||||
<options>
|
||||
<li>
|
||||
<weight>15</weight>
|
||||
<min>(0.4,0.3,0.5)</min>
|
||||
<max>(0.6,0.1,0.7)</max>
|
||||
</li>
|
||||
<li>
|
||||
<weight>6</weight>
|
||||
<min>(0.9,0.9,0.9)</min>
|
||||
<max>(0.9,0.9,0.9)</max>
|
||||
</li>
|
||||
<li>
|
||||
<weight>6</weight>
|
||||
<min>(1,0.8,0.8)</min>
|
||||
<max>(1,0.9,0.9)</max>
|
||||
</li>
|
||||
<li>
|
||||
<weight>3</weight>
|
||||
<min>(1,1,1)</min>
|
||||
<max>(1,1,1)</max>
|
||||
</li>
|
||||
</options>
|
||||
</first>
|
||||
</li>
|
||||
</colorChannels>
|
||||
<!-- 额外身体部件 -->
|
||||
<bodyAddons>
|
||||
<li>
|
||||
<path>ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Addons_WeaponSmith</path>
|
||||
<inFrontOfBody>false</inFrontOfBody>
|
||||
<scaleWithPawnDrawsize>true</scaleWithPawnDrawsize>
|
||||
<offsets>
|
||||
<north>
|
||||
<layerOffset>-0.275</layerOffset>
|
||||
</north>
|
||||
</offsets>
|
||||
</li>
|
||||
</bodyAddons>
|
||||
<!-- 图像放大 -->
|
||||
<borderScale>1.5</borderScale>
|
||||
<atlasScale>1.5</atlasScale>
|
||||
<customDrawSize>(2,2)</customDrawSize>
|
||||
<customHeadDrawSize>(1.0,1.0)</customHeadDrawSize>
|
||||
<customPortraitDrawSize>(1,1)</customPortraitDrawSize>
|
||||
</alienPartGenerator>
|
||||
<growthAges Inherit="False">
|
||||
<li>0</li>
|
||||
</growthAges>
|
||||
<!-- 年龄工作效率等的覆盖 -->
|
||||
<ageStatOverrides Inherit="False">
|
||||
<WorkSpeedGlobal>
|
||||
<useBiologicalYears>true</useBiologicalYears>
|
||||
<curve>
|
||||
<points>
|
||||
<li>(0,1)</li>
|
||||
</points>
|
||||
</curve>
|
||||
</WorkSpeedGlobal>
|
||||
<ShootingAccuracyChildFactor MayRequire="Ludeon.RimWorld.Biotech">
|
||||
<useBiologicalYears>true</useBiologicalYears>
|
||||
<curve>
|
||||
<points>
|
||||
<li>(0,1)</li>
|
||||
</points>
|
||||
</curve>
|
||||
</ShootingAccuracyChildFactor>
|
||||
<MarketValue>
|
||||
<useBiologicalYears>true</useBiologicalYears>
|
||||
<curve>
|
||||
<points>
|
||||
<li>(0,1)</li>
|
||||
</points>
|
||||
</curve>
|
||||
</MarketValue>
|
||||
<MeleeHitChance>
|
||||
<useBiologicalYears>true</useBiologicalYears>
|
||||
<curve>
|
||||
<points>
|
||||
<li>(0,1)</li>
|
||||
</points>
|
||||
</curve>
|
||||
</MeleeHitChance>
|
||||
<AimingDelayFactor>
|
||||
<useBiologicalYears>true</useBiologicalYears>
|
||||
<curve>
|
||||
<points>
|
||||
<li>(0,1)</li>
|
||||
</points>
|
||||
</curve>
|
||||
</AimingDelayFactor>
|
||||
<ArrestSuccessChance>
|
||||
<useBiologicalYears>true</useBiologicalYears>
|
||||
<curve>
|
||||
<points>
|
||||
<li>(0, 1)</li>
|
||||
</points>
|
||||
</curve>
|
||||
</ArrestSuccessChance>
|
||||
</ageStatOverrides>
|
||||
<!-- 生育设置,将妊娠设为男性来避免开局刷妊娠 -->
|
||||
<reproduction>
|
||||
<gestatingGender>Male</gestatingGender>
|
||||
<femaleFertilityAgeFactor>
|
||||
<points>
|
||||
<li>(0,0)</li>
|
||||
<li>(1,0)</li>
|
||||
<li>(999,0)</li>
|
||||
<li>(9999,0)</li>
|
||||
</points>
|
||||
</femaleFertilityAgeFactor>
|
||||
</reproduction>
|
||||
<growthFactorByAge Inherit="False">
|
||||
<points>
|
||||
<li>(0,0)</li>
|
||||
<li>(1,0)</li>
|
||||
<li>(999,0)</li>
|
||||
<li>(9999,0)</li>
|
||||
</points>
|
||||
</growthFactorByAge>
|
||||
</generalSettings>
|
||||
<!-- 图形 -->
|
||||
<graphicPaths>
|
||||
<!-- 皮肤颜色 -->
|
||||
<skinColor>(1,1,1,1)</skinColor>
|
||||
<!-- 皮肤着色器 -->
|
||||
<skinShader>Cutout</skinShader>
|
||||
<body>ArachnaeSwarm/Things/ARA_NeuroSwarm/Bodies/</body>
|
||||
<head>ArachnaeSwarm/Things/ARA_NeuroSwarm/Heads/</head>
|
||||
<skeleton>Things/Pawn/Humanlike/Bodies/Dessicated/Dessicated_Thin</skeleton>
|
||||
<stump>ArachnaeSwarm/Things/ARA_HiveNode/Bodies/</stump>
|
||||
</graphicPaths>
|
||||
<!-- 风格设置 -->
|
||||
<styleSettings>
|
||||
<!-- 头发 -->
|
||||
<li>
|
||||
<key>HairDef</key>
|
||||
<value>
|
||||
<hasStyle>true</hasStyle>
|
||||
<styleTagsOverride>
|
||||
<li>Bald</li>
|
||||
</styleTagsOverride>
|
||||
</value>
|
||||
</li>
|
||||
<!-- 纹身 -->
|
||||
<li>
|
||||
<key>TattooDef</key>
|
||||
<value>
|
||||
<hasStyle>false</hasStyle>
|
||||
</value>
|
||||
</li>
|
||||
<!-- 胡须 -->
|
||||
<li>
|
||||
<key>BeardDef</key>
|
||||
<value>
|
||||
<hasStyle>false</hasStyle>
|
||||
</value>
|
||||
</li>
|
||||
</styleSettings>
|
||||
<!-- 种族的允许和禁止特化设置 -->
|
||||
<raceRestriction>
|
||||
<!-- 无法拥有的内源性基因 -->
|
||||
<blackEndoCategories MayRequire="Ludeon.RimWorld.Biotech">
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">HairColor</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">Melanin</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">BodyType</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">Ears</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">Nose</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">Voice</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">Headbone</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">Head</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">Jaw</li>
|
||||
</blackEndoCategories>
|
||||
<!-- 无法拥有的Tag基因 -->
|
||||
<blackGeneTags MayRequire="Ludeon.RimWorld.Biotech">
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">EyeColor</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">Tail</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">BeardStyle</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">Fur</li>
|
||||
</blackGeneTags>
|
||||
<!-- 无法拥有的基因列表 -->
|
||||
<blackGeneList>
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">Furskin</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">Brow_Heavy</li>
|
||||
</blackGeneList>
|
||||
<!-- 禁止的异形变种 -->
|
||||
<blackXenotypeList>
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">Dirtmole</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">Genie</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">Hussar</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">Sanguophage</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">Neanderthal</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">Pigskin</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">Impid</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">Waster</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">Yttakin</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Biotech">Highmate</li>
|
||||
</blackXenotypeList>
|
||||
<!-- 异种类型列表 -->
|
||||
<xenotypeList>
|
||||
</xenotypeList>
|
||||
<onlyUseRaceRestrictedXenotypes>true</onlyUseRaceRestrictedXenotypes>
|
||||
<!-- 食物列表 -->
|
||||
<whiteFoodList>
|
||||
<li>ARA_InsectJelly</li>
|
||||
</whiteFoodList>
|
||||
<onlyEatRaceRestrictedFood>true</onlyEatRaceRestrictedFood>
|
||||
<!-- 可以驯服的宠物,主要是防止小虫由别人驯服 -->
|
||||
<petList>
|
||||
<li>ArachnaeBase_Race_Scavenger</li>
|
||||
<li>ArachnaeBase_Race_HardJaw</li>
|
||||
</petList>
|
||||
<onlyTameRaceRestrictedPets>false</onlyTameRaceRestrictedPets>
|
||||
<!-- 可以穿戴的衣服 -->
|
||||
<apparelList>
|
||||
</apparelList>
|
||||
<blackApparelList>
|
||||
</blackApparelList>
|
||||
<!-- 仅使用种族限制的服装 -->
|
||||
<onlyUseRaceRestrictedApparel>true</onlyUseRaceRestrictedApparel>
|
||||
<!-- 生育能力 -->
|
||||
<onlyReproduceWithRestrictedRaces>true</onlyReproduceWithRestrictedRaces>
|
||||
<canReproduce>false</canReproduce>
|
||||
<!-- 允许的特质类型 -->
|
||||
<traitList>
|
||||
</traitList>
|
||||
<blackTraitList>
|
||||
<li>BodyPurist</li>
|
||||
<li>Cannibal</li>
|
||||
<li>CreepyBreathing</li>
|
||||
<li>DislikesWomen</li>
|
||||
<li>Gourmand</li>
|
||||
<li>QuickSleeper</li>
|
||||
<li>Wimp</li>
|
||||
<li>Beauty</li>
|
||||
<li>DrugDesire</li>
|
||||
<li>Immunity</li>
|
||||
<li>PsychicSensitivity</li>
|
||||
</blackTraitList>
|
||||
</raceRestriction>
|
||||
<!-- 关系设置,不会生成任何随机关系 -->
|
||||
<relationSettings>
|
||||
<relationChanceModifierLover>0</relationChanceModifierLover>
|
||||
<relationChanceModifierExLover>0</relationChanceModifierExLover>
|
||||
|
||||
<relationChanceModifierFiance>0</relationChanceModifierFiance>
|
||||
<relationChanceModifierSpouse>0</relationChanceModifierSpouse>
|
||||
<relationChanceModifierExSpouse>0</relationChanceModifierExSpouse>
|
||||
|
||||
<relationChanceModifierParent>0</relationChanceModifierParent>
|
||||
<relationChanceModifierChild>0</relationChanceModifierChild>
|
||||
<relationChanceModifierSibling>0</relationChanceModifierSibling>
|
||||
</relationSettings>
|
||||
</alienRace>
|
||||
<comps>
|
||||
</comps>
|
||||
|
||||
<!-- 基础属性设置 -->
|
||||
<statBases>
|
||||
<MaxFlightTime>9999</MaxFlightTime>
|
||||
<FlightCooldown>0</FlightCooldown>
|
||||
|
||||
<!-- 市场价值 -->
|
||||
<MarketValue>2000</MarketValue>
|
||||
<RoyalFavorValue>5</RoyalFavorValue>
|
||||
|
||||
<!-- 移动速度 -->
|
||||
<MoveSpeed>3.5</MoveSpeed>
|
||||
<MoveSpeed>1.5</MoveSpeed>
|
||||
<Mass>150</Mass>
|
||||
|
||||
<!-- <RestRateMultiplier>1</RestRateMultiplier> -->
|
||||
<!-- <HungerRateMultiplier>1</HungerRateMultiplier> -->
|
||||
<!-- <EatingSpeed>5</EatingSpeed> -->
|
||||
<MaxNutrition>2</MaxNutrition>
|
||||
<EatingSpeed>2</EatingSpeed>
|
||||
<MaxNutrition>0.5</MaxNutrition>
|
||||
|
||||
<CarryingCapacity>100</CarryingCapacity>
|
||||
<MeatAmount>40</MeatAmount>
|
||||
<LeatherAmount>10</LeatherAmount>
|
||||
<!-- 女皇的负重,设为0以避免女皇能背东西 -->
|
||||
<CarryingCapacity>0</CarryingCapacity>
|
||||
<MeatAmount>450</MeatAmount>
|
||||
<LeatherAmount>600</LeatherAmount>
|
||||
|
||||
<PainShockThreshold>1</PainShockThreshold>
|
||||
<PsychicSensitivity>3</PsychicSensitivity>
|
||||
<ToxicResistance>0.95</ToxicResistance>
|
||||
<ToxicEnvironmentResistance MayRequire="Ludeon.RimWorld.Biotech">0.95</ToxicEnvironmentResistance>
|
||||
<Flammability>0.25</Flammability>
|
||||
|
||||
<MeleeDodgeChance>0.75</MeleeDodgeChance>
|
||||
<!-- <MeleeHitChance>1</MeleeHitChance> -->
|
||||
|
||||
<!-- <NegotiationAbility>1</NegotiationAbility> -->
|
||||
<!-- <SellPriceFactor>1</SellPriceFactor> -->
|
||||
<!-- <SocialImpact>1</SocialImpact> -->
|
||||
<!-- <TradePriceImprovement>0.5</TradePriceImprovement> -->
|
||||
|
||||
<!-- 自带的甲壳可以防御外部攻击 -->
|
||||
<ArmorRating_Blunt>0.1</ArmorRating_Blunt>
|
||||
<ArmorRating_Sharp>0.1</ArmorRating_Sharp>
|
||||
<ArmorRating_Heat>0.05</ArmorRating_Heat>
|
||||
<ArmorRating_Blunt>0.2</ArmorRating_Blunt>
|
||||
<ArmorRating_Sharp>0.2</ArmorRating_Sharp>
|
||||
<ArmorRating_Heat>0.1</ArmorRating_Heat>
|
||||
|
||||
<MaxNutrition>1.26</MaxNutrition>
|
||||
<!-- 虫群拥有惊人的愈合速度 -->
|
||||
<InjuryHealingFactor>5</InjuryHealingFactor>
|
||||
|
||||
<!-- 在野外采集的营养 -->
|
||||
<ForagedNutritionPerDay>0</ForagedNutritionPerDay>
|
||||
</statBases>
|
||||
|
||||
<race>
|
||||
<!-- 身体类型 -->
|
||||
<body>ArachnaeWeaponSmith_Body</body>
|
||||
<baseBodySize>0.8</baseBodySize>
|
||||
<baseHealthScale>0.75</baseHealthScale>
|
||||
<body>ArachnaeQueen_Body</body>
|
||||
<fleshType>Normal</fleshType>
|
||||
<!-- AI行为,勿改 -->
|
||||
<thinkTreeMain>ARA_Humanlike</thinkTreeMain>
|
||||
<!-- 智力水平 -->
|
||||
<intelligence>Humanlike</intelligence>
|
||||
<!-- 肉和皮革的定义 -->
|
||||
<nameCategory>HumanStandard</nameCategory>
|
||||
<bloodDef>Filth_BloodInsect</bloodDef>
|
||||
<bloodSmearDef>Filth_BloodSmear</bloodSmearDef>
|
||||
<!-- 身形大小 -->
|
||||
<baseBodySize>6</baseBodySize>
|
||||
<!-- 基础血量,很高 -->
|
||||
<baseHealthScale>4</baseHealthScale>
|
||||
<!-- 解剖产物 -->
|
||||
<leatherDef>ARA_Carapace</leatherDef>
|
||||
|
||||
<soundMeleeHitPawn>Pawn_Melee_BigBash_HitPawn</soundMeleeHitPawn>
|
||||
<soundMeleeHitBuilding>Pawn_Melee_BigBash_HitBuilding</soundMeleeHitBuilding>
|
||||
<soundMeleeMiss>Pawn_Melee_BigBash_Miss</soundMeleeMiss>
|
||||
<soundMeleeDodge>Pawn_MeleeDodge</soundMeleeDodge>
|
||||
<!-- 年龄阶段 -->
|
||||
<lifeExpectancy>300</lifeExpectancy>
|
||||
<lifeStageWorkSettings MayRequire="Ludeon.RimWorld.Biotech" Inherit="False">
|
||||
<Firefighter>0</Firefighter>
|
||||
<Patient>0</Patient>
|
||||
<Doctor>0</Doctor>
|
||||
<PatientBedRest>0</PatientBedRest>
|
||||
<Childcare MayRequire="Ludeon.RimWorld.Biotech">0</Childcare>
|
||||
<BasicWorker>0</BasicWorker>
|
||||
<Warden>0</Warden>
|
||||
<Handling>0</Handling>
|
||||
<Cooking>0</Cooking>
|
||||
<Hunting>0</Hunting>
|
||||
<Construction>0</Construction>
|
||||
<Growing>0</Growing>
|
||||
<Mining>0</Mining>
|
||||
<PlantCutting>0</PlantCutting>
|
||||
<Smithing>0</Smithing>
|
||||
<Tailoring>0</Tailoring>
|
||||
<Art>0</Art>
|
||||
<Crafting>0</Crafting>
|
||||
<Hauling>0</Hauling>
|
||||
<Cleaning>0</Cleaning>
|
||||
<Research>0</Research>
|
||||
<DarkStudy MayRequire="Ludeon.RimWorld.Anomaly">0</DarkStudy>
|
||||
</lifeStageWorkSettings>
|
||||
<lifeStageAges Inherit="False">
|
||||
<li>
|
||||
<def>ARA_Queen_Adult</def>
|
||||
<minAge>0</minAge>
|
||||
<soundWounded>Pawn_HiveQueen_Wounded</soundWounded>
|
||||
<soundDeath>Pawn_HiveQueen_Death</soundDeath>
|
||||
<soundCall>Pawn_HiveQueen_Call</soundCall>
|
||||
<soundAngry>Pawn_HiveQueen_Angry</soundAngry>
|
||||
</li>
|
||||
</lifeStageAges>
|
||||
<canFlyInVacuum>false</canFlyInVacuum>
|
||||
</race>
|
||||
|
||||
<!-- 工具设置(攻击方式) -->
|
||||
<tools>
|
||||
<li>
|
||||
<label>头顶</label>
|
||||
<capacities>
|
||||
<li>Poke</li>
|
||||
</capacities>
|
||||
<power>16</power>
|
||||
<cooldownTime>2</cooldownTime>
|
||||
<linkedBodyPartsGroup>HeadAttackTool</linkedBodyPartsGroup>
|
||||
<ensureLinkedBodyPartsGroupAlwaysUsable>true</ensureLinkedBodyPartsGroupAlwaysUsable>
|
||||
<chanceFactor>0.01</chanceFactor>
|
||||
</li>
|
||||
</tools>
|
||||
|
||||
<recipes Inherit="False">
|
||||
</recipes>
|
||||
|
||||
<comps>
|
||||
<!-- Add our new flight component here -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_PawnFlight"> <!-- 2. 添加我们的飞行组件 -->
|
||||
|
||||
<!-- 飞行触发条件:仅在征召时飞行 -->
|
||||
<flightCondition>Drafted</flightCondition>
|
||||
|
||||
<flyingAnimationNorth>ARA_Psi_FlyNorth</flyingAnimationNorth>
|
||||
<flyingAnimationEast>ARA_Psi_FlyEast</flyingAnimationEast>
|
||||
<flyingAnimationSouth>ARA_Psi_FlySouth</flyingAnimationSouth>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_HediffGiver">
|
||||
<hediffs>
|
||||
<li>ARA_HiveMindDrone</li>
|
||||
<li>ARA_HiveStrength</li>
|
||||
<li>ARA_Psi_Master</li>
|
||||
<li>PsychicAmplifier</li>
|
||||
</hediffs>
|
||||
<addChance>1.0</addChance>
|
||||
<allowDuplicates>false</allowDuplicates>
|
||||
</li>
|
||||
</comps>
|
||||
</AlienRace.ThingDef_AlienRace>
|
||||
</Defs>
|
||||
@@ -16,7 +16,7 @@
|
||||
<thinkTreeConstant>HumanlikeConstant</thinkTreeConstant>
|
||||
<intelligence>Humanlike</intelligence>
|
||||
<makesFootprints>true</makesFootprints>
|
||||
<lifeExpectancy>80</lifeExpectancy>
|
||||
<lifeExpectancy>300</lifeExpectancy>
|
||||
<bloodDef>Filth_Blood</bloodDef>
|
||||
<bloodSmearDef>Filth_BloodSmear</bloodSmearDef>
|
||||
<leatherDef>Leather_Human</leatherDef>
|
||||
@@ -410,6 +410,8 @@
|
||||
<!-- 食物列表 -->
|
||||
<whiteFoodList>
|
||||
<li>ARA_InsectJelly</li>
|
||||
<li>ARA_NutrientPasteMeal</li>
|
||||
<li>ARA_PheromoneSolvent</li>
|
||||
</whiteFoodList>
|
||||
<onlyEatRaceRestrictedFood>true</onlyEatRaceRestrictedFood>
|
||||
<!-- 可以驯服的宠物,主要是防止小虫由别人驯服 -->
|
||||
@@ -430,9 +432,6 @@
|
||||
<canReproduce>false</canReproduce>
|
||||
<!-- 允许操纵的配方 -->
|
||||
<recipeList>
|
||||
<li>ARA_WeaponSmith_Upgrade_1_Stage</li>
|
||||
<!-- <li>ARA_WeaponSmith_Upgrade_2_Stage</li> -->
|
||||
<!-- <li>ARA_WeaponSmith_Upgrade_3_Stage</li> -->
|
||||
</recipeList>
|
||||
<!-- 允许的工作台类型,放开以供其他种族使用 -->
|
||||
<!-- <workGiverList>
|
||||
@@ -459,6 +458,7 @@
|
||||
<thoughtSettings>
|
||||
<!-- 不会产生的想法 -->
|
||||
<cannotReceiveThoughts>
|
||||
<li>ARA_CreepyCrawly</li>
|
||||
<li>Naked</li>
|
||||
<li>AnyBodyPartButGroinCovered_Disapproved_Female</li>
|
||||
<li>AnyBodyPartButGroinCovered_Disapproved_Male</li>
|
||||
@@ -610,7 +610,7 @@
|
||||
<soundMeleeMiss>Pawn_Melee_BigBash_Miss</soundMeleeMiss>
|
||||
<soundMeleeDodge>Pawn_MeleeDodge</soundMeleeDodge>
|
||||
<!-- 年龄阶段 -->
|
||||
<!-- <lifeExpectancy>5000</lifeExpectancy> -->
|
||||
<lifeExpectancy>300</lifeExpectancy>
|
||||
<lifeStageWorkSettings MayRequire="Ludeon.RimWorld.Biotech" Inherit="False">
|
||||
<Firefighter>0</Firefighter>
|
||||
<Patient>0</Patient>
|
||||
@@ -698,6 +698,7 @@
|
||||
<li Class="ArachnaeSwarm.CompProperties_HediffGiver">
|
||||
<hediffs>
|
||||
<li>ARA_Queen_0_Stage</li>
|
||||
<li>ARA_HiveStrength</li>
|
||||
<li>ARA_HiveMindMaster</li>
|
||||
</hediffs>
|
||||
<addChance>1.0</addChance>
|
||||
|
||||
@@ -1,8 +1,36 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
|
||||
<!-- ==================== 1. 物品定义:阿拉克涅信息素溶剂 ==================== -->
|
||||
|
||||
<ThingDef ParentName="MedicineBase">
|
||||
<defName>ARA_Medicine</defName>
|
||||
<label>阿拉克涅愈合素</label>
|
||||
<description>由阿拉克涅医药孵化茧所孵化的药物,效力等同于常规的医药,但是需要在冷藏条件下保存。</description>
|
||||
<possessionCount>10</possessionCount>
|
||||
<graphicData>
|
||||
<texPath>ArachnaeSwarm/Item/ARA_Medicine</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
<drawSize>0.85</drawSize>
|
||||
</graphicData>
|
||||
<techLevel>Animal</techLevel>
|
||||
<statBases>
|
||||
<MarketValue>10</MarketValue>
|
||||
<Mass>0.5</Mass>
|
||||
<Flammability>1</Flammability>
|
||||
<MedicalPotency>1</MedicalPotency>
|
||||
<MedicalQualityMax>1.00</MedicalQualityMax>
|
||||
<DeteriorationRate>2</DeteriorationRate>
|
||||
<WorkToMake>700</WorkToMake>
|
||||
</statBases>
|
||||
<tickerType>Rare</tickerType>
|
||||
<comps>
|
||||
<li Class="CompProperties_Rottable">
|
||||
<daysToRotStart>150</daysToRotStart>
|
||||
<rotDestroys>true</rotDestroys>
|
||||
</li>
|
||||
</comps>
|
||||
<allowedArchonexusCount>20</allowedArchonexusCount>
|
||||
</ThingDef>
|
||||
|
||||
<!-- ==================== 信息素 ==================== -->
|
||||
<ThingDef ParentName="MakeableDrugPillBase">
|
||||
<defName>ARA_PheromoneSolvent</defName>
|
||||
<label>阿拉克涅信息素溶剂</label>
|
||||
@@ -12,9 +40,9 @@
|
||||
<HediffDef>ARA_MimicNematode</HediffDef>
|
||||
</descriptionHyperlinks>
|
||||
<graphicData>
|
||||
<texPath>Things/Item/Drug/WakeUp</texPath> <!-- 暂时使用WakeUp的贴图,可后续替换 -->
|
||||
<graphicClass>Graphic_StackCount</graphicClass>
|
||||
<color>(1.0, 0.647, 0.0, 0.5)</color> <!-- 橙色 -->
|
||||
<texPath>ArachnaeSwarm/Item/ARA_PheromoneSolvent</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
<shaderType>TransparentPostLight</shaderType>
|
||||
</graphicData>
|
||||
<rotatable>false</rotatable>
|
||||
<statBases>
|
||||
@@ -22,7 +50,7 @@
|
||||
<MarketValue>50</MarketValue>
|
||||
<Mass>0.01</Mass>
|
||||
</statBases>
|
||||
<techLevel>Industrial</techLevel>
|
||||
<techLevel>Animal</techLevel>
|
||||
<ingestible>
|
||||
<drugCategory>Medical</drugCategory> <!-- 定义为医疗品,而非娱乐品 -->
|
||||
<outcomeDoers>
|
||||
@@ -33,13 +61,10 @@
|
||||
</outcomeDoers>
|
||||
</ingestible>
|
||||
<recipeMaker>
|
||||
<researchPrerequisite>MedicineProduction</researchPrerequisite> <!-- 假设需要基础制药解锁 -->
|
||||
<recipeUsers>
|
||||
<li>DrugLab</li>
|
||||
</recipeUsers>
|
||||
<researchPrerequisite>ARA_Technology_2MED</researchPrerequisite> <!-- 假设需要基础制药解锁 -->
|
||||
<recipeUsers Inherit="False"/>
|
||||
</recipeMaker>
|
||||
<costList>
|
||||
<Neutroamine>2</Neutroamine>
|
||||
<ARA_InsectJelly>5</ARA_InsectJelly> <!-- 使用虫胶作为特色材料 -->
|
||||
</costList>
|
||||
<comps>
|
||||
@@ -51,14 +76,11 @@
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
<!-- ==================== 2. Hediff定义:共生稳定器效果 ==================== -->
|
||||
|
||||
<HediffDef>
|
||||
<defName>ARA_SymbioticStabilizer</defName>
|
||||
<label>信息素抑制</label>
|
||||
<labelNoun>一种信息素抑制效果</labelNoun>
|
||||
<description>阿拉克涅信息素溶剂的效果正在生效,它模拟了虫群的共生信号,抑制了体内寄生体的活性。</description>
|
||||
<description>阿拉克涅信息素溶剂的效果正在生效,它模拟了虫群的共生信号,抑制了体内寄生体的活性。在溶剂生效时,不会使得拟线种虫族寄生的进度超过80%。</description>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<defaultLabelColor>(0.7, 1.0, 0.7)</defaultLabelColor>
|
||||
<isBad>false</isBad>
|
||||
@@ -69,47 +91,12 @@
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
|
||||
<!-- ==================== 3. 物品定义:阿拉克涅拟线种虫卵 ==================== -->
|
||||
|
||||
<ThingDef ParentName="MakeableDrugPillBase">
|
||||
<defName>ARA_NematodeEgg</defName>
|
||||
<label>阿拉克涅拟线种虫卵</label>
|
||||
<description>一个经过特殊处理的阿拉克涅拟线种虫卵,可以被直接服用。服用后,虫卵会迅速在宿主体内孵化并释放大量阿拉克涅拟线虫,导致极其严重的感染。</description>
|
||||
<descriptionHyperlinks>
|
||||
<HediffDef>ARA_MimicNematode</HediffDef>
|
||||
</descriptionHyperlinks>
|
||||
<graphicData>
|
||||
<texPath>Things/Item/Drug/Luciferium</texPath>
|
||||
<graphicClass>Graphic_StackCount</graphicClass>
|
||||
<color>(100,50,100)</color> <!-- 深紫色 -->
|
||||
</graphicData>
|
||||
<statBases>
|
||||
<MarketValue>75</MarketValue>
|
||||
<Mass>0.05</Mass>
|
||||
</statBases>
|
||||
<techLevel>Industrial</techLevel>
|
||||
<ingestible>
|
||||
<drugCategory>None</drugCategory> <!-- 修正:这不是药物,不应被药物政策管理 -->
|
||||
<foodType>AnimalProduct</foodType>
|
||||
<outcomeDoers>
|
||||
<li Class="IngestionOutcomeDoer_GiveHediff">
|
||||
<hediffDef>ARA_MimicNematode</hediffDef>
|
||||
<severity>0.5</severity> <!-- 直接给予0.7的严重性 -->
|
||||
</li>
|
||||
</outcomeDoers>
|
||||
</ingestible>
|
||||
<recipeMaker IsNull="True" /> <!-- 明确声明此物品不可制造,以覆盖父类的设置 -->
|
||||
</ThingDef>
|
||||
|
||||
<!-- ==================== 3. 阿拉克涅信息素成瘾机制 ==================== -->
|
||||
|
||||
|
||||
<ChemicalDef>
|
||||
<defName>ARA_Pheromone</defName>
|
||||
<label>阿拉克涅信息素</label>
|
||||
<addictionHediff>ARA_PheromoneAddiction</addictionHediff>
|
||||
</ChemicalDef>
|
||||
|
||||
<NeedDef ParentName="DrugAddictionNeedBase">
|
||||
<defName>Chemical_ARA_Pheromone</defName>
|
||||
<needClass>Need_Chemical</needClass>
|
||||
@@ -118,7 +105,6 @@
|
||||
<fallPerDay>0.333</fallPerDay>
|
||||
<listPriority>50</listPriority>
|
||||
</NeedDef>
|
||||
|
||||
<HediffDef ParentName="AddictionBase">
|
||||
<defName>ARA_PheromoneAddiction</defName>
|
||||
<label>信息素依赖</label>
|
||||
@@ -147,7 +133,6 @@
|
||||
</li>
|
||||
</stages>
|
||||
</HediffDef>
|
||||
|
||||
<ThoughtDef>
|
||||
<defName>ARA_PheromoneWithdrawal</defName>
|
||||
<workerClass>ThoughtWorker_Hediff</workerClass>
|
||||
@@ -164,5 +149,4 @@
|
||||
</li>
|
||||
</stages>
|
||||
</ThoughtDef>
|
||||
|
||||
</Defs>
|
||||
@@ -33,6 +33,31 @@
|
||||
<allowedArchonexusCount>150</allowedArchonexusCount>
|
||||
</ThingDef>
|
||||
|
||||
<!-- The meal produced by the new dispenser -->
|
||||
<ThingDef ParentName="MealBase">
|
||||
<defName>ARA_NutrientPasteMeal</defName>
|
||||
<label>阿拉克涅蜜晶糕</label>
|
||||
<description>一种由虫蜜合成的黏糊糕点,能提供虫族生存所需,味道对于虫族来说不太可口,不过普通的人类也许会喜欢这种虫族合成的糕点。</description>
|
||||
<graphicData>
|
||||
<texPath>Things/Item/Meal/NutrientPaste</texPath>
|
||||
<graphicClass>Graphic_StackCount</graphicClass>
|
||||
</graphicData>
|
||||
<statBases>
|
||||
<MarketValue>10</MarketValue>
|
||||
<Nutrition>2.0</Nutrition>
|
||||
</statBases>
|
||||
<ingestible>
|
||||
<foodType>AnimalProduct</foodType>
|
||||
<preferability>MealFine</preferability>
|
||||
<joy>0.04</joy>
|
||||
<joyKind>Gluttonous</joyKind>
|
||||
<ingestEffect>EatVegetarian</ingestEffect>
|
||||
<ingestSound>Meal_Eat</ingestSound>
|
||||
<lowPriorityCaravanFood>true</lowPriorityCaravanFood>
|
||||
<babiesCanIngest>true</babiesCanIngest>
|
||||
</ingestible>
|
||||
</ThingDef>
|
||||
|
||||
<ThingDef ParentName="ResourceBase">
|
||||
<defName>ARA_Carapace</defName>
|
||||
<label>甲壳素</label>
|
||||
@@ -94,4 +119,33 @@
|
||||
<allowedArchonexusCount>80</allowedArchonexusCount>
|
||||
<possessionCount>50</possessionCount>
|
||||
</ThingDef>
|
||||
|
||||
<ThingDef ParentName="ResourceBase">
|
||||
<defName>ARA_Activated_Bacterium</defName>
|
||||
<label>活化钜菌</label>
|
||||
<description>一种被阿拉克涅虫族驯化和改造的极端微生物菌落。它具有超强的生物催化能力和腐蚀同化能力,是不少虫族高级装备的必需品。</description>
|
||||
<graphicData>
|
||||
<texPath>ArachnaeSwarm/Item/ARA_Carapace</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
</graphicData>
|
||||
<genericMarketSellable>false</genericMarketSellable>
|
||||
<soundInteract>Standard_Drop</soundInteract>
|
||||
<soundDrop>Standard_Drop</soundDrop>
|
||||
<useHitPoints>true</useHitPoints>
|
||||
<healthAffectsPrice>false</healthAffectsPrice>
|
||||
<stackLimit>30</stackLimit>
|
||||
<statBases>
|
||||
<MarketValue>1</MarketValue>
|
||||
<MaxHitPoints>50</MaxHitPoints>
|
||||
<Mass>0.01</Mass>
|
||||
</statBases>
|
||||
<thingCategories>
|
||||
<li>ResourcesRaw</li>
|
||||
</thingCategories>
|
||||
<burnableByRecipe>false</burnableByRecipe>
|
||||
<smeltable>false</smeltable>
|
||||
<terrainAffordanceNeeded>Medium</terrainAffordanceNeeded>
|
||||
<allowedArchonexusCount>80</allowedArchonexusCount>
|
||||
<possessionCount>50</possessionCount>
|
||||
</ThingDef>
|
||||
</Defs>
|
||||
@@ -38,6 +38,9 @@
|
||||
<defName>ARA_Bodystocking_White</defName>
|
||||
<label>连身白丝</label>
|
||||
<description>阿拉克涅虫群的装饰性织物,对于虫群来说应该是没啥用的东西。</description>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ARA_Cocoon_Cloth</ThingDef>
|
||||
</descriptionHyperlinks>
|
||||
<graphicData>
|
||||
<texPath>ArachnaeSwarm/Apparel/ARA_Bodystocking_White</texPath>
|
||||
</graphicData>
|
||||
@@ -58,6 +61,9 @@
|
||||
<defName>ARA_Bodystocking_Black</defName>
|
||||
<label>连身黑丝</label>
|
||||
<description>阿拉克涅虫群的装饰性织物,对于虫群来说应该是没啥用的东西。</description>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ARA_Cocoon_Cloth</ThingDef>
|
||||
</descriptionHyperlinks>
|
||||
<graphicData>
|
||||
<texPath>ArachnaeSwarm/Apparel/ARA_Bodystocking_Black</texPath>
|
||||
</graphicData>
|
||||
@@ -155,7 +161,10 @@
|
||||
<ThingDef ParentName="ARA_ClothBase">
|
||||
<defName>ARA_Maid_Uniform</defName>
|
||||
<label>阿拉克涅女仆装</label>
|
||||
<description>阿拉克涅督虫们所着织物中的一种,是她们永远服侍虫巢形象的完美具现化。</description>
|
||||
<description>阿拉克涅督虫们所着织物中的一种,设计上修身轻便,可以使其在阿拉克捏菌毯上获得额外的速度,是她们永远服侍虫巢的形象的完美具现化。</description>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ARA_Cocoon_Cloth</ThingDef>
|
||||
</descriptionHyperlinks>
|
||||
<recipeMaker Inherit="False">
|
||||
<researchPrerequisite>ARA_Technology_4DIL</researchPrerequisite>
|
||||
</recipeMaker>
|
||||
@@ -179,12 +188,11 @@
|
||||
<wornGraphicPath>ArachnaeSwarm/Apparel/ARA_Maid_Uniform</wornGraphicPath>
|
||||
</apparel>
|
||||
<equippedStatOffsets>
|
||||
<MoveSpeed>0.25</MoveSpeed>
|
||||
</equippedStatOffsets>
|
||||
<costStuffCount>0</costStuffCount>
|
||||
<comps>
|
||||
<li Class="CompProperties_CauseHediff_Apparel">
|
||||
<hediff>ARA_TerrainBasedHediff</hediff>
|
||||
<hediff>ARA_TerrainMoveSpeedHediff</hediff>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
@@ -5,6 +5,9 @@
|
||||
<defName>ARA_MW_Bone_Sword</defName>
|
||||
<label>武装器官"骨刃"</label>
|
||||
<description>阿拉克涅虫群督虫使用基础近战武装器官,通过多根外露神经束与督虫的辅肢相连。尽管它只是一块坚硬的剑形骨片,但是丝毫不影响那些拥有无穷蛮力的阿拉克涅虫群督虫使用它将侵犯虫巢之敌一一斩首。</description>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ARA_Cocoon_Weapon</ThingDef>
|
||||
</descriptionHyperlinks>
|
||||
<weaponTags>
|
||||
<li>ARA_Armed_Organ</li>
|
||||
<li>ARA_Armed_Organ_Melee</li>
|
||||
@@ -72,6 +75,9 @@
|
||||
<description>阿拉克涅虫群督虫使用基础远程武装器官,外表就像一只拳套,可以通过神经束缠绕接在阿拉克涅督虫的辅肢上。这种武器小巧轻盈,虽然射程很短,但是面对敌人时能喷出一整排的带毒尖刺,把对手扎个透心凉。</description>
|
||||
<tickerType>Normal</tickerType>
|
||||
<techLevel>Animal</techLevel>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ARA_Cocoon_Weapon</ThingDef>
|
||||
</descriptionHyperlinks>
|
||||
<graphicData>
|
||||
<texPath>ArachnaeSwarm/Weapon/ARA_RW_Basic_Fist_Needle_Gun</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
@@ -139,7 +145,7 @@
|
||||
</li>
|
||||
</tools>
|
||||
<comps>
|
||||
<li Class="WulaFallenEmpire.CompProperties_CustomUniqueWeapon" MayRequire="Ludeon.RimWorld.Odyssey">
|
||||
<li Class="ArachnaeSwarm.CompProperties_CustomUniqueWeapon" MayRequire="Ludeon.RimWorld.Odyssey">
|
||||
<forcedTraits>
|
||||
<li>ARA_Weapon_Damage_Toxid</li>
|
||||
</forcedTraits>
|
||||
@@ -170,6 +176,9 @@
|
||||
<description>阿拉克涅虫群督虫所使用的武装器官,拥有四排刺针管道,可以在联结神经束的指挥下交替发射大量的毒针,虽然准度较差但是威力不逊色于人类所使用的机枪。</description>
|
||||
<tickerType>Normal</tickerType>
|
||||
<techLevel>Animal</techLevel>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ARA_Cocoon_Weapon_1Stage</ThingDef>
|
||||
</descriptionHyperlinks>
|
||||
<graphicData>
|
||||
<texPath>ArachnaeSwarm/Weapon/ARA_RW_Basic_Fist_Needle_Gun</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
@@ -179,7 +188,7 @@
|
||||
<soundInteract>SpitterSpawn</soundInteract>
|
||||
<recipeMaker>
|
||||
<recipeUsers Inherit="False" />
|
||||
<researchPrerequisite>ARA_Technology_5PAV</researchPrerequisite>
|
||||
<researchPrerequisite>ARA_Technology_6PAV</researchPrerequisite>
|
||||
<unfinishedThingDef>UnfinishedWeapon</unfinishedThingDef>
|
||||
</recipeMaker>
|
||||
<statBases>
|
||||
@@ -220,7 +229,7 @@
|
||||
<li>RewardStandardQualitySuper</li>
|
||||
</thingSetMakerTags>
|
||||
<comps>
|
||||
<li Class="WulaFallenEmpire.CompProperties_CustomUniqueWeapon" MayRequire="Ludeon.RimWorld.Odyssey">
|
||||
<li Class="ArachnaeSwarm.CompProperties_CustomUniqueWeapon" MayRequire="Ludeon.RimWorld.Odyssey">
|
||||
<forcedTraits>
|
||||
<li>ARA_Weapon_Damage_Toxid</li>
|
||||
</forcedTraits>
|
||||
@@ -239,6 +248,9 @@
|
||||
<description>阿拉克涅虫群督虫使用基础远程武装器官,可以通过肌肉的瞬间加压喷出一团包含阿拉克涅酸液的液体团。这种酸液团的飞行速度很慢,但是能在目标地点炸开,并灼烧所有粘上酸液的敌人。</description>
|
||||
<tickerType>Normal</tickerType>
|
||||
<techLevel>Animal</techLevel>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ARA_Cocoon_Weapon</ThingDef>
|
||||
</descriptionHyperlinks>
|
||||
<graphicData>
|
||||
<texPath>ArachnaeSwarm/Weapon/ARA_RW_Basic_Acid_Bladder_Gun</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
@@ -291,7 +303,7 @@
|
||||
<li>RewardStandardQualitySuper</li>
|
||||
</thingSetMakerTags>
|
||||
<comps>
|
||||
<li Class="WulaFallenEmpire.CompProperties_CustomUniqueWeapon" MayRequire="Ludeon.RimWorld.Odyssey">
|
||||
<li Class="ArachnaeSwarm.CompProperties_CustomUniqueWeapon" MayRequire="Ludeon.RimWorld.Odyssey">
|
||||
<forcedTraits>
|
||||
<li>ARA_Weapon_Damage_Acid</li>
|
||||
</forcedTraits>
|
||||
@@ -345,6 +357,9 @@
|
||||
<description>阿拉克涅虫群督虫使用大型远程武装器官,膛内布满了强健的肌肉组织,可以在一瞬间的收缩后将一团酸液发射到空中,以在安全距离下对敌人的集群进行轰炸。</description>
|
||||
<tickerType>Normal</tickerType>
|
||||
<techLevel>Animal</techLevel>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ARA_Cocoon_Weapon_1Stage</ThingDef>
|
||||
</descriptionHyperlinks>
|
||||
<graphicData>
|
||||
<texPath>ArachnaeSwarm/Weapon/ARA_RW_Basic_Acid_Bladder_Gun</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
@@ -353,7 +368,7 @@
|
||||
<soundInteract>SpitterSpawn</soundInteract>
|
||||
<recipeMaker>
|
||||
<recipeUsers Inherit="False" />
|
||||
<researchPrerequisite>ARA_Technology_7VXI</researchPrerequisite>
|
||||
<researchPrerequisite>ARA_Technology_8VXI</researchPrerequisite>
|
||||
<unfinishedThingDef>UnfinishedWeapon</unfinishedThingDef>
|
||||
</recipeMaker>
|
||||
<statBases>
|
||||
@@ -397,7 +412,7 @@
|
||||
<li>RewardStandardQualitySuper</li>
|
||||
</thingSetMakerTags>
|
||||
<comps>
|
||||
<li Class="WulaFallenEmpire.CompProperties_CustomUniqueWeapon" MayRequire="Ludeon.RimWorld.Odyssey">
|
||||
<li Class="ArachnaeSwarm.CompProperties_CustomUniqueWeapon" MayRequire="Ludeon.RimWorld.Odyssey">
|
||||
<forcedTraits>
|
||||
<li>ARA_Huge_Weapon</li>
|
||||
<li>ARA_Weapon_Damage_Acid</li>
|
||||
@@ -454,6 +469,9 @@
|
||||
<description>阿拉科涅虫群的生物武器</description>
|
||||
<tickerType>Normal</tickerType>
|
||||
<techLevel>Animal</techLevel>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ARA_Cocoon_Weapon_1Stage</ThingDef>
|
||||
</descriptionHyperlinks>
|
||||
<graphicData>
|
||||
<texPath>ArachnaeSwarm/Weapon/ARA_RW_Basic_Acid_Bladder_Gun</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
@@ -505,7 +523,7 @@
|
||||
<li>RewardStandardQualitySuper</li>
|
||||
</thingSetMakerTags>
|
||||
<comps>
|
||||
<li Class="WulaFallenEmpire.CompProperties_CustomUniqueWeapon" MayRequire="Ludeon.RimWorld.Odyssey">
|
||||
<li Class="ArachnaeSwarm.CompProperties_CustomUniqueWeapon" MayRequire="Ludeon.RimWorld.Odyssey">
|
||||
<forcedTraits>
|
||||
<li>ARA_Weapon_Damage_Spawn</li>
|
||||
</forcedTraits>
|
||||
@@ -628,4 +646,83 @@
|
||||
<li>RewardStandardQualitySuper</li>
|
||||
</thingSetMakerTags>
|
||||
</ThingDef>
|
||||
|
||||
<!-- 炮塔 -->
|
||||
<ThingDef ParentName="BaseWeaponTurret">
|
||||
<defName>ARA_Psi_Conductor_Turret</defName>
|
||||
<label>灵能导线</label>
|
||||
<description>阿拉克涅织域种正在通过这个殖民者对敌方发起攻击——这种攻击的发动无关殖民者的状态,无论它目前在干什么,攻击都会照常进行。</description>
|
||||
<graphicData>
|
||||
<texPath>ArachnaeSwarm/Weapon/ARA_Weapon_Empty</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
</graphicData>
|
||||
<descriptionHyperlinks>
|
||||
<HediffDef>ARA_Psi_Conductor</HediffDef>
|
||||
</descriptionHyperlinks>
|
||||
<statBases>
|
||||
<AccuracyTouch>1</AccuracyTouch>
|
||||
<AccuracyShort>1</AccuracyShort>
|
||||
<AccuracyMedium>1</AccuracyMedium>
|
||||
<AccuracyLong>1</AccuracyLong>
|
||||
<Mass>5</Mass>
|
||||
</statBases>
|
||||
<verbs>
|
||||
<li>
|
||||
<verbClass>Verb_Shoot</verbClass>
|
||||
<hasStandardCommand>true</hasStandardCommand>
|
||||
<defaultProjectile>Bullet_ARA_Psi_Conductor_Turret</defaultProjectile>
|
||||
<range>6</range>
|
||||
<burstShotCount>1</burstShotCount>
|
||||
<soundCast>AgonyPulse_Cast</soundCast>
|
||||
<soundCastTail>GunTail_Medium</soundCastTail>
|
||||
<muzzleFlashScale>9</muzzleFlashScale>
|
||||
<defaultCooldownTime>4</defaultCooldownTime>
|
||||
</li>
|
||||
</verbs>
|
||||
</ThingDef>
|
||||
<ThingDef ParentName="BaseBullet">
|
||||
<defName>Bullet_ARA_Psi_Conductor_Turret</defName>
|
||||
<label>灵能闪电</label>
|
||||
<thingClass>Beam</thingClass>
|
||||
<graphicData>
|
||||
<texPath>Things/Projectile/Bullet_Small</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
</graphicData>
|
||||
<projectile>
|
||||
<damageDef>ARA_Psi_Damage</damageDef>
|
||||
<damageAmountBase>4</damageAmountBase>
|
||||
<beamMoteDef>ARA_Psi_Conductor_Turret_ArcBeam</beamMoteDef>
|
||||
<beamStartOffset>0.5</beamStartOffset>
|
||||
<armorPenetrationBase>1</armorPenetrationBase>
|
||||
</projectile>
|
||||
</ThingDef>
|
||||
<ThingDef ParentName="MoteBase">
|
||||
<defName>ARA_Psi_Conductor_Turret_ArcBeam</defName>
|
||||
<thingClass>MoteDualAttached</thingClass>
|
||||
<altitudeLayer>MoteOverhead</altitudeLayer>
|
||||
<mote>
|
||||
<fadeInTime>0</fadeInTime>
|
||||
<fadeOutTime>1</fadeOutTime>
|
||||
<solidTime>0.4</solidTime>
|
||||
<needsMaintenance>False</needsMaintenance>
|
||||
<rotateTowardsTarget>True</rotateTowardsTarget>
|
||||
<scaleToConnectTargets>True</scaleToConnectTargets>
|
||||
<fadeOutUnmaintained>False</fadeOutUnmaintained>
|
||||
</mote>
|
||||
<drawOffscreen>true</drawOffscreen>
|
||||
<graphicData>
|
||||
<texPath>ArachnaeSwarm/Mote/ARA_Lighting_Beam</texPath>
|
||||
<color>(140, 49, 138, 255)</color>
|
||||
<graphicClass>Graphic_MoteWithAgeSecs</graphicClass>
|
||||
<shaderType>MoteGlow</shaderType>
|
||||
<drawSize>(1.5,1)</drawSize>
|
||||
<shaderParameters>
|
||||
<_ExtraTexA>/Things/Mote/BeamSecondaryNoise_A</_ExtraTexA>
|
||||
<_ExtraTexB>/Things/Mote/BeamSecondaryNoise_B</_ExtraTexB>
|
||||
<_ScrollSpeedA>-4 </_ScrollSpeedA>
|
||||
<_ScrollSpeedB>3</_ScrollSpeedB>
|
||||
<_Intensity>2</_Intensity>
|
||||
</shaderParameters>
|
||||
</graphicData>
|
||||
</ThingDef>
|
||||
</Defs>
|
||||
195
1.6/1.6/Defs/Thing_Misc/Weapons/ARA_Weapon_new.xml
Normal file
@@ -0,0 +1,195 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
<!-- spawn -->
|
||||
<ThingDef ParentName="BaseHumanMakeableGun">
|
||||
<defName>ARA_RW_Basic_SniperCannon_Gun</defName>
|
||||
<label>武装器官"链式棘刺"</label>
|
||||
<description>阿拉克涅虫群的生物武器</description>
|
||||
<tickerType>Normal</tickerType>
|
||||
<techLevel>Animal</techLevel>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ARA_Cocoon_Weapon_1Stage</ThingDef>
|
||||
</descriptionHyperlinks>
|
||||
<graphicData>
|
||||
<texPath>ArachnaeSwarm/Weapon/ARA_RW_Basic_SniperCannon_Gun</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
<drawSize>1.2</drawSize>
|
||||
</graphicData>
|
||||
<soundInteract>SpitterSpawn</soundInteract>
|
||||
<recipeMaker>
|
||||
<recipeUsers Inherit="False" />
|
||||
<researchPrerequisite>ARA_Technology_6SPV</researchPrerequisite>
|
||||
<unfinishedThingDef>UnfinishedWeapon</unfinishedThingDef>
|
||||
</recipeMaker>
|
||||
<statBases>
|
||||
<WorkToMake>1300</WorkToMake>
|
||||
<!-- <MarketValue>370</MarketValue> -->
|
||||
<Mass>3.5</Mass>
|
||||
<AccuracyTouch>0.22</AccuracyTouch>
|
||||
<AccuracyShort>0.33</AccuracyShort>
|
||||
<AccuracyMedium>0.44</AccuracyMedium>
|
||||
<AccuracyLong>0.95</AccuracyLong>
|
||||
<RangedWeapon_Cooldown>2.2</RangedWeapon_Cooldown>
|
||||
</statBases>
|
||||
<verbs>
|
||||
<li>
|
||||
<verbClass>Verb_Shoot</verbClass>
|
||||
<hasStandardCommand>true</hasStandardCommand>
|
||||
<defaultProjectile>ARA_Bullet_SniperCannon</defaultProjectile>
|
||||
<warmupTime>2.5</warmupTime>
|
||||
<minRange>5.9</minRange>
|
||||
<range>45.9</range>
|
||||
<burstShotCount>1</burstShotCount>
|
||||
<soundCast>Shot_TurretSniper</soundCast>
|
||||
<soundCastTail>GunTail_Heavy</soundCastTail>
|
||||
<muzzleFlashScale>18</muzzleFlashScale>
|
||||
</li>
|
||||
</verbs>
|
||||
<costList Inherit="False">
|
||||
<ARA_Carapace>50</ARA_Carapace>
|
||||
</costList>
|
||||
<weaponTags>
|
||||
<li>ARA_Armed_Organ</li>
|
||||
<li>ARA_Armed_Organ_Ranged</li>
|
||||
<li>ARA_Armed_Organ_T1</li>
|
||||
</weaponTags>
|
||||
<thingSetMakerTags>
|
||||
<li>RewardStandardQualitySuper</li>
|
||||
</thingSetMakerTags>
|
||||
<comps>
|
||||
<li Class="ArachnaeSwarm.CompProperties_GiveHediffOnShot">
|
||||
<hediffDef>ARA_ChainReload</hediffDef>
|
||||
<severityToAdd>0.5</severityToAdd>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_CustomUniqueWeapon" MayRequire="Ludeon.RimWorld.Odyssey">
|
||||
<forcedTraits>
|
||||
<li>ARA_Weapon_ChainReload</li>
|
||||
</forcedTraits>
|
||||
<numTraitsRange>
|
||||
<min>1</min>
|
||||
<max>1</max>
|
||||
</numTraitsRange>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
<ThingDef ParentName="BaseBullet">
|
||||
<defName>ARA_Bullet_SniperCannon</defName>
|
||||
<label>虫族棘刺</label>
|
||||
<graphicData>
|
||||
<texPath>Things/Projectile/Projectile_Fingerspike</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
<drawSize>1.4</drawSize>
|
||||
</graphicData>
|
||||
<projectile>
|
||||
<damageDef>Bullet</damageDef>
|
||||
<damageAmountBase>55</damageAmountBase>
|
||||
<speed>120</speed>
|
||||
</projectile>
|
||||
</ThingDef>
|
||||
|
||||
<!-- 酸 -->
|
||||
<ThingDef ParentName="BaseHumanMakeableGun">
|
||||
<defName>ARA_RW_Basic_Acid_Spreay_Gun</defName>
|
||||
<label>武装器官"酸液枪喷吐版"</label>
|
||||
<description>阿拉克涅虫群督虫使用基础远程武装器官,可以通过肌肉的瞬间加压喷出一团包含阿拉克涅酸液的液体团。这种酸液团的飞行速度很慢,但是能在目标地点炸开,并灼烧所有粘上酸液的敌人。</description>
|
||||
<tickerType>Normal</tickerType>
|
||||
<techLevel>Animal</techLevel>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ARA_Cocoon_Weapon</ThingDef>
|
||||
</descriptionHyperlinks>
|
||||
<graphicData>
|
||||
<texPath>ArachnaeSwarm/Weapon/ARA_RW_Basic_Acid_Bladder_Gun</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
<drawSize>1.2</drawSize>
|
||||
</graphicData>
|
||||
<soundInteract>SpitterSpawn</soundInteract>
|
||||
<recipeMaker>
|
||||
<recipeUsers Inherit="False" />
|
||||
<researchPrerequisite>ARA_Technology_7VXI</researchPrerequisite>
|
||||
<unfinishedThingDef>UnfinishedWeapon</unfinishedThingDef>
|
||||
</recipeMaker>
|
||||
<statBases>
|
||||
<WorkToMake>1300</WorkToMake>
|
||||
<!-- <MarketValue>370</MarketValue> -->
|
||||
<Mass>3.5</Mass>
|
||||
<AccuracyTouch>0.5</AccuracyTouch>
|
||||
<AccuracyShort>0.6</AccuracyShort>
|
||||
<AccuracyMedium>0.45</AccuracyMedium>
|
||||
<AccuracyLong>0.3</AccuracyLong>
|
||||
<RangedWeapon_Cooldown>2.5</RangedWeapon_Cooldown>
|
||||
</statBases>
|
||||
<verbs>
|
||||
<li Class="ArachnaeSwarm.VerbProperties_ShootSprayMulti">
|
||||
<verbClass>ArachnaeSwarm.Verb_ShootSprayMulti</verbClass>
|
||||
<hasStandardCommand>true</hasStandardCommand>
|
||||
<forceNormalTimeSpeed>false</forceNormalTimeSpeed>
|
||||
<warmupTime>1.0</warmupTime>
|
||||
<defaultProjectile>ARA_Proj_StrongSludgeSpray_Eco</defaultProjectile>
|
||||
<isMortar>false</isMortar>
|
||||
<requireLineOfSight>false</requireLineOfSight>
|
||||
<minRange>3</minRange>
|
||||
<range>28</range>
|
||||
<burstShotCount>3</burstShotCount>
|
||||
<ticksBetweenBurstShots>12</ticksBetweenBurstShots>
|
||||
<soundCast>SpitterSpit</soundCast>
|
||||
<targetParams>
|
||||
<canTargetLocations>true</canTargetLocations>
|
||||
</targetParams>
|
||||
<numCellsToHit>5</numCellsToHit>
|
||||
</li>
|
||||
</verbs>
|
||||
<costList Inherit="False">
|
||||
<ARA_Carapace>50</ARA_Carapace>
|
||||
</costList>
|
||||
<weaponTags>
|
||||
<li>ARA_Armed_Organ</li>
|
||||
<li>ARA_Armed_Organ_Ranged</li>
|
||||
<li>ARA_Armed_Organ_T1</li>
|
||||
</weaponTags>
|
||||
<thingSetMakerTags>
|
||||
<li>RewardStandardQualitySuper</li>
|
||||
</thingSetMakerTags>
|
||||
<comps>
|
||||
<li Class="ArachnaeSwarm.CompProperties_CustomUniqueWeapon" MayRequire="Ludeon.RimWorld.Odyssey">
|
||||
<forcedTraits>
|
||||
<li>ARA_Weapon_Damage_Acid</li>
|
||||
</forcedTraits>
|
||||
<numTraitsRange>
|
||||
<min>1</min>
|
||||
<max>1</max>
|
||||
</numTraitsRange>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
<ThingDef>
|
||||
<defName>ARA_Proj_StrongSludgeSpray_Eco</defName>
|
||||
<label>阿拉克涅虫族酸液</label>
|
||||
<thingClass>Projectile_Liquid</thingClass>
|
||||
<category>Projectile</category>
|
||||
<tickerType>Normal</tickerType>
|
||||
<altitudeLayer>Projectile</altitudeLayer>
|
||||
<useHitPoints>False</useHitPoints>
|
||||
<neverMultiSelect>True</neverMultiSelect>
|
||||
<graphicData>
|
||||
<texPath>Things/Projectile/SludgeSpray</texPath>
|
||||
<graphicClass>Graphic_Random</graphicClass>
|
||||
<shaderType>MoteGlow</shaderType>
|
||||
<drawSize>0.85</drawSize>
|
||||
</graphicData>
|
||||
<projectile>
|
||||
<damageDef>ARA_AcidBurn</damageDef>
|
||||
<speed>25</speed>
|
||||
<damageAmountBase>2</damageAmountBase>
|
||||
<arcHeightFactor>0.4</arcHeightFactor>
|
||||
<armorPenetrationBase>0.1</armorPenetrationBase>
|
||||
<stoppingPower>1</stoppingPower>
|
||||
<shadowSize>0</shadowSize>
|
||||
<terrainChance>0.75</terrainChance>
|
||||
<filth>Filth_SpentAcid</filth>
|
||||
<filthCount>1</filthCount>
|
||||
<filthChance>0.25</filthChance>
|
||||
</projectile>
|
||||
</ThingDef>
|
||||
</Defs>
|
||||
@@ -447,4 +447,149 @@
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
<ThingDef ParentName="BuildingBase">
|
||||
<defName>ARA_MorphableResearchBench</defName>
|
||||
<hasInteractionCell>true</hasInteractionCell>
|
||||
<interactionCellOffset>(0,0,-1)</interactionCellOffset>
|
||||
<label>阿拉克涅织域织座</label>
|
||||
<description>一个供阿拉克涅虫族进行研究的活体结构,可以让虫群尽情地探索变异和进化方向。其研究能力完全取决于内部的阿拉克涅织域种。</description>
|
||||
<thingClass>ArachnaeSwarm.Building_Morphable</thingClass>
|
||||
<tickerType>Normal</tickerType>
|
||||
<size>(3,3)</size>
|
||||
<graphicData>
|
||||
<texPath>ArachnaeSwarm/Building/ARA_ResearchBench</texPath>
|
||||
<graphicClass>Graphic_Multi</graphicClass>
|
||||
<shaderType>CutoutComplex</shaderType>
|
||||
<drawSize>(3,4.5)</drawSize>
|
||||
</graphicData>
|
||||
<altitudeLayer>Building</altitudeLayer>
|
||||
<passability>Impassable</passability>
|
||||
<castEdgeShadows>false</castEdgeShadows>
|
||||
<fillPercent>0.8</fillPercent>
|
||||
<staticSunShadowHeight>0</staticSunShadowHeight>
|
||||
<terrainAffordanceNeeded>ARA_Creep</terrainAffordanceNeeded>
|
||||
<statBases>
|
||||
<MaxHitPoints>1000</MaxHitPoints>
|
||||
<WorkToBuild>2800</WorkToBuild>
|
||||
<Flammability>1.0</Flammability>
|
||||
<ResearchSpeedFactor>1.0</ResearchSpeedFactor>
|
||||
</statBases>
|
||||
<uiOrder>2600</uiOrder>
|
||||
<surfaceType>Item</surfaceType>
|
||||
<building>
|
||||
<workTableRoomRole>Laboratory</workTableRoomRole>
|
||||
<workTableNotInRoomRoleFactor>0.8</workTableNotInRoomRoleFactor>
|
||||
<deconstructible>false</deconstructible>
|
||||
</building>
|
||||
<!-- 不可建造,只能通过变形生成 -->
|
||||
<comps Inherit="False">
|
||||
<li Class="CompProperties_ReportWorkSpeed">
|
||||
<workSpeedStat>ResearchSpeedFactor</workSpeedStat>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_Morphable">
|
||||
<!-- 休息速度增益,例如1.0代表200%的速度 -->
|
||||
<restGainMultiplier>1.0</restGainMultiplier>
|
||||
|
||||
<!-- 操作按钮的自定义标签 -->
|
||||
<gizmoLabel>离开织座</gizmoLabel>
|
||||
|
||||
<!-- 操作按钮的自定义描述 -->
|
||||
<gizmoDesc>使织域种离开织座。</gizmoDesc>
|
||||
|
||||
<!--
|
||||
操作按钮的自定义图标路径。
|
||||
路径相对于"Textures"文件夹。
|
||||
例如,如果你的图标在 "YourMod/Textures/UI/Icons/Revert.png",路径就是 "UI/Icons/Revert"。
|
||||
游戏会自动处理.png扩展名。
|
||||
-->
|
||||
<gizmoIconPath>UI/Commands/EggSpew</gizmoIconPath>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
|
||||
<fuelFilter>
|
||||
<thingDefs>
|
||||
<li>ARA_InsectJelly</li>
|
||||
</thingDefs>
|
||||
</fuelFilter>
|
||||
<fuelCapacity>2.0</fuelCapacity>
|
||||
<targetFuelLevelConfigurable>false</targetFuelLevelConfigurable>
|
||||
<fuelGizmoLabel>虫蜜</fuelGizmoLabel>
|
||||
<outOfFuelMessage>没有营养</outOfFuelMessage>
|
||||
</li>
|
||||
<li Class="CompProperties_AffectedByFacilities">
|
||||
<linkableFacilities>
|
||||
<li>ARA_NutrientNetworkTower</li>
|
||||
</linkableFacilities>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
<ThingDef ParentName="BuildingBase">
|
||||
<defName>ARA_SmartThermostat</defName>
|
||||
<label>阿拉克涅纤管虫</label>
|
||||
<description>一只只有基础反射反应的阿拉克涅辅虫,它会尝试将通过气体交换,维持尾部所向的房间的温度。必须像制冷器一样安装在墙上。</description>
|
||||
<thingClass>ArachnaeSwarm.Building_SmartThermostat</thingClass>
|
||||
<uiIconPath>ArachnaeSwarm/Building/ARA_SmartThermostat_south</uiIconPath>
|
||||
<graphicData>
|
||||
<texPath>ArachnaeSwarm/Building/ARA_SmartThermostat</texPath>
|
||||
<graphicClass>Graphic_Multi</graphicClass>
|
||||
<drawSize>(1.75,1.75)</drawSize>
|
||||
<shadowData>
|
||||
<volume>(0.6, 0.4, 0.3)</volume>
|
||||
<offset>(0,0,-0.1)</offset>
|
||||
</shadowData>
|
||||
</graphicData>
|
||||
<uiIconScale>0.6</uiIconScale>
|
||||
<altitudeLayer>BuildingOnTop</altitudeLayer>
|
||||
<passability>Impassable</passability>
|
||||
<blockWind>true</blockWind>
|
||||
<fillPercent>1</fillPercent>
|
||||
<coversFloor>true</coversFloor>
|
||||
<blockLight>true</blockLight>
|
||||
<blockWeather>true</blockWeather>
|
||||
<castEdgeShadows>true</castEdgeShadows>
|
||||
<canOverlapZones>false</canOverlapZones>
|
||||
<staticSunShadowHeight>0</staticSunShadowHeight>
|
||||
<terrainAffordanceNeeded>ARA_Creep</terrainAffordanceNeeded>
|
||||
<statBases>
|
||||
<WorkToBuild>400</WorkToBuild>
|
||||
<MaxHitPoints>100</MaxHitPoints>
|
||||
<Flammability>1.0</Flammability>
|
||||
</statBases>
|
||||
<tickerType>Rare</tickerType>
|
||||
<costList>
|
||||
<ARA_Carapace>30</ARA_Carapace>
|
||||
</costList>
|
||||
<placeWorkers>
|
||||
<li>PlaceWorker_Vent</li>
|
||||
</placeWorkers>
|
||||
<drawPlaceWorkersWhileSelected>true</drawPlaceWorkersWhileSelected>
|
||||
<building>
|
||||
<canPlaceOverWall>true</canPlaceOverWall>
|
||||
<canExchangeVacuum>true</canExchangeVacuum>
|
||||
<isAirtight>true</isAirtight>
|
||||
</building>
|
||||
<researchPrerequisites>
|
||||
<li>ARA_Technology_6SHL</li>
|
||||
</researchPrerequisites>
|
||||
<designationCategory>ARA_Buildings</designationCategory>
|
||||
<comps>
|
||||
<!-- 提供开关按钮 -->
|
||||
<li Class="CompProperties_Flickable">
|
||||
<commandTexture>UI/Commands/Vent</commandTexture>
|
||||
<commandLabelKey>CommandDesignateOpenCloseVentLabel</commandLabelKey>
|
||||
<commandDescKey>CommandDesignateOpenCloseVentDesc</commandDescKey>
|
||||
</li>
|
||||
<!-- 提供温度控制UI和逻辑 -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_TempControl_Fixed">
|
||||
<!-- 这是设备的热交换功率。数值越大,制冷/制热速度越快。-->
|
||||
<energyPerSecond>2</energyPerSecond>
|
||||
</li>
|
||||
<li Class="CompProperties_Breakdownable"/>
|
||||
<li Class="ArachnaeSwarm.CompProperties_DelayedTerrainSpawn">
|
||||
<terrainToSpawn>ARA_InsectCreep</terrainToSpawn>
|
||||
<spawnRadius>3</spawnRadius>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
</Defs>
|
||||
@@ -66,8 +66,8 @@
|
||||
</descriptionHyperlinks>
|
||||
<researchPrerequisites>
|
||||
<li>ARA_Base_Technology</li>
|
||||
<li>ARA_Technology_1KYC</li>
|
||||
</researchPrerequisites>
|
||||
|
||||
<comps>
|
||||
<li Class="CompProperties_Glower">
|
||||
<glowRadius>6</glowRadius>
|
||||
@@ -219,6 +219,10 @@
|
||||
<graphicData>
|
||||
<drawSize>(1.2,1.2)</drawSize>
|
||||
</graphicData>
|
||||
<researchPrerequisites>
|
||||
<li>ARA_Technology_2KYC</li>
|
||||
<li>ARA_Technology_4KYC</li>
|
||||
</researchPrerequisites>
|
||||
|
||||
<comps>
|
||||
<li Class="CompProperties_Glower">
|
||||
@@ -276,6 +280,135 @@
|
||||
<defName>ARA_InteractiveEggSac_Huge_1Stage</defName>
|
||||
<label>大型阿拉克涅虫卵囊</label>
|
||||
<description>一个脆弱、易燃、黏滑的囊状物,是阿拉克涅女皇种所诞之卵,内含哺育一只大型督虫所需的营养和遗传物质,可以通过阿拉克涅女皇种的交互完成激活进程——参阅虫卵的超链接,了解各个督虫的特点。\n\n卵囊对温度极度敏感(该类型的卵适温为-10~22°C),需要小心保护!</description>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ArachnaeNode_Race_Myrmecocystus</ThingDef>
|
||||
<ThingDef>ArachnaeNode_Race_Smokepop</ThingDef>
|
||||
<ThingDef>ArachnaeNode_Race_NeuroSwarm</ThingDef>
|
||||
</descriptionHyperlinks>
|
||||
<graphicData>
|
||||
<color>(0.9, 0.9 ,0.5)</color>
|
||||
<drawSize>(1.4,1.4)</drawSize>
|
||||
</graphicData>
|
||||
<researchPrerequisites>
|
||||
<li>ARA_Technology_5KYC</li>
|
||||
<li>ARA_Technology_6KYC</li>
|
||||
</researchPrerequisites>
|
||||
|
||||
<comps>
|
||||
<li Class="CompProperties_Glower">
|
||||
<glowRadius>6</glowRadius>
|
||||
<glowColor>(230, 230, 128, 0)</glowColor>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_SpawnPawnFromList">
|
||||
<spawnablePawns>
|
||||
<li>
|
||||
<pawnKind>ArachnaeNode_Race_Myrmecocystus</pawnKind>
|
||||
<delayTicks>180000</delayTicks>
|
||||
</li>
|
||||
<li>
|
||||
<pawnKind>ArachnaeNode_Race_Smokepop</pawnKind>
|
||||
<delayTicks>360000</delayTicks>
|
||||
<requiredResearch>ARA_Technology_5KYC</requiredResearch>
|
||||
</li>
|
||||
<li>
|
||||
<pawnKind>ArachnaeNode_Race_NeuroSwarm</pawnKind>
|
||||
<delayTicks>1440000</delayTicks>
|
||||
<requiredResearch>ARA_Technology_6KYC</requiredResearch>
|
||||
</li>
|
||||
</spawnablePawns>
|
||||
<whitelist>
|
||||
<li>ARA_ArachnaeQueen</li>
|
||||
</whitelist>
|
||||
<destroyOnSpawn>true</destroyOnSpawn>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_TemperatureRuinableDamage">
|
||||
<minSafeTemperature>-10</minSafeTemperature>
|
||||
<maxSafeTemperature>22</maxSafeTemperature>
|
||||
<progressPerDegreePerTick>0.00005</progressPerDegreePerTick>
|
||||
<damagePerTick>0.005</damagePerTick>
|
||||
<recoveryRate>0.001</recoveryRate>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
<!-- T2 -->
|
||||
<ThingDef ParentName="ARA_EggSpew_Base_Proj">
|
||||
<defName>ARA_Proj_EggSac_2Stage</defName>
|
||||
<label>阿拉克涅虫卵</label>
|
||||
<projectile>
|
||||
<spawnsThingDef>ARA_InteractiveEggSac_2Stage</spawnsThingDef>
|
||||
</projectile>
|
||||
</ThingDef>
|
||||
<ThingDef ParentName="ARA_InteractiveEggSac_Base">
|
||||
<defName>ARA_InteractiveEggSac_2Stage</defName>
|
||||
<label>阿拉克涅虫卵囊</label>
|
||||
<description>一个脆弱、易燃、黏滑的囊状物,是阿拉克涅女皇种所诞之卵,内含哺育一只新督虫所需的营养和遗传物质,可以通过阿拉克涅女皇种的交互完成激活进程——参阅虫卵的超链接,了解各个督虫的特点。\n\n卵囊对温度极度敏感(该类型的卵适温为0~18°C),需要小心保护!</description>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ArachnaeNode_Race_ShieldHead</ThingDef>
|
||||
<ThingDef>ArachnaeNode_Race_WeaponSmith</ThingDef>
|
||||
<ThingDef>ArachnaeNode_Race_Fighter</ThingDef>
|
||||
<ThingDef>ArachnaeNode_Race_Skyraider</ThingDef>
|
||||
<ThingDef>ArachnaeNode_Race_Facehugger</ThingDef>
|
||||
</descriptionHyperlinks>
|
||||
<graphicData>
|
||||
<drawSize>(1.2,1.2)</drawSize>
|
||||
</graphicData>
|
||||
|
||||
<comps>
|
||||
<li Class="CompProperties_Glower">
|
||||
<glowRadius>6</glowRadius>
|
||||
<glowColor>(113,141,117,0)</glowColor>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_SpawnPawnFromList">
|
||||
<spawnablePawns>
|
||||
<li>
|
||||
<pawnKind>ArachnaeNode_Race_ShieldHead</pawnKind>
|
||||
<delayTicks>120000</delayTicks>
|
||||
</li>
|
||||
<li>
|
||||
<pawnKind>ArachnaeNode_Race_WeaponSmith</pawnKind>
|
||||
<delayTicks>180000</delayTicks>
|
||||
</li>
|
||||
<li>
|
||||
<pawnKind>ArachnaeNode_Race_Fighter</pawnKind>
|
||||
<delayTicks>120000</delayTicks>
|
||||
<requiredResearch>ARA_Technology_1KYC</requiredResearch>
|
||||
</li>
|
||||
<li>
|
||||
<pawnKind>ArachnaeNode_Race_Facehugger</pawnKind>
|
||||
<delayTicks>420000</delayTicks>
|
||||
<requiredResearch>ARA_Technology_4KYC</requiredResearch>
|
||||
</li>
|
||||
<li>
|
||||
<pawnKind>ArachnaeNode_Race_Skyraider</pawnKind>
|
||||
<delayTicks>360000</delayTicks>
|
||||
<requiredResearch>ARA_Technology_2KYC</requiredResearch>
|
||||
</li>
|
||||
</spawnablePawns>
|
||||
<whitelist>
|
||||
<li>ARA_ArachnaeQueen</li>
|
||||
</whitelist>
|
||||
<destroyOnSpawn>true</destroyOnSpawn>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_TemperatureRuinableDamage">
|
||||
<minSafeTemperature>0</minSafeTemperature>
|
||||
<maxSafeTemperature>18</maxSafeTemperature>
|
||||
<progressPerDegreePerTick>0.00005</progressPerDegreePerTick>
|
||||
<damagePerTick>0.005</damagePerTick>
|
||||
<recoveryRate>0.001</recoveryRate>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
<ThingDef ParentName="ARA_EggSpew_Base_Proj">
|
||||
<defName>ARA_Proj_EggSac_Huge_2Stage</defName>
|
||||
<label>大型阿拉克涅虫卵</label>
|
||||
<projectile>
|
||||
<spawnsThingDef>ARA_InteractiveEggSac_Huge_2Stage</spawnsThingDef>
|
||||
</projectile>
|
||||
</ThingDef>
|
||||
<ThingDef ParentName="ARA_InteractiveEggSac_Base">
|
||||
<defName>ARA_InteractiveEggSac_Huge_2Stage</defName>
|
||||
<label>大型阿拉克涅虫卵囊</label>
|
||||
<description>一个脆弱、易燃、黏滑的囊状物,是阿拉克涅女皇种所诞之卵,内含哺育一只大型督虫所需的营养和遗传物质,可以通过阿拉克涅女皇种的交互完成激活进程——参阅虫卵的超链接,了解各个督虫的特点。\n\n卵囊对温度极度敏感(该类型的卵适温为-10~22°C),需要小心保护!</description>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ArachnaeNode_Race_Myrmecocystus</ThingDef>
|
||||
<ThingDef>ArachnaeNode_Race_Smokepop</ThingDef>
|
||||
@@ -316,4 +449,541 @@
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
|
||||
|
||||
<ThingDef Name="ARA_Cocoon_Base" ParentName="BuildingBase" Abstract="True">
|
||||
<thingClass>Building</thingClass>
|
||||
<graphicData>
|
||||
<texPath>ArachnaeSwarm/Building/ARA_Cocoon</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
<drawSize>(1.1,1.1)</drawSize>
|
||||
<shadowData>
|
||||
<volume>(0.7, 0.4, 0.7)</volume>
|
||||
<offset>(0,0,-0.1)</offset>
|
||||
</shadowData>
|
||||
</graphicData>
|
||||
<size>(1,1)</size>
|
||||
<altitudeLayer>Building</altitudeLayer>
|
||||
<passability>PassThroughOnly</passability>
|
||||
<fillPercent>0.3</fillPercent>
|
||||
<rotatable>false</rotatable>
|
||||
<tickerType>Normal</tickerType>
|
||||
<statBases>
|
||||
<MaxHitPoints>50</MaxHitPoints>
|
||||
<Flammability>1</Flammability>
|
||||
</statBases>
|
||||
<building>
|
||||
<deconstructible>false</deconstructible>
|
||||
<repairable>false</repairable>
|
||||
</building>
|
||||
|
||||
<comps>
|
||||
<li Class="CompProperties_SpawnEffecterOnDestroy">
|
||||
<effect>CocoonDestroyed</effect>
|
||||
</li>
|
||||
<li Class="CompProperties_SpawnerFilth">
|
||||
<filthDef>Filth_Slime</filthDef>
|
||||
<spawnCountOnSpawn>10</spawnCountOnSpawn>
|
||||
<spawnMtbHours>4</spawnMtbHours>
|
||||
<spawnRadius>5</spawnRadius>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_DelayedTerrainSpawn">
|
||||
<terrainToSpawn>ARA_InsectCreep</terrainToSpawn>
|
||||
<spawnRadius>2.5</spawnRadius>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
<!-- T0 -->
|
||||
<ThingDef ParentName="ARA_CocoonSpew_Base_Proj">
|
||||
<defName>ARA_Cocoon_Proj_Cloth</defName>
|
||||
<projectile>
|
||||
<spawnsThingDef>ARA_Cocoon_Cloth</spawnsThingDef>
|
||||
</projectile>
|
||||
</ThingDef>
|
||||
<ThingDef ParentName="ARA_Cocoon_Base">
|
||||
<defName>ARA_Cocoon_Cloth</defName>
|
||||
<label>阿拉克涅孵化茧 织物</label>
|
||||
<description>一个脆弱、易燃、黏滑的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一套基础织物装备的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感(该类型的茧适温为-30~55°C),需要小心保护!</description>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ARA_Bodystocking_White</ThingDef>
|
||||
<ThingDef>ARA_Bodystocking_Black</ThingDef>
|
||||
<ThingDef>ARA_Maid_Uniform</ThingDef>
|
||||
</descriptionHyperlinks>
|
||||
|
||||
<comps>
|
||||
<!-- The new, GrowthVat-style fuel component -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
|
||||
<fuelCapacity>10</fuelCapacity>
|
||||
<fuelLabel>虫蜜</fuelLabel>
|
||||
<fuelFilter>
|
||||
<thingDefs>
|
||||
<li>ARA_InsectJelly</li>
|
||||
</thingDefs>
|
||||
</fuelFilter>
|
||||
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
|
||||
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
|
||||
<initialFuelPercent>1</initialFuelPercent>
|
||||
<autoRefuelPercent>1</autoRefuelPercent>
|
||||
</li>
|
||||
<!-- The refactored producer component -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_InteractiveProducer">
|
||||
<processes>
|
||||
<li>
|
||||
<thingDef>ARA_Bodystocking_White</thingDef>
|
||||
<productionTicks>6000</productionTicks>
|
||||
<totalNutritionNeeded>1</totalNutritionNeeded>
|
||||
</li>
|
||||
<li>
|
||||
<thingDef>ARA_Bodystocking_Black</thingDef>
|
||||
<productionTicks>6000</productionTicks>
|
||||
<totalNutritionNeeded>1</totalNutritionNeeded>
|
||||
</li>
|
||||
<li>
|
||||
<thingDef>ARA_Maid_Uniform</thingDef>
|
||||
<productionTicks>18000</productionTicks>
|
||||
<totalNutritionNeeded>15</totalNutritionNeeded>
|
||||
</li>
|
||||
</processes>
|
||||
|
||||
<whitelist>
|
||||
<li>ArachnaeNode_Race_WeaponSmith</li>
|
||||
</whitelist>
|
||||
<spawnCount>1</spawnCount>
|
||||
<destroyOnSpawn>True</destroyOnSpawn>
|
||||
<minSafeTemperature>-30</minSafeTemperature>
|
||||
<maxSafeTemperature>55</maxSafeTemperature>
|
||||
<penaltyPerDegreePerTick>0.00001</penaltyPerDegreePerTick>
|
||||
<damagePerTickWhenUnfueled>0.2</damagePerTickWhenUnfueled>
|
||||
<minNutritionToStart>1.0</minNutritionToStart>
|
||||
|
||||
<qualityThresholds>
|
||||
<li>
|
||||
<quality>Legendary</quality>
|
||||
<threshold>0.99</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Masterwork</quality>
|
||||
<threshold>0.90</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Excellent</quality>
|
||||
<threshold>0.70</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Good</quality>
|
||||
<threshold>0.50</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Normal</quality>
|
||||
<threshold>0.20</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Poor</quality>
|
||||
<threshold>0.10</threshold>
|
||||
</li>
|
||||
</qualityThresholds>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_TemperatureRuinableDamage">
|
||||
<minSafeTemperature>-30</minSafeTemperature>
|
||||
<maxSafeTemperature>55</maxSafeTemperature>
|
||||
<progressPerDegreePerTick>0.00005</progressPerDegreePerTick>
|
||||
<damagePerTick>0.005</damagePerTick>
|
||||
<recoveryRate>0.001</recoveryRate>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
<ThingDef ParentName="ARA_CocoonSpew_Base_Proj">
|
||||
<defName>ARA_Cocoon_Proj_Weapon</defName>
|
||||
<projectile>
|
||||
<spawnsThingDef>ARA_Cocoon_Weapon</spawnsThingDef>
|
||||
</projectile>
|
||||
</ThingDef>
|
||||
<ThingDef ParentName="ARA_Cocoon_Base">
|
||||
<defName>ARA_Cocoon_Weapon</defName>
|
||||
<label>阿拉克涅孵化茧 武装器官</label>
|
||||
<description>一个布满尖刺的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一个武装器官的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感(该类型的茧适温为-20~35°C),需要小心保护!</description>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ARA_MW_Bone_Sword</ThingDef>
|
||||
<ThingDef>ARA_RW_Basic_Acid_Bladder_Gun</ThingDef>
|
||||
<ThingDef>ARA_RW_Basic_Fist_Needle_Gun</ThingDef>
|
||||
</descriptionHyperlinks>
|
||||
|
||||
<comps>
|
||||
<!-- The new, GrowthVat-style fuel component -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
|
||||
<fuelCapacity>10</fuelCapacity>
|
||||
<fuelLabel>虫蜜</fuelLabel>
|
||||
<fuelFilter>
|
||||
<thingDefs>
|
||||
<li>ARA_InsectJelly</li>
|
||||
</thingDefs>
|
||||
</fuelFilter>
|
||||
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
|
||||
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
|
||||
<initialFuelPercent>1</initialFuelPercent>
|
||||
<autoRefuelPercent>1</autoRefuelPercent>
|
||||
</li>
|
||||
<!-- The refactored producer component -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_InteractiveProducer">
|
||||
<processes>
|
||||
<li>
|
||||
<thingDef>ARA_MW_Bone_Sword</thingDef>
|
||||
<productionTicks>60000</productionTicks>
|
||||
<totalNutritionNeeded>15</totalNutritionNeeded>
|
||||
</li>
|
||||
<li>
|
||||
<thingDef>ARA_RW_Basic_Fist_Needle_Gun</thingDef>
|
||||
<productionTicks>40000</productionTicks>
|
||||
<totalNutritionNeeded>10</totalNutritionNeeded>
|
||||
<requiredResearch>ARA_Technology_5PAV</requiredResearch>
|
||||
</li>
|
||||
<li>
|
||||
<thingDef>ARA_RW_Basic_Acid_Bladder_Gun</thingDef>
|
||||
<productionTicks>80000</productionTicks>
|
||||
<totalNutritionNeeded>30</totalNutritionNeeded>
|
||||
<requiredResearch>ARA_Technology_7VXI</requiredResearch>
|
||||
</li>
|
||||
</processes>
|
||||
|
||||
<whitelist>
|
||||
<li>ArachnaeNode_Race_WeaponSmith</li>
|
||||
</whitelist>
|
||||
<spawnCount>1</spawnCount>
|
||||
<destroyOnSpawn>True</destroyOnSpawn>
|
||||
<minSafeTemperature>-20</minSafeTemperature>
|
||||
<maxSafeTemperature>35</maxSafeTemperature>
|
||||
<penaltyPerDegreePerTick>0.00001</penaltyPerDegreePerTick>
|
||||
<damagePerTickWhenUnfueled>0.2</damagePerTickWhenUnfueled>
|
||||
<minNutritionToStart>1.0</minNutritionToStart>
|
||||
|
||||
<qualityThresholds>
|
||||
<li>
|
||||
<quality>Legendary</quality>
|
||||
<threshold>0.99</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Masterwork</quality>
|
||||
<threshold>0.90</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Excellent</quality>
|
||||
<threshold>0.70</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Good</quality>
|
||||
<threshold>0.50</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Normal</quality>
|
||||
<threshold>0.20</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Poor</quality>
|
||||
<threshold>0.10</threshold>
|
||||
</li>
|
||||
</qualityThresholds>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_TemperatureRuinableDamage">
|
||||
<minSafeTemperature>-20</minSafeTemperature>
|
||||
<maxSafeTemperature>35</maxSafeTemperature>
|
||||
<progressPerDegreePerTick>0.00005</progressPerDegreePerTick>
|
||||
<damagePerTick>0.005</damagePerTick>
|
||||
<recoveryRate>0.001</recoveryRate>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
<!-- T1 -->
|
||||
<ThingDef ParentName="ARA_CocoonSpew_Base_Proj">
|
||||
<defName>ARA_Cocoon_Proj_Cloth_1Stage</defName>
|
||||
<projectile>
|
||||
<spawnsThingDef>ARA_Cocoon_Cloth_1Stage</spawnsThingDef>
|
||||
</projectile>
|
||||
</ThingDef>
|
||||
<ThingDef ParentName="ARA_Cocoon_Base">
|
||||
<defName>ARA_Cocoon_Cloth_1Stage</defName>
|
||||
<label>阿拉克涅孵化茧 织物</label>
|
||||
<description>一个脆弱、易燃、黏滑的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一套基础织物装备的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感(该类型的茧适温为-30~55°C),需要小心保护!</description>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ARA_Bodystocking_White</ThingDef>
|
||||
<ThingDef>ARA_Bodystocking_Black</ThingDef>
|
||||
</descriptionHyperlinks>
|
||||
|
||||
<comps>
|
||||
<!-- The new, GrowthVat-style fuel component -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
|
||||
<fuelCapacity>10</fuelCapacity>
|
||||
<fuelLabel>虫蜜</fuelLabel>
|
||||
<fuelFilter>
|
||||
<thingDefs>
|
||||
<li>ARA_InsectJelly</li>
|
||||
</thingDefs>
|
||||
</fuelFilter>
|
||||
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
|
||||
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
|
||||
<initialFuelPercent>1</initialFuelPercent>
|
||||
<autoRefuelPercent>1</autoRefuelPercent>
|
||||
</li>
|
||||
<!-- The refactored producer component -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_InteractiveProducer">
|
||||
<processes>
|
||||
<li>
|
||||
<thingDef>ARA_Bodystocking_White</thingDef>
|
||||
<productionTicks>6000</productionTicks>
|
||||
<totalNutritionNeeded>1</totalNutritionNeeded>
|
||||
</li>
|
||||
<li>
|
||||
<thingDef>ARA_Bodystocking_Black</thingDef>
|
||||
<productionTicks>6000</productionTicks>
|
||||
<totalNutritionNeeded>1</totalNutritionNeeded>
|
||||
</li>
|
||||
<li>
|
||||
<thingDef>ARA_Maid_Uniform</thingDef>
|
||||
<productionTicks>18000</productionTicks>
|
||||
<totalNutritionNeeded>15</totalNutritionNeeded>
|
||||
</li>
|
||||
</processes>
|
||||
|
||||
<whitelist>
|
||||
<li>ArachnaeNode_Race_WeaponSmith</li>
|
||||
</whitelist>
|
||||
<spawnCount>1</spawnCount>
|
||||
<destroyOnSpawn>True</destroyOnSpawn>
|
||||
<minSafeTemperature>-30</minSafeTemperature>
|
||||
<maxSafeTemperature>55</maxSafeTemperature>
|
||||
<penaltyPerDegreePerTick>0.00001</penaltyPerDegreePerTick>
|
||||
<damagePerTickWhenUnfueled>0.2</damagePerTickWhenUnfueled>
|
||||
<minNutritionToStart>1.0</minNutritionToStart>
|
||||
|
||||
<qualityThresholds>
|
||||
<li>
|
||||
<quality>Legendary</quality>
|
||||
<threshold>0.99</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Masterwork</quality>
|
||||
<threshold>0.90</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Excellent</quality>
|
||||
<threshold>0.70</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Good</quality>
|
||||
<threshold>0.50</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Normal</quality>
|
||||
<threshold>0.20</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Poor</quality>
|
||||
<threshold>0.10</threshold>
|
||||
</li>
|
||||
</qualityThresholds>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_TemperatureRuinableDamage">
|
||||
<minSafeTemperature>-30</minSafeTemperature>
|
||||
<maxSafeTemperature>55</maxSafeTemperature>
|
||||
<progressPerDegreePerTick>0.00005</progressPerDegreePerTick>
|
||||
<damagePerTick>0.005</damagePerTick>
|
||||
<recoveryRate>0.001</recoveryRate>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
<ThingDef ParentName="ARA_CocoonSpew_Base_Proj">
|
||||
<defName>ARA_Cocoon_Proj_Weapon_1Stage</defName>
|
||||
<projectile>
|
||||
<spawnsThingDef>ARA_Cocoon_Weapon_1Stage</spawnsThingDef>
|
||||
</projectile>
|
||||
</ThingDef>
|
||||
<ThingDef ParentName="ARA_Cocoon_Base">
|
||||
<defName>ARA_Cocoon_Weapon_1Stage</defName>
|
||||
<label>阿拉克涅孵化茧 武装器官</label>
|
||||
<description>一个布满尖刺的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一个武装器官的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感(该类型的茧适温为-20~35°C),需要小心保护!</description>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ARA_MW_Bone_Sword</ThingDef>
|
||||
<ThingDef>ARA_RW_Basic_Acid_Bladder_Gun</ThingDef>
|
||||
<ThingDef>ARA_RW_Basic_Fist_Needle_Gun</ThingDef>
|
||||
</descriptionHyperlinks>
|
||||
|
||||
<comps>
|
||||
<!-- The new, GrowthVat-style fuel component -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
|
||||
<fuelCapacity>10</fuelCapacity>
|
||||
<fuelLabel>虫蜜</fuelLabel>
|
||||
<fuelFilter>
|
||||
<thingDefs>
|
||||
<li>ARA_InsectJelly</li>
|
||||
</thingDefs>
|
||||
</fuelFilter>
|
||||
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
|
||||
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
|
||||
<initialFuelPercent>1</initialFuelPercent>
|
||||
<autoRefuelPercent>1</autoRefuelPercent>
|
||||
</li>
|
||||
<!-- The refactored producer component -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_InteractiveProducer">
|
||||
<processes>
|
||||
<li>
|
||||
<thingDef>ARA_MW_Bone_Sword</thingDef>
|
||||
<productionTicks>60000</productionTicks>
|
||||
<totalNutritionNeeded>15</totalNutritionNeeded>
|
||||
</li>
|
||||
<li>
|
||||
<thingDef>ARA_RW_Basic_Fist_Needle_Gun</thingDef>
|
||||
<productionTicks>40000</productionTicks>
|
||||
<totalNutritionNeeded>10</totalNutritionNeeded>
|
||||
<requiredResearch>ARA_Technology_5PAV</requiredResearch>
|
||||
</li>
|
||||
<li>
|
||||
<thingDef>ARA_RW_Basic_Acid_Bladder_Gun</thingDef>
|
||||
<productionTicks>80000</productionTicks>
|
||||
<totalNutritionNeeded>30</totalNutritionNeeded>
|
||||
<requiredResearch>ARA_Technology_7VXI</requiredResearch>
|
||||
</li>
|
||||
</processes>
|
||||
|
||||
<whitelist>
|
||||
<li>ArachnaeNode_Race_WeaponSmith</li>
|
||||
</whitelist>
|
||||
<spawnCount>1</spawnCount>
|
||||
<destroyOnSpawn>True</destroyOnSpawn>
|
||||
<minSafeTemperature>-20</minSafeTemperature>
|
||||
<maxSafeTemperature>35</maxSafeTemperature>
|
||||
<penaltyPerDegreePerTick>0.00001</penaltyPerDegreePerTick>
|
||||
<damagePerTickWhenUnfueled>0.2</damagePerTickWhenUnfueled>
|
||||
<minNutritionToStart>1.0</minNutritionToStart>
|
||||
|
||||
<qualityThresholds>
|
||||
<li>
|
||||
<quality>Legendary</quality>
|
||||
<threshold>0.99</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Masterwork</quality>
|
||||
<threshold>0.90</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Excellent</quality>
|
||||
<threshold>0.70</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Good</quality>
|
||||
<threshold>0.50</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Normal</quality>
|
||||
<threshold>0.20</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Poor</quality>
|
||||
<threshold>0.10</threshold>
|
||||
</li>
|
||||
</qualityThresholds>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_TemperatureRuinableDamage">
|
||||
<minSafeTemperature>-20</minSafeTemperature>
|
||||
<maxSafeTemperature>35</maxSafeTemperature>
|
||||
<progressPerDegreePerTick>0.00005</progressPerDegreePerTick>
|
||||
<damagePerTick>0.005</damagePerTick>
|
||||
<recoveryRate>0.001</recoveryRate>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
<!-- 医药 -->
|
||||
<ThingDef ParentName="ARA_CocoonSpew_Base_Proj">
|
||||
<defName>ARA_Cocoon_Proj_Medicine</defName>
|
||||
<projectile>
|
||||
<spawnsThingDef>ARA_Cocoon_Medicine</spawnsThingDef>
|
||||
</projectile>
|
||||
</ThingDef>
|
||||
<ThingDef ParentName="ARA_Cocoon_Base">
|
||||
<defName>ARA_Cocoon_Medicine</defName>
|
||||
<label>阿拉克涅孵化茧 医药</label>
|
||||
<description>一个脆弱、易燃、黏滑的囊状物,是阿拉克涅蜜罐种所诞之卵,内含孵化一组医疗用品或化学品的营养物质,可以通过阿拉克涅蜜罐种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感(该类型的茧适温为0~12°C),需要小心保护!</description>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ARA_PheromoneSolvent</ThingDef>
|
||||
</descriptionHyperlinks>
|
||||
|
||||
<comps>
|
||||
<!-- The new, GrowthVat-style fuel component -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
|
||||
<fuelCapacity>10</fuelCapacity>
|
||||
<fuelLabel>虫蜜</fuelLabel>
|
||||
<fuelFilter>
|
||||
<thingDefs>
|
||||
<li>ARA_InsectJelly</li>
|
||||
</thingDefs>
|
||||
</fuelFilter>
|
||||
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
|
||||
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
|
||||
<initialFuelPercent>1</initialFuelPercent>
|
||||
<autoRefuelPercent>1</autoRefuelPercent>
|
||||
</li>
|
||||
<!-- The refactored producer component -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_InteractiveProducer">
|
||||
<processes>
|
||||
<li>
|
||||
<thingDef>ARA_Medicine</thingDef>
|
||||
<productionTicks>36000</productionTicks>
|
||||
<totalNutritionNeeded>10</totalNutritionNeeded>
|
||||
</li>
|
||||
<li>
|
||||
<thingDef>ARA_PheromoneSolvent</thingDef>
|
||||
<productionTicks>72000</productionTicks>
|
||||
<totalNutritionNeeded>20</totalNutritionNeeded>
|
||||
<requiredResearch>ARA_Technology_2MED</requiredResearch>
|
||||
</li>
|
||||
</processes>
|
||||
|
||||
<whitelist>
|
||||
<li>ArachnaeNode_Race_Myrmecocystus</li>
|
||||
</whitelist>
|
||||
<spawnCount>10</spawnCount>
|
||||
<destroyOnSpawn>True</destroyOnSpawn>
|
||||
<minSafeTemperature>0</minSafeTemperature>
|
||||
<maxSafeTemperature>12</maxSafeTemperature>
|
||||
<penaltyPerDegreePerTick>0.00001</penaltyPerDegreePerTick>
|
||||
<damagePerTickWhenUnfueled>0.2</damagePerTickWhenUnfueled>
|
||||
<minNutritionToStart>1.0</minNutritionToStart>
|
||||
|
||||
<qualityThresholds>
|
||||
<li>
|
||||
<quality>Legendary</quality>
|
||||
<threshold>0.99</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Masterwork</quality>
|
||||
<threshold>0.90</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Excellent</quality>
|
||||
<threshold>0.70</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Good</quality>
|
||||
<threshold>0.50</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Normal</quality>
|
||||
<threshold>0.20</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Poor</quality>
|
||||
<threshold>0.10</threshold>
|
||||
</li>
|
||||
</qualityThresholds>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_TemperatureRuinableDamage">
|
||||
<minSafeTemperature>0</minSafeTemperature>
|
||||
<maxSafeTemperature>12</maxSafeTemperature>
|
||||
<progressPerDegreePerTick>0.00005</progressPerDegreePerTick>
|
||||
<damagePerTick>0.005</damagePerTick>
|
||||
<recoveryRate>0.001</recoveryRate>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
</Defs>
|
||||
@@ -1,269 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
<ThingDef Name="ARA_Cocoon_Base" ParentName="BuildingBase" Abstract="True">
|
||||
<thingClass>Building</thingClass>
|
||||
<graphicData>
|
||||
<texPath>ArachnaeSwarm/Building/ARA_Cocoon</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
<drawSize>(1.1,1.1)</drawSize>
|
||||
<shadowData>
|
||||
<volume>(0.7, 0.4, 0.7)</volume>
|
||||
<offset>(0,0,-0.1)</offset>
|
||||
</shadowData>
|
||||
</graphicData>
|
||||
<size>(1,1)</size>
|
||||
<altitudeLayer>Building</altitudeLayer>
|
||||
<passability>PassThroughOnly</passability>
|
||||
<fillPercent>0.3</fillPercent>
|
||||
<rotatable>false</rotatable>
|
||||
<tickerType>Normal</tickerType>
|
||||
<statBases>
|
||||
<MaxHitPoints>50</MaxHitPoints>
|
||||
<Flammability>1</Flammability>
|
||||
</statBases>
|
||||
<building>
|
||||
<deconstructible>false</deconstructible>
|
||||
<repairable>false</repairable>
|
||||
</building>
|
||||
|
||||
<comps>
|
||||
<li Class="CompProperties_SpawnEffecterOnDestroy">
|
||||
<effect>CocoonDestroyed</effect>
|
||||
</li>
|
||||
<li Class="CompProperties_SpawnerFilth">
|
||||
<filthDef>Filth_Slime</filthDef>
|
||||
<spawnCountOnSpawn>10</spawnCountOnSpawn>
|
||||
<spawnMtbHours>4</spawnMtbHours>
|
||||
<spawnRadius>5</spawnRadius>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_DelayedTerrainSpawn">
|
||||
<terrainToSpawn>ARA_InsectCreep</terrainToSpawn>
|
||||
<spawnRadius>2.5</spawnRadius>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
<!-- T0 -->
|
||||
<AbilityDef ParentName="ARA_CocoonSpew_Base">
|
||||
<defName>ARA_Cocoon_Cloth</defName>
|
||||
<label>投放织物孵化茧</label>
|
||||
<description>投放一枚织物茧,内含可以孵化一套基础织物的营养和遗传物质——参阅茧的超链接,了解其能生产的所有装备的特点。</description>
|
||||
<iconPath>UI/Commands/EggSpew</iconPath>
|
||||
<comps>
|
||||
<li Class="CompProperties_AbilityLaunchProjectile">
|
||||
<projectileDef>ARA_Cocoon_Cloth_Proj</projectileDef>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
|
||||
<requiredResearch>ARA_Technology_4DIL</requiredResearch>
|
||||
<failMessage>需要科技 基因节点DIL-4"编织" 以解锁此孵化路径</failMessage>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
<ThingDef ParentName="ARA_CocoonSpew_Base_Proj">
|
||||
<defName>ARA_Cocoon_Cloth_Proj</defName>
|
||||
<projectile>
|
||||
<spawnsThingDef>ARA_Cocoon_Cloth</spawnsThingDef>
|
||||
</projectile>
|
||||
</ThingDef>
|
||||
<ThingDef ParentName="ARA_Cocoon_Base">
|
||||
<defName>ARA_Cocoon_Cloth</defName>
|
||||
<label>阿拉克涅孵化茧 基础织物</label>
|
||||
<description>一个脆弱、易燃、黏滑的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一套基础织物装备的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感(该类型的茧适温为-30~55°C),需要小心保护!</description>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ARA_Bodystocking_White</ThingDef>
|
||||
<ThingDef>ARA_Bodystocking_Black</ThingDef>
|
||||
</descriptionHyperlinks>
|
||||
<researchPrerequisites>
|
||||
<li>ARA_Technology_4DIL</li>
|
||||
</researchPrerequisites>
|
||||
|
||||
<comps>
|
||||
<!-- The new, GrowthVat-style fuel component -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
|
||||
<fuelCapacity>10</fuelCapacity>
|
||||
<fuelLabel>营养</fuelLabel>
|
||||
<fuelFilter>
|
||||
<categories>
|
||||
<li>Foods</li>
|
||||
</categories>
|
||||
</fuelFilter>
|
||||
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
|
||||
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
|
||||
<initialFuelPercent>1</initialFuelPercent>
|
||||
<autoRefuelPercent>1</autoRefuelPercent>
|
||||
</li>
|
||||
<!-- The refactored producer component -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_InteractiveProducer">
|
||||
<processes>
|
||||
<li>
|
||||
<thingDef>ARA_Bodystocking_White</thingDef>
|
||||
<productionTicks>6000</productionTicks>
|
||||
<totalNutritionNeeded>1</totalNutritionNeeded>
|
||||
</li>
|
||||
<li>
|
||||
<thingDef>ARA_Bodystocking_Black</thingDef>
|
||||
<productionTicks>6000</productionTicks>
|
||||
<totalNutritionNeeded>1</totalNutritionNeeded>
|
||||
</li>
|
||||
</processes>
|
||||
|
||||
<whitelist>
|
||||
<li>ArachnaeNode_Race_WeaponSmith</li>
|
||||
</whitelist>
|
||||
<spawnCount>1</spawnCount>
|
||||
<destroyOnSpawn>True</destroyOnSpawn>
|
||||
<minSafeTemperature>-30</minSafeTemperature>
|
||||
<maxSafeTemperature>55</maxSafeTemperature>
|
||||
<penaltyPerDegreePerTick>0.00001</penaltyPerDegreePerTick>
|
||||
<damagePerTickWhenUnfueled>0.2</damagePerTickWhenUnfueled>
|
||||
<minNutritionToStart>1.0</minNutritionToStart>
|
||||
|
||||
<qualityThresholds>
|
||||
<li>
|
||||
<quality>Legendary</quality>
|
||||
<threshold>0.99</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Masterwork</quality>
|
||||
<threshold>0.90</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Excellent</quality>
|
||||
<threshold>0.70</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Good</quality>
|
||||
<threshold>0.50</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Normal</quality>
|
||||
<threshold>0.20</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Poor</quality>
|
||||
<threshold>0.10</threshold>
|
||||
</li>
|
||||
</qualityThresholds>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_TemperatureRuinableDamage">
|
||||
<minSafeTemperature>-30</minSafeTemperature>
|
||||
<maxSafeTemperature>55</maxSafeTemperature>
|
||||
<progressPerDegreePerTick>0.00005</progressPerDegreePerTick>
|
||||
<damagePerTick>0.005</damagePerTick>
|
||||
<recoveryRate>0.001</recoveryRate>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
<AbilityDef ParentName="ARA_CocoonSpew_Base">
|
||||
<defName>ARA_Cocoon_Weapon</defName>
|
||||
<label>投放武装器官孵化茧</label>
|
||||
<description>投放一枚武装器官茧,内含可以孵化一套基础武装器官的营养和遗传物质——参阅茧的超链接,了解其能生产的所有装备的特点。</description>
|
||||
<iconPath>UI/Commands/EggSpew</iconPath>
|
||||
<comps>
|
||||
<li Class="CompProperties_AbilityLaunchProjectile">
|
||||
<projectileDef>ARA_Cocoon_Weapon_Proj</projectileDef>
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
<ThingDef ParentName="ARA_CocoonSpew_Base_Proj">
|
||||
<defName>ARA_Cocoon_Weapon_Proj</defName>
|
||||
<projectile>
|
||||
<spawnsThingDef>ARA_Cocoon_Weapon</spawnsThingDef>
|
||||
</projectile>
|
||||
</ThingDef>
|
||||
<ThingDef ParentName="ARA_Cocoon_Base">
|
||||
<defName>ARA_Cocoon_Weapon</defName>
|
||||
<label>阿拉克涅孵化茧 武装器官</label>
|
||||
<description>一个布满尖刺的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一个武装器官的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感(该类型的茧适温为-20~35°C),需要小心保护!</description>
|
||||
<descriptionHyperlinks>
|
||||
<ThingDef>ARA_MW_Bone_Sword</ThingDef>
|
||||
<ThingDef>ARA_RW_Basic_Acid_Bladder_Gun</ThingDef>
|
||||
<ThingDef>ARA_RW_Basic_Fist_Needle_Gun</ThingDef>
|
||||
</descriptionHyperlinks>
|
||||
|
||||
<comps>
|
||||
<!-- The new, GrowthVat-style fuel component -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
|
||||
<fuelCapacity>10</fuelCapacity>
|
||||
<fuelLabel>营养</fuelLabel>
|
||||
<fuelFilter>
|
||||
<categories>
|
||||
<li>Foods</li>
|
||||
</categories>
|
||||
</fuelFilter>
|
||||
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
|
||||
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
|
||||
<initialFuelPercent>1</initialFuelPercent>
|
||||
<autoRefuelPercent>1</autoRefuelPercent>
|
||||
</li>
|
||||
<!-- The refactored producer component -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_InteractiveProducer">
|
||||
<processes>
|
||||
<li>
|
||||
<thingDef>ARA_MW_Bone_Sword</thingDef>
|
||||
<productionTicks>60000</productionTicks>
|
||||
<totalNutritionNeeded>15</totalNutritionNeeded>
|
||||
</li>
|
||||
<li>
|
||||
<thingDef>ARA_RW_Basic_Fist_Needle_Gun</thingDef>
|
||||
<productionTicks>40000</productionTicks>
|
||||
<totalNutritionNeeded>10</totalNutritionNeeded>
|
||||
<requiredResearch>ARA_Technology_5PAV</requiredResearch>
|
||||
</li>
|
||||
<li>
|
||||
<thingDef>ARA_RW_Basic_Acid_Bladder_Gun</thingDef>
|
||||
<productionTicks>80000</productionTicks>
|
||||
<totalNutritionNeeded>30</totalNutritionNeeded>
|
||||
<requiredResearch>ARA_Technology_7VXI</requiredResearch>
|
||||
</li>
|
||||
</processes>
|
||||
|
||||
<whitelist>
|
||||
<li>ArachnaeNode_Race_WeaponSmith</li>
|
||||
</whitelist>
|
||||
<spawnCount>1</spawnCount>
|
||||
<destroyOnSpawn>True</destroyOnSpawn>
|
||||
<minSafeTemperature>-20</minSafeTemperature>
|
||||
<maxSafeTemperature>35</maxSafeTemperature>
|
||||
<penaltyPerDegreePerTick>0.00001</penaltyPerDegreePerTick>
|
||||
<damagePerTickWhenUnfueled>0.2</damagePerTickWhenUnfueled>
|
||||
<minNutritionToStart>1.0</minNutritionToStart>
|
||||
|
||||
<qualityThresholds>
|
||||
<li>
|
||||
<quality>Legendary</quality>
|
||||
<threshold>0.99</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Masterwork</quality>
|
||||
<threshold>0.90</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Excellent</quality>
|
||||
<threshold>0.70</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Good</quality>
|
||||
<threshold>0.50</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Normal</quality>
|
||||
<threshold>0.20</threshold>
|
||||
</li>
|
||||
<li>
|
||||
<quality>Poor</quality>
|
||||
<threshold>0.10</threshold>
|
||||
</li>
|
||||
</qualityThresholds>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_TemperatureRuinableDamage">
|
||||
<minSafeTemperature>-20</minSafeTemperature>
|
||||
<maxSafeTemperature>35</maxSafeTemperature>
|
||||
<progressPerDegreePerTick>0.00005</progressPerDegreePerTick>
|
||||
<damagePerTick>0.005</damagePerTick>
|
||||
<recoveryRate>0.001</recoveryRate>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
</Defs>
|
||||
83
1.6/1.6/Defs/Thing_building/ARA_NutrientDispenser.xml
Normal file
@@ -0,0 +1,83 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
|
||||
<ThingDef ParentName="BuildingBase">
|
||||
<defName>ARANutrientDispenser</defName>
|
||||
<label>阿拉克涅蜜晶巢穴</label>
|
||||
<description>一个生产阿拉克涅蜜晶糕的虫虫巢穴。通过分解虫蜜来生产可食用的蜜晶糕。</description>
|
||||
<thingClass>ArachnaeSwarm.Building_ARANutrientDispenser</thingClass>
|
||||
<graphicData>
|
||||
<texPath>Things/Building/Production/NutrientDispenser</texPath>
|
||||
<graphicClass>Graphic_Multi</graphicClass>
|
||||
<color>(232,255,191)</color>
|
||||
<shaderType>CutoutComplex</shaderType>
|
||||
<drawSize>(3,4)</drawSize>
|
||||
<damageData>
|
||||
<rect>(0.02,0.25,2.96,2.85)</rect>
|
||||
<cornerTL>Damage/Corner</cornerTL>
|
||||
<cornerTR>Damage/Corner</cornerTR>
|
||||
</damageData>
|
||||
<shadowData>
|
||||
<volume>(2.87,0.75,3.05)</volume>
|
||||
<offset>(0,0,0.38)</offset>
|
||||
</shadowData>
|
||||
</graphicData>
|
||||
<altitudeLayer>Building</altitudeLayer>
|
||||
<passability>Impassable</passability>
|
||||
<pathCost>150</pathCost>
|
||||
<fillPercent>1.0</fillPercent>
|
||||
<statBases>
|
||||
<MaxHitPoints>250</MaxHitPoints>
|
||||
<WorkToBuild>2000</WorkToBuild>
|
||||
<Flammability>0.5</Flammability>
|
||||
</statBases>
|
||||
<size>(3,4)</size>
|
||||
<costList>
|
||||
<ARA_Carapace>50</ARA_Carapace>
|
||||
</costList>
|
||||
<tickerType>Normal</tickerType>
|
||||
<terrainAffordanceNeeded>ARA_Creep</terrainAffordanceNeeded>
|
||||
<comps>
|
||||
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
|
||||
<fuelCapacity>10.0</fuelCapacity>
|
||||
<fuelFilter>
|
||||
<thingDefs>
|
||||
<li>ARA_InsectJelly</li>
|
||||
</thingDefs>
|
||||
</fuelFilter>
|
||||
<fuelGizmoLabel>虫蜜</fuelGizmoLabel>
|
||||
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
|
||||
<targetFuelLevelConfigurable>true</targetFuelLevelConfigurable>
|
||||
<consumeFuelOnlyWhenUsed>true</consumeFuelOnlyWhenUsed>
|
||||
</li>
|
||||
<li Class="CompProperties_AffectedByFacilities">
|
||||
<linkableFacilities>
|
||||
<li>ARA_NutrientNetworkTower</li>
|
||||
</linkableFacilities>
|
||||
</li>
|
||||
<!-- This component acts as a perpetual power source with no consumption, ensuring powerComp.PowerOn is always true -->
|
||||
<li Class="CompProperties_Power">
|
||||
<compClass>CompPowerPlant</compClass>
|
||||
<basePowerConsumption>-1</basePowerConsumption> <!-- Negative value makes it a generator -->
|
||||
<transmitsPower>false</transmitsPower> <!-- This is CRITICAL. It prevents the building from powering the whole grid. -->
|
||||
</li>
|
||||
</comps>
|
||||
<modExtensions>
|
||||
<li Class="ArachnaeSwarm.ARAFoodDispenserProperties">
|
||||
<thingToDispense>ARA_NutrientPasteMeal</thingToDispense>
|
||||
<nutritionCostPerDispense>0.5</nutritionCostPerDispense>
|
||||
<soundDispense>DispensePaste</soundDispense>
|
||||
</li>
|
||||
</modExtensions>
|
||||
<building>
|
||||
<isMealSource>true</isMealSource>
|
||||
</building>
|
||||
<interactionCellOffset>(0,0,3)</interactionCellOffset>
|
||||
<hasInteractionCell>true</hasInteractionCell>
|
||||
<designationCategory>ARA_Buildings</designationCategory>
|
||||
<researchPrerequisites>
|
||||
<li>NutrientPaste</li>
|
||||
</researchPrerequisites>
|
||||
</ThingDef>
|
||||
|
||||
</Defs>
|
||||
@@ -7,10 +7,11 @@
|
||||
<description>一个中央营养供给设施。它可以自动为链接到的、需要营养的建筑补充燃料。它本身需要被手动填充大量的生物质。</description>
|
||||
<size>(5,5)</size>
|
||||
<graphicData>
|
||||
<texPath>ArachnaeSwarm/Building/ARA_ResearchBench</texPath>
|
||||
<graphicClass>Graphic_Multi</graphicClass>
|
||||
<texPath>ArachnaeSwarm/Building/ARA_NutrientNetworkTower</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
<shaderType>CutoutComplex</shaderType>
|
||||
<drawSize>(5,6.7)</drawSize>
|
||||
<drawSize>(7,7)</drawSize>
|
||||
<drawOffset>(0, 0, 0.8)</drawOffset>
|
||||
</graphicData>
|
||||
<altitudeLayer>Building</altitudeLayer>
|
||||
<passability>PassThroughOnly</passability>
|
||||
@@ -18,7 +19,7 @@
|
||||
<tickerType>Normal</tickerType> <!-- 改为 Normal 以匹配 CompRefuelable 的要求 -->
|
||||
<fillPercent>0.5</fillPercent>
|
||||
<statBases>
|
||||
<MaxHitPoints>300</MaxHitPoints>
|
||||
<MaxHitPoints>3000</MaxHitPoints>
|
||||
<WorkToBuild>3000</WorkToBuild>
|
||||
<Mass>20</Mass>
|
||||
<Flammability>0.5</Flammability>
|
||||
@@ -26,7 +27,14 @@
|
||||
<costList>
|
||||
<ARA_Carapace>50</ARA_Carapace>
|
||||
</costList>
|
||||
<terrainAffordanceNeeded>ARA_Creep</terrainAffordanceNeeded>
|
||||
<comps>
|
||||
<li Class="CompProperties_Glower">
|
||||
<overlightRadius>7.0</overlightRadius>
|
||||
<glowRadius>14</glowRadius>
|
||||
<glowColor>(220,210,171,0)</glowColor>
|
||||
<colorPickerEnabled>true</colorPickerEnabled>
|
||||
</li>
|
||||
<!-- 供能核心组件 -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_NutrientProvider">
|
||||
<linkableBuildings>
|
||||
@@ -37,6 +45,8 @@
|
||||
<li>ARA_JellyVat</li>
|
||||
<li>ARA_GrowthVat</li>
|
||||
<li>ARA_MorphableResearchBench</li>
|
||||
<li>ARANutrientDispenser</li>
|
||||
<li>ARA_WormholePortal_A</li>
|
||||
</linkableBuildings>
|
||||
<maxDistance>80</maxDistance> <!-- 供能范围 -->
|
||||
<maxSimultaneous>10</maxSimultaneous>
|
||||
@@ -51,20 +61,22 @@
|
||||
<li>ARA_JellyVat</li>
|
||||
<li>ARA_GrowthVat</li>
|
||||
<li>ARA_MorphableResearchBench</li>
|
||||
<li>ARANutrientDispenser</li>
|
||||
<li>ARA_WormholePortal_A</li>
|
||||
</linkableBuildings>
|
||||
<maxDistance>80</maxDistance>
|
||||
<lineTexturePath>ArachnaeSwarm/Building/Nutrition_Pie</lineTexturePath>
|
||||
</li>
|
||||
|
||||
<!-- 自身的燃料库 -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
|
||||
<fuelCapacity>10000.0</fuelCapacity>
|
||||
<fuelFilter>
|
||||
<categories>
|
||||
<li>Foods</li>
|
||||
<li>Corpses</li>
|
||||
</categories>
|
||||
<thingDefs>
|
||||
<li>ARA_InsectJelly</li>
|
||||
</thingDefs>
|
||||
</fuelFilter>
|
||||
<fuelGizmoLabel>生物质</fuelGizmoLabel>
|
||||
<fuelGizmoLabel>虫蜜</fuelGizmoLabel>
|
||||
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
|
||||
<targetFuelLevelConfigurable>true</targetFuelLevelConfigurable>
|
||||
</li>
|
||||
@@ -187,13 +199,13 @@
|
||||
|
||||
<!-- b. 我们的营养燃料组件 -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
|
||||
<fuelCapacity>100.0</fuelCapacity>
|
||||
<fuelCapacity>20.0</fuelCapacity>
|
||||
<fuelFilter>
|
||||
<categories>
|
||||
<li>Foods</li>
|
||||
</categories>
|
||||
<thingDefs>
|
||||
<li>ARA_InsectJelly</li>
|
||||
</thingDefs>
|
||||
</fuelFilter>
|
||||
<fuelGizmoLabel>生物质</fuelGizmoLabel>
|
||||
<fuelGizmoLabel>虫蜜</fuelGizmoLabel>
|
||||
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
|
||||
<targetFuelLevelConfigurable>true</targetFuelLevelConfigurable>
|
||||
</li>
|
||||
@@ -284,13 +296,13 @@
|
||||
|
||||
<!-- b. 我们的营养燃料组件 -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
|
||||
<fuelCapacity>100.0</fuelCapacity>
|
||||
<fuelCapacity>20.0</fuelCapacity>
|
||||
<fuelFilter>
|
||||
<categories>
|
||||
<li>Foods</li>
|
||||
</categories>
|
||||
<thingDefs>
|
||||
<li>ARA_InsectJelly</li>
|
||||
</thingDefs>
|
||||
</fuelFilter>
|
||||
<fuelGizmoLabel>生物质</fuelGizmoLabel>
|
||||
<fuelGizmoLabel>虫蜜</fuelGizmoLabel>
|
||||
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
|
||||
<targetFuelLevelConfigurable>true</targetFuelLevelConfigurable>
|
||||
</li>
|
||||
@@ -352,6 +364,7 @@
|
||||
<workTableRoomRole>Laboratory</workTableRoomRole>
|
||||
<workTableNotInRoomRoleFactor>0.8</workTableNotInRoomRoleFactor>
|
||||
</building>
|
||||
<terrainAffordanceNeeded>ARA_Creep</terrainAffordanceNeeded>
|
||||
<comps>
|
||||
<li Class="CompProperties_Flickable"/>
|
||||
|
||||
@@ -371,30 +384,16 @@
|
||||
|
||||
<!-- 燃料槽 1: 素食 -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition_WithKey">
|
||||
<saveKeysPrefix>veg_vat</saveKeysPrefix>
|
||||
<fuelLabel>素食</fuelLabel>
|
||||
<saveKeysPrefix>bio</saveKeysPrefix>
|
||||
<fuelLabel>生物质</fuelLabel>
|
||||
<fuelFilter>
|
||||
<categories>
|
||||
<li>PlantFoodRaw</li>
|
||||
<li>Foods</li>
|
||||
<li>Corpses</li>
|
||||
</categories>
|
||||
</fuelFilter>
|
||||
<fuelCapacity>50</fuelCapacity>
|
||||
<fuelConsumptionRate>12.5</fuelConsumptionRate>
|
||||
<consumeFuelOnlyWhenUsed>true</consumeFuelOnlyWhenUsed>
|
||||
</li>
|
||||
|
||||
<!-- 燃料槽 2: 肉类 -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition_WithKey">
|
||||
<saveKeysPrefix>meat_vat</saveKeysPrefix>
|
||||
<fuelLabel>肉食</fuelLabel>
|
||||
<fuelFilter>
|
||||
<categories>
|
||||
<li>MeatRaw</li>
|
||||
<li>AnimalProductRaw</li>
|
||||
</categories>
|
||||
</fuelFilter>
|
||||
<fuelCapacity>50</fuelCapacity>
|
||||
<fuelConsumptionRate>12.5</fuelConsumptionRate>
|
||||
<fuelConsumptionRate>25</fuelConsumptionRate>
|
||||
<consumeFuelOnlyWhenUsed>true</consumeFuelOnlyWhenUsed>
|
||||
</li>
|
||||
|
||||
@@ -460,16 +459,17 @@
|
||||
<workTableRoomRole>Laboratory</workTableRoomRole>
|
||||
</building>
|
||||
<constructionSkillPrerequisite>4</constructionSkillPrerequisite>
|
||||
<terrainAffordanceNeeded>ARA_Creep</terrainAffordanceNeeded>
|
||||
<comps>
|
||||
<!-- 1. 作为消费者,自己也需要燃料 -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
|
||||
<fuelCapacity>100.0</fuelCapacity>
|
||||
<fuelCapacity>10.0</fuelCapacity>
|
||||
<fuelFilter>
|
||||
<categories>
|
||||
<li>Foods</li>
|
||||
</categories>
|
||||
<thingDefs>
|
||||
<li>ARA_InsectJelly</li>
|
||||
</thingDefs>
|
||||
</fuelFilter>
|
||||
<fuelGizmoLabel>生物质</fuelGizmoLabel>
|
||||
<fuelGizmoLabel>虫蜜</fuelGizmoLabel>
|
||||
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
|
||||
<targetFuelLevelConfigurable>true</targetFuelLevelConfigurable>
|
||||
</li>
|
||||
|
||||
@@ -0,0 +1,244 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
|
||||
<ThingDef ParentName="BuildingBase">
|
||||
<defName>CatastropheMissileSilo</defName>
|
||||
<label>天灾导弹发射井</label>
|
||||
<description>一个多功能导弹发射平台。它装备的武器系统既可以作为自动炮塔进行本地防御,也可以在操作员的指引下,将“天灾”级巡航导弹发射到全球任何一个角落。</description>
|
||||
<thingClass>ArachnaeSwarm.Building_CatastropheMissileSilo</thingClass>
|
||||
<drawerType>MapMeshAndRealTime</drawerType>
|
||||
<graphicData>
|
||||
<texPath>Things/Building/Security/TurretHeavy_Base</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
<drawSize>(3, 3)</drawSize>
|
||||
<drawOffset>(0,0,-0.1)</drawOffset>
|
||||
<damageData>
|
||||
<rect>(0.2,0.2,0.6,0.6)</rect>
|
||||
</damageData>
|
||||
<shadowData>
|
||||
<volume>(1.5,0.35,1.4)</volume>
|
||||
<offset>(0,0,-0.05)</offset>
|
||||
</shadowData>
|
||||
</graphicData>
|
||||
<size>(2,2)</size>
|
||||
<altitudeLayer>Building</altitudeLayer>
|
||||
<passability>PassThroughOnly</passability>
|
||||
<pathCost>50</pathCost>
|
||||
<fillPercent>0.5</fillPercent>
|
||||
<stealable>false</stealable>
|
||||
<statBases>
|
||||
<MaxHitPoints>500</MaxHitPoints>
|
||||
<WorkToBuild>12000</WorkToBuild>
|
||||
<Mass>800</Mass>
|
||||
<Beauty>-20</Beauty>
|
||||
</statBases>
|
||||
<tickerType>Normal</tickerType>
|
||||
<comps>
|
||||
<li Class="CompProperties_Refuelable">
|
||||
<fuelLabel>导弹</fuelLabel>
|
||||
<fuelGizmoLabel>导弹</fuelGizmoLabel>
|
||||
<outOfFuelMessage>缺少导弹</outOfFuelMessage>
|
||||
<fuelFilter>
|
||||
<thingDefs>
|
||||
<li>ComponentSpacer</li>
|
||||
</thingDefs>
|
||||
</fuelFilter>
|
||||
<fuelCapacity>10</fuelCapacity>
|
||||
<initialFuelPercent>0</initialFuelPercent>
|
||||
<autoRefuelPercent>1</autoRefuelPercent>
|
||||
<showFuelGizmo>true</showFuelGizmo>
|
||||
<consumeFuelOnlyWhenUsed>true</consumeFuelOnlyWhenUsed>
|
||||
</li>
|
||||
<li Class="CompProperties_Forbiddable"/>
|
||||
<li Class="CompProperties_Breakdownable"/>
|
||||
<li Class="ArachnaeSwarm.CompProperties_ForceTargetable" />
|
||||
</comps>
|
||||
<building>
|
||||
<turretGunDef>CatastropheMissile_Weapon</turretGunDef>
|
||||
<turretBurstCooldownTime>5.0</turretBurstCooldownTime>
|
||||
<buildingTags>
|
||||
<li>Artillery</li>
|
||||
</buildingTags>
|
||||
</building>
|
||||
<designationCategory>ARA_Buildings</designationCategory>
|
||||
<constructionSkillPrerequisite>8</constructionSkillPrerequisite>
|
||||
<researchPrerequisites>
|
||||
<li>ShipbuildingBasics</li>
|
||||
</researchPrerequisites>
|
||||
</ThingDef>
|
||||
|
||||
<ThingDef ParentName="BaseBullet">
|
||||
<defName>Projectile_CatastropheMissile</defName>
|
||||
<label>“天灾”巡航导弹</label>
|
||||
<thingClass>ArachnaeSwarm.Projectile_CruiseMissile</thingClass>
|
||||
<graphicData>
|
||||
<graphicClass>Graphic_Single_AgeSecs</graphicClass>
|
||||
<texPath>Things/Projectile/FleshmassSpitterProjectileSheet</texPath>
|
||||
<drawSize>(3,3)</drawSize>
|
||||
<shaderType>MoteGlow</shaderType>
|
||||
</graphicData>
|
||||
<projectile>
|
||||
<useGraphicClass>True</useGraphicClass>
|
||||
<shadowSize>1</shadowSize>
|
||||
<damageDef>ARA_AcidBurn</damageDef>
|
||||
<damageAmountBase>150</damageAmountBase>
|
||||
<speed>80</speed>
|
||||
<flyOverhead>true</flyOverhead>
|
||||
<filth>Filth_SpentAcid</filth>
|
||||
<filthCount>4</filthCount>
|
||||
<explosionEffect>ARA_Shell_AcidSpitImpact</explosionEffect>
|
||||
<explosionEffectLifetimeTicks>60</explosionEffectLifetimeTicks>
|
||||
<doExplosionVFX>false</doExplosionVFX>
|
||||
<explosionRadius>10.9</explosionRadius>
|
||||
<soundExplode>MortarBomb_Explode</soundExplode>
|
||||
</projectile>
|
||||
<modExtensions>
|
||||
<li Class="ArachnaeSwarm.CruiseMissileProperties">
|
||||
<customDamageDef>ARA_AcidBurn</customDamageDef>
|
||||
<customDamageAmount>150</customDamageAmount>
|
||||
<customExplosionRadius>10.9</customExplosionRadius>
|
||||
<customSoundExplode>MortarBomb_Explode</customSoundExplode>
|
||||
<useSubExplosions>true</useSubExplosions>
|
||||
<subExplosionCount>8</subExplosionCount>
|
||||
<subExplosionRadius>2.9</subExplosionRadius>
|
||||
<subExplosionDamage>50</subExplosionDamage>
|
||||
<subExplosionSpread>15</subExplosionSpread>
|
||||
<subDamageDef>ARA_AcidBurn</subDamageDef>
|
||||
<subSoundExplode>MortarBomb_Explode</subSoundExplode>
|
||||
<bezierArcHeightFactor>0.01</bezierArcHeightFactor>
|
||||
<bezierMinArcHeight>1</bezierMinArcHeight>
|
||||
<bezierMaxArcHeight>5</bezierMaxArcHeight>
|
||||
<bezierHorizontalOffsetFactor>0.05</bezierHorizontalOffsetFactor>
|
||||
<bezierSideOffsetFactor>0.05</bezierSideOffsetFactor>
|
||||
<bezierRandomOffsetScale>1.5</bezierRandomOffsetScale>
|
||||
</li>
|
||||
</modExtensions>
|
||||
<comps>
|
||||
<li Class="CompProperties_ProjectileEffecter">
|
||||
<effecterDef>Shell_AcidSpitStream</effecterDef>
|
||||
</li>
|
||||
<li Class="CompProperties_ProjectileEffecter">
|
||||
<effecterDef>Shell_AcidSpitLaunched</effecterDef>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
<EffecterDef>
|
||||
<defName>ARA_Shell_AcidSpitImpact</defName>
|
||||
<children>
|
||||
<li>
|
||||
<subEffecterClass>SubEffecter_SprayerChance</subEffecterClass>
|
||||
<fleckDef>Fleck_AcidSpitImpact</fleckDef>
|
||||
<burstCount>1</burstCount>
|
||||
<scale>5</scale>
|
||||
<chancePerTick>1</chancePerTick>
|
||||
<chancePeriodTicks>2</chancePeriodTicks>
|
||||
<lifespanMaxTicks>8</lifespanMaxTicks>
|
||||
<spawnLocType>OnSource</spawnLocType>
|
||||
</li>
|
||||
<li>
|
||||
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
|
||||
<fleckDef>Fleck_AcidSpitLaunchedMist</fleckDef>
|
||||
<scale>20</scale>
|
||||
<burstCount>3~6</burstCount>
|
||||
<spawnLocType>OnSource</spawnLocType>
|
||||
<absoluteAngle>false</absoluteAngle>
|
||||
<angle>0~100</angle>
|
||||
<positionRadius>1</positionRadius>
|
||||
<speed>-1~1</speed>
|
||||
<rotation>0</rotation>
|
||||
</li>
|
||||
<li>
|
||||
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
|
||||
<fleckDef>Fleck_AcidSpitLaunchedGlobFast</fleckDef>
|
||||
<burstCount>6~10</burstCount>
|
||||
<spawnLocType>OnSource</spawnLocType>
|
||||
<absoluteAngle>false</absoluteAngle>
|
||||
<positionRadius>.7</positionRadius>
|
||||
<positionRadiusMin>.7</positionRadiusMin>
|
||||
<fleckUsesAngleForVelocity>true</fleckUsesAngleForVelocity>
|
||||
<rotateTowardsTargetCenter>true</rotateTowardsTargetCenter>
|
||||
<angle>0~100</angle>
|
||||
<scale>2.5</scale>
|
||||
<speed>20~45</speed>
|
||||
<rotation>0~360</rotation>
|
||||
</li>
|
||||
</children>
|
||||
</EffecterDef>
|
||||
|
||||
<ThingDef ParentName="BaseBullet">
|
||||
<defName>Projectile_CatastropheMissile_Fake</defName>
|
||||
<label>“天灾”巡航导弹</label>
|
||||
<thingClass>ArachnaeSwarm.Projectile_CruiseMissile</thingClass>
|
||||
<graphicData>
|
||||
<graphicClass>Graphic_Single_AgeSecs</graphicClass>
|
||||
<texPath>Things/Projectile/FleshmassSpitterProjectileSheet</texPath>
|
||||
<drawSize>(3,3)</drawSize>
|
||||
<shaderType>MoteGlow</shaderType>
|
||||
</graphicData>
|
||||
<projectile>
|
||||
<useGraphicClass>True</useGraphicClass>
|
||||
<shadowSize>1</shadowSize>
|
||||
<damageDef>ARA_AcidBurn</damageDef>
|
||||
<damageAmountBase>0</damageAmountBase>
|
||||
<speed>80</speed>
|
||||
<flyOverhead>true</flyOverhead>
|
||||
</projectile>
|
||||
<modExtensions>
|
||||
<li Class="ArachnaeSwarm.CruiseMissileProperties">
|
||||
<isDummy>true</isDummy>
|
||||
<useSubExplosions>false</useSubExplosions>
|
||||
<bezierArcHeightFactor>0.01</bezierArcHeightFactor>
|
||||
<bezierMinArcHeight>1</bezierMinArcHeight>
|
||||
<bezierMaxArcHeight>5</bezierMaxArcHeight>
|
||||
<bezierHorizontalOffsetFactor>0.05</bezierHorizontalOffsetFactor>
|
||||
<bezierSideOffsetFactor>0.05</bezierSideOffsetFactor>
|
||||
<bezierRandomOffsetScale>1.5</bezierRandomOffsetScale>
|
||||
</li>
|
||||
</modExtensions>
|
||||
<comps>
|
||||
<li Class="CompProperties_ProjectileEffecter">
|
||||
<effecterDef>Shell_AcidSpitStream</effecterDef>
|
||||
</li>
|
||||
<li Class="CompProperties_ProjectileEffecter">
|
||||
<effecterDef>Shell_AcidSpitLaunched</effecterDef>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
<ThingDef ParentName="BaseWeapon">
|
||||
<defName>CatastropheMissile_Weapon</defName>
|
||||
<label>天灾导弹武器系统</label>
|
||||
<description>天灾导弹的发射系统。</description>
|
||||
<techLevel>Spacer</techLevel>
|
||||
<graphicData>
|
||||
<texPath>Things/Building/Security/TurretMortar_Top</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
</graphicData>
|
||||
<statBases>
|
||||
<RangedWeapon_Cooldown>5.0</RangedWeapon_Cooldown>
|
||||
<Mass>50</Mass>
|
||||
</statBases>
|
||||
<verbs>
|
||||
<li>
|
||||
<verbClass>Verb_Shoot</verbClass>
|
||||
<hasStandardCommand>true</hasStandardCommand>
|
||||
<defaultProjectile>Projectile_CatastropheMissile</defaultProjectile>
|
||||
<consumeFuelPerShot>1</consumeFuelPerShot>
|
||||
<warmupTime>3.0</warmupTime>
|
||||
<forcedMissRadius>1</forcedMissRadius>
|
||||
<isMortar>true</isMortar>
|
||||
<requireLineOfSight>false</requireLineOfSight>
|
||||
<minRange>10.9</minRange>
|
||||
<burstShotCount>1</burstShotCount>
|
||||
<range>500</range>
|
||||
<soundCast>Shot_Autocannon</soundCast>
|
||||
<muzzleFlashScale>16</muzzleFlashScale>
|
||||
<targetParams>
|
||||
<canTargetLocations>true</canTargetLocations>
|
||||
</targetParams>
|
||||
</li>
|
||||
</verbs>
|
||||
</ThingDef>
|
||||
|
||||
</Defs>
|
||||
123
1.6/1.6/Defs/Thing_building/ARA_WormholeDefs.xml
Normal file
@@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
|
||||
<!-- ==================== A端传送门 ==================== -->
|
||||
<ThingDef ParentName="BuildingBase">
|
||||
<defName>ARA_WormholePortal_A</defName>
|
||||
<label>阿拉克涅坑道虫虫洞</label>
|
||||
<description>阿拉克涅虫洞网络的主体组成部分。它可以向远方发射尾巴作为虫洞出口,它是阿拉克涅坑道虫头部的一部分,装入虫洞的物体会被坑道虫加压移动从而快速旅行,虫洞允许双向通行。</description>
|
||||
<thingClass>ArachnaeSwarm.Building_WormholePortal_A</thingClass>
|
||||
<graphicData>
|
||||
<texPath>ArachnaeSwarm/Building/ARA_Wormhole_A</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
<shaderType>CutoutComplex</shaderType>
|
||||
<drawSize>(4,4)</drawSize>
|
||||
<shadowData>
|
||||
<volume>(2.6, 2.5, 1.6)</volume>
|
||||
<offset>(0,0,-0.1)</offset>
|
||||
</shadowData>
|
||||
</graphicData>
|
||||
<altitudeLayer>Building</altitudeLayer>
|
||||
<passability>Impassable</passability>
|
||||
<tickerType>Normal</tickerType>
|
||||
<category>Building</category>
|
||||
<statBases>
|
||||
<MaxHitPoints>1000</MaxHitPoints>
|
||||
<WorkToBuild>8000</WorkToBuild>
|
||||
<Flammability>0.5</Flammability>
|
||||
<Mass>100</Mass>
|
||||
</statBases>
|
||||
<uiIconScale>0.85</uiIconScale>
|
||||
<size>(4,4)</size>
|
||||
<costList>
|
||||
<ARA_Carapace>50</ARA_Carapace>
|
||||
</costList>
|
||||
<comps>
|
||||
<li Class="CompProperties_Glower">
|
||||
<overlightRadius>7.0</overlightRadius>
|
||||
<glowRadius>14</glowRadius>
|
||||
<glowColor>(220,210,171,0)</glowColor>
|
||||
<colorPickerEnabled>true</colorPickerEnabled>
|
||||
</li>
|
||||
<li Class="CompProperties_Flickable"/>
|
||||
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
|
||||
<fuelCapacity>500.0</fuelCapacity>
|
||||
<fuelFilter>
|
||||
<thingDefs>
|
||||
<li>ARA_InsectJelly</li>
|
||||
</thingDefs>
|
||||
</fuelFilter>
|
||||
<fuelGizmoLabel>虫蜜</fuelGizmoLabel>
|
||||
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
|
||||
<targetFuelLevelConfigurable>true</targetFuelLevelConfigurable>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_LaunchableWormhole">
|
||||
<fuelPerTile>2.5</fuelPerTile>
|
||||
</li>
|
||||
|
||||
<li Class="CompProperties_AffectedByFacilities">
|
||||
<linkableFacilities>
|
||||
<li>ARA_NutrientNetworkTower</li>
|
||||
</linkableFacilities>
|
||||
</li>
|
||||
<li Class="ArachnaeSwarm.CompProperties_DelayedTerrainSpawn">
|
||||
<terrainToSpawn>ARA_InsectCreep</terrainToSpawn>
|
||||
<spawnRadius>5</spawnRadius>
|
||||
</li>
|
||||
</comps>
|
||||
<designationCategory>ARA_Buildings</designationCategory>
|
||||
<terrainAffordanceNeeded>ARA_Creep</terrainAffordanceNeeded>
|
||||
<building>
|
||||
<ai_chillDestination>false</ai_chillDestination>
|
||||
</building>
|
||||
<portal>
|
||||
<traverseSound>TraversePitGate</traverseSound>
|
||||
</portal>
|
||||
</ThingDef>
|
||||
|
||||
<!-- ==================== B端传送门 ==================== -->
|
||||
<ThingDef ParentName="BuildingBase">
|
||||
<defName>ARA_WormholePortal_B</defName>
|
||||
<label>阿拉克涅坑道虫虫洞出口</label>
|
||||
<description>一个被远程部署的虫洞出口。它是阿拉克涅坑道虫尾巴的一部分,装入虫洞的物体会被坑道虫加压移动从而快速旅行,虫洞允许双向通行。</description>
|
||||
<thingClass>ArachnaeSwarm.Building_WormholePortal_B</thingClass>
|
||||
<graphicData>
|
||||
<texPath>ArachnaeSwarm/Building/ARA_Wormhole_B</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
<shaderType>CutoutComplex</shaderType>
|
||||
<drawSize>(4,4)</drawSize>
|
||||
<shadowData>
|
||||
<volume>(2.6, 2.5, 1.6)</volume>
|
||||
<offset>(0,0,-0.1)</offset>
|
||||
</shadowData>
|
||||
</graphicData>
|
||||
<altitudeLayer>Building</altitudeLayer>
|
||||
<passability>Impassable</passability>
|
||||
<statBases>
|
||||
<MaxHitPoints>500</MaxHitPoints>
|
||||
<Flammability>0.5</Flammability>
|
||||
</statBases>
|
||||
<size>(2,2)</size>
|
||||
<comps>
|
||||
<li Class="CompProperties_Glower">
|
||||
<overlightRadius>7.0</overlightRadius>
|
||||
<glowRadius>14</glowRadius>
|
||||
<glowColor>(220,210,171,0)</glowColor>
|
||||
<colorPickerEnabled>true</colorPickerEnabled>
|
||||
</li>
|
||||
<li Class="CompProperties_Flickable"/>
|
||||
<li Class="ArachnaeSwarm.CompProperties_DelayedTerrainSpawn">
|
||||
<terrainToSpawn>ARA_InsectCreep</terrainToSpawn>
|
||||
<spawnRadius>12</spawnRadius>
|
||||
</li>
|
||||
</comps>
|
||||
<tradeability>None</tradeability>
|
||||
<portal>
|
||||
<traverseSound>TraversePitGate</traverseSound>
|
||||
</portal>
|
||||
</ThingDef>
|
||||
|
||||
<!-- CompProperties for our custom launchable -->
|
||||
<!-- This is referenced by the li Class above -->
|
||||
|
||||
</Defs>
|
||||
@@ -1,68 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
|
||||
<ThingDef ParentName="BuildingBase">
|
||||
<defName>ARA_SmartThermostat</defName>
|
||||
<label>阿拉克涅纤管虫</label>
|
||||
<description>一个不耗电的温控虫虫。它是一个可逆的热泵,能自动制热或制冷以维持设定的目标温度。必须像制冷器一样安装在墙上。</description>
|
||||
<thingClass>ArachnaeSwarm.Building_SmartThermostat</thingClass> <!-- 使用我们新的建筑类 -->
|
||||
<graphicData>
|
||||
<texPath>Things/Building/Misc/TempControl/Cooler</texPath> <!-- 暂时使用制冷器的贴图 -->
|
||||
<graphicClass>Graphic_Multi</graphicClass>
|
||||
<shadowData>
|
||||
<volume>(0.6, 0.4, 0.3)</volume>
|
||||
<offset>(0,0,-0.1)</offset>
|
||||
</shadowData>
|
||||
</graphicData>
|
||||
<altitudeLayer>Building</altitudeLayer>
|
||||
<passability>Impassable</passability>
|
||||
<blockWind>true</blockWind>
|
||||
<fillPercent>1</fillPercent>
|
||||
<coversFloor>true</coversFloor>
|
||||
<blockLight>true</blockLight>
|
||||
<blockWeather>true</blockWeather>
|
||||
<castEdgeShadows>true</castEdgeShadows>
|
||||
<canOverlapZones>false</canOverlapZones>
|
||||
<staticSunShadowHeight>0</staticSunShadowHeight>
|
||||
<statBases>
|
||||
<WorkToBuild>400</WorkToBuild>
|
||||
<MaxHitPoints>100</MaxHitPoints>
|
||||
<Flammability>1.0</Flammability>
|
||||
</statBases>
|
||||
<tickerType>Rare</tickerType>
|
||||
<costList>
|
||||
<ARA_Carapace>30</ARA_Carapace>
|
||||
</costList>
|
||||
<terrainAffordanceNeeded>Medium</terrainAffordanceNeeded>
|
||||
<placeWorkers>
|
||||
<li>PlaceWorker_Vent</li>
|
||||
</placeWorkers>
|
||||
<drawPlaceWorkersWhileSelected>true</drawPlaceWorkersWhileSelected>
|
||||
<building>
|
||||
<canPlaceOverWall>true</canPlaceOverWall>
|
||||
<canExchangeVacuum>true</canExchangeVacuum>
|
||||
<isAirtight>true</isAirtight>
|
||||
</building>
|
||||
<researchPrerequisites>
|
||||
<li>AirConditioning</li>
|
||||
</researchPrerequisites>
|
||||
<designationCategory>ARA_Buildings</designationCategory>
|
||||
<comps>
|
||||
<!-- 提供开关按钮 -->
|
||||
<li Class="CompProperties_Flickable">
|
||||
<commandTexture>UI/Commands/Vent</commandTexture>
|
||||
<commandLabelKey>CommandDesignateOpenCloseVentLabel</commandLabelKey>
|
||||
<commandDescKey>CommandDesignateOpenCloseVentDesc</commandDescKey>
|
||||
</li>
|
||||
|
||||
<!-- 提供温度控制UI和逻辑 -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_TempControl_Fixed">
|
||||
<!-- 这是设备的热交换功率。数值越大,制冷/制热速度越快。-->
|
||||
<energyPerSecond>34</energyPerSecond>
|
||||
</li>
|
||||
|
||||
<li Class="CompProperties_Breakdownable"/>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
</Defs>
|
||||
16
1.6/1.6/Defs/ThoughtDefs/ARA_Thoughts.xml
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
<ThoughtDef>
|
||||
<defName>ARA_CreepyCrawly</defName>
|
||||
<workerClass>ThoughtWorker_Hediff</workerClass>
|
||||
<hediff>ARA_CreepyCrawly_Hediff</hediff>
|
||||
<validWhileDespawned>true</validWhileDespawned>
|
||||
<stages>
|
||||
<li>
|
||||
<label>原始恐惧</label>
|
||||
<description>受不了了,快把这些虫子从我身边支开!</description>
|
||||
<baseMoodEffect>-30</baseMoodEffect>
|
||||
</li>
|
||||
</stages>
|
||||
</ThoughtDef>
|
||||
</Defs>
|
||||
15
1.6/1.6/Defs/TraitDefs/ARA_Traits.xml
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
<TraitDef>
|
||||
<defName>ARA_CreepyCrawly</defName>
|
||||
<commonality>0</commonality>
|
||||
<degreeDatas>
|
||||
<li>
|
||||
<degree>0</degree>
|
||||
<label>节肢类昆虫</label>
|
||||
<description>{PAWN_nameDef} 是一只巨大的节肢类昆虫,多对附肢、镜面反光的外骨骼和扭动的分节身体足以引发人类心底埋藏的强烈恐惧感。\n\n额,你该不会真以为它们是一群美少女吧?</description>
|
||||
<marketValueFactorOffset>-1</marketValueFactorOffset>
|
||||
</li>
|
||||
</degreeDatas>
|
||||
</TraitDef>
|
||||
</Defs>
|
||||
@@ -44,4 +44,15 @@
|
||||
<statFactors>
|
||||
</statFactors>
|
||||
</WeaponTraitDef>
|
||||
<WeaponTraitDef>
|
||||
<defName>ARA_Weapon_ChainReload</defName>
|
||||
<label>生物链式重装填</label>
|
||||
<description>这种武装器官会随着每次攻击释放激素加快代谢速度,从而体现为射击速度和装填速度加快。</description>
|
||||
<commonality>1</commonality>
|
||||
<weaponCategory>ARA_Weapon_Damage_Category</weaponCategory>
|
||||
<statOffsets>
|
||||
</statOffsets>
|
||||
<statFactors>
|
||||
</statFactors>
|
||||
</WeaponTraitDef>
|
||||
</Defs>
|
||||
19
1.6/1.6/Defs/WorldObjectDefs/ARA_Wormhole_WorldObjects.xml
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
<WorldObjectDef>
|
||||
<defName>ARA_TravelingWormhole</defName>
|
||||
<label>掘进中的虫洞</label>
|
||||
<worldObjectClass>ArachnaeSwarm.TravelingWormhole</worldObjectClass>
|
||||
<texture>ArachnaeSwarm/World/WorldObjects/Expanding/ARA_TravelingWormhole</texture>
|
||||
<useDynamicDrawer>true</useDynamicDrawer>
|
||||
<expandingIcon>true</expandingIcon>
|
||||
<expandingIconTexture>ArachnaeSwarm/World/WorldObjects/ARA_TravelingWormhole</expandingIconTexture>
|
||||
<expandingIconPriority>100</expandingIconPriority>
|
||||
<expandMore>true</expandMore>
|
||||
<modExtensions>
|
||||
<li Class="ArachnaeSwarm.DefModExtension_TravelingWormhole">
|
||||
<travelSpeed>10</travelSpeed>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</WorldObjectDef>
|
||||
</Defs>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
|
||||
<WorldObjectDef>
|
||||
<defName>CatastropheMissile_Flying</defName>
|
||||
<label>巡航导弹</label>
|
||||
<worldObjectClass>ArachnaeSwarm.WorldObject_CatastropheMissile</worldObjectClass>
|
||||
<texture>World/WorldObjects/Caravan</texture> <!-- Placeholder texture -->
|
||||
<expandingIcon>true</expandingIcon>
|
||||
<useDynamicDrawer>true</useDynamicDrawer>
|
||||
</WorldObjectDef>
|
||||
|
||||
</Defs>
|
||||
@@ -26,4 +26,5 @@
|
||||
<MessageTrapSprung>{TRAP} 被 {PAWN} 触发!</MessageTrapSprung>
|
||||
<MessageTrapSprung_NoInstigator>{TRAP} 被触发!</MessageTrapSprung_NoInstigator>
|
||||
|
||||
<delivery>{PAWN}生成了{THING}。</delivery>
|
||||
</LanguageData>
|
||||
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<LanguageData>
|
||||
|
||||
<CommandFireGlobal>发射远程打击</CommandFireGlobal>
|
||||
<CommandFireGlobalDesc>选择一个世界地图上的目标进行远程打击。</CommandFireGlobalDesc>
|
||||
|
||||
<CommandFireLocal>发射本地打击</CommandFireLocal>
|
||||
<CommandFireLocalDesc>手动命令炮塔攻击一个本地地图上的目标。</CommandFireLocalDesc>
|
||||
|
||||
<RemoteTargetSet>远程目标已设定:{0}</RemoteTargetSet>
|
||||
<MessageTargetMustBeMap>远程打击的目标必须是一个已探索的地点。</MessageTargetMustBeMap>
|
||||
<NoMissileToLaunch>没有可用的导弹。</NoMissileToLaunch>
|
||||
|
||||
<CommandClearAllTargets>取消所有目标</CommandClearAllTargets>
|
||||
<CommandClearAllTargetsDesc>取消当前设定的所有本地和远程目标。</CommandClearAllTargetsDesc>
|
||||
|
||||
</LanguageData>
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<LanguageData>
|
||||
|
||||
<!-- Commands & Messages -->
|
||||
<CommandDeployWormholePortalB_Pilot>部署虫洞传送门</CommandDeployWormholePortalB_Pilot>
|
||||
<CommandDeployWormholePortalB_PilotDesc>选择一名驾驶员来启动一个B端传送门。</CommandDeployWormholePortalB_PilotDesc>
|
||||
<NoPilotAvailable>没有可用的驾驶员</NoPilotAvailable>
|
||||
<ForceLaunch>无人驾驶发射</ForceLaunch>
|
||||
|
||||
</LanguageData>
|
||||
BIN
About/preview.png
Normal file
|
After Width: | Height: | Size: 768 KiB |
468
CatastropheMissileSilo_Implementation_Plan.md
Normal file
@@ -0,0 +1,468 @@
|
||||
# 天灾导弹防御塔 - C# 实现计划
|
||||
|
||||
本文档包含构建“天灾导弹防御塔”所需的全部C#类的源代码。这些代码基于 `Rimatomics` 的跨地图打击框架,并与我们自己的 `Projectile_CruiseMissile` 弹头相结合。
|
||||
|
||||
---
|
||||
|
||||
## 1. 建筑类: `Building_CatastropheMissileSilo.cs`
|
||||
|
||||
**路径**: `Source/ArachnaeSwarm/Buildings/Building_CatastropheMissileSilo.cs`
|
||||
|
||||
**功能**: 这是导弹发射井的建筑本体,负责处理玩家的瞄准指令。它几乎是 `Building_Railgun` 的翻版,但进行了一些重命名和命名空间调整。
|
||||
|
||||
```csharp
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using RimWorld;
|
||||
using RimWorld.Planet;
|
||||
using UnityEngine;
|
||||
using Verse;
|
||||
using Verse.Sound;
|
||||
|
||||
namespace ArachnaeSwarm
|
||||
{
|
||||
[StaticConstructorOnStartup]
|
||||
public class Building_CatastropheMissileSilo : Building
|
||||
{
|
||||
public CompPowerTrader powerComp;
|
||||
public CompRefuelable refuelableComp;
|
||||
public Verb_LaunchCatastropheMissile verb;
|
||||
|
||||
private GlobalTargetInfo longTargetInt;
|
||||
private List<Building_CatastropheMissileSilo> selectedSilos;
|
||||
|
||||
public static readonly Texture2D FireMissionTex = ContentFinder<Texture2D>.Get("UI/Commands/Attack", true);
|
||||
|
||||
public override void SpawnSetup(Map map, bool respawningAfterLoad)
|
||||
{
|
||||
base.SpawnSetup(map, respawningAfterLoad);
|
||||
this.powerComp = base.GetComp<CompPowerTrader>();
|
||||
this.refuelableComp = base.GetComp<CompRefuelable>();
|
||||
// This is a placeholder, verb will be initialized from the weapon ThingDef
|
||||
this.verb = (Verb_LaunchCatastropheMissile)Activator.CreateInstance(typeof(Verb_LaunchCatastropheMissile));
|
||||
this.verb.caster = this;
|
||||
}
|
||||
|
||||
public override void ExposeData()
|
||||
{
|
||||
base.ExposeData();
|
||||
Scribe_TargetInfo.Look(ref this.longTargetInt, "longTargetInt");
|
||||
}
|
||||
|
||||
public override IEnumerable<Gizmo> GetGizmos()
|
||||
{
|
||||
foreach (Gizmo c in base.GetGizmos())
|
||||
{
|
||||
yield return c;
|
||||
}
|
||||
|
||||
Command_Action launch = new Command_Action
|
||||
{
|
||||
defaultLabel = "CommandFireMission".Translate(),
|
||||
defaultDesc = "CommandFireMissionDesc".Translate(),
|
||||
icon = FireMissionTex,
|
||||
action = new Action(this.StartChoosingDestination)
|
||||
};
|
||||
|
||||
if (!CanFire())
|
||||
{
|
||||
launch.Disable("CannotFire".Translate() + ": " + GetDisabledReason());
|
||||
}
|
||||
yield return launch;
|
||||
}
|
||||
|
||||
private bool CanFire()
|
||||
{
|
||||
return powerComp.PowerOn && refuelableComp.HasFuel;
|
||||
}
|
||||
|
||||
private string GetDisabledReason()
|
||||
{
|
||||
if (!powerComp.PowerOn) return "NoPower".Translate().CapitalizeFirst();
|
||||
if (!refuelableComp.HasFuel) return "NoFuel".Translate().CapitalizeFirst();
|
||||
return "Unknown";
|
||||
}
|
||||
|
||||
private void StartChoosingDestination()
|
||||
{
|
||||
this.selectedSilos = Find.Selector.SelectedObjects.OfType<Building_CatastropheMissileSilo>().ToList();
|
||||
CameraJumper.TryJump(CameraJumper.GetWorldTarget(this), CameraJumper.MovementMode.Pan);
|
||||
Find.WorldSelector.ClearSelection();
|
||||
|
||||
Find.WorldTargeter.BeginTargeting(
|
||||
new Func<GlobalTargetInfo, bool>(this.ChoseWorldTarget),
|
||||
true, // Can target self
|
||||
FireMissionTex,
|
||||
true,
|
||||
() => GenDraw.DrawWorldRadiusRing(this.Map.Tile, this.MaxWorldRange),
|
||||
(GlobalTargetInfo t) => "Select target",
|
||||
null, null, true);
|
||||
}
|
||||
|
||||
private bool ChoseWorldTarget(GlobalTargetInfo target)
|
||||
{
|
||||
if (!target.IsValid)
|
||||
{
|
||||
Messages.Message("MessageTargetInvalid".Translate(), MessageTypeDefOf.RejectInput, true);
|
||||
return false;
|
||||
}
|
||||
|
||||
int distance = Find.WorldGrid.TraversalDistanceBetween(this.Map.Tile, target.Tile, true, int.MaxValue);
|
||||
if (distance > this.MaxWorldRange)
|
||||
{
|
||||
Messages.Message("MessageTargetBeyondMaximumRange".Translate(), this, MessageTypeDefOf.RejectInput, true);
|
||||
return false;
|
||||
}
|
||||
|
||||
MapParent mapParent = target.WorldObject as MapParent;
|
||||
if (mapParent != null && mapParent.HasMap)
|
||||
{
|
||||
Map targetMap = mapParent.Map;
|
||||
var originalMap = base.Map;
|
||||
|
||||
Action onFinished = () => {
|
||||
if (Current.Game.CurrentMap != originalMap) Current.Game.CurrentMap = originalMap;
|
||||
};
|
||||
|
||||
Current.Game.CurrentMap = targetMap;
|
||||
|
||||
Find.Targeter.BeginTargeting(
|
||||
new TargetingParameters { canTargetLocations = true },
|
||||
(LocalTargetInfo localTarget) =>
|
||||
{
|
||||
foreach (var silo in this.selectedSilos)
|
||||
{
|
||||
silo.FireMission(targetMap.Tile, localTarget, targetMap.uniqueID);
|
||||
}
|
||||
},
|
||||
null, onFinished, FireMissionTex, true);
|
||||
|
||||
return true;
|
||||
}
|
||||
else // For non-map targets (caravans, sites)
|
||||
{
|
||||
foreach (var silo in this.selectedSilos)
|
||||
{
|
||||
silo.FireMission(target.Tile, new LocalTargetInfo(target.Cell), -1);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public void FireMission(int tile, LocalTargetInfo targ, int mapId)
|
||||
{
|
||||
if (!targ.IsValid)
|
||||
{
|
||||
this.longTargetInt = GlobalTargetInfo.Invalid;
|
||||
return;
|
||||
}
|
||||
|
||||
Map targetMap = (mapId != -1) ? Find.Maps.FirstOrDefault(m => m.uniqueID == mapId) : null;
|
||||
this.longTargetInt = new GlobalTargetInfo(targ.Cell, targetMap);
|
||||
|
||||
this.verb.verbProps.defaultProjectile.GetModExtension<CruiseMissileProperties>(); // Ensure verb has properties.
|
||||
this.verb.TryStartCastOn(this.longTargetInt);
|
||||
}
|
||||
|
||||
public int MaxWorldRange => 99999; // Effectively global range
|
||||
|
||||
public GlobalTargetInfo LongTarget => longTargetInt;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. 动作类: `Verb_LaunchCatastropheMissile.cs`
|
||||
|
||||
**路径**: `Source/ArachnaeSwarm/Verbs/Verb_LaunchCatastropheMissile.cs`
|
||||
|
||||
**功能**: 定义发射动作。它会创建 `WorldObject_CatastropheMissile` 并将其发射到世界地图。
|
||||
|
||||
```csharp
|
||||
using RimWorld;
|
||||
using RimWorld.Planet;
|
||||
using UnityEngine;
|
||||
using Verse;
|
||||
|
||||
namespace ArachnaeSwarm
|
||||
{
|
||||
public class Verb_LaunchCatastropheMissile : Verb_Shoot
|
||||
{
|
||||
public override bool CanHitTargetFrom(IntVec3 root, LocalTargetInfo targ)
|
||||
{
|
||||
return true; // Always true for world-map targeting
|
||||
}
|
||||
|
||||
protected override bool TryCastShot()
|
||||
{
|
||||
Building_CatastropheMissileSilo silo = this.caster as Building_CatastropheMissileSilo;
|
||||
if (silo == null || !silo.LongTarget.IsValid) return false;
|
||||
|
||||
WorldObject_CatastropheMissile missile = (WorldObject_CatastropheMissile)WorldObjectMaker.MakeWorldObject(
|
||||
DefDatabase<WorldObjectDef>.GetNamed("CatastropheMissile_Flying")
|
||||
);
|
||||
|
||||
missile.Tile = silo.Map.Tile;
|
||||
missile.destinationTile = silo.LongTarget.Tile;
|
||||
missile.destinationCell = silo.LongTarget.Cell;
|
||||
missile.Projectile = this.verbProps.defaultProjectile;
|
||||
|
||||
Find.WorldObjects.Add(missile);
|
||||
|
||||
// Consume fuel
|
||||
silo.refuelableComp.ConsumeFuel(silo.refuelableComp.Props.fuelConsumptionRate);
|
||||
|
||||
// Visual/Sound effects at launch site
|
||||
MoteMaker.MakeStaticMote(silo.TrueCenter(), silo.Map, ThingDefOf.Mote_ExplosionFlash, 10f);
|
||||
SoundDefOf.RocketLaunch.PlayOneShot(new TargetInfo(silo.Position, silo.Map));
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. 飞行物类: `WorldObject_CatastropheMissile.cs`
|
||||
|
||||
**路径**: `Source/ArachnaeSwarm/World/WorldObject_CatastropheMissile.cs`
|
||||
|
||||
**功能**: 模拟导弹在世界地图上的飞行,并在抵达时生成 `Projectile_CruiseMissile`。
|
||||
|
||||
```csharp
|
||||
using RimWorld.Planet;
|
||||
using UnityEngine;
|
||||
using Verse;
|
||||
using RimWorld;
|
||||
|
||||
namespace ArachnaeSwarm
|
||||
{
|
||||
public class WorldObject_CatastropheMissile : WorldObject
|
||||
{
|
||||
public int destinationTile = -1;
|
||||
public IntVec3 destinationCell = IntVec3.Invalid;
|
||||
public ThingDef Projectile;
|
||||
|
||||
private int initialTile = -1;
|
||||
private float traveledPct;
|
||||
private const float TravelSpeed = 0.0002f; // Faster than sabot
|
||||
|
||||
public override void ExposeData()
|
||||
{
|
||||
base.ExposeData();
|
||||
Scribe_Values.Look(ref destinationTile, "destinationTile", 0);
|
||||
Scribe_Values.Look(ref destinationCell, "destinationCell");
|
||||
Scribe_Defs.Look(ref Projectile, "Projectile");
|
||||
Scribe_Values.Look(ref initialTile, "initialTile", 0);
|
||||
Scribe_Values.Look(ref traveledPct, "traveledPct", 0f);
|
||||
}
|
||||
|
||||
public override void PostAdd()
|
||||
{
|
||||
base.PostAdd();
|
||||
this.initialTile = this.Tile;
|
||||
}
|
||||
|
||||
private Vector3 StartPos => Find.WorldGrid.GetTileCenter(this.initialTile);
|
||||
private Vector3 EndPos => Find.WorldGrid.GetTileCenter(this.destinationTile);
|
||||
|
||||
public override Vector3 DrawPos => Vector3.Slerp(StartPos, EndPos, traveledPct);
|
||||
|
||||
public override void Tick()
|
||||
{
|
||||
base.Tick();
|
||||
traveledPct += TravelSpeed / GenMath.SphericalDistance(StartPos.normalized, EndPos.normalized);
|
||||
|
||||
if (traveledPct >= 1f)
|
||||
{
|
||||
Arrived();
|
||||
}
|
||||
}
|
||||
|
||||
private void Arrived()
|
||||
{
|
||||
Map targetMap = Current.Game.FindMap(this.destinationTile);
|
||||
if (targetMap != null)
|
||||
{
|
||||
// Target is a loaded map, spawn the projectile to hit it
|
||||
IntVec3 entryCell = Find.WorldGrid.GetRotatedPos(new IntVec2(0, 1), targetMap.info.parent.Rotation).ToIntVec3() * (targetMap.Size.x / 2);
|
||||
entryCell.y = 0;
|
||||
entryCell.z += targetMap.Size.z / 2;
|
||||
|
||||
Projectile_CruiseMissile missile = (Projectile_CruiseMissile)GenSpawn.Spawn(this.Projectile, entryCell, targetMap, WipeMode.Vanish);
|
||||
missile.Launch(this, this.destinationCell, this.destinationCell, ProjectileHitFlags.IntendedTarget);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Target is not a loaded map (e.g., caravan, site), do direct damage
|
||||
GenExplosion.DoExplosion(
|
||||
this.destinationCell,
|
||||
null, // No map
|
||||
this.Projectile.GetModExtension<CruiseMissileProperties>()?.customExplosionRadius ?? 5f,
|
||||
this.Projectile.GetModExtension<CruiseMissileProperties>()?.customDamageDef ?? DamageDefOf.Bomb,
|
||||
null, // Launcher
|
||||
this.Projectile.GetModExtension<CruiseMissileProperties>()?.customDamageAmount ?? 50
|
||||
);
|
||||
}
|
||||
|
||||
Find.WorldObjects.Remove(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
---
|
||||
|
||||
## 4. XML 定义
|
||||
|
||||
以下是实现天灾导弹防御塔所需的所有XML定义。
|
||||
|
||||
### 4.1 建筑定义: `ThingDef_Building_CatastropheMissileSilo.xml`
|
||||
|
||||
**路径**: `1.6/Defs/ThingDefs_Buildings/ThingDef_Building_CatastropheMissileSilo.xml`
|
||||
|
||||
**功能**: 定义导弹发射井这个建筑,链接到 `Building_CatastropheMissileSilo` 类,并配置其电力、燃料和内置武器。
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
|
||||
<ThingDef ParentName="BuildingBase">
|
||||
<defName>CatastropheMissileSilo</defName>
|
||||
<label>天灾导弹发射井</label>
|
||||
<description>一个重型加固的导弹发射设施,能够将“天灾”级巡航导弹发射到全球任何一个角落。需要大量的电力和化学燃料来运作。</description>
|
||||
<thingClass>ArachnaeSwarm.Building_CatastropheMissileSilo</thingClass>
|
||||
<graphicData>
|
||||
<texPath>Things/Building/Security/ShipMissileTurret</texPath> <!-- Placeholder texture -->
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
<drawSize>(3,3)</drawSize>
|
||||
</graphicData>
|
||||
<size>(3,3)</size>
|
||||
<statBases>
|
||||
<MaxHitPoints>500</MaxHitPoints>
|
||||
<WorkToBuild>8000</WorkToBuild>
|
||||
<Mass>1000</Mass>
|
||||
<Flammability>0.5</Flammability>
|
||||
</statBases>
|
||||
<costList>
|
||||
<Steel>400</Steel>
|
||||
<Plasteel>150</Plasteel>
|
||||
<ComponentIndustrial>10</ComponentIndustrial>
|
||||
<ComponentSpacer>4</ComponentSpacer>
|
||||
</costList>
|
||||
<comps>
|
||||
<li Class="CompProperties_Power">
|
||||
<compClass>CompPowerTrader</compClass>
|
||||
<basePowerConsumption>500</basePowerConsumption>
|
||||
</li>
|
||||
<li Class="CompProperties_Refuelable">
|
||||
<fuelConsumptionRate>10</fuelConsumptionRate> <!-- How much fuel per launch -->
|
||||
<fuelCapacity>10.0</fuelCapacity>
|
||||
<fuelFilter>
|
||||
<thingDefs>
|
||||
<li>Chemfuel</li>
|
||||
</thingDefs>
|
||||
</fuelFilter>
|
||||
<showFuelGizmo>true</showFuelGizmo>
|
||||
</li>
|
||||
</comps>
|
||||
<verbs>
|
||||
<!-- This defines the weapon itself -->
|
||||
<li>
|
||||
<verbClass>ArachnaeSwarm.Verb_LaunchCatastropheMissile</verbClass>
|
||||
<hasStandardCommand>false</hasStandardCommand>
|
||||
<defaultProjectile>Projectile_CatastropheMissile</defaultProjectile>
|
||||
</li>
|
||||
</verbs>
|
||||
<building>
|
||||
<ai_combatDangerous>true</ai_combatDangerous>
|
||||
</building>
|
||||
<researchPrerequisites>
|
||||
<li>ShipbuildingBasics</li> <!-- Placeholder research -->
|
||||
</researchPrerequisites>
|
||||
</ThingDef>
|
||||
|
||||
</Defs>
|
||||
```
|
||||
|
||||
### 4.2 武器/投射物定义: `ThingDef_Projectile_CatastropheMissile.xml`
|
||||
|
||||
**路径**: `1.6/Defs/ThingDefs_Misc/ThingDef_Projectile_CatastropheMissile.xml`
|
||||
|
||||
**功能**: 定义导弹本身 (`Projectile_CatastropheMissile`) 和它作为投射物的行为 (`ThingDef` of `Projectile_CruiseMissile`)。这里是配置集束弹头和弹道参数的地方。
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
|
||||
<ThingDef ParentName="BaseBullet">
|
||||
<defName>Projectile_CatastropheMissile</defName>
|
||||
<label>“天灾”巡航导弹</label>
|
||||
<thingClass>ArachnaeSwarm.Projectile_CruiseMissile</thingClass>
|
||||
<graphicData>
|
||||
<texPath>Things/Projectile/Missile</texPath> <!-- Placeholder texture -->
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
</graphicData>
|
||||
<projectile>
|
||||
<damageDef>Bomb</damageDef>
|
||||
<damageAmountBase>200</damageAmountBase>
|
||||
<speed>10</speed> <!-- This speed is relative to the bezier curve, not linear -->
|
||||
<explosionRadius>5.9</explosionRadius>
|
||||
<soundExplode>MortarBomb_Explode</soundExplode>
|
||||
</projectile>
|
||||
|
||||
<modExtensions>
|
||||
<li Class="ArachnaeSwarm.CruiseMissileProperties">
|
||||
<!-- Main Explosion -->
|
||||
<customDamageDef>Bomb</customDamageDef>
|
||||
<customDamageAmount>150</customDamageAmount>
|
||||
<customExplosionRadius>5.9</customExplosionRadius>
|
||||
<customSoundExplode>MortarBomb_Explode</customSoundExplode>
|
||||
|
||||
<!-- Sub Explosions (Cluster) -->
|
||||
<useSubExplosions>true</useSubExplosions>
|
||||
<subExplosionCount>8</subExplosionCount>
|
||||
<subExplosionRadius>2.9</subExplosionRadius>
|
||||
<subExplosionDamage>50</subExplosionDamage>
|
||||
<subExplosionSpread>15</subExplosionSpread>
|
||||
<subDamageDef>Bomb</subDamageDef>
|
||||
<subSoundExplode>Fragment_Explode</subSoundExplode>
|
||||
|
||||
<!-- Trajectory Parameters -->
|
||||
<bezierArcHeightFactor>0.05</bezierArcHeightFactor>
|
||||
<bezierMinArcHeight>5</bezierMinArcHeight>
|
||||
<bezierMaxArcHeight>20</bezierMaxArcHeight>
|
||||
<bezierHorizontalOffsetFactor>0.1</bezierHorizontalOffsetFactor>
|
||||
<bezierSideOffsetFactor>0.2</bezierSideOffsetFactor>
|
||||
<bezierRandomOffsetScale>0.5</bezierRandomOffsetScale>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</ThingDef>
|
||||
|
||||
</Defs>
|
||||
```
|
||||
|
||||
### 4.3 飞行物定义: `WorldObjectDef_CatastropheMissile.xml`
|
||||
|
||||
**路径**: `1.6/Defs/WorldObjectDefs/WorldObjectDef_CatastropheMissile.xml`
|
||||
|
||||
**功能**: 定义在世界地图上飞行的那个导弹实体。
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
|
||||
<WorldObjectDef>
|
||||
<defName>CatastropheMissile_Flying</defName>
|
||||
<label>巡航导弹</label>
|
||||
<worldObjectClass>ArachnaeSwarm.WorldObject_CatastropheMissile</worldObjectClass>
|
||||
<texture>World/WorldObjects/Missile</texture> <!-- Placeholder texture -->
|
||||
<expandingIcon>true</expandingIcon>
|
||||
<canBeTargeted>false</canBeTargeted>
|
||||
<canHavePlayerEnemyRelation>false</canHavePlayerEnemyRelation>
|
||||
<useDynamicDrawer>true</useDynamicDrawer>
|
||||
</WorldObjectDef>
|
||||
|
||||
</Defs>
|
||||
```
|
||||
|
After Width: | Height: | Size: 197 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 40 KiB |
BIN
Content/Textures/ArachnaeSwarm/Building/ARA_Wormhole_A.png
Normal file
|
After Width: | Height: | Size: 164 KiB |
BIN
Content/Textures/ArachnaeSwarm/Building/ARA_Wormhole_B.png
Normal file
|
After Width: | Height: | Size: 141 KiB |
BIN
Content/Textures/ArachnaeSwarm/Building/Nutrition_Pie.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
Content/Textures/ArachnaeSwarm/Item/ARA_Medicine.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
Content/Textures/ArachnaeSwarm/Item/ARA_PheromoneSolvent.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
Content/Textures/ArachnaeSwarm/Mote/ARA_GunTail_Plasma.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
Content/Textures/ArachnaeSwarm/Mote/ARA_Lighting_Beam.png
Normal file
|
After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
BIN
Content/Textures/ArachnaeSwarm/Storyteller.rar
Normal file
BIN
Content/Textures/ArachnaeSwarm/Storyteller/ARA_Lyne.png
Normal file
|
After Width: | Height: | Size: 3.2 MiB |
BIN
Content/Textures/ArachnaeSwarm/Storyteller/ARA_Lyne_TINY.png
Normal file
|
After Width: | Height: | Size: 373 KiB |
|
After Width: | Height: | Size: 262 KiB |
|
After Width: | Height: | Size: 262 KiB |
|
After Width: | Height: | Size: 349 KiB |
|
After Width: | Height: | Size: 344 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 117 B |
|
After Width: | Height: | Size: 117 B |
|
After Width: | Height: | Size: 117 B |
BIN
Content/Textures/ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Cloth.png
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
BIN
Content/Textures/ArachnaeSwarm/UI/Abilities/ARA_TumorSpew.png
Normal file
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 34 KiB |
BIN
Content/Textures/ArachnaeSwarm/Weapon/ARA_Weapon_Empty.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
Content/Textures/ArachnaeSwarm/Wire.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 5.9 KiB |
743
Railgun_System_Documentation.md
Normal file
@@ -0,0 +1,743 @@
|
||||
# Rimatomics 电磁炮战略打击系统技术文档
|
||||
|
||||
## 1. 引言
|
||||
|
||||
本文档旨在详细解析 Rimatomics Mod 中的电磁炮(Railgun)远程战略打击系统的实现机制。该系统允许玩家对世界地图上的任意(已加载的)地图进行精确的火力投送,是游戏中一种强大的后期战略武器。
|
||||
|
||||
我们将通过分析其三个核心 C# 类:`Building_Railgun`、`Verb_Railgun` 和 `WorldObject_Sabot`,来深入理解其功能、设计模式以及类之间的交互。
|
||||
|
||||
## 2. 核心组件概览
|
||||
|
||||
整个系统由三个主要部分协同工作,各司其职:
|
||||
|
||||
* **`Building_Railgun`**: 炮塔建筑本身,是整个系统的用户交互入口和武器平台。它负责处理玩家的瞄准指令,管理武器的属性(如射程、精度),并发起射击流程。
|
||||
* **`Verb_Railgun`**: 定义了电磁炮的“射击”这一具体动作。它能够智能区分常规的本地射击和需要跨地图飞行的远程打击,并根据不同模式执行相应的逻辑。
|
||||
* **`WorldObject_Sabot`**: 一个在世界地图上存在的临时对象,用于模拟炮弹在飞向目标过程中的状态。它负责处理跨地图飞行、轨迹计算,并在抵达目标后触发最终的命中效果。
|
||||
|
||||
## 3. 类详解
|
||||
|
||||
### 3.1 `Building_Railgun`
|
||||
|
||||
`Building_Railgun` 是电磁炮塔的建筑类,继承自 `Building_EnergyWeapon`。它是玩家能直接看到并与之交互的实体。
|
||||
|
||||
#### 功能概述
|
||||
|
||||
此类作为系统的交互枢纽,主要负责以下功能:
|
||||
* **提供玩家操作界面**:通过 Gizmo(操作按钮)让玩家启动“火控任务”。
|
||||
* **处理目标选择流程**:引导玩家从世界地图选择目标区域,再到目标地图内选择精确弹着点。
|
||||
* **管理武器状态与属性**:存储远程目标信息,并根据已安装的升级动态计算射程、散布等属性。
|
||||
* **发起射击指令**:在获取有效目标后,命令自身的武器组件(Verb)开火。
|
||||
|
||||
#### 源代码
|
||||
|
||||
```csharp
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Multiplayer.API;
|
||||
using RimWorld;
|
||||
using RimWorld.Planet;
|
||||
using UnityEngine;
|
||||
using Verse;
|
||||
using Verse.Sound;
|
||||
|
||||
namespace Rimatomics
|
||||
{
|
||||
[StaticConstructorOnStartup]
|
||||
public class Building_Railgun : Building_EnergyWeapon
|
||||
{
|
||||
public override bool TurretBased
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override Vector3 TipOffset
|
||||
{
|
||||
get
|
||||
{
|
||||
Vector3 pos = this.DrawPos;
|
||||
Vector3 vecOffset = new Vector3(0f, 1f, 5f);
|
||||
vecOffset = vecOffset.RotatedBy(this.TurretRotation);
|
||||
return pos + vecOffset;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool CanFireWhileRoofed()
|
||||
{
|
||||
// For remote fire missions, cannot be roofed. For local targets, it's allowed.
|
||||
if (this.longTargetInt == GlobalTargetInfo.Invalid)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return !base.Position.Roofed(base.Map);
|
||||
}
|
||||
|
||||
public float RangeToWorldTarget
|
||||
{
|
||||
get
|
||||
{
|
||||
return (float)Find.WorldGrid.TraversalDistanceBetween(base.Map.Tile, this.longTarget.Tile, true, int.MaxValue, false);
|
||||
}
|
||||
}
|
||||
|
||||
public void TryChamberRound()
|
||||
{
|
||||
if (this.magazine.NullOrEmpty<ThingDef>())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
CompChangeableProjectile comp = this.gun.TryGetComp<CompChangeableProjectile>();
|
||||
if (!comp.Loaded)
|
||||
{
|
||||
comp.LoadShell(this.magazine.FirstOrDefault<ThingDef>(), 1);
|
||||
this.magazine.RemoveAt(0);
|
||||
}
|
||||
}
|
||||
|
||||
public override void MuzzleFlash()
|
||||
{
|
||||
Mote flash = (Mote)ThingMaker.MakeThing(Building_Railgun.Mote_RailgunMuzzleFlash, null);
|
||||
flash.Scale = 5f;
|
||||
flash.exactRotation = this.TurretRotation;
|
||||
flash.exactPosition = this.TipOffset;
|
||||
GenSpawn.Spawn(flash, base.Position, base.Map, WipeMode.Vanish);
|
||||
|
||||
Vector3 vecOffset = new Vector3(1f, 1f, -1f).RotatedBy(this.TurretRotation);
|
||||
FleckMaker.ThrowSmoke(this.DrawPos + vecOffset, base.Map, 1.5f);
|
||||
|
||||
Vector3 vecOffset2 = new Vector3(-1f, 1f, -1f).RotatedBy(this.TurretRotation);
|
||||
FleckMaker.ThrowSmoke(this.DrawPos + vecOffset2, base.Map, 1.5f);
|
||||
}
|
||||
|
||||
public override IEnumerable<Gizmo> GetGizmos()
|
||||
{
|
||||
foreach (Gizmo c in base.GetGizmos())
|
||||
{
|
||||
yield return c;
|
||||
}
|
||||
|
||||
Command_Action launch = new Command_Action
|
||||
{
|
||||
defaultLabel = "critCommandFireMission".Translate(),
|
||||
defaultDesc = "critCommandFireMissionDesc".Translate(),
|
||||
icon = Building_Railgun.FireMissionTex,
|
||||
action = new Action(this.StartChoosingDestination)
|
||||
};
|
||||
|
||||
if (base.Spawned && base.Position.Roofed(base.Map))
|
||||
{
|
||||
launch.Disable("CannotFire".Translate() + ": " + "Roofed".Translate().CapitalizeFirst());
|
||||
}
|
||||
yield return launch;
|
||||
}
|
||||
|
||||
private void StartChoosingDestination()
|
||||
{
|
||||
// Record all selected railguns to fire them simultaneously
|
||||
this.selectedRailguns = Find.Selector.SelectedObjects.OfType<Building_Railgun>().ToList<Building_Railgun>();
|
||||
|
||||
CameraJumper.TryJump(CameraJumper.GetWorldTarget(this), CameraJumper.MovementMode.Pan);
|
||||
Find.WorldSelector.ClearSelection();
|
||||
|
||||
int tile = base.Map.Tile;
|
||||
Find.WorldTargeter.BeginTargeting(
|
||||
new Func<GlobalTargetInfo, bool>(this.ChoseWorldTarget), // Callback when target is chosen
|
||||
false,
|
||||
Building_Railgun.FireMissionTex,
|
||||
true,
|
||||
() => GenDraw.DrawWorldRadiusRing(tile, this.WorldRange, null), // Draws the range ring
|
||||
null, null, null, false);
|
||||
}
|
||||
|
||||
public static TargetingParameters ForFireMission()
|
||||
{
|
||||
// In multiplayer, disallow targeting mobile pawns to prevent desync issues.
|
||||
if (MP.IsInMultiplayer)
|
||||
{
|
||||
return new TargetingParameters
|
||||
{
|
||||
canTargetPawns = false,
|
||||
canTargetBuildings = false,
|
||||
canTargetLocations = true
|
||||
};
|
||||
}
|
||||
|
||||
return new TargetingParameters
|
||||
{
|
||||
canTargetPawns = true,
|
||||
canTargetBuildings = true,
|
||||
canTargetLocations = true
|
||||
};
|
||||
}
|
||||
|
||||
private bool ChoseWorldTarget(GlobalTargetInfo target)
|
||||
{
|
||||
if (!target.IsValid)
|
||||
{
|
||||
Messages.Message("MessageRailgunTargetInvalid".Translate(), MessageTypeDefOf.RejectInput, true);
|
||||
return false;
|
||||
}
|
||||
|
||||
int distance = Find.WorldGrid.TraversalDistanceBetween(base.Map.Tile, target.Tile, true, int.MaxValue, false);
|
||||
if (distance > this.WorldRange)
|
||||
{
|
||||
Messages.Message("MessageTargetBeyondMaximumRange".Translate(), this, MessageTypeDefOf.RejectInput, true);
|
||||
return false;
|
||||
}
|
||||
|
||||
MapParent mapParent = target.WorldObject as MapParent;
|
||||
if (mapParent != null && mapParent.HasMap)
|
||||
{
|
||||
if (mapParent.Map == base.Map)
|
||||
{
|
||||
Messages.Message("MessageRailgunCantTargetMyMap".Translate(), MessageTypeDefOf.RejectInput, true);
|
||||
return false;
|
||||
}
|
||||
|
||||
// --- Refactored Code Block ---
|
||||
// This block handles the logic for fine-grained targeting within the destination map.
|
||||
Map targetMap = mapParent.Map;
|
||||
var originalMap = base.Map;
|
||||
|
||||
// Action to execute when targeting is finished or cancelled.
|
||||
Action onFinished = () => {
|
||||
if (Current.Game.CurrentMap != originalMap)
|
||||
{
|
||||
Current.Game.CurrentMap = originalMap;
|
||||
}
|
||||
};
|
||||
|
||||
// Switch to the target map to allow the player to pick a precise location.
|
||||
Current.Game.CurrentMap = targetMap;
|
||||
|
||||
Find.Targeter.BeginTargeting(
|
||||
Building_Railgun.ForFireMission(),
|
||||
(LocalTargetInfo localTarget) => // Lambda for when a local target is selected
|
||||
{
|
||||
// Assign the fire mission to all selected railguns.
|
||||
foreach (Building_Railgun railgun in this.selectedRailguns)
|
||||
{
|
||||
railgun.FireMission(targetMap.Tile, localTarget, targetMap.uniqueID);
|
||||
}
|
||||
},
|
||||
null, // Action on highlight
|
||||
onFinished, // Action on finish/cancel
|
||||
Building_Railgun.FireMissionTex,
|
||||
true);
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Messages.Message("MessageRailgunNeedsMap".Translate(), MessageTypeDefOf.RejectInput, true);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
[SyncMethod(SyncContext.None)]
|
||||
public void FireMission(int tile, LocalTargetInfo targ, int map)
|
||||
{
|
||||
if (!targ.IsValid)
|
||||
{
|
||||
this.longTargetInt = GlobalTargetInfo.Invalid;
|
||||
return;
|
||||
}
|
||||
|
||||
GlobalTargetInfo newtarget = targ.ToGlobalTargetInfo(Find.Maps.FirstOrDefault((Map x) => x.uniqueID == map));
|
||||
int distance = Find.WorldGrid.TraversalDistanceBetween(base.Map.Tile, tile, true, int.MaxValue, false);
|
||||
|
||||
if (distance > this.WorldRange)
|
||||
{
|
||||
Messages.Message("MessageTargetBeyondMaximumRange".Translate(), this, MessageTypeDefOf.RejectInput, true);
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.holdFire)
|
||||
{
|
||||
Messages.Message("MessageTurretWontFireBecauseHoldFire".Translate(this.def.label), this, MessageTypeDefOf.RejectInput, true);
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.longTargetInt != newtarget)
|
||||
{
|
||||
this.longTargetInt = newtarget;
|
||||
if (this.burstCooldownTicksLeft <= 0)
|
||||
{
|
||||
this.TryStartShootSomething();
|
||||
}
|
||||
SoundDefOf.TurretAcquireTarget.PlayOneShot(new TargetInfo(base.Position, base.Map, false));
|
||||
}
|
||||
}
|
||||
|
||||
public override float PulseSize
|
||||
{
|
||||
get
|
||||
{
|
||||
float f = base.GunProps.EnergyWep.PulseSizeScaled;
|
||||
if (this.UG.HasUpgrade(DubDef.MEPS))
|
||||
{
|
||||
f *= 1.15f;
|
||||
}
|
||||
if (this.UG.HasUpgrade(DubDef.ERS))
|
||||
{
|
||||
f *= 0.85f; // Equivalent to f -= 0.15f * f
|
||||
}
|
||||
return f;
|
||||
}
|
||||
}
|
||||
|
||||
public override int WorldRange
|
||||
{
|
||||
get
|
||||
{
|
||||
// In space (SoS2 compatibility), range is unlimited.
|
||||
if (base.Map != null && this.space != null && base.Map.Biome == this.space)
|
||||
{
|
||||
return 99999;
|
||||
}
|
||||
|
||||
int range = base.GunProps.EnergyWep.WorldRange;
|
||||
if (this.UG.HasUpgrade(DubDef.TargetingChip))
|
||||
{
|
||||
range += 10;
|
||||
}
|
||||
if (this.UG.HasUpgrade(DubDef.MEPS))
|
||||
{
|
||||
range += 10;
|
||||
}
|
||||
return range;
|
||||
}
|
||||
}
|
||||
|
||||
public int spread
|
||||
{
|
||||
get
|
||||
{
|
||||
int v = 6;
|
||||
if (this.UG.HasUpgrade(DubDef.TargetingChip))
|
||||
{
|
||||
v -= 3;
|
||||
}
|
||||
return v;
|
||||
}
|
||||
}
|
||||
|
||||
public static readonly Texture2D FireMissionTex = ContentFinder<Texture2D>.Get("Rimatomics/UI/FireMission", true);
|
||||
public static ThingDef Mote_RailgunMuzzleFlash = ThingDef.Named("Mote_RailgunMuzzleFlash");
|
||||
private List<Building_Railgun> selectedRailguns;
|
||||
public BiomeDef space = DefDatabase<BiomeDef>.GetNamed("OuterSpaceBiome", false);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 关键方法和属性详解
|
||||
|
||||
* **`GetGizmos()`**: 为炮塔添加“火控任务” (Fire Mission) 按钮,这是远程打击流程的起点。如果炮塔被屋顶遮挡,该按钮会被禁用。
|
||||
* **`StartChoosingDestination()`**: 响应按钮点击,将视角切换到世界地图,并启动一个带射程圈的目标选择器,让玩家选择目标地块。它支持多炮塔同时选择。
|
||||
* **`ChoseWorldTarget(GlobalTargetInfo target)`**: 当玩家在世界地图上选择目标后的回调函数。它会进行一系列合法性验证(如射程、是否为当前地图等),如果通过,则将视角切换到目标地图,让玩家选择精确落点。
|
||||
* **`FireMission(int tile, LocalTargetInfo targ, int map)`**: 这是目标选择的最后一步。它将最终的、精确的目标信息(包含地块ID和地图内坐标)存入 `longTargetInt` 变量,并立即尝试触发射击 (`TryStartShootSomething()`)。该方法支持多人游戏同步。
|
||||
* **`WorldRange` (get)**: 一个计算属性,返回炮塔在世界地图上的最大射程。基础射程定义在XML中,并会受到 `TargetingChip` 和 `MEPS` 等升级的加成。
|
||||
* **`spread` (get)**: 计算属性,返回炮弹的散布半径。`TargetingChip` 升级可以减小此值,提高精度。
|
||||
* **`CanFireWhileRoofed()`**: 重写方法,规定在执行远程打击 (`longTargetInt` 有效) 时,炮塔不能处于屋顶之下。
|
||||
|
||||
### 3.2 `Verb_Railgun`
|
||||
|
||||
`Verb_Railgun` 继承自 `Verb_RimatomicsVerb`,它定义了电磁炮武器的“射击”这个核心动作。它不处理玩家交互,只负责执行射击逻辑。
|
||||
|
||||
#### 功能概述
|
||||
|
||||
这个类的主要职责是根据炮塔当前的目标状态(本地目标 vs 远程目标),决定执行哪种射击模式。
|
||||
|
||||
* **动态炮弹选择**: 根据 `CompChangeableProjectile` 组件的状态,决定是发射已装填的特殊炮弹还是默认炮弹。
|
||||
* **射击模式分发**: 检查是否存在远程目标 (`longTarget`),如果存在,则执行“火控任务”流程;否则,执行标准的本地射击。
|
||||
* **远程打击发起**: 在“火控任务”模式下,负责创建并初始化 `WorldObject_Sabot`,将其发射到世界地图。
|
||||
* **本地打击后效**: 为本地射击附加额外的效果,如能量消耗、数据收集和屏幕震动。
|
||||
|
||||
#### 源代码
|
||||
|
||||
```csharp
|
||||
using System;
|
||||
using RimWorld;
|
||||
using RimWorld.Planet;
|
||||
using UnityEngine;
|
||||
using Verse;
|
||||
|
||||
namespace Rimatomics
|
||||
{
|
||||
[StaticConstructorOnStartup]
|
||||
public class Verb_Railgun : Verb_RimatomicsVerb
|
||||
{
|
||||
public override ThingDef Projectile
|
||||
{
|
||||
get
|
||||
{
|
||||
ThingWithComps equipmentSource = base.EquipmentSource;
|
||||
CompChangeableProjectile comp = (equipmentSource != null) ? equipmentSource.GetComp<CompChangeableProjectile>() : null;
|
||||
if (comp != null && comp.Loaded)
|
||||
{
|
||||
return comp.Projectile;
|
||||
}
|
||||
return this.verbProps.defaultProjectile;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool CanHitTargetFrom(IntVec3 root, LocalTargetInfo targ)
|
||||
{
|
||||
// If a long-range target is set, we can "hit" it regardless of local range.
|
||||
if (base.GetWep.longTarget.IsValid)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return base.CanHitTargetFrom(root, targ);
|
||||
}
|
||||
|
||||
protected bool TryCastFireMission()
|
||||
{
|
||||
Building_Railgun railgun = this.caster as Building_Railgun;
|
||||
|
||||
// Create the flying sabot object on the world map
|
||||
WorldObject_Sabot sabot = (WorldObject_Sabot)WorldObjectMaker.MakeWorldObject(DefDatabase<WorldObjectDef>.GetNamed("Sabot", true));
|
||||
sabot.railgun = railgun;
|
||||
sabot.Tile = railgun.Map.Tile;
|
||||
sabot.destinationTile = railgun.longTarget.Tile;
|
||||
sabot.destinationCell = railgun.longTarget.Cell;
|
||||
sabot.spread = railgun.spread;
|
||||
sabot.Projectile = this.Projectile;
|
||||
Find.WorldObjects.Add(sabot);
|
||||
|
||||
// Post-launch effects and data gathering
|
||||
railgun.GatherData("PPCWeapon", 5f);
|
||||
railgun.GatherData("PPCFireMission", 10f);
|
||||
railgun.GatherData("PPCRailgun", 10f);
|
||||
railgun.PrototypeBang(railgun.GunProps.EnergyWep.PrototypeFailureChance);
|
||||
railgun.MuzzleFlash();
|
||||
Find.CameraDriver.shaker.SetMinShake(0.1f);
|
||||
|
||||
// Spawn a dummy projectile that flies off-map. This is for visual effect only.
|
||||
Vector3 shellDirection = Vector3.forward.RotatedBy(railgun.TurretRotation);
|
||||
IntVec3 outcell = (railgun.DrawPos + shellDirection * 500f).ToIntVec3();
|
||||
Projectile projectile2 = (Projectile)GenSpawn.Spawn(this.Projectile, railgun.Position, this.caster.Map, WipeMode.Vanish);
|
||||
projectile2.Launch(railgun, railgun.DrawPos, outcell, null, ProjectileHitFlags.None, false, base.EquipmentSource, null);
|
||||
|
||||
// Handle shell consumption
|
||||
CompChangeableProjectile comp = base.EquipmentSource?.GetComp<CompChangeableProjectile>();
|
||||
if (comp != null)
|
||||
{
|
||||
comp.Notify_ProjectileLaunched();
|
||||
}
|
||||
|
||||
railgun.DissipateCharge(railgun.PulseSize);
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool TryCastShot()
|
||||
{
|
||||
Building_Railgun railgun = this.caster as Building_Railgun;
|
||||
if (!railgun.top.TargetInSights)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (this.Projectile == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool shotResult;
|
||||
// --- Shooting Mode Dispatch ---
|
||||
if (railgun.longTarget.IsValid)
|
||||
{
|
||||
// Execute long-range fire mission
|
||||
shotResult = this.TryCastFireMission();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Execute standard local shot
|
||||
shotResult = base.TryCastShot();
|
||||
if (shotResult)
|
||||
{
|
||||
railgun.DissipateCharge(railgun.PulseSize);
|
||||
railgun.GatherData("PPCWeapon", 5f);
|
||||
railgun.GatherData("PPCRailgun", 10f);
|
||||
railgun.PrototypeBang(railgun.GunProps.EnergyWep.PrototypeFailureChance);
|
||||
railgun.MuzzleFlash();
|
||||
Find.CameraDriver.shaker.SetMinShake(0.1f);
|
||||
}
|
||||
}
|
||||
|
||||
// Chamber the next round after firing
|
||||
railgun.TryChamberRound();
|
||||
return shotResult;
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 关键方法和属性详解
|
||||
|
||||
* **`Projectile` (get)**: 这是一个动态属性,用于获取当前应该发射的炮弹类型。它会优先返回 `CompChangeableProjectile` 中已装填的炮弹,如果未装填,则返回在 XML 中定义的默认炮弹。
|
||||
* **`CanHitTargetFrom(...)`**: 重写了基类方法。当炮塔被赋予了一个远程目标 (`longTarget.IsValid`) 时,该方法直接返回 `true`,绕过了所有常规的射程和视线检查,确保远程打击流程可以启动。
|
||||
* **`TryCastShot()`**: 这是射击动作的入口点。它的核心逻辑是检查 `railgun.longTarget` 是否有效。
|
||||
* 如果**有效**,说明是远程打击任务,它便调用 `TryCastFireMission()`。
|
||||
* 如果**无效**,说明是常规的本地瞄准,它就调用基类的 `base.TryCastShot()` 来发射普通炮弹,并附加一系列开火后效。
|
||||
* **`TryCastFireMission()`**: 这是发起远程打击的核心。它不直接生成命中目标的炮弹,而是:
|
||||
1. 创建一个 `WorldObject_Sabot` 实例。
|
||||
2. 将目标地块、精确坐标、炮弹类型、散布等关键信息从 `Building_Railgun` 传递给 `sabot` 对象。
|
||||
3. 将 `sabot` 添加到世界对象管理器 (`Find.WorldObjects.Add(sabot)`),让其开始在世界地图上“飞行”。
|
||||
4. 触发炮口闪光、能量消耗、屏幕震动等本地开火效果。
|
||||
5. 生成一个飞向地图外的“虚拟”炮弹,仅用于视觉表现,它不会造成任何伤害。
|
||||
|
||||
### 3.3 `WorldObject_Sabot`
|
||||
|
||||
`WorldObject_Sabot` 继承自 `WorldObject`,是远程打击流程中的“飞行”阶段的执行者。它是一个临时的、在世界地图上存在的实体,模拟了炮弹从发射点到目标点的飞行过程。
|
||||
|
||||
#### 功能概述
|
||||
|
||||
此类完全独立于发射它的炮塔,其核心职责是在世界地图上完成一段旅程,并在抵达终点时触发命中效果。
|
||||
|
||||
* **飞行轨迹模拟**: 通过 `DrawPos` 属性和 `Tick` 方法,平滑地计算并更新自身在世界地图上的位置,实现飞行-动画效果。
|
||||
* **状态持久化**: 通过 `ExposeData` 方法保存所有关键信息(如起点、终点、飞行进度、炮弹类型),确保在游戏存读档后飞行可以继续。
|
||||
* **命中触发**: 在飞行到达终点后,`Arrived` 方法负责在目标地图上生成真正的 `Projectile`(炮弹),并让其从地图边缘发射,命中最终的精确弹着点。
|
||||
* **自我销毁**: 完成命中逻辑后,将自身从世界对象管理器中移除。
|
||||
* **Mod兼容性**: 能够识别并处理 "Save Our Ship 2" Mod 中的轨道飞船,实现地对空、空对地和空对空打击。
|
||||
|
||||
#### 源代码
|
||||
|
||||
```csharp
|
||||
using System;
|
||||
using System.Linq;
|
||||
using RimWorld.Planet;
|
||||
using UnityEngine;
|
||||
using Verse;
|
||||
|
||||
namespace Rimatomics
|
||||
{
|
||||
public class WorldObject_Sabot : WorldObject
|
||||
{
|
||||
private Vector3 Start
|
||||
{
|
||||
get
|
||||
{
|
||||
Vector3 startPos = Find.WorldGrid.GetTileCenter(this.initialTile);
|
||||
// SoS2 compatibility: if a ship is at the tile, use its position.
|
||||
if (HarmonyPatches.SoS)
|
||||
{
|
||||
WorldObject ship = Find.World.worldObjects.AllWorldObjects.FirstOrDefault(o =>
|
||||
(o.def.defName.Equals("ShipOrbiting") || o.def.defName.Equals("SiteSpace")) && o.Tile == this.initialTile);
|
||||
if (ship != null)
|
||||
{
|
||||
startPos = ship.DrawPos;
|
||||
}
|
||||
}
|
||||
return startPos;
|
||||
}
|
||||
}
|
||||
|
||||
private Vector3 End
|
||||
{
|
||||
get
|
||||
{
|
||||
Vector3 endPos = Find.WorldGrid.GetTileCenter(this.destinationTile);
|
||||
// SoS2 compatibility
|
||||
if (HarmonyPatches.SoS)
|
||||
{
|
||||
WorldObject ship = Find.World.worldObjects.AllWorldObjects.FirstOrDefault(o =>
|
||||
(o.def.defName.Equals("ShipOrbiting") || o.def.defName.Equals("SiteSpace")) && o.Tile == this.destinationTile);
|
||||
if (ship != null)
|
||||
{
|
||||
endPos = ship.DrawPos;
|
||||
}
|
||||
}
|
||||
return endPos;
|
||||
}
|
||||
}
|
||||
|
||||
public override Vector3 DrawPos
|
||||
{
|
||||
get
|
||||
{
|
||||
// Slerp for a smooth curve over the planet's surface
|
||||
return Vector3.Slerp(this.Start, this.End, this.traveledPct);
|
||||
}
|
||||
}
|
||||
|
||||
private float TraveledPctStepPerTick
|
||||
{
|
||||
get
|
||||
{
|
||||
Vector3 start = this.Start;
|
||||
Vector3 end = this.End;
|
||||
if (start == end) return 1f;
|
||||
|
||||
float distance = GenMath.SphericalDistance(start.normalized, end.normalized);
|
||||
if (distance == 0f) return 1f;
|
||||
|
||||
// Travel speed is constant
|
||||
return TravelSpeed / distance;
|
||||
}
|
||||
}
|
||||
|
||||
public override void ExposeData()
|
||||
{
|
||||
base.ExposeData();
|
||||
Scribe_Values.Look<int>(ref this.destinationTile, "destinationTile", 0, false);
|
||||
Scribe_Values.Look<IntVec3>(ref this.destinationCell, "destinationCell", default(IntVec3), false);
|
||||
Scribe_Values.Look<bool>(ref this.arrived, "arrived", false, false);
|
||||
Scribe_Values.Look<int>(ref this.initialTile, "initialTile", 0, false);
|
||||
Scribe_Values.Look<float>(ref this.traveledPct, "traveledPct", 0f, false);
|
||||
Scribe_Defs.Look<ThingDef>(ref this.Projectile, "Projectile");
|
||||
Scribe_References.Look<Thing>(ref this.railgun, "railgun");
|
||||
Scribe_Values.Look<int>(ref this.spread, "spread", 1, false);
|
||||
}
|
||||
|
||||
public override void PostAdd()
|
||||
{
|
||||
base.PostAdd();
|
||||
this.initialTile = base.Tile;
|
||||
}
|
||||
|
||||
public override void Tick()
|
||||
{
|
||||
base.Tick();
|
||||
this.traveledPct += this.TraveledPctStepPerTick;
|
||||
if (this.traveledPct >= 1f)
|
||||
{
|
||||
this.traveledPct = 1f;
|
||||
this.Arrived();
|
||||
}
|
||||
}
|
||||
|
||||
private void Arrived()
|
||||
{
|
||||
if (this.arrived) return;
|
||||
this.arrived = true;
|
||||
|
||||
Map map = Current.Game.FindMap(this.destinationTile);
|
||||
if (map != null)
|
||||
{
|
||||
// Spawn the projectile at the edge of the map
|
||||
IntVec3 entryCell = new IntVec3(CellRect.WholeMap(map).Width / 2, 0, CellRect.WholeMap(map).maxZ);
|
||||
Projectile projectile = (Projectile)GenSpawn.Spawn(this.Projectile, entryCell, map, WipeMode.Vanish);
|
||||
|
||||
// Find a random cell near the target destination within the spread radius
|
||||
IntVec3 finalDestination;
|
||||
CellFinder.TryFindRandomCellNear(this.destinationCell, map, this.spread, null, out finalDestination, -1);
|
||||
|
||||
// Launch the projectile to the final destination
|
||||
projectile.Launch(this.railgun, finalDestination, finalDestination, ProjectileHitFlags.IntendedTarget, false, null);
|
||||
}
|
||||
|
||||
// Remove self from the world
|
||||
Find.WorldObjects.Remove(this);
|
||||
}
|
||||
|
||||
private const float TravelSpeed = 0.0001f;
|
||||
private bool arrived;
|
||||
public IntVec3 destinationCell = IntVec3.Invalid;
|
||||
public int destinationTile = -1;
|
||||
private int initialTile = -1;
|
||||
public ThingDef Projectile;
|
||||
public Thing railgun;
|
||||
public int spread = 1;
|
||||
private float traveledPct;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 关键方法和属性详解
|
||||
|
||||
* **`Start` / `End` (get)**: 这两个属性负责计算飞行的起点和终点坐标。它们通过检查 `HarmonyPatches.SoS` 来判断是否加载了 "Save Our Ship 2" Mod,如果加载了,则会尝试获取轨道上飞船的位置作为起点/终点,从而实现与该Mod的无缝兼容。
|
||||
* **`DrawPos` (get)**: 重写属性,用于在世界地图上渲染该对象。它使用 `Vector3.Slerp`(球面线性插值)在起点和终点之间进行插值,根据 `traveledPct`(已飞行百分比)计算出当前帧应该在的位置,从而形成一条平滑的弧形飞行轨迹。
|
||||
* **`Tick()`**: 游戏引擎为每个世界对象调用的更新方法。它在每一帧增加 `traveledPct` 来推进飞行进度。当 `traveledPct` 达到1时,调用 `Arrived()`。
|
||||
* **`Arrived()`**: 这是飞行结束、触发命中的核心方法。它首先检查目标地块是否存在一个已加载的地图。如果存在,它会在该地图的边缘生成 `Projectile` 实体,并根据 `spread`(散布)在目标点附近随机一个最终落点,然后调用炮弹的 `Launch()` 方法完成最后的攻击。无论地图是否存在,它最终都会将自己从世界上移除。
|
||||
* **`ExposeData()`**: 保证了该飞行物体的所有状态(起点、终点、进度、炮弹类型等)都能被正确地保存和加载。
|
||||
|
||||
## 4. 系统工作流程
|
||||
|
||||
现在我们将三个核心组件联系起来,详细描述从玩家点击按钮到炮弹命中的完整工作流程。
|
||||
|
||||
### 4.1 交互时序图
|
||||
|
||||
下面的 Mermaid 时序图直观地展示了不同对象之间的交互顺序。
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant Player as 玩家
|
||||
participant Railgun as Building_Railgun
|
||||
participant Verb as Verb_Railgun
|
||||
participant Sabot as WorldObject_Sabot
|
||||
participant Projectile as 最终炮弹
|
||||
|
||||
Player->>Railgun: 点击 "Fire Mission" 按钮
|
||||
activate Railgun
|
||||
Railgun->>Player: 显示世界地图和射程圈
|
||||
Player->>Railgun: 1. 选择世界目标 (地块)
|
||||
Player->>Railgun: 2. 选择地图内目标 (坐标)
|
||||
Railgun->>Railgun: 调用 FireMission() 设置 longTarget
|
||||
Railgun->>Verb: 调用 TryStartShootSomething()
|
||||
deactivate Railgun
|
||||
|
||||
activate Verb
|
||||
Verb->>Verb: TryCastShot() 检测到 longTarget
|
||||
Verb->>Verb: 调用 TryCastFireMission()
|
||||
Verb->>Sabot: new WorldObject_Sabot()
|
||||
activate Sabot
|
||||
Verb->>Sabot: 传递目标信息、炮弹类型等
|
||||
Verb-->>Player: 触发炮口闪光和声音
|
||||
deactivate Verb
|
||||
|
||||
loop 飞行过程 (每Tick)
|
||||
Sabot->>Sabot: 更新 traveledPct (飞行进度)
|
||||
end
|
||||
|
||||
Sabot->>Sabot: Arrived() - 到达目标
|
||||
Sabot->>Projectile: GenSpawn.Spawn(炮弹)
|
||||
activate Projectile
|
||||
Sabot->>Projectile: Launch() - 飞向最终落点
|
||||
Projectile-->>Player: 爆炸和伤害效果
|
||||
deactivate Projectile
|
||||
|
||||
Sabot->>Sabot: Find.WorldObjects.Remove(this)
|
||||
deactivate Sabot
|
||||
```
|
||||
|
||||
### 4.2 步骤分解
|
||||
|
||||
1. **启动与目标选择 (玩家 -> `Building_Railgun`)**
|
||||
* 玩家选中一门或多门 `Building_Railgun` 并点击其 "Fire Mission" Gizmo。
|
||||
* `GetGizmos` 触发 `StartChoosingDestination` 方法,视角切换至世界地图,并显示最大射程圈。
|
||||
* 玩家在世界地图上选择一个目标地块。
|
||||
* `ChoseWorldTarget` 方法被回调。在通过一系列验证后,视角切换到目标地图。
|
||||
* 玩家在目标地图上选择一个精确的弹着点。
|
||||
|
||||
2. **下达指令 (`Building_Railgun` -> `Verb_Railgun`)**
|
||||
* 当精确弹着点被选定后,`ChoseWorldTarget` 方法会为所有被选中的炮塔调用 `FireMission` 方法。
|
||||
* `FireMission` 将包含地块和坐标的 `GlobalTargetInfo` 存入炮塔的 `longTarget` 变量中。
|
||||
* `FireMission` 随即调用 `TryStartShootSomething()`,这会启动炮塔的射击冷却计时器,并最终触发其Verb组件。
|
||||
|
||||
3. **发射与创建飞行物 (`Verb_Railgun` -> `WorldObject_Sabot`)**
|
||||
* 炮塔的 `Verb_Railgun` 组件的 `TryCastShot` 方法被调用。
|
||||
* `TryCastShot` 检测到 `longTarget` 是有效的,因此它不会执行常规射击,而是调用 `TryCastFireMission`。
|
||||
* `TryCastFireMission` 创建一个 `WorldObject_Sabot` 的实例,并将目标信息、炮弹定义、散布等关键数据从 `Building_Railgun` 复制到这个新实例中。
|
||||
* `WorldObject_Sabot` 被添加到 `Find.WorldObjects` 管理器中,正式开始其生命周期。
|
||||
* 同时,`Verb_Railgun` 在本地触发开火的视觉和听觉效果。
|
||||
|
||||
4. **跨地图飞行 (`WorldObject_Sabot`)**
|
||||
* `WorldObject_Sabot` 作为一个独立的世界对象,其 `Tick` 方法被游戏引擎在每一帧调用。
|
||||
* `Tick` 方法不断更新 `traveledPct` 属性,模拟飞行进度。
|
||||
* 其 `DrawPos` 属性根据 `traveledPct` 在世界地图上平滑地渲染出飞行轨迹。
|
||||
|
||||
5. **抵达与命中 (`WorldObject_Sabot` -> `Projectile`)**
|
||||
* 当 `traveledPct` 达到100%时,`Arrived` 方法被调用。
|
||||
* `Arrived` 检查目标地块的地图是否已加载。
|
||||
* 如果地图已加载,它会在地图边缘 `GenSpawn.Spawn` 一个真正的 `Projectile`(最终炮弹)。
|
||||
* 根据从 `Building_Railgun` 继承来的 `spread` 值,在玩家指定的精确落点附近随机一个最终弹着点。
|
||||
* 调用 `Projectile.Launch()`,使其从地图边缘飞向并命中最终弹着点,产生爆炸和伤害。
|
||||
* 最后,`WorldObject_Sabot` 调用 `Find.WorldObjects.Remove(this)` 将自己从世界上移除,完成其使命。
|
||||
|
||||
## 5. 总结
|
||||
|
||||
Rimatomics的电磁炮系统是一个设计精良的远程打击模块。它通过将**交互(Building)**、**动作(Verb)**和**飞行(WorldObject)**三个阶段清晰地分离到不同的类中,实现了高度的内聚和低耦合。这种设计不仅使得代码逻辑清晰、易于维护,还通过 `WorldObject` 机制优雅地解决了跨地图状态同步和持久化的问题,并为兼容其他Mod(如Save Our Ship 2)留出了接口。
|
||||
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"Version": 1,
|
||||
"WorkspaceRootPath": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
|
||||
"WorkspaceRootPath": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
|
||||
"Documents": [
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|c:\\steam\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\verb\\verb_shootmeltbeam.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:verb\\verb_shootmeltbeam.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\pawn_comps\\ara_fighter_invisible\\compproperties_fighterinvisible.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_fighter_invisible\\compproperties_fighterinvisible.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\verb\\compcleave.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:verb\\compcleave.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\pawn_comps\\ara_fighter_invisible\\compfighterinvisible.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_fighter_invisible\\compfighterinvisible.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
}
|
||||
],
|
||||
"DocumentGroupContainers": [
|
||||
@@ -18,7 +18,7 @@
|
||||
"DocumentGroups": [
|
||||
{
|
||||
"DockedWidth": 200,
|
||||
"SelectedChildIndex": 1,
|
||||
"SelectedChildIndex": 2,
|
||||
"Children": [
|
||||
{
|
||||
"$type": "Bookmark",
|
||||
@@ -26,28 +26,29 @@
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 0,
|
||||
"Title": "Verb_ShootMeltBeam.cs",
|
||||
"DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verb\\Verb_ShootMeltBeam.cs",
|
||||
"RelativeDocumentMoniker": "Verb\\Verb_ShootMeltBeam.cs",
|
||||
"ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verb\\Verb_ShootMeltBeam.cs",
|
||||
"RelativeToolTip": "Verb\\Verb_ShootMeltBeam.cs",
|
||||
"ViewState": "AQIAAAAAAAAAAAAAAADwvwAAAAAAAAAA",
|
||||
"DocumentIndex": 1,
|
||||
"Title": "CompFighterInvisible.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_Fighter_Invisible\\CompFighterInvisible.cs",
|
||||
"RelativeDocumentMoniker": "Pawn_Comps\\ARA_Fighter_Invisible\\CompFighterInvisible.cs",
|
||||
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_Fighter_Invisible\\CompFighterInvisible.cs",
|
||||
"RelativeToolTip": "Pawn_Comps\\ARA_Fighter_Invisible\\CompFighterInvisible.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-09-09T03:04:00.299Z",
|
||||
"WhenOpened": "2025-09-22T01:22:42.97Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 1,
|
||||
"Title": "CompCleave.cs",
|
||||
"DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verb\\CompCleave.cs",
|
||||
"RelativeDocumentMoniker": "Verb\\CompCleave.cs",
|
||||
"ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verb\\CompCleave.cs",
|
||||
"RelativeToolTip": "Verb\\CompCleave.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAmAAAAAAAAAA==",
|
||||
"DocumentIndex": 0,
|
||||
"Title": "CompProperties_FighterInvisible.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_Fighter_Invisible\\CompProperties_FighterInvisible.cs",
|
||||
"RelativeDocumentMoniker": "Pawn_Comps\\ARA_Fighter_Invisible\\CompProperties_FighterInvisible.cs",
|
||||
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_Fighter_Invisible\\CompProperties_FighterInvisible.cs",
|
||||
"RelativeToolTip": "Pawn_Comps\\ARA_Fighter_Invisible\\CompProperties_FighterInvisible.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAyAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-09-09T03:03:30.118Z"
|
||||
"WhenOpened": "2025-09-22T01:22:42.218Z",
|
||||
"EditorCaption": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
12
Source/ArachnaeSwarm/ARAFoodDispenserProperties.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using Verse;
|
||||
using Verse.Sound;
|
||||
|
||||
namespace ArachnaeSwarm
|
||||
{
|
||||
public class ARAFoodDispenserProperties : DefModExtension
|
||||
{
|
||||
public ThingDef thingToDispense;
|
||||
public float nutritionCostPerDispense = 0.3f;
|
||||
public SoundDef soundDispense;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
using RimWorld;
|
||||
using Verse;
|
||||
|
||||
namespace ArachnaeSwarm
|
||||
{
|
||||
public class CompAbilityEffect_GiveSwitchHediff : CompAbilityEffect
|
||||
{
|
||||
public new CompProperties_AbilityGiveHediff Props => (CompProperties_AbilityGiveHediff)props;
|
||||
|
||||
public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
|
||||
{
|
||||
base.Apply(target, dest);
|
||||
if (Props.hediffDef != null)
|
||||
{
|
||||
parent.pawn.health.AddHediff(Props.hediffDef);
|
||||
}
|
||||
}
|
||||
|
||||
public override bool ShouldHideGizmo
|
||||
{
|
||||
get
|
||||
{
|
||||
// 如果父级Pawn已经有了这个Hediff,就隐藏“给予”按钮
|
||||
if (parent.pawn?.health.hediffSet.HasHediff(Props.hediffDef) ?? false)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return base.ShouldHideGizmo;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
using RimWorld;
|
||||
using Verse;
|
||||
|
||||
namespace ArachnaeSwarm
|
||||
{
|
||||
public class CompAbilityEffect_RemoveSwitchHediff : CompAbilityEffect
|
||||
{
|
||||
public new CompProperties_AbilityRemoveHediff Props => (CompProperties_AbilityRemoveHediff)props;
|
||||
|
||||
public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
|
||||
{
|
||||
base.Apply(target, dest);
|
||||
Hediff firstHediffOfDef = parent.pawn.health.hediffSet.GetFirstHediffOfDef(Props.hediffDef);
|
||||
if (firstHediffOfDef != null)
|
||||
{
|
||||
parent.pawn.health.RemoveHediff(firstHediffOfDef);
|
||||
}
|
||||
}
|
||||
|
||||
public override bool ShouldHideGizmo
|
||||
{
|
||||
get
|
||||
{
|
||||
// 如果父级Pawn没有这个Hediff,就隐藏“移除”按钮
|
||||
if (!parent.pawn?.health.hediffSet.HasHediff(Props.hediffDef) ?? true)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return base.ShouldHideGizmo;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
202
Source/ArachnaeSwarm/Abilities/ARA_AbilitySwitch/WeaponSwitch.cs
Normal file
@@ -0,0 +1,202 @@
|
||||
using RimWorld;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.Remoting.Messaging;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
using Verse;
|
||||
|
||||
namespace ArachnaeSwarm
|
||||
{
|
||||
public class CompProperties_Switch : CompProperties_EquippableAbility
|
||||
{
|
||||
public ThingDef changeTo;
|
||||
public CompProperties_Switch()
|
||||
{
|
||||
compClass = typeof(CompSwitch);
|
||||
}
|
||||
}
|
||||
|
||||
public class CompSwitch : CompEquippableAbility
|
||||
{
|
||||
public CompProperties_Switch Props => (CompProperties_Switch)props;
|
||||
|
||||
public HediffWithComps hediff;
|
||||
public HediffComp_Disappears Disappears => hediff.GetComp<HediffComp_Disappears>();
|
||||
public override void Notify_Equipped(Pawn pawn)
|
||||
{
|
||||
base.Notify_Equipped(pawn);
|
||||
if (hediff != null)
|
||||
{
|
||||
pawn.health.AddHediff(hediff);
|
||||
}
|
||||
}
|
||||
|
||||
public override void Notify_Unequipped(Pawn pawn)
|
||||
{
|
||||
base.Notify_Unequipped(pawn);
|
||||
if (hediff != null)
|
||||
{
|
||||
pawn.health.RemoveHediff(hediff);
|
||||
}
|
||||
}
|
||||
|
||||
public override string CompInspectStringExtra()
|
||||
{
|
||||
string text = "";
|
||||
if (hediff != null)
|
||||
{
|
||||
text += hediff.LabelBase + ": " + Disappears.ticksToDisappear.ToStringSecondsFromTicks("F0");
|
||||
}
|
||||
return text;
|
||||
}
|
||||
public override void CompTick()
|
||||
{
|
||||
base.CompTick();
|
||||
if (hediff != null)
|
||||
{
|
||||
float severityAdjustment = 0f;
|
||||
Disappears.CompPostTick(ref severityAdjustment);
|
||||
if (Disappears.ticksToDisappear <= 0)
|
||||
{
|
||||
hediff = null;
|
||||
Extension.ChangeOldThing(parent, Props.changeTo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void PostExposeData()
|
||||
{
|
||||
base.PostExposeData();
|
||||
Scribe_References.Look(ref hediff, "hediff", true);
|
||||
}
|
||||
}
|
||||
|
||||
public class CompAbilityEffect_Switch : CompAbilityEffect
|
||||
{
|
||||
public Pawn Pawn => parent.pawn;
|
||||
public ThingWithComps BaseForm => Pawn.equipment.Primary;
|
||||
public ThingDef ChangeTo => BaseForm.GetComp<CompSwitch>().Props.changeTo;
|
||||
|
||||
public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
|
||||
{
|
||||
base.Apply(target, dest);
|
||||
Pawn.ChangeEquipThing(BaseForm, ChangeTo);
|
||||
}
|
||||
public override bool AICanTargetNow(LocalTargetInfo target)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public class CompAbilityEffect_RemoveHediff : CompAbilityEffect
|
||||
{
|
||||
public Pawn Pawn => parent.pawn;
|
||||
public ThingWithComps BaseForm => Pawn.equipment.Primary;
|
||||
public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
|
||||
{
|
||||
base.Apply(target, dest);
|
||||
CompSwitch comp = BaseForm.GetComp<CompSwitch>();
|
||||
if (comp.hediff != null)
|
||||
{
|
||||
comp.Disappears.ticksToDisappear = 0;
|
||||
Pawn.health.RemoveHediff(comp.hediff);
|
||||
comp.hediff = null;
|
||||
}
|
||||
}
|
||||
public override bool AICanTargetNow(LocalTargetInfo target)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public static class Extension
|
||||
{
|
||||
public static ThingWithComps ChangeThing(ThingWithComps baseForm, ThingDef changeTo)
|
||||
{
|
||||
int hitPoints = baseForm.HitPoints;
|
||||
ThingDef stuff = null;
|
||||
if (baseForm.Stuff != null)
|
||||
{
|
||||
stuff = baseForm.Stuff;
|
||||
}
|
||||
ThingWithComps newThing = (ThingWithComps)ThingMaker.MakeThing(changeTo, stuff);
|
||||
newThing.HitPoints = hitPoints;
|
||||
for (int i = 0; i < newThing.AllComps.Count; i++)
|
||||
{
|
||||
CompProperties Index = newThing.AllComps[i].props;
|
||||
ThingComp baseComp = baseForm.GetCompByDefType(Index);
|
||||
if (baseComp != null)
|
||||
{
|
||||
baseComp.parent = newThing;
|
||||
newThing.AllComps[i] = baseComp;
|
||||
}
|
||||
}
|
||||
CompSwitch compSwitch = newThing.GetComp<CompSwitch>();
|
||||
compSwitch.Initialize(newThing.def.comps.Find(x => x.compClass == typeof(CompSwitch)));
|
||||
ThingStyleDef styleDef = baseForm.StyleDef;
|
||||
if (baseForm.def.randomStyle != null && newThing.def.randomStyle != null)
|
||||
{
|
||||
ThingStyleChance chance = baseForm.def.randomStyle.Find(x => x.StyleDef == styleDef);
|
||||
int index = baseForm.def.randomStyle.IndexOf(chance);
|
||||
newThing.StyleDef = newThing.def.randomStyle[index].StyleDef;
|
||||
}
|
||||
return newThing;
|
||||
}
|
||||
|
||||
public static void ChangeOldThing(ThingWithComps baseForm, ThingDef changeTo)
|
||||
{
|
||||
ThingWithComps newThing = ChangeThing(baseForm, changeTo);
|
||||
IntVec3 intVec3 = baseForm.Position;
|
||||
Map map = baseForm.Map;
|
||||
baseForm.Destroy();
|
||||
GenSpawn.Spawn(newThing, intVec3, map);
|
||||
}
|
||||
|
||||
public static void ChangeEquipThing(this Pawn pawn, ThingWithComps baseForm, ThingDef changeTo)
|
||||
{
|
||||
ThingWithComps newThing = ChangeThing(baseForm, changeTo);
|
||||
pawn.equipment.DestroyEquipment(baseForm);
|
||||
baseForm.Notify_Unequipped(pawn);
|
||||
pawn.equipment.MakeRoomFor(newThing);
|
||||
pawn.equipment.AddEquipment(newThing);
|
||||
}
|
||||
}
|
||||
|
||||
public class HediffCompPropertiesSwitch : HediffCompProperties_GiveAbility
|
||||
{
|
||||
public HediffCompPropertiesSwitch()
|
||||
{
|
||||
compClass = typeof(SwitchWhenDisappear);
|
||||
}
|
||||
}
|
||||
public class SwitchWhenDisappear : HediffComp_GiveAbility
|
||||
{
|
||||
public HediffCompPropertiesSwitch Props => (HediffCompPropertiesSwitch)props;
|
||||
public override void CompPostMake()
|
||||
{
|
||||
base.CompPostMake();
|
||||
CompSwitch compSwitch = Pawn.equipment.Primary.GetComp<CompSwitch>();
|
||||
compSwitch.hediff = parent;
|
||||
}
|
||||
public override void CompPostPostRemoved()
|
||||
{
|
||||
base.CompPostPostRemoved();
|
||||
if (parent.ShouldRemove)
|
||||
{
|
||||
ThingWithComps thing = Pawn.equipment.Primary;
|
||||
if (thing != null)
|
||||
{
|
||||
CompSwitch compSwitch = thing.GetComp<CompSwitch>();
|
||||
compSwitch.hediff = null;
|
||||
if (compSwitch != null)
|
||||
{
|
||||
Pawn.ChangeEquipThing(thing, compSwitch.Props.changeTo);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -21,7 +21,7 @@ namespace ArachnaeSwarm
|
||||
public override void PostExposeData()
|
||||
{
|
||||
base.PostExposeData();
|
||||
Scribe_Deep.Look(ref storedPawn, "storedPawn", false);
|
||||
Scribe_Deep.Look(ref storedPawn, "storedPawn");
|
||||
}
|
||||
|
||||
public override IEnumerable<Gizmo> CompGetGizmosExtra()
|
||||
|
||||
@@ -68,6 +68,9 @@
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Abilities\ARA_AbilitySwitch\CompAbilityEffect_GiveSwitchHediff.cs" />
|
||||
<Compile Include="Abilities\ARA_AbilitySwitch\CompAbilityEffect_RemoveSwitchHediff.cs" />
|
||||
<Compile Include="Abilities\ARA_AbilitySwitch\WeaponSwitch.cs" />
|
||||
<Compile Include="Abilities\ARA_HuggingFace\CompAbilityEffect_Possess.cs" />
|
||||
<Compile Include="Abilities\ARA_HuggingFace\CompProperties_AbilityPossess.cs" />
|
||||
<Compile Include="Abilities\ARA_HuggingFace\Hediff_Possession.cs" />
|
||||
@@ -130,6 +133,7 @@
|
||||
<Compile Include="Hediffs\ARA_ConfigurableMutant\HediffComp_NecroticTransformation.cs" />
|
||||
<Compile Include="Hediffs\ARA_ConfigurableMutant\HediffComp_Symbiosis.cs" />
|
||||
<Compile Include="Hediffs\ARA_ConfigurableMutant\NecroticTransformationUtility.cs" />
|
||||
<Compile Include="Hediffs\ARA_HediffComp_TopTurret\HediffComp_TopTurret.cs" />
|
||||
<Compile Include="Hediffs\ARA_HiveMind\CompAbilityEffect_BindDrone.cs" />
|
||||
<Compile Include="Hediffs\ARA_HiveMind\CompProperties_AbilityBindDrone.cs" />
|
||||
<Compile Include="Hediffs\ARA_HiveMind\Hediff_HiveMindDrone.cs" />
|
||||
@@ -143,10 +147,14 @@
|
||||
<Compile Include="Hediffs\HediffComp_TerrainBasedSeverity\HediffComp_TerrainBasedSeverity.cs" />
|
||||
<Compile Include="Hediffs\HediffComp_TerrainBasedSeverity\HediffCompProperties_TerrainBasedSeverity.cs" />
|
||||
<Compile Include="Hediffs\HediffGiver_RandomWithSeverity.cs" />
|
||||
<Compile Include="Hediffs\MoharHediffs\HediffCompProperties_Spawner.cs" />
|
||||
<Compile Include="Hediffs\MoharHediffs\HediffComp_Spawner.cs" />
|
||||
<Compile Include="Hediffs\MoharHediffs\Tools.cs" />
|
||||
<Compile Include="Hediffs\ProphecyGearEffect.cs" />
|
||||
<Compile Include="Hediffs\WULA_HediffDamgeShield\DRMDamageShield.cs" />
|
||||
<Compile Include="Hediffs\WULA_HediffDamgeShield\Hediff_DamageShield.cs" />
|
||||
<Compile Include="MainHarmony.cs" />
|
||||
<Compile Include="CompAndPatch_GiveHediffOnShot.cs" />
|
||||
<Compile Include="Pawn_Comps\ARA_AutoMechCarrier\CompAutoMechCarrier.cs" />
|
||||
<Compile Include="Pawn_Comps\ARA_AutoMechCarrier\CompProperties_AutoMechCarrier.cs" />
|
||||
<Compile Include="Pawn_Comps\ARA_AutoMechCarrier\PawnProductionEntry.cs" />
|
||||
@@ -154,6 +162,8 @@
|
||||
<Compile Include="Pawn_Comps\ARA_CompHediffGiver\CompProperties_HediffGiver.cs" />
|
||||
<Compile Include="Pawn_Comps\ARA_CompMilkableArachnae\CompMilkableArachnae.cs" />
|
||||
<Compile Include="Pawn_Comps\ARA_CompMilkableArachnae\CompProperties_MilkableArachnae.cs" />
|
||||
<Compile Include="Pawn_Comps\ARA_Fighter_Invisible\CompFighterInvisible.cs" />
|
||||
<Compile Include="Pawn_Comps\ARA_Fighter_Invisible\CompProperties_FighterInvisible.cs" />
|
||||
<Compile Include="Pawn_Comps\ARA_Flight\CompPawnFlight.cs" />
|
||||
<Compile Include="Pawn_Comps\ARA_Flight\CompProperties_PawnFlight.cs" />
|
||||
<Compile Include="Pawn_Comps\ARA_Flight\Pawn_FlightTrackerPatches.cs" />
|
||||
@@ -192,8 +202,24 @@
|
||||
<Compile Include="Verbs\Verb_ShootMeltBeam.cs" />
|
||||
<Compile Include="Verbs\Verb_ShootShotgun.cs" />
|
||||
<Compile Include="Verbs\VerbProperties_Excalibur.cs" />
|
||||
<Compile Include="Verbs\Verb_ShootSprayMulti.cs" />
|
||||
<Compile Include="Verbs\WeaponStealBeam\Verb_ShootWeaponStealBeam.cs" />
|
||||
<Compile Include="Verbs\WeaponStealBeam\VerbProperties_WeaponStealBeam.cs" />
|
||||
<Compile Include="Building_ARANutrientDispenser.cs" />
|
||||
<Compile Include="ARAFoodDispenserProperties.cs" />
|
||||
<Compile Include="Patch_DispenserFoodSearch.cs" />
|
||||
<Compile Include="Buildings\Building_CatastropheMissileSilo.cs" />
|
||||
<Compile Include="World\WorldObject_CatastropheMissile.cs" />
|
||||
<Compile Include="HarmonyPatches\Patch_ForceTargetable.cs" />
|
||||
<Compile Include="Comps\CompForceTargetable.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Wormhole\Building_WormholePortal_A.cs" />
|
||||
<Compile Include="Wormhole\Building_WormholePortal_B.cs" />
|
||||
<Compile Include="Wormhole\CompLaunchableWormhole.cs" />
|
||||
<Compile Include="Wormhole\JobDriver_DeployWormhole.cs" />
|
||||
<Compile Include="Wormhole\TravelingWormhole.cs" />
|
||||
<Compile Include="Wormhole\DefModExtension_TravelingWormhole.cs" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- 自定义清理任务,删除obj文件夹中的临时文件 -->
|
||||
|
||||
77
Source/ArachnaeSwarm/Building_ARANutrientDispenser.cs
Normal file
@@ -0,0 +1,77 @@
|
||||
using RimWorld;
|
||||
using Verse;
|
||||
using Verse.Sound; // Ensure this is present
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace ArachnaeSwarm
|
||||
{
|
||||
// By inheriting from Building_NutrientPasteDispenser, we automatically pass all "is Building_NutrientPasteDispenser" checks in the game's code.
|
||||
public class Building_ARANutrientDispenser : Building_NutrientPasteDispenser
|
||||
{
|
||||
private CompRefuelableNutrition nutritionComp;
|
||||
private ARAFoodDispenserProperties dispenserProps;
|
||||
|
||||
public override void SpawnSetup(Map map, bool respawningAfterLoad)
|
||||
{
|
||||
// We MUST call the base method for it to initialize the `powerComp` field,
|
||||
// which we will provide via a dummy CompPowerPlant in the XML. This prevents NullReferenceExceptions.
|
||||
base.SpawnSetup(map, respawningAfterLoad);
|
||||
this.nutritionComp = this.GetComp<CompRefuelableNutrition>();
|
||||
this.dispenserProps = this.def.GetModExtension<ARAFoodDispenserProperties>();
|
||||
}
|
||||
|
||||
// We don't need to override CanDispenseNow. The base method is perfect if we handle its dependencies.
|
||||
// The base CanDispenseNow checks powerComp.PowerOn (which our XML hack makes always true)
|
||||
// and HasEnoughFeedstockInHoppers(), which we DO override below.
|
||||
|
||||
public override Thing TryDispenseFood()
|
||||
{
|
||||
// The base method is tightly coupled with hoppers. We must fully override it.
|
||||
if (!this.HasEnoughFeedstockInHoppers()) // Directly check our condition
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
this.nutritionComp.ConsumeFuel(this.dispenserProps.nutritionCostPerDispense);
|
||||
|
||||
if (this.dispenserProps.soundDispense != null)
|
||||
{
|
||||
this.dispenserProps.soundDispense.PlayOneShot(new TargetInfo(this.Position, this.Map));
|
||||
}
|
||||
|
||||
return ThingMaker.MakeThing(this.DispensableDef);
|
||||
}
|
||||
|
||||
public override ThingDef DispensableDef
|
||||
{
|
||||
get
|
||||
{
|
||||
if (this.dispenserProps == null) return base.DispensableDef;
|
||||
return this.dispenserProps.thingToDispense;
|
||||
}
|
||||
}
|
||||
|
||||
// --- Hopper-related overrides to decouple from them ---
|
||||
public override Building AdjacentReachableHopper(Pawn reacher) => null;
|
||||
|
||||
public override Thing FindFeedInAnyHopper() => null;
|
||||
|
||||
public override bool HasEnoughFeedstockInHoppers()
|
||||
{
|
||||
// This is the crucial hook. The base CanDispenseNow and the AI's food search call this method.
|
||||
// We replace the hopper check with our fuel check.
|
||||
if (this.dispenserProps == null) return false;
|
||||
return this.nutritionComp != null && this.nutritionComp.Fuel >= this.dispenserProps.nutritionCostPerDispense;
|
||||
}
|
||||
|
||||
public override IEnumerable<Gizmo> GetGizmos()
|
||||
{
|
||||
// base.GetGizmos() provides the "Build Hopper" gizmo, which we don't want.
|
||||
// We filter it out here.
|
||||
return base.GetGizmos().Where(gizmo =>
|
||||
!(gizmo is Designator_Build designator && designator.PlacingDef == ThingDefOf.Hopper)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,217 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
using Verse;
|
||||
using Verse.AI;
|
||||
using Verse.Sound;
|
||||
using RimWorld;
|
||||
using RimWorld.Planet;
|
||||
|
||||
namespace ArachnaeSwarm
|
||||
{
|
||||
[StaticConstructorOnStartup]
|
||||
public class Building_CatastropheMissileSilo : Building_TurretGun
|
||||
{
|
||||
public GlobalTargetInfo longTarget;
|
||||
public static readonly Texture2D FireMissionTex = ContentFinder<Texture2D>.Get("UI/Commands/Attack", true);
|
||||
|
||||
public override void SpawnSetup(Map map, bool respawningAfterLoad)
|
||||
{
|
||||
base.SpawnSetup(map, respawningAfterLoad);
|
||||
if (!respawningAfterLoad)
|
||||
{
|
||||
this.longTarget = GlobalTargetInfo.Invalid;
|
||||
}
|
||||
}
|
||||
|
||||
public override void ExposeData()
|
||||
{
|
||||
base.ExposeData();
|
||||
Scribe_TargetInfo.Look(ref this.longTarget, "longTarget");
|
||||
}
|
||||
|
||||
protected override void Tick()
|
||||
{
|
||||
// Base tick handles all local targeting, cooldowns, and fuel consumption via XML.
|
||||
base.Tick();
|
||||
|
||||
// If a local target is active, prevent remote targeting.
|
||||
if (this.forcedTarget.IsValid && this.longTarget.IsValid)
|
||||
{
|
||||
this.longTarget = GlobalTargetInfo.Invalid;
|
||||
}
|
||||
|
||||
// If a remote target is set and the turret is ready, fire.
|
||||
// The base.Tick() cooldown handling prevents this from running if a local shot was just fired.
|
||||
if (this.longTarget.IsValid && this.burstCooldownTicksLeft <= 0 && base.Active && CanFireGlobal(out _))
|
||||
{
|
||||
this.FireMission(this.longTarget);
|
||||
}
|
||||
}
|
||||
|
||||
public override string GetInspectString()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder(base.GetInspectString());
|
||||
|
||||
if (burstCooldownTicksLeft > 0)
|
||||
{
|
||||
if (sb.Length > 0) sb.AppendLine();
|
||||
sb.Append("Cooldown".Translate() + ": " + this.burstCooldownTicksLeft.ToStringTicksToPeriod());
|
||||
}
|
||||
|
||||
if (this.longTarget.IsValid)
|
||||
{
|
||||
if (sb.Length > 0) sb.AppendLine();
|
||||
sb.Append("RemoteTargetSet".Translate(this.longTarget.Label));
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
public override IEnumerable<Gizmo> GetGizmos()
|
||||
{
|
||||
foreach (var g in base.GetGizmos())
|
||||
{
|
||||
yield return g;
|
||||
}
|
||||
|
||||
Command_Action fireGlobal = new Command_Action
|
||||
{
|
||||
defaultLabel = "CommandFireGlobal".Translate(),
|
||||
defaultDesc = "CommandFireGlobalDesc".Translate(),
|
||||
icon = FireMissionTex,
|
||||
action = new Action(StartChoosingDestination)
|
||||
};
|
||||
|
||||
if (!CanFireGlobal(out string reason))
|
||||
{
|
||||
fireGlobal.Disable(reason);
|
||||
}
|
||||
if (this.forcedTarget.IsValid)
|
||||
{
|
||||
fireGlobal.Disable("LocalTargetForced".Translate());
|
||||
}
|
||||
yield return fireGlobal;
|
||||
|
||||
if (this.longTarget.IsValid)
|
||||
{
|
||||
Command_Action clearRemote = new Command_Action
|
||||
{
|
||||
defaultLabel = "CommandClearRemoteTarget".Translate(),
|
||||
defaultDesc = "CommandClearRemoteTargetDesc".Translate(),
|
||||
icon = ContentFinder<Texture2D>.Get("UI/Designators/Cancel"),
|
||||
action = () =>
|
||||
{
|
||||
this.longTarget = GlobalTargetInfo.Invalid;
|
||||
}
|
||||
};
|
||||
yield return clearRemote;
|
||||
}
|
||||
}
|
||||
|
||||
public void FireMission(GlobalTargetInfo target)
|
||||
{
|
||||
if (!CanFireGlobal(out _)) return;
|
||||
|
||||
WorldObject_CatastropheMissile missile = (WorldObject_CatastropheMissile)WorldObjectMaker.MakeWorldObject(
|
||||
DefDatabase<WorldObjectDef>.GetNamed("CatastropheMissile_Flying")
|
||||
);
|
||||
missile.Tile = this.Map.Tile;
|
||||
missile.destinationTile = target.Tile;
|
||||
missile.destinationCell = target.Cell;
|
||||
missile.Projectile = DefDatabase<ThingDef>.GetNamed("Projectile_CatastropheMissile");
|
||||
Find.WorldObjects.Add(missile);
|
||||
|
||||
Vector3 shellDirection = Vector3.forward.RotatedBy(this.top.CurRotation);
|
||||
IntVec3 outcell = (this.DrawPos + shellDirection * 500f).ToIntVec3();
|
||||
|
||||
Projectile_CruiseMissile dummy = (Projectile_CruiseMissile)GenSpawn.Spawn(DefDatabase<ThingDef>.GetNamed("Projectile_CatastropheMissile_Fake"), this.Position, this.Map);
|
||||
dummy?.Launch(this, this.DrawPos, new LocalTargetInfo(outcell), new LocalTargetInfo(outcell), ProjectileHitFlags.None);
|
||||
|
||||
var refuelableComp = this.TryGetComp<CompRefuelable>();
|
||||
if(refuelableComp != null)
|
||||
{
|
||||
refuelableComp.ConsumeFuel(1);
|
||||
}
|
||||
SoundDef.Named("RocketLaunch").PlayOneShot(new TargetInfo(this.Position, this.Map));
|
||||
|
||||
this.BurstComplete();
|
||||
}
|
||||
|
||||
private bool CanFireGlobal(out string reason)
|
||||
{
|
||||
var refuelableComp = this.TryGetComp<CompRefuelable>();
|
||||
if (refuelableComp != null && !refuelableComp.HasFuel)
|
||||
{
|
||||
reason = "NoFuel".Translate().CapitalizeFirst();
|
||||
return false;
|
||||
}
|
||||
reason = "";
|
||||
return true;
|
||||
}
|
||||
|
||||
private void StartChoosingDestination()
|
||||
{
|
||||
CameraJumper.TryJump(CameraJumper.GetWorldTarget(this), CameraJumper.MovementMode.Pan);
|
||||
Find.WorldSelector.ClearSelection();
|
||||
Find.WorldTargeter.BeginTargeting(
|
||||
new Func<GlobalTargetInfo, bool>(this.ChoseWorldTarget),
|
||||
true,
|
||||
FireMissionTex,
|
||||
true,
|
||||
() => GenDraw.DrawWorldRadiusRing(this.Map.Tile, 99999),
|
||||
null, null, null, true);
|
||||
}
|
||||
|
||||
private bool ChoseWorldTarget(GlobalTargetInfo target)
|
||||
{
|
||||
if (!target.IsValid)
|
||||
{
|
||||
Messages.Message("MessageTargetInvalid".Translate(), MessageTypeDefOf.RejectInput, true);
|
||||
return false;
|
||||
}
|
||||
if (target.Tile == this.Map.Tile)
|
||||
{
|
||||
Messages.Message("Cannot target own map for global strike.", MessageTypeDefOf.RejectInput, true);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (target.WorldObject is MapParent mapParent && mapParent.HasMap)
|
||||
{
|
||||
var originalMap = this.Map;
|
||||
Action onFinished = () => {
|
||||
if (Current.Game.CurrentMap != originalMap) Current.Game.CurrentMap = originalMap;
|
||||
};
|
||||
|
||||
Current.Game.CurrentMap = mapParent.Map;
|
||||
Find.Targeter.BeginTargeting(new TargetingParameters
|
||||
{
|
||||
canTargetLocations = true,
|
||||
canTargetPawns = true,
|
||||
canTargetBuildings = true
|
||||
},
|
||||
(LocalTargetInfo localTarget) =>
|
||||
{
|
||||
if (localTarget.HasThing)
|
||||
{
|
||||
this.longTarget = new GlobalTargetInfo(localTarget.Thing);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.longTarget = new GlobalTargetInfo(localTarget.Cell, mapParent.Map);
|
||||
}
|
||||
this.forcedTarget = LocalTargetInfo.Invalid;
|
||||
},
|
||||
null, onFinished, FireMissionTex, true);
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Messages.Message("MessageTargetMustBeMap".Translate(), MessageTypeDefOf.RejectInput, true);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
75
Source/ArachnaeSwarm/CompAndPatch_GiveHediffOnShot.cs
Normal file
@@ -0,0 +1,75 @@
|
||||
using HarmonyLib;
|
||||
using RimWorld;
|
||||
using Verse;
|
||||
|
||||
namespace ArachnaeSwarm
|
||||
{
|
||||
// 1. 定义CompProperties来存储我们的数据
|
||||
public class CompProperties_GiveHediffOnShot : CompProperties
|
||||
{
|
||||
public HediffDef hediffDef;
|
||||
public float severityToAdd = 0.1f;
|
||||
|
||||
public CompProperties_GiveHediffOnShot()
|
||||
{
|
||||
compClass = typeof(CompGiveHediffOnShot);
|
||||
}
|
||||
}
|
||||
|
||||
// 2. 创建一个简单的Comp来挂载到武器上,它只负责持有数据
|
||||
public class CompGiveHediffOnShot : ThingComp
|
||||
{
|
||||
public CompProperties_GiveHediffOnShot Props => (CompProperties_GiveHediffOnShot)props;
|
||||
}
|
||||
|
||||
// 3. 创建Harmony补丁
|
||||
// 补丁目标为 Verb_Shoot.TryCastShot。这是所有射击动作的通用入口。
|
||||
[HarmonyPatch(typeof(Verb_Shoot), "TryCastShot")]
|
||||
public static class Patch_Verb_Shoot_TryCastShot
|
||||
{
|
||||
// 使用[HarmonyPostfix]特性来创建一个在原方法执行后运行的补丁
|
||||
// 添加一个bool类型的返回值`__result`,它代表了原方法的返回值
|
||||
public static void Postfix(Verb_Shoot __instance, bool __result)
|
||||
{
|
||||
// __result 是原方法 TryCastShot 的返回值。
|
||||
// 如果 __result 为 false,意味着射击动作因某些原因(如目标无效、没有弹药)失败了,我们就不应该添加Hediff。
|
||||
if (!__result)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// __instance是原方法的实例对象,也就是那个Verb_Shoot
|
||||
// 检查这个Verb是否来源于一个装备(武器)
|
||||
if (__instance.EquipmentSource == null || __instance.CasterPawn == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// 尝试从武器上获取我们自定义的Comp
|
||||
CompGiveHediffOnShot comp = __instance.EquipmentSource.GetComp<CompGiveHediffOnShot>();
|
||||
if (comp == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查XML中是否配置了hediffDef
|
||||
if (comp.Props.hediffDef == null)
|
||||
{
|
||||
Log.ErrorOnce($"[ArachnaeSwarm] CompGiveHediffOnShot on {__instance.EquipmentSource.def.defName} has null hediffDef.", __instance.EquipmentSource.def.GetHashCode());
|
||||
return;
|
||||
}
|
||||
|
||||
// 为射击者(CasterPawn)添加或增加Hediff的严重性
|
||||
Hediff hediff = __instance.CasterPawn.health.GetOrAddHediff(comp.Props.hediffDef);
|
||||
hediff.Severity += comp.Props.severityToAdd;
|
||||
|
||||
// 检查Hediff是否带有HediffComp_Disappears组件
|
||||
HediffComp_Disappears disappearsComp = hediff.TryGetComp<HediffComp_Disappears>();
|
||||
if (disappearsComp != null)
|
||||
{
|
||||
// 如果有,则调用正确的方法重置它的消失计时器
|
||||
disappearsComp.ResetElapsedTicks();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||