46 Commits

Author SHA1 Message Date
ProjectKoi-Kalo\Kalo
43d7e3fb78 暂存线 2025-09-17 16:28:23 +08:00
ProjectKoi-Kalo\Kalo
4d41be964d 暂存 2025-09-17 16:18:42 +08:00
ProjectKoi-Kalo\Kalo
40be0d2faf 暂存 2025-09-17 15:20:42 +08:00
ProjectKoi-Kalo\Kalo
0c118ca8a6 暂存 2025-09-17 14:53:26 +08:00
ProjectKoi-Kalo\Kalo
ee9ada0edb 暂存 2025-09-17 14:01:07 +08:00
ProjectKoi-Kalo\Kalo
684a46df6c 整理2 2025-09-17 12:58:16 +08:00
ProjectKoi-Kalo\Kalo
c77def63c2 整理 2025-09-17 12:54:07 +08:00
Tourswen
9e992fc08b Update 脑虫.sai2 2025-09-17 11:51:46 +08:00
Tourswen
9d8129ad0e Update 脑虫.sai2 2025-09-17 00:55:50 +08:00
Tourswen
40cd353955 Merge branch 'master' of https://git.ra3battle.cn/Kalospacer/ArachnaeSwarm 2025-09-16 20:35:06 +08:00
Tourswen
a8621f1564 脑虫讲述者的初稿 2025-09-16 20:34:57 +08:00
ProjectKoi-Kalo\Kalo
a9ecd1e0fa 暂存 2025-09-16 19:43:52 +08:00
ProjectKoi-Kalo\Kalo
bfc20d53a1 暂存 2025-09-16 18:46:30 +08:00
ProjectKoi-Kalo\Kalo
26f66d2ca4 暂存 2025-09-16 14:00:50 +08:00
ProjectKoi-Kalo\Kalo
a7c96c6aed 暂存 2025-09-16 13:05:42 +08:00
ProjectKoi-Kalo\Kalo
c336450e87 暂存 2025-09-16 12:20:36 +08:00
ProjectKoi-Kalo\Kalo
040bb17f94 暂存烧脑 2025-09-16 11:51:29 +08:00
ProjectKoi-Kalo\Kalo
35ed2c01d5 暂存地形刺激 2025-09-16 11:22:59 +08:00
Tourswen
14a61b46e9 更新衣服的科技依赖 2025-09-15 21:52:43 +08:00
Tourswen
fda9a18124 虫群女仆装 2025-09-15 21:44:40 +08:00
Tourswen
629345e2f8 Update ARA_RaceNodeSwarm.xml 2025-09-15 15:53:15 +08:00
Tourswen
ba622f1e89 各种素材的更新 2025-09-14 07:10:54 +08:00
ProjectKoi-Kalo\Kalo
ba9c515b3f 酸爆种和土豆雷 2025-09-12 16:16:21 +08:00
ProjectKoi-Kalo\Kalo
5c32da8634 暂存 2025-09-12 15:31:34 +08:00
ProjectKoi-Kalo\Kalo
1b3c01d8bc 暂存 2025-09-11 22:45:43 +08:00
ProjectKoi-Kalo\Kalo
6c2527e695 暂存 2025-09-11 22:32:55 +08:00
ProjectKoi-Kalo\Kalo
929d362856 织域种 2025-09-11 21:48:48 +08:00
ProjectKoi-Kalo\Kalo
a114b6f037 暂存 2025-09-11 21:35:47 +08:00
ProjectKoi-Kalo\Kalo
8cbd09e036 暂存 2025-09-11 21:12:51 +08:00
ProjectKoi-Kalo\Kalo
f3d6c4e35e 暂存 2025-09-11 21:02:32 +08:00
ProjectKoi-Kalo\Kalo
f55952befc 暂存 2025-09-11 20:57:42 +08:00
ProjectKoi-Kalo\Kalo
6c1e7743dc 暂存 2025-09-11 19:47:02 +08:00
ProjectKoi-Kalo\Kalo
dede557c05 暂存 2025-09-11 18:56:31 +08:00
ProjectKoi-Kalo\Kalo
c102458a43 暂存 2025-09-11 18:38:21 +08:00
Tourswen
f815e468eb 对营养值和花费的调整 2025-09-11 08:37:52 +08:00
Tourswen
505076b835 空天种完成 2025-09-10 23:53:25 +08:00
ProjectKoi-Kalo\Kalo
2bd1f6260f 存去掉随机似 2025-09-10 19:31:06 +08:00
ProjectKoi-Kalo\Kalo
458e9b313b 暂存去掉急救标 2025-09-10 19:24:03 +08:00
ProjectKoi-Kalo\Kalo
2a70345b8e 暂存 2025-09-10 19:21:42 +08:00
ProjectKoi-Kalo\Kalo
f531d0a136 暂存拟线虫药物 2025-09-10 19:08:42 +08:00
ProjectKoi-Kalo\Kalo
d31f5c616a 暂存工作寄生体 2025-09-10 18:21:33 +08:00
ProjectKoi-Kalo\Kalo
d18f489113 暂存 2025-09-10 17:41:53 +08:00
Tourswen
12e860d637 修复督虫出生就超过预定年龄的问题 2025-09-10 17:30:02 +08:00
ProjectKoi-Kalo\Kalo
09fd8c2c82 Merge branch '拟线种' 2025-09-10 15:00:54 +08:00
Tourswen
7da13bd49d 描述 2025-09-10 12:00:11 +08:00
Tourswen
ee48fb4491 描述修改,给冲撞增加前置 2025-09-10 10:43:35 +08:00
220 changed files with 5490 additions and 742 deletions

Binary file not shown.

View File

@@ -3,7 +3,7 @@
<AbilityDef ParentName="AbilityTouchBase">
<defName>ARA_BindDrone</defName>
<label>信息素标记</label>
<description>使用信息素标记一只阿拉克涅督虫,受到标记的督虫和其麾下的辅虫将誓死效忠于女皇种,并与其建立心灵链接。</description>
<description>使用信息素标记一只阿拉克涅督虫,受到标记的督虫和其麾下的辅虫将誓死效忠于女皇种,并与其建立心灵链接。\n\n除了手动链接外女皇种也会每60秒尝试自动链接所有未链接的阿拉克涅督虫此类链接和手动链接不一样不需要目视。</description>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_BindDrone</iconPath> <!-- Placeholder: You'll need to create this icon -->
<hotKey>Misc1</hotKey>
@@ -31,12 +31,143 @@
</li>
</comps>
</AbilityDef>
<AbilityDef>
<defName>ARA_TrapSpew</defName>
<label>酸爆茧投射</label>
<description>发射一排阿拉克涅休眠茧,其中装有阿拉克涅酸爆种,这些危险的虫族被唤醒后就会开始寻仇,匆匆了结自己的生命.</description>
<iconPath>UI/Commands/EggSpew</iconPath>
<cooldownTicksRange>5000</cooldownTicksRange> <!-- 2 hours -->
<aiCanUse>true</aiCanUse>
<displayOrder>300</displayOrder>
<displayGizmoWhileUndrafted>true</displayGizmoWhileUndrafted>
<disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
<warmupStartSound>AcidSpray_Warmup</warmupStartSound>
<verbProperties>
<verbClass>Verb_CastAbility</verbClass>
<range>14.9</range>
<warmupTime>0.25</warmupTime>
<soundCast>AcidSpray_Resolve</soundCast>
<targetParams>
<canTargetLocations>true</canTargetLocations>
</targetParams>
</verbProperties>
<comps>
<li Class="CompProperties_AbilitySprayLiquid">
<projectileDef>ARA_Proj_StrongSludgeSpray</projectileDef>
<numCellsToHit>8</numCellsToHit>
<sprayEffecter>AcidSpray_Directional</sprayEffecter>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityLaunchMultiProjectile">
<projectileDef>ARA_Proj_Trap</projectileDef>
<numProjectiles>3</numProjectiles>
</li>
</comps>
</AbilityDef>
<ThingDef ParentName="ARA_EggSpew_Base_Proj">
<defName>ARA_Proj_Trap</defName>
<label>阿拉克涅酸爆茧</label>
<projectile>
<spawnsThingDef>Arachnae_AcidlingTrap</spawnsThingDef>
</projectile>
</ThingDef>
<AbilityDef>
<defName>ARA_TumorSpew</defName>
<label>菌瘤释放</label>
<description>排出一枚菌瘤,将附近的大片地区转变为菌毯地形,以方便虫群进行活动,并阻碍敌军的前进。</description>
<iconPath>UI/Commands/EggSpew</iconPath>
<cooldownTicksRange>5000</cooldownTicksRange>
<aiCanUse>false</aiCanUse>
<displayOrder>300</displayOrder>
<displayGizmoWhileUndrafted>true</displayGizmoWhileUndrafted>
<disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
<targetRequired>false</targetRequired>
<hostile>false</hostile>
<casterMustBeCapableOfViolence>false</casterMustBeCapableOfViolence>
<warmupStartSound>AcidSpray_Warmup</warmupStartSound>
<verbProperties>
<verbClass>Verb_CastAbility</verbClass>
<range>13</range>
<warmupTime>1</warmupTime>
<soundCast>AcidSpray_Resolve</soundCast>
<violent>false</violent>
<targetable>false</targetable>
<drawAimPie>false</drawAimPie>
<targetParams>
<canTargetSelf>True</canTargetSelf>
</targetParams>
</verbProperties>
<comps>
<li Class="ArachnaeSwarm.CompProperties_AbilityNeedCost">
<needDef>Food</needDef>
<needCost>0.2</needCost>
<failMessage>营养值不足,需要进食</failMessage>
</li>
<li Class="CompProperties_AbilityLaunchProjectile">
<projectileDef>ARA_Proj_Tumor</projectileDef>
</li>
</comps>
</AbilityDef>
<ThingDef ParentName="ARA_EggSpew_Base_Proj">
<defName>ARA_Proj_Tumor</defName>
<label>阿拉克涅菌瘤</label>
<projectile>
<spawnsThingDef>ARA_Tumor_Smokepop</spawnsThingDef>
</projectile>
</ThingDef>
<ThingDef ParentName="BuildingNaturalBase">
<defName>ARA_Tumor_Smokepop</defName>
<label>阿拉克涅枯萎菌瘤</label>
<description>由少数虫族排出的特殊菌瘤,除了照明外还会在地上大范围地扩散菌毯,但是很快就会枯死。</description>
<thingClass>Building</thingClass>
<!-- <minifiedDef>MinifiedThing</minifiedDef> -->
<altitudeLayer>Building</altitudeLayer>
<passability>PassThroughOnly</passability>
<selectable>true</selectable>
<fillPercent>0.20</fillPercent>
<leaveResourcesWhenKilled>false</leaveResourcesWhenKilled>
<rotatable>false</rotatable>
<tickerType>Normal</tickerType>
<repairEffect>EatVegetarian</repairEffect>
<filthLeaving>Filth_Slime</filthLeaving>
<statBases>
<MaxHitPoints>10</MaxHitPoints>
<Mass>4</Mass>
<Flammability>1.0</Flammability>
<MarketValue>50</MarketValue>
</statBases>
<graphicData>
<texPath>ArachnaeSwarm/Building/ARA_Tumor</texPath>
<graphicClass>Graphic_Single</graphicClass>
<drawSize>1.2</drawSize>
<shadowData>
<volume>(0.3, 0.6, 0.3)</volume>
<offset>(0,0,-0.1)</offset>
</shadowData>
</graphicData>
<placeWorkers>
<li>PlaceWorker_GlowRadius</li>
</placeWorkers>
<comps>
<li Class="CompProperties_Glower">
<glowRadius>13</glowRadius>
<glowColor>(220,210,171,0)</glowColor>
</li>
<li Class="CompProperties_Lifespan">
<lifespanTicks>9000</lifespanTicks>
</li>
<li Class="ArachnaeSwarm.CompProperties_DelayedTerrainSpawn">
<terrainToSpawn>ARA_InsectCreep</terrainToSpawn>
<spawnRadius>13</spawnRadius>
</li>
</comps>
</ThingDef>
<AbilityDef>
<defName>ARA_AcidSprayBurst_Queen</defName>
<label>女皇种酸液轰炸</label>
<description>阿拉克涅女皇种向目标地点喷射大量腐蚀性酸液,喷射将持续数秒以完全覆盖一片区域。</description>
<iconPath>UI/Abilities/AcidSpray</iconPath>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_AcidSprayBurst</iconPath>
<cooldownTicksRange>5000</cooldownTicksRange> <!-- 2 hours -->
<aiCanUse>true</aiCanUse>
<displayOrder>300</displayOrder>
@@ -110,7 +241,7 @@
<defName>ARA_AcidSprayBurst</defName>
<label>酸液轰炸</label>
<description>阿拉克涅督虫向目标地点喷射大量腐蚀性酸液,虽然不如女皇种所喷射的酸雨那样强劲,但是虫酸的伤害依然是实打实的。</description>
<iconPath>UI/Abilities/AcidSpray</iconPath>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_AcidSprayBurst</iconPath>
<cooldownTicksRange>12000</cooldownTicksRange> <!-- 2 hours -->
<aiCanUse>true</aiCanUse>
<displayOrder>300</displayOrder>
@@ -196,7 +327,7 @@
<defName>ARA_BaseRace_Acid_Launcher</defName>
<label>酸噬种投射</label>
<description>将一只阿拉克涅酸噬种辅虫发射到指定地点,落地后这只寿命有限的辅虫将立刻对敌人展开攻击。</description>
<iconPath>UI/Commands/EggSpew</iconPath>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_BaseRace_Launcher</iconPath>
<cooldownTicksRange>5000</cooldownTicksRange>
<aiCanUse>true</aiCanUse>
<displayOrder>300</displayOrder>
@@ -221,7 +352,7 @@
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityNeedCost">
<needDef>Food</needDef>
<needCost>0.5</needCost>
<needCost>0.2</needCost>
<failMessage>营养值不足,需要进食</failMessage>
</li>
</comps>
@@ -248,7 +379,7 @@
<defName>ARA_BaseRace_Skyhive_Launcher</defName>
<label>天巢种喷射巢</label>
<description>将三只阿拉克涅天巢种辅虫发射到目标身上,天巢种将附着到敌人身上撕咬,脱落后仍然能继续对敌人展开攻击。</description>
<iconPath>UI/Commands/EggSpew</iconPath>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_BaseRace_Launcher</iconPath>
<cooldownTicksRange>5000</cooldownTicksRange>
<aiCanUse>true</aiCanUse>
<displayOrder>300</displayOrder>
@@ -274,7 +405,42 @@
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityNeedCost">
<needDef>Food</needDef>
<needCost>0.5</needCost>
<needCost>0.2</needCost>
<failMessage>营养值不足,需要进食</failMessage>
</li>
</comps>
</AbilityDef>
<AbilityDef Name="LongJump">
<defName>ARA_Skyraider_jump</defName>
<label>高空机动</label>
<description>使用强壮的翅膀瞬间加力,以重定位至一处新的地点。</description>
<iconPath>UI/Abilities/Longjump</iconPath>
<cooldownTicksRange>5000</cooldownTicksRange>
<hostile>false</hostile>
<casterMustBeCapableOfViolence>false</casterMustBeCapableOfViolence>
<charges>2</charges>
<cooldownPerCharge>true</cooldownPerCharge>
<verbProperties>
<verbClass>Verb_CastAbilityJump</verbClass>
<label>jump</label>
<violent>false</violent>
<forceNormalTimeSpeed>false</forceNormalTimeSpeed>
<warmupTime>0</warmupTime>
<range>150</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>
<comps>
<li Class="ArachnaeSwarm.CompProperties_AbilityNeedCost">
<needDef>Food</needDef>
<needCost>0.3</needCost>
<failMessage>营养值不足,需要进食</failMessage>
</li>
</comps>
@@ -323,8 +489,8 @@
<AbilityDef>
<defName>ARA_Ability_Smokepop</defName>
<label>信息素浓雾释放</label>
<description>浓雾种将其腹部的大量释放阿拉克涅信息素烟雾,吸引附近的阿拉克涅辅虫破土而出支援虫群。形成一大片足以遮蔽虫族身形的烟雾,并防止敌方使用火焰武器点燃虫族集群。</description>
<iconPath>UI/Abilities/MechSmokepop</iconPath>
<description>浓雾种将其腹部的大量释放阿拉克涅信息素烟雾,形成一大片足以遮蔽虫族身形的烟雾,并防止敌方使用火焰武器点燃虫族集群。这些信息素会吸引附近的阿拉克涅辅虫破土而出支援虫群,沾染信息素的目标越多(无论敌我),前来支援的虫族就越多。</description>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Ability_Smokepop</iconPath>
<cooldownTicksRange>6000</cooldownTicksRange>
<targetRequired>false</targetRequired>
<hostile>false</hostile>
@@ -367,95 +533,61 @@
</li> -->
</comps>
</AbilityDef>
<AbilityDef>
<defName>ARA_TumorSpew</defName>
<label>菌瘤释放</label>
<description>排出一枚菌瘤,将附近的大片地区转变为菌毯地形,以方便虫群进行活动,并阻碍敌军的前进</description>
<iconPath>UI/Commands/EggSpew</iconPath>
<cooldownTicksRange>5000</cooldownTicksRange>
<aiCanUse>false</aiCanUse>
<displayOrder>300</displayOrder>
<displayGizmoWhileUndrafted>true</displayGizmoWhileUndrafted>
<disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
<targetRequired>false</targetRequired>
<hostile>false</hostile>
<casterMustBeCapableOfViolence>false</casterMustBeCapableOfViolence>
<warmupStartSound>AcidSpray_Warmup</warmupStartSound>
<defName>ARA_Ability_TrackingCharge</defName>
<label>蛮力冲撞</label>
<description>阿拉克涅盾头种对目标发起蓄势冲撞,对路径上的一切造成伤害。在冲击中途经的距离越远,伤害越高</description>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Ability_TrackingCharge</iconPath> <!-- Placeholder Icon -->
<cooldownTicksRange>6000</cooldownTicksRange>
<charges>3</charges>
<cooldownPerCharge>true</cooldownPerCharge>
<verbProperties>
<verbClass>Verb_CastAbility</verbClass>
<range>13</range>
<warmupTime>1</warmupTime>
<soundCast>AcidSpray_Resolve</soundCast>
<violent>false</violent>
<targetable>false</targetable>
<drawAimPie>false</drawAimPie>
<verbClass>ArachnaeSwarm.Verb_CastAbilityTrackingCharge</verbClass>
<label>追踪冲撞</label>
<targetParams>
<canTargetSelf>True</canTargetSelf>
<canTargetPawns>true</canTargetPawns>
<canTargetBuildings>false</canTargetBuildings>
<canTargetAnimals>true</canTargetAnimals>
<canTargetMechs>true</canTargetMechs>
<canTargetSelf>false</canTargetSelf>
</targetParams>
<range>30</range>
<warmupTime>1.0</warmupTime>
</verbProperties>
<comps>
<li Class="ArachnaeSwarm.CompProperties_TrackingCharge">
<homingSpeed>1.5</homingSpeed>
<initialDamage>15</initialDamage>
<damagePerTile>1.5</damagePerTile>
<inertiaDistance>6</inertiaDistance>
<collisionDamageDef>Blunt</collisionDamageDef>
<flyerDef>ARA_Flyer_TrackingCharge</flyerDef>
<collisionRadius>1.5</collisionRadius> <!-- Larger collision radius -->
<impactSound>Pawn_Melee_BigBash_HitPawn</impactSound>
<damageHostileOnly>true</damageHostileOnly> <!-- Set to false to damage everyone in the path -->
</li>
<li Class="CompProperties_AbilityEffecterOnCaster">
<effecterDef>WarTrumpet</effecterDef>
<maintainTicks>20</maintainTicks> <!-- Long enough for the "2nd wave" to spawn -->
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
<requiredResearch>ARA_Technology_1VTE</requiredResearch>
<failMessage>需要科技 基因节点VTE-1"爆发激素" 以解锁技能</failMessage>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityNeedCost">
<needDef>Food</needDef>
<needCost>1</needCost>
<needCost>0.2</needCost>
<failMessage>营养值不足,需要进食</failMessage>
</li>
<li Class="CompProperties_AbilityLaunchProjectile">
<projectileDef>ARA_Proj_Tumor</projectileDef>
</li>
</comps>
</AbilityDef>
<ThingDef ParentName="ARA_EggSpew_Base_Proj">
<defName>ARA_Proj_Tumor</defName>
<label>阿拉克涅菌瘤</label>
<projectile>
<spawnsThingDef>ARA_Tumor_Smokepop</spawnsThingDef>
</projectile>
</ThingDef>
<ThingDef ParentName="BuildingNaturalBase">
<defName>ARA_Tumor_Smokepop</defName>
<label>阿拉克涅枯萎菌瘤</label>
<description>由少数虫族排出的特殊菌瘤,除了照明外还会在地上大范围地扩散菌毯,但是很快就会枯死。</description>
<thingClass>Building</thingClass>
<!-- <minifiedDef>MinifiedThing</minifiedDef> -->
<altitudeLayer>Building</altitudeLayer>
<passability>PassThroughOnly</passability>
<selectable>true</selectable>
<fillPercent>0.20</fillPercent>
<leaveResourcesWhenKilled>false</leaveResourcesWhenKilled>
<rotatable>false</rotatable>
<tickerType>Normal</tickerType>
<repairEffect>EatVegetarian</repairEffect>
<filthLeaving>Filth_Slime</filthLeaving>
<statBases>
<MaxHitPoints>10</MaxHitPoints>
<Mass>4</Mass>
<Flammability>1.0</Flammability>
<MarketValue>50</MarketValue>
</statBases>
<graphicData>
<texPath>ArachnaeSwarm/Building/ARA_Tumor</texPath>
<graphicClass>Graphic_Single</graphicClass>
<drawSize>1.2</drawSize>
<shadowData>
<volume>(0.3, 0.6, 0.3)</volume>
<offset>(0,0,-0.1)</offset>
</shadowData>
</graphicData>
<placeWorkers>
<li>PlaceWorker_GlowRadius</li>
</placeWorkers>
<comps>
<li Class="CompProperties_Glower">
<glowRadius>13</glowRadius>
<glowColor>(220,210,171,0)</glowColor>
</li>
<li Class="CompProperties_Lifespan">
<lifespanTicks>9000</lifespanTicks>
</li>
<li Class="ArachnaeSwarm.CompProperties_DelayedTerrainSpawn">
<terrainToSpawn>ARA_InsectCreep</terrainToSpawn>
<spawnRadius>13</spawnRadius>
</li>
</comps>
<ThingDef ParentName="PawnFlyerBase">
<defName>ARA_Flyer_TrackingCharge</defName>
<thingClass>ArachnaeSwarm.PawnFlyer_TrackingCharge</thingClass>
<pawnFlyer>
<flightSpeed>0.5</flightSpeed>
<heightFactor>0</heightFactor>
</pawnFlyer>
</ThingDef>
</Defs>

View File

@@ -89,7 +89,7 @@
<defName>ARA_EggSpew</defName>
<label>生育虫卵</label>
<description>从卵巢中排出一颗休眠的虫卵,阿拉克涅女皇种可以通过与其交互将其激活,并选择孵化的督虫虫族类型——参阅虫卵的具体信息,了解各个督虫的特点。\n\n该虫卵只能孵化小型虫族。</description>
<iconPath>UI/Commands/EggSpew</iconPath>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_EggSpew</iconPath>
<comps>
<li Class="CompProperties_AbilityLaunchProjectile">
<projectileDef>ARA_Proj_EggSac</projectileDef>
@@ -100,7 +100,7 @@
<defName>ARA_EggSpew_Huge</defName>
<label>生育大型虫卵</label>
<description>从卵巢中排出一颗休眠的大型虫卵,阿拉克涅女皇种可以通过与其交互将其激活,并选择孵化的督虫虫族类型——参阅虫卵的具体信息,了解各个督虫的特点。\n\n该虫卵只能孵化大型虫族。</description>
<iconPath>UI/Commands/EggSpew</iconPath>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_EggSpew_Huge</iconPath>
<comps>
<li Class="CompProperties_AbilityLaunchProjectile">
<projectileDef>ARA_Proj_EggSac_Huge</projectileDef>
@@ -112,7 +112,7 @@
<defName>ARA_EggSpew_1Stage</defName>
<label>生育虫卵——等级1</label>
<description>从卵巢中排出一颗休眠的虫卵,阿拉克涅女皇种可以通过与其交互将其激活,并选择孵化的督虫虫族类型——参阅虫卵的具体信息,了解各个督虫的特点。\n\n该虫卵只能孵化小型虫族。</description>
<iconPath>UI/Commands/EggSpew</iconPath>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_EggSpew_1Stage</iconPath>
<comps>
<li Class="CompProperties_AbilityLaunchProjectile">
<projectileDef>ARA_Proj_EggSac_1Stage</projectileDef>
@@ -123,7 +123,7 @@
<defName>ARA_EggSpew_Huge_1Stage</defName>
<label>生育大型虫卵——等级1</label>
<description>从卵巢中排出一颗休眠的大型虫卵,阿拉克涅女皇种可以通过与其交互将其激活,并选择孵化的督虫虫族类型——参阅虫卵的具体信息,了解各个督虫的特点。\n\n该虫卵只能孵化大型虫族。</description>
<iconPath>UI/Commands/EggSpew</iconPath>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_EggSpew_Huge_1Stage</iconPath>
<comps>
<li Class="CompProperties_AbilityLaunchProjectile">
<projectileDef>ARA_Proj_EggSac_Huge_1Stage</projectileDef>

View File

@@ -1,52 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- 1. Definition for the PawnFlyer itself -->
<ThingDef ParentName="PawnFlyerBase">
<defName>ARA_Flyer_TrackingCharge</defName>
<thingClass>ArachnaeSwarm.PawnFlyer_TrackingCharge</thingClass>
<pawnFlyer>
<flightSpeed>0.5</flightSpeed>
<heightFactor>0</heightFactor>
</pawnFlyer>
</ThingDef>
<!-- 2. The final Ability Definition -->
<AbilityDef>
<defName>ARA_Ability_TrackingCharge</defName>
<label>追踪冲撞</label>
<description>阿拉克涅盾头种对目标发起蓄势冲撞,对路径上的一切造成伤害。飞行的距离越远,伤害越高。</description>
<iconPath>UI/Commands/WarTrumpet</iconPath> <!-- Placeholder Icon -->
<cooldownTicksRange>600</cooldownTicksRange>
<verbProperties>
<verbClass>ArachnaeSwarm.Verb_CastAbilityTrackingCharge</verbClass>
<label>追踪冲撞</label>
<targetParams>
<canTargetPawns>true</canTargetPawns>
<canTargetBuildings>false</canTargetBuildings>
<canTargetAnimals>true</canTargetAnimals>
<canTargetMechs>true</canTargetMechs>
<canTargetSelf>false</canTargetSelf>
</targetParams>
<range>30</range>
<warmupTime>1.0</warmupTime>
</verbProperties>
<comps>
<li Class="ArachnaeSwarm.CompProperties_TrackingCharge">
<homingSpeed>1.5</homingSpeed>
<initialDamage>15</initialDamage>
<damagePerTile>2</damagePerTile>
<inertiaDistance>6</inertiaDistance>
<collisionDamageDef>Blunt</collisionDamageDef>
<flyerDef>ARA_Flyer_TrackingCharge</flyerDef>
<collisionRadius>1.5</collisionRadius> <!-- Larger collision radius -->
<impactSound>Pawn_Melee_BigBash_HitPawn</impactSound>
<damageHostileOnly>true</damageHostileOnly> <!-- Set to false to damage everyone in the path -->
</li>
<li Class="CompProperties_AbilityEffecterOnCaster">
<effecterDef>WarTrumpet</effecterDef>
<maintainTicks>20</maintainTicks> <!-- Long enough for the "2nd wave" to spawn -->
</li>
</comps>
</AbilityDef>
</Defs>

View File

@@ -0,0 +1,43 @@
<?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>

View File

@@ -0,0 +1,110 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- 变形技能的定义 -->
<AbilityDef>
<defName>ARA_Ability_Morph</defName>
<label>织域形态</label>
<description>将自己转换为一个坚固的静态建筑形态,或从建筑形态恢复。</description>
<iconPath>UI/Commands/EggSpew</iconPath> <!-- TODO: 替换为你的图标路径 -->
<cooldownTicksRange>6000</cooldownTicksRange>
<hotKey>Misc12</hotKey>
<targetRequired>false</targetRequired>
<casterMustBeCapableOfViolence>false</casterMustBeCapableOfViolence>
<verbProperties>
<verbClass>Verb_CastAbility</verbClass>
<drawAimPie>false</drawAimPie>
<requireLineOfSight>false</requireLineOfSight>
<nonInterruptingSelfCast>true</nonInterruptingSelfCast>
<warmupTime>1</warmupTime>
<range>19.9</range>
<targetable>false</targetable>
<targetParams>
<canTargetSelf>True</canTargetSelf>
</targetParams>
</verbProperties>
<comps>
<li Class="ArachnaeSwarm.CompProperties_AbilityTransform">
<buildingDef>ARA_MorphableResearchBench</buildingDef>
</li>
</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>

View File

@@ -8,14 +8,15 @@
<key>ARA_Flight_Attachment</key>
<value>
<keyframes>
<li><graphicState>ARA_FlyEast_0</graphicState><tick>0</tick></li>
<li><graphicState>ARA_FlyEast_1</graphicState><tick>4</tick></li>
<li><graphicState>ARA_FlyEast_2</graphicState><tick>8</tick></li>
<li><graphicState>ARA_FlyEast_3</graphicState><tick>12</tick></li>
<li><graphicState>ARA_FlyEast_4</graphicState><tick>16</tick></li>
<li><graphicState>ARA_FlyEast_5</graphicState><tick>20</tick></li>
<li><graphicState>ARA_FlyEast_6</graphicState><tick>24</tick></li>
<li><graphicState>ARA_FlyEast_7</graphicState><tick>28</tick></li>
<li><graphicState>ARA_FlyEast_0</graphicState><tick>6</tick></li>
<li><graphicState>ARA_FlyEast_1</graphicState><tick>12</tick></li>
<li><graphicState>ARA_FlyEast_2</graphicState><tick>18</tick></li>
<li><graphicState>ARA_FlyEast_3</graphicState><tick>24</tick></li>
<li><graphicState>ARA_FlyEast_4</graphicState><tick>32</tick></li>
<li><graphicState>ARA_FlyEast_3</graphicState><tick>48</tick></li>
<li><graphicState>ARA_FlyEast_2</graphicState><tick>52</tick></li>
<li><graphicState>ARA_FlyEast_1</graphicState><tick>58</tick></li>
<li><graphicState>ARA_FlyEast_0</graphicState><tick>60</tick></li>
</keyframes>
</value>
</li>
@@ -38,14 +39,15 @@
<key>ARA_Flight_Attachment</key>
<value>
<keyframes>
<li><graphicState>ARA_FlyNorth_0</graphicState><tick>0</tick></li>
<li><graphicState>ARA_FlyNorth_1</graphicState><tick>4</tick></li>
<li><graphicState>ARA_FlyNorth_2</graphicState><tick>8</tick></li>
<li><graphicState>ARA_FlyNorth_3</graphicState><tick>12</tick></li>
<li><graphicState>ARA_FlyNorth_4</graphicState><tick>16</tick></li>
<li><graphicState>ARA_FlyNorth_5</graphicState><tick>20</tick></li>
<li><graphicState>ARA_FlyNorth_6</graphicState><tick>24</tick></li>
<li><graphicState>ARA_FlyNorth_7</graphicState><tick>28</tick></li>
<li><graphicState>ARA_FlyNorth_0</graphicState><tick>6</tick></li>
<li><graphicState>ARA_FlyNorth_1</graphicState><tick>12</tick></li>
<li><graphicState>ARA_FlyNorth_2</graphicState><tick>18</tick></li>
<li><graphicState>ARA_FlyNorth_3</graphicState><tick>24</tick></li>
<li><graphicState>ARA_FlyNorth_4</graphicState><tick>32</tick></li>
<li><graphicState>ARA_FlyNorth_3</graphicState><tick>48</tick></li>
<li><graphicState>ARA_FlyNorth_2</graphicState><tick>52</tick></li>
<li><graphicState>ARA_FlyNorth_1</graphicState><tick>58</tick></li>
<li><graphicState>ARA_FlyNorth_0</graphicState><tick>60</tick></li>
</keyframes>
</value>
</li>
@@ -68,14 +70,15 @@
<key>ARA_Flight_Attachment</key>
<value>
<keyframes>
<li><graphicState>ARA_FlySouth_0</graphicState><tick>0</tick></li>
<li><graphicState>ARA_FlySouth_1</graphicState><tick>4</tick></li>
<li><graphicState>ARA_FlySouth_2</graphicState><tick>8</tick></li>
<li><graphicState>ARA_FlySouth_3</graphicState><tick>12</tick></li>
<li><graphicState>ARA_FlySouth_4</graphicState><tick>16</tick></li>
<li><graphicState>ARA_FlySouth_5</graphicState><tick>20</tick></li>
<li><graphicState>ARA_FlySouth_6</graphicState><tick>24</tick></li>
<li><graphicState>ARA_FlySouth_7</graphicState><tick>28</tick></li>
<li><graphicState>ARA_FlySouth_0</graphicState><tick>6</tick></li>
<li><graphicState>ARA_FlySouth_1</graphicState><tick>12</tick></li>
<li><graphicState>ARA_FlySouth_2</graphicState><tick>18</tick></li>
<li><graphicState>ARA_FlySouth_3</graphicState><tick>24</tick></li>
<li><graphicState>ARA_FlySouth_4</graphicState><tick>32</tick></li>
<li><graphicState>ARA_FlySouth_3</graphicState><tick>48</tick></li>
<li><graphicState>ARA_FlySouth_2</graphicState><tick>52</tick></li>
<li><graphicState>ARA_FlySouth_1</graphicState><tick>58</tick></li>
<li><graphicState>ARA_FlySouth_0</graphicState><tick>60</tick></li>
</keyframes>
</value>
</li>

View File

@@ -275,4 +275,32 @@
<li>ArachnaeNode_spawnCategories_Facehugger</li>
</spawnCategories>
</AlienRace.AlienBackstoryDef>
<AlienRace.AlienBackstoryDef ParentName="ARA_BaseBackStory">
<defName>Arachnae_Node_BS_Adult_NeuroSwarm</defName>
<title>阿拉克涅织域种</title>
<titleShort>织域种</titleShort>
<description>[PAWN_nameDef]是一只阿拉克涅织域种督虫。织域种虽然受到女皇种监管,但仍然具有强大的高级智慧和自我意志,织域种之间能够构建一种高度互联的神经网络从而进行复杂的研究和计算工作,织域种进行计算工作时无法感知外界环境,因此她们是虫群的重要保护对象。</description>
<slot>Adulthood</slot>
<workDisables>
<li>Cleaning</li>
<!-- <li>Hauling</li> -->
<li>Mining</li>
<li>PlantWork</li>
<li>Animals</li>
<li>Hunting</li>
<!-- <li>Crafting</li> -->
<li>Cooking</li>
<li>Constructing</li>
<li>Caring</li>
<!-- <li>Artistic</li> -->
</workDisables>
<skillGains>
<Intellectual>10</Intellectual>
</skillGains>
<spawnCategories>
<li>ArachnaeNode_spawnCategories_NeuroSwarm</li>
</spawnCategories>
</AlienRace.AlienBackstoryDef>
</Defs>

View File

@@ -286,5 +286,42 @@
<FacialAnimation.SkinTypeDef ParentName="ArachnaeNode_Skin" MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_Race_Smokepop_SkinNormal</defName>
<raceName>ArachnaeNode_Race_Smokepop</raceName>
</FacialAnimation.SkinTypeDef>
<FacialAnimation.BrowTypeDef ParentName="ArachnaeNode_Brow" MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_Race_Skyraider_BrowNormal</defName>
<raceName>ArachnaeNode_Race_Skyraider</raceName>
</FacialAnimation.BrowTypeDef>
<FacialAnimation.EyeballTypeDef ParentName="ArachnaeNode_EyeA" MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_Race_Skyraider_EyeNormal</defName>
<raceName>ArachnaeNode_Race_Skyraider</raceName>
</FacialAnimation.EyeballTypeDef>
<FacialAnimation.EyeballTypeDef ParentName="ArachnaeNode_EyeB" MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_Race_Skyraider_EyeNormal2</defName>
<raceName>ArachnaeNode_Race_Skyraider</raceName>
</FacialAnimation.EyeballTypeDef>
<FacialAnimation.EyeballTypeDef ParentName="ArachnaeNode_EyeC" MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_Race_Skyraider_EyeNormal3</defName>
<raceName>ArachnaeNode_Race_Skyraider</raceName>
</FacialAnimation.EyeballTypeDef>
<FacialAnimation.EyeballTypeDef ParentName="ArachnaeNode_EyeD" MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_Race_Skyraider_EyeNormal4</defName>
<raceName>ArachnaeNode_Race_Skyraider</raceName>
</FacialAnimation.EyeballTypeDef>
<FacialAnimation.HeadTypeDef ParentName="ArachnaeNode_Head" MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_Race_Skyraider_HeadNormal</defName>
<raceName>ArachnaeNode_Race_Skyraider</raceName>
</FacialAnimation.HeadTypeDef>
<FacialAnimation.LidTypeDef ParentName="ArachnaeNode_Lid" MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_Race_Skyraider_LidNormal</defName>
<raceName>ArachnaeNode_Race_Skyraider</raceName>
</FacialAnimation.LidTypeDef>
<FacialAnimation.MouthTypeDef ParentName="ArachnaeNode_Mouth" MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_Race_Skyraider_MouthNormal</defName>
<raceName>ArachnaeNode_Race_Skyraider</raceName>
</FacialAnimation.MouthTypeDef>
<FacialAnimation.SkinTypeDef ParentName="ArachnaeNode_Skin" MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_Race_Skyraider_SkinNormal</defName>
<raceName>ArachnaeNode_Race_Skyraider</raceName>
</FacialAnimation.SkinTypeDef>
</Defs>

View File

@@ -2,33 +2,33 @@
<Defs>
<!-- North Frames -->
<GraphicStateDef><defName>ARA_FlyNorth_0</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_1_north</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyNorth_1</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_2_north</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyNorth_2</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_3_north</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyNorth_3</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_4_north</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyNorth_4</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_5_north</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyNorth_5</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_6_north</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyNorth_0</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>ArachnaeSwarm/Things/ARA_HiveNode/Addons/Flying/ArachnaeNode_Race_Addons_Skyraider_Wing_1_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyNorth_1</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>ArachnaeSwarm/Things/ARA_HiveNode/Addons/Flying/ArachnaeNode_Race_Addons_Skyraider_Wing_2_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyNorth_2</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>ArachnaeSwarm/Things/ARA_HiveNode/Addons/Flying/ArachnaeNode_Race_Addons_Skyraider_Wing_3_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyNorth_3</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>ArachnaeSwarm/Things/ARA_HiveNode/Addons/Flying/ArachnaeNode_Race_Addons_Skyraider_Wing_4_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyNorth_4</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>ArachnaeSwarm/Things/ARA_HiveNode/Addons/Flying/ArachnaeNode_Race_Addons_Skyraider_Wing_5_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<!-- <GraphicStateDef><defName>ARA_FlyNorth_5</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_6_north</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyNorth_6</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_7_north</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyNorth_7</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_8_north</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyNorth_7</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_8_north</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef> -->
<!-- East Frames -->
<GraphicStateDef><defName>ARA_FlyEast_0</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_1_east</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyEast_1</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_2_east</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyEast_2</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_3_east</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyEast_3</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_4_east</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyEast_4</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_5_east</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyEast_5</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_6_east</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyEast_0</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>ArachnaeSwarm/Things/ARA_HiveNode/Addons/Flying/ArachnaeNode_Race_Addons_Skyraider_Wing_1_east</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyEast_1</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>ArachnaeSwarm/Things/ARA_HiveNode/Addons/Flying/ArachnaeNode_Race_Addons_Skyraider_Wing_2_east</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyEast_2</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>ArachnaeSwarm/Things/ARA_HiveNode/Addons/Flying/ArachnaeNode_Race_Addons_Skyraider_Wing_3_east</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyEast_3</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>ArachnaeSwarm/Things/ARA_HiveNode/Addons/Flying/ArachnaeNode_Race_Addons_Skyraider_Wing_4_east</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyEast_4</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>ArachnaeSwarm/Things/ARA_HiveNode/Addons/Flying/ArachnaeNode_Race_Addons_Skyraider_Wing_5_east</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<!-- <GraphicStateDef><defName>ARA_FlyEast_5</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_6_east</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyEast_6</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_7_east</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyEast_7</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_8_east</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyEast_7</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_8_east</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef> -->
<!-- South Frames -->
<GraphicStateDef><defName>ARA_FlySouth_0</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_1_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlySouth_1</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_2_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlySouth_2</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_3_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlySouth_3</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_4_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlySouth_4</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_5_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlySouth_5</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_6_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlySouth_0</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>ArachnaeSwarm/Things/ARA_HiveNode/Addons/Flying/ArachnaeNode_Race_Addons_Skyraider_Wing_1_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlySouth_1</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>ArachnaeSwarm/Things/ARA_HiveNode/Addons/Flying/ArachnaeNode_Race_Addons_Skyraider_Wing_2_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlySouth_2</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>ArachnaeSwarm/Things/ARA_HiveNode/Addons/Flying/ArachnaeNode_Race_Addons_Skyraider_Wing_3_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlySouth_3</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>ArachnaeSwarm/Things/ARA_HiveNode/Addons/Flying/ArachnaeNode_Race_Addons_Skyraider_Wing_4_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlySouth_4</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>ArachnaeSwarm/Things/ARA_HiveNode/Addons/Flying/ArachnaeNode_Race_Addons_Skyraider_Wing_5_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<!-- <GraphicStateDef><defName>ARA_FlySouth_5</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_6_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlySouth_6</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_7_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlySouth_7</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_8_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlySouth_7</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_8_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef> -->
</Defs>

View File

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<HediffDef>
<defName>ARA_TerrainBasedHediff</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 ticks1秒检查一次 -->
<interval>60</interval>
<!-- 目标地形列表 -->
<terrainDefs>
<!--<li>SterileTile</li> 无菌地砖 -->
<!-- 您可以在这里添加更多地形, 比如: -->
<li>ARA_InsectCreep</li>
</terrainDefs>
<!-- 站在目标地形上时,每次检查的严重性变化量 -->
<severityOnTerrain>0.0167</severityOnTerrain>
<!-- 不在目标地形上时,每次检查的严重性变化量 (负数表示减少) -->
<severityOffTerrain>-0.0083</severityOffTerrain>
</li>
<li Class="HediffCompProperties_RemoveIfApparelDropped" />
</comps>
<stages>
<li>
<becomeVisible>false</becomeVisible>
<minSeverity>0</minSeverity>
<label></label>
</li>
<li>
<minSeverity>0.4</minSeverity>
<label>适应</label>
<capMods>
<li>
<capacity>Consciousness</capacity>
<offset>0.1</offset>
</li>
</capMods>
</li>
<li>
<minSeverity>0.8</minSeverity>
<label>舒适</label>
<capMods>
<li>
<capacity>Consciousness</capacity>
<offset>0.25</offset>
</li>
</capMods>
</li>
</stages>
</HediffDef>
</Defs>

View File

@@ -19,7 +19,7 @@
<stages>
<li>
<label>潜伏</label>
<label>休眠</label>
<becomeVisible>false</becomeVisible>
<vomitMtbDays>5</vomitMtbDays>
</li>
@@ -28,6 +28,7 @@
<minSeverity>0.5</minSeverity>
<vomitMtbDays>1</vomitMtbDays>
<painFactor>0.5</painFactor>
<totalBleedFactor>0.9</totalBleedFactor>
<becomeVisible>false</becomeVisible>
<capMods>
<li>
@@ -39,18 +40,33 @@
<li>
<label>终末期</label>
<minSeverity>0.7</minSeverity>
<deathMtbDays>0.5</deathMtbDays>
<painFactor>0</painFactor>
<lifeThreatening>true</lifeThreatening>
<totalBleedFactor>0.3</totalBleedFactor>
<becomeVisible>true</becomeVisible>
<capMods>
<li>
<capacity>Talking</capacity>
<postFactor>0</postFactor>
</li>
<li>
<capacity>BloodFiltration</capacity>
<offset>0.45</offset>
</li>
<li>
<capacity>BloodPumping</capacity>
<offset>0.1</offset>
</li>
<li>
<capacity>Metabolism</capacity>
<offset>0.1</offset>
</li>
<li>
<capacity>Breathing</capacity>
<offset>0.1</offset>
</li>
<li>
<capacity>Consciousness</capacity>
<postFactor>0.7</postFactor>
<offset>-0.1</offset>
</li>
</capMods>
<regeneration>50</regeneration>
@@ -58,8 +74,8 @@
<li>
<label>即将转化</label>
<minSeverity>0.9</minSeverity>
<deathMtbDays>0.5</deathMtbDays>
<painFactor>2.0</painFactor>
<painFactor>0</painFactor>
<totalBleedFactor>0.3</totalBleedFactor>
<lifeThreatening>true</lifeThreatening>
<becomeVisible>true</becomeVisible>
<capMods>
@@ -67,6 +83,22 @@
<capacity>Talking</capacity>
<postFactor>0</postFactor>
</li>
<li>
<capacity>BloodFiltration</capacity>
<offset>0.45</offset>
</li>
<li>
<capacity>BloodPumping</capacity>
<offset>0.1</offset>
</li>
<li>
<capacity>Metabolism</capacity>
<offset>0.1</offset>
</li>
<li>
<capacity>Breathing</capacity>
<offset>0.1</offset>
</li>
<li>
<capacity>Consciousness</capacity>
<setMax>0.1</setMax>
@@ -90,11 +122,18 @@
<showRemainingTime>true</showRemainingTime>
</li>
<li Class="ArachnaeSwarm.HediffCompProperties_NecroticTransformation">
<!-- 3. 在这里指定你希望转化成的MutantDef的defName -->
<!-- 例如: Shambler, Ghoul, 或者您自己定义的其他变异体 -->
<mutantDef>ARA_MimicNematodeShambler</mutantDef>
<triggerSeverity>0.7</triggerSeverity>
</li>
<!-- ==================== 新增的共生组件 ==================== -->
<li Class="ArachnaeSwarm.HediffCompProperties_Symbiosis">
<!-- "钥匙": 只有当Pawn拥有这个Hediff时共生效果才会激活 -->
<requiredHediff>ARA_SymbioticStabilizer</requiredHediff>
<!-- "新的上限": 在共生状态下此Hediff的严重性最高只能达到0.8 -->
<newMaxSeverity>0.8</newMaxSeverity>
</li>
<li Class="HediffCompProperties_DisappearsOnDeath" />
</comps>

View File

@@ -70,8 +70,8 @@
<forceNormalGearQuality>true</forceNormalGearQuality>
<initialWillRange>99~99</initialWillRange>
<initialResistanceRange>99~99</initialResistanceRange>
<maxGenerationAge>30</maxGenerationAge>
<minGenerationAge>10</minGenerationAge>
<maxGenerationAge>0</maxGenerationAge>
<minGenerationAge>0</minGenerationAge>
<canBeScattered>false</canBeScattered>
<xenotypeSet>
<xenotypeChances>
@@ -234,7 +234,7 @@
<race>ArachnaeNode_Race_Skyraider</race>
<defaultFactionType>PlayerColony</defaultFactionType>
<invNutrition>0</invNutrition>
<flyingAnimationFramePathPrefix>Things/Pawn/Animal/Goose/Goose_Flying_</flyingAnimationFramePathPrefix>
<flyingAnimationFramePathPrefix>ArachnaeSwarm/Things/ARA_HiveNode/Addons/Flying/ArachnaeNode_Race_Addons_Skyraider_Wing_</flyingAnimationFramePathPrefix>
<flyingAnimationDrawSize>1.35</flyingAnimationDrawSize>
<flyingAnimationFrameCount>2</flyingAnimationFrameCount>
<flyingAnimationTicksPerFrame>2</flyingAnimationTicksPerFrame>
@@ -249,13 +249,34 @@
</backstoryFiltersOverride>
<abilities>
<li>ARA_BaseRace_Skyhive_Launcher</li>
</abilities>
<abilities>
<li>ARA_Skyraider_jump</li>
</abilities>
<apparelTags>
</apparelTags>
<apparelMoney>0</apparelMoney>
</PawnKindDef>
<PawnKindDef ParentName="ArachnaeNodeABasePawnKind">
<defName>ArachnaeNode_Race_NeuroSwarm</defName>
<label>阿拉克涅织域种</label>
<race>ArachnaeNode_Race_NeuroSwarm</race>
<defaultFactionType>PlayerColony</defaultFactionType>
<invNutrition>0</invNutrition>
<backstoryFiltersOverride>
<li>
<categories>
<li>ArachnaeNode_spawnCategoriesA</li>
<li>ArachnaeNode_spawnCategories_NeuroSwarm</li>
</categories>
</li>
</backstoryFiltersOverride>
<abilities>
<li>ARA_Ability_Morph</li>
</abilities>
<apparelTags>
</apparelTags>
<apparelMoney>0</apparelMoney>
</PawnKindDef>
<PawnKindDef Name="ARA_InsectKindBase" ParentName="AnimalKindBase" Abstract="True">
<defaultFactionType>PlayerColony</defaultFactionType>
@@ -264,6 +285,8 @@
<forceNoDeathNotification>true</forceNoDeathNotification>
<combatPower>75</combatPower>
<ecoSystemWeight>0</ecoSystemWeight>
<maxGenerationAge>0</maxGenerationAge>
<minGenerationAge>0</minGenerationAge>
<moveSpeedFactorByTerrainTag>
<li>
<key>ARA_Creep</key>
@@ -337,6 +360,28 @@
</li>
</lifeStages>
</PawnKindDef>
<PawnKindDef ParentName="ARA_InsectKindBase">
<defName>ArachnaeBase_Race_Acidling</defName>
<label>阿拉克涅酸爆种</label>
<race>ArachnaeBase_Race_Acidling</race>
<lifeStages>
<li>
<bodyGraphicData>
<texPath>Things/Pawn/Animal/Spelopede/Spelopede</texPath>
<drawSize>1</drawSize>
<color>(156,148,125)</color>
<shadowData>
<volume>(0.4, 0.5, 0.37)</volume>
<offset>(0,0,-0.15)</offset>
</shadowData>
</bodyGraphicData>
<dessicatedBodyGraphicData>
<texPath>Things/Pawn/Animal/Spelopede/Dessicated_Spelopede</texPath>
<drawSize>1</drawSize>
</dessicatedBodyGraphicData>
</li>
</lifeStages>
</PawnKindDef>
<PawnKindDef ParentName="ARA_InsectKindBase">
<defName>ArachnaeBase_Race_Maid</defName>
<label>阿拉克涅家政种</label>

View File

@@ -56,7 +56,7 @@
<li> <!-- 使用默认的 PawnRenderNodeProperties -->
<debugLabel>Wings (Hides when flying)</debugLabel>
<workerClass>ArachnaeSwarm.PawnRenderNodeWorker_AttachmentBody_NoFlight</workerClass>
<texPath>ArachnaeSwarm/Things/General/Invisible/Inv</texPath>
<texPath>ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Addons_Skyraider_Wing</texPath>
<baseLayer>60</baseLayer>
<drawData>
<dataSouth>

View File

@@ -260,7 +260,7 @@
</descriptionHyperlinks>
<jobString>安装暗物质能源炉中</jobString>
<anesthetize>false</anesthetize>
<ingredients Inherit="False">
<!-- <ingredients Inherit="False">
<li>
<filter>
<thingDefs>
@@ -269,17 +269,17 @@
</filter>
<count>1</count>
</li>
</ingredients>
</ingredients> -->
<fixedIngredientFilter>
<!-- <fixedIngredientFilter>
<thingDefs>
<li>WULA_Energy_Furnace_DM_Engine</li>
</thingDefs>
</fixedIngredientFilter>
<appliedOnFixedBodyParts>
</fixedIngredientFilter> -->
<!-- <appliedOnFixedBodyParts>
<li>WULA_Energy_Furnace_Bodypart</li>
</appliedOnFixedBodyParts>
<addsHediff>WULA_Energy_Furnace_Hediff_DM_Engine</addsHediff>
</appliedOnFixedBodyParts> -->
<addsHediff>ARA_WeaponSmith_1_Stage_Transition_Period</addsHediff>
<recipeUsers Inherit="False">
<li>ArachnaeNode_Race_WeaponSmith</li>
</recipeUsers>

View File

@@ -126,6 +126,18 @@
<li>ARA_Base_Technology</li>
</prerequisites>
</ResearchProjectDef>
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_1VTE</defName>
<label>基因节点VTE-1"爆发激素"</label>
<description>允许一部分拥有厚重甲壳的阿拉克涅督虫使用追踪冲撞攻击敌军。</description>
<baseCost>150</baseCost>
<researchViewX>1.00</researchViewX>
<researchViewY>5.10</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<prerequisites>
<li>ARA_Technology_4DIL</li>
</prerequisites>
</ResearchProjectDef>
<!-- 毒类发展 -->
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_5PAV</defName>

View File

@@ -12,4 +12,15 @@
<showIfUndefined>false</showIfUndefined>
</StatDef>
<StatDef>
<defName>NutrientTransmissionEfficiency</defName>
<label>生物质传输效率</label>
<description>减少无线传输生物质时的燃料消耗。最终消耗量将乘以 (1 - 效率)。</description>
<category>Building</category>
<defaultBaseValue>0</defaultBaseValue>
<minValue>0</minValue>
<toStringStyle>PercentZero</toStringStyle>
<displayPriorityInCategory>8000</displayPriorityInCategory>
</StatDef>
</Defs>

View File

@@ -166,4 +166,4 @@
</li>
</comps>
</ThingDef>
</Defs>
</Defs>

View File

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<ThingDef ParentName="AnimalThingBase" Name="ARA_BaseDroneSwarm" Abstract="True">
<statBases>
<MarketValue>1200</MarketValue>
@@ -39,7 +38,6 @@
<killedLeavings>
</killedLeavings>
</ThingDef>
<ThingDef ParentName="ARA_BaseDroneSwarm">
<defName>ArachnaeBase_Race_Acid</defName>
<label>阿拉克涅酸噬种</label>
@@ -84,11 +82,10 @@
</li>
</tools>
</ThingDef>
<ThingDef ParentName="ARA_BaseDroneSwarm">
<defName>ArachnaeBase_Race_Skyhive</defName>
<label>阿拉克涅天巢种</label>
<description>阿拉克涅辅虫之一,智力低下,一般被作为活体炮弹打出,击中敌人后若是还没散架,就会继续依靠带酸液的颚撕咬敌军</description>
<description>阿拉克涅辅虫之一,智力低下,通常被督虫们当成导弹打出,拥有在飞行中调整姿态以追踪敌军的能力。命中敌军后,这些虫族会趴在敌军身上进行啃咬,直到鳌刺松动而掉在地上</description>
<race>
<flightStartChanceOnJobStart>1.0</flightStartChanceOnJobStart>
<thinkTreeConstant>WarUrchinConstant</thinkTreeConstant>
@@ -134,6 +131,60 @@
</tools>
</ThingDef>
<ThingDef ParentName="ARA_BaseDroneSwarm">
<defName>ArachnaeBase_Race_Acidling</defName>
<label>阿拉克涅酸爆种</label>
<description>阿拉克涅辅虫之一,智力低下,一般被作为自杀式无人机打出,靠近敌人后就会引爆酸囊产生危险的酸性雾气。</description>
<race>
<thinkTreeConstant>HunterDroneConstant</thinkTreeConstant>
<baseBodySize>0.5</baseBodySize>
<!-- <hasCorpse>false</hasCorpse> -->
<body>BeetleLikeWithClaw</body>
<lifeStageAges>
<li>
<def>EusocialInsectAdult</def>
<minAge>0</minAge>
<soundWounded>Pawn_Spelopede_Pain</soundWounded>
<soundDeath>Pawn_Spelopede_Death</soundDeath>
<soundCall>Pawn_Spelopede_Call</soundCall>
<soundAngry>Pawn_Spelopede_Angry</soundAngry>
</li>
</lifeStageAges>
</race>
<statBases>
<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>
<explosionDamageAmount>40</explosionDamageAmount>
<armorPenetration>0.5</armorPenetration>
<explosionSound>Explosion_Smoke</explosionSound>
<postExplosionSpawnThingDef>ARA_AcidGasCloud</postExplosionSpawnThingDef>
<postExplosionSpawnChance>1</postExplosionSpawnChance>
<postExplosionSpawnThingCount>1</postExplosionSpawnThingCount>
</li>
</comps>
<tools Inherit="False">
<li>
<label>酸性巨颚</label>
<capacities>
<li>ARA_AcidCut</li>
</capacities>
<power>6</power>
<cooldownTime>2.6</cooldownTime>
<linkedBodyPartsGroup>HeadAttackTool</linkedBodyPartsGroup>
<ensureLinkedBodyPartsGroupAlwaysUsable>true</ensureLinkedBodyPartsGroupAlwaysUsable>
</li>
</tools>
</ThingDef>
<ToolCapacityDef>
<defName>ARA_AcidCut</defName>
<label>酸性撕咬</label>

View File

@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<MutantDef ParentName="BaseMutantEntity">
<MutantDef ParentName="BaseMutantEntity">
<defName>ARA_MimicNematodeShambler</defName>
<label>阿拉克涅拟线种寄生体</label>
<description>阿拉克涅拟线种是虫群中最神秘的分支之一。它们与原虫种同源,但在进化之路上并未发展出高级智慧,而是走向了一条截然不同的道路:寄生。拟线种是无法脱离宿主独立存活的寄生虫。一旦寄生于生物体内,它们会长期潜伏,最终逐步接管宿主的神经与代谢系统,将其变为受其操控的行尸走肉——“寄生体”。得益于超凡的细胞复制与再生能力,拟线种能够模仿并替代宿主的细胞结构,这使得寄生体拥有了惊人的自我修复能力。然而,这种寄生关系也极具侵略性:拟线种的虫卵遍布寄生体体表,任何被寄生体攻击的生物都有可能被感染,最终沦为新的寄生体。尽管拟线虫将寄生体的新陈代谢维持在极低水平,但寄生体本身并不会主动觅食。因此,当能量耗尽后,它们终将迎来“死亡”。</description>
<hediff>ARA_MimicNematodeShambler</hediff>
<thinkTree>Shambler</thinkTree>
<thinkTree>ARA_WorkingShambler</thinkTree>
<thinkTreeConstant>ShamblerConstant</thinkTreeConstant>
<hideLabel>true</hideLabel>
<namePrefix>拟线种寄生体 </namePrefix>
@@ -25,10 +25,10 @@
<clearMutantStatusOnDeath>true</clearMutantStatusOnDeath>
<canTravelInCaravan>false</canTravelInCaravan>
<canAttackWhileCrawling>true</canAttackWhileCrawling>
<respectsAllowedArea>false</respectsAllowedArea>
<respectsAllowedArea>true</respectsAllowedArea>
<disableFlying>true</disableFlying>
<canGainXP>false</canGainXP>
<canBeDrafted>false</canBeDrafted>
<canBeDrafted>true</canBeDrafted>
<disableHostilityResponse>true</disableHostilityResponse>
<deathOnDownedChance>0.25</deathOnDownedChance>
<woundColor>(0.3, 0.3, 0.0, 1.0)</woundColor>
@@ -44,6 +44,19 @@
<removesHediffs>
<li>ARA_MimicNematode</li>
</removesHediffs>
<workDisables Inherit="false">
<li>ManualSkilled</li>
<li>Intellectual</li>
<li>Artistic</li>
<li>Caring</li>
<li>Social</li>
<li>PlantWork</li>
<li>Mining</li>
<li>Hunting</li>
<li>Constructing</li>
<li>Cooking</li>
<li>Shooting</li>
</workDisables>
<!-- Rendering -->
<renderNodeProperties>
<li Class="PawnRenderNodeProperties_Overlay">

View File

@@ -327,10 +327,15 @@
<li>ARA_RW_Basic_Acid_Bladder_Gun</li>
<li>ARA_RW_Basic_Fist_Needle_Gun</li>
<li>ARA_MW_Bone_Sword</li>
<li>ARA_RW_Basic_SkyHive_Gun</li>
<li>ARA_RW_Toxic_Needle_MG</li>
</weaponList>
<onlyUseRaceRestrictedWeapons>true</onlyUseRaceRestrictedWeapons>
<!-- 可以穿戴的衣服 -->
<apparelList>
<li>ARA_Maid_Uniform</li>
<li>ARA_Bodystocking_White</li>
<li>ARA_Bodystocking_Black</li>
</apparelList>
<blackApparelList>
<li>Apparel_AdvancedHelmet</li>
@@ -371,6 +376,7 @@
<li>Apparel_Tailcap</li>
<li>Apparel_VisageMask</li>
</blackApparelList>
<onlyUseRaceRestrictedApparel>true</onlyUseRaceRestrictedApparel>
<!-- 生育能力 -->
<onlyReproduceWithRestrictedRaces>true</onlyReproduceWithRestrictedRaces>
<canReproduce>false</canReproduce>
@@ -481,8 +487,8 @@
<!-- <RestRateMultiplier>1</RestRateMultiplier> -->
<!-- <HungerRateMultiplier>1</HungerRateMultiplier> -->
<MaxNutrition>1.05</MaxNutrition>
<EatingSpeed>2</EatingSpeed>
<MaxNutrition>0.5</MaxNutrition>
<CarryingCapacity>50</CarryingCapacity>
<MeatAmount>150</MeatAmount>
@@ -531,8 +537,6 @@
<leatherDef>ARA_Carapace</leatherDef>
<!-- 身体类型 -->
<body>Human</body>
<!-- 年龄阶段,较短 -->
<lifeExpectancy>12</lifeExpectancy>
<lifeStageWorkSettings MayRequire="Ludeon.RimWorld.Biotech">
<Firefighter>0</Firefighter>
<Patient>0</Patient>
@@ -572,7 +576,7 @@
<soundMeleeMiss>Pawn_Melee_BigBash_Miss</soundMeleeMiss>
<canFlyInVacuum>false</canFlyInVacuum>
<!-- 身形大小,略大于常规人类 -->
<baseBodySize>2</baseBodySize>
<baseBodySize>1</baseBodySize>
</race>
<!-- 工具设置(攻击方式) -->
@@ -648,14 +652,18 @@
<raceRestriction>
<!-- 武器列表 -->
<weaponList>
<li>ARA_RW_Acid_Mortar</li>
</weaponList>
</raceRestriction>
</alienRace>
<statBases>
<MaxNutrition>0.34</MaxNutrition>
</statBases>
<race>
<baseBodySize>2.5</baseBodySize>
<baseBodySize>3</baseBodySize>
<baseHealthScale>4</baseHealthScale>
<lifeExpectancy>10</lifeExpectancy>
</race>
</AlienRace.ThingDef_AlienRace>
@@ -689,30 +697,6 @@
<onlyEatRaceRestrictedFood>false</onlyEatRaceRestrictedFood>
</raceRestriction>
</alienRace>
<comps>
<li Class="ArachnaeSwarm.CompProperties_MilkableArachnae">
<milkDef>ARA_InsectJelly</milkDef>
<milkIntervalDays>1</milkIntervalDays>
<milkAmount>10</milkAmount>
</li>
<li Class="ArachnaeSwarm.CompProperties_AutoMechCarrier">
<freeProduction>true</freeProduction>
<disableHediff>WULA_MechCarrierSwitchHediff</disableHediff>
<fixedIngredient>ARA_InsectJelly</fixedIngredient>
<maxIngredientCount>500</maxIngredientCount>
<startingIngredientCount>500</startingIngredientCount>
<costPerPawn>999</costPerPawn>
<cooldownTicks>9999</cooldownTicks>
<productionQueue>
<li>
<pawnKind>ArachnaeBase_Race_Scavenger</pawnKind>
<count>2</count>
<cooldownTicks>1000</cooldownTicks>
</li>
</productionQueue>
<spawnEffecter>CocoonDestroyed</spawnEffecter>
</li>
</comps>
<!-- 基础属性设置 -->
<statBases>
@@ -746,13 +730,40 @@
<foodType>OmnivoreHuman,CarnivoreAnimal,OvivoreAnimal,VegetarianRoughAnimal</foodType>
<!-- 身体类型 -->
<body>ArachnaeMyrmecocystus_Body</body>
<!-- 身形大小 -->
<baseBodySize>2.5</baseBodySize>
<!-- 血量上限 -->
<baseHealthScale>3</baseHealthScale>
<!-- 蜜罐虫的寿命很低 -->
<lifeExpectancy>1.5</lifeExpectancy>
</race>
<comps>
<li Class="ArachnaeSwarm.CompProperties_MilkableArachnae">
<milkDef>ARA_InsectJelly</milkDef>
<milkIntervalDays>1</milkIntervalDays>
<milkAmount>10</milkAmount>
</li>
<li Class="ArachnaeSwarm.CompProperties_AutoMechCarrier">
<freeProduction>true</freeProduction>
<disableHediff>WULA_MechCarrierSwitchHediff</disableHediff>
<fixedIngredient>ARA_InsectJelly</fixedIngredient>
<maxIngredientCount>500</maxIngredientCount>
<startingIngredientCount>500</startingIngredientCount>
<costPerPawn>999</costPerPawn>
<cooldownTicks>9999</cooldownTicks>
<productionQueue>
<li>
<pawnKind>ArachnaeBase_Race_Scavenger</pawnKind>
<count>2</count>
<cooldownTicks>1000</cooldownTicks>
</li>
</productionQueue>
<spawnEffecter>CocoonDestroyed</spawnEffecter>
</li>
<li Class="CompProperties_MechPowerCell">
<totalPowerTicks>14400000</totalPowerTicks>
<labelOverride>寿命</labelOverride>
<tooltipOverride>阿拉克涅的督虫们生命如精密的发条般运转着。</tooltipOverride>
<showGizmoOnNonPlayerControlled>true</showGizmoOnNonPlayerControlled>
</li>
</comps>
</AlienRace.ThingDef_AlienRace>
<AlienRace.ThingDef_AlienRace ParentName="ARA_NodeBase">
<defName>ArachnaeNode_Race_ShieldHead</defName>
@@ -810,30 +821,6 @@
<onlyEatRaceRestrictedFood>true</onlyEatRaceRestrictedFood>
</raceRestriction>
</alienRace>
<comps>
<li Class="ArachnaeSwarm.CompProperties_MilkableArachnae">
<milkDef>ARA_Carapace</milkDef>
<milkIntervalDays>1</milkIntervalDays>
<milkAmount>15</milkAmount>
</li>
<li Class="ArachnaeSwarm.CompProperties_AutoMechCarrier">
<freeProduction>true</freeProduction>
<disableHediff>WULA_MechCarrierSwitchHediff</disableHediff>
<fixedIngredient>ARA_InsectJelly</fixedIngredient>
<maxIngredientCount>500</maxIngredientCount>
<startingIngredientCount>500</startingIngredientCount>
<costPerPawn>999</costPerPawn>
<cooldownTicks>9999</cooldownTicks>
<productionQueue>
<li>
<pawnKind>ArachnaeBase_Race_HardJaw</pawnKind>
<count>2</count>
<cooldownTicks>1000</cooldownTicks>
</li>
</productionQueue>
<spawnEffecter>CocoonDestroyed</spawnEffecter>
</li>
</comps>
<!-- 基础属性设置 -->
<statBases>
@@ -858,9 +845,11 @@
<!-- <TradePriceImprovement>0.5</TradePriceImprovement> -->
<!-- 自带的甲壳可以防御外部攻击 -->
<ArmorRating_Blunt>1</ArmorRating_Blunt>
<ArmorRating_Sharp>1.25</ArmorRating_Sharp>
<ArmorRating_Heat>1</ArmorRating_Heat>
<ArmorRating_Blunt>0.75</ArmorRating_Blunt>
<ArmorRating_Sharp>1</ArmorRating_Sharp>
<ArmorRating_Heat>0.5</ArmorRating_Heat>
<MaxNutrition>0.51</MaxNutrition>
</statBases>
<race>
@@ -870,9 +859,38 @@
<baseBodySize>2</baseBodySize>
<!-- 血量上限 -->
<baseHealthScale>5</baseHealthScale>
<!-- 蜜罐虫的寿命很低 -->
<lifeExpectancy>2</lifeExpectancy>
</race>
<comps>
<li Class="ArachnaeSwarm.CompProperties_MilkableArachnae">
<milkDef>ARA_Carapace</milkDef>
<milkIntervalDays>1</milkIntervalDays>
<milkAmount>15</milkAmount>
</li>
<li Class="ArachnaeSwarm.CompProperties_AutoMechCarrier">
<freeProduction>true</freeProduction>
<disableHediff>WULA_MechCarrierSwitchHediff</disableHediff>
<fixedIngredient>ARA_InsectJelly</fixedIngredient>
<maxIngredientCount>500</maxIngredientCount>
<startingIngredientCount>500</startingIngredientCount>
<costPerPawn>999</costPerPawn>
<cooldownTicks>9999</cooldownTicks>
<productionQueue>
<li>
<pawnKind>ArachnaeBase_Race_HardJaw</pawnKind>
<count>2</count>
<cooldownTicks>1000</cooldownTicks>
</li>
</productionQueue>
<spawnEffecter>CocoonDestroyed</spawnEffecter>
</li>
<li Class="CompProperties_MechPowerCell">
<totalPowerTicks>7200000</totalPowerTicks>
<labelOverride>寿命</labelOverride>
<tooltipOverride>阿拉克涅的督虫们生命如精密的发条般运转着。</tooltipOverride>
<showGizmoOnNonPlayerControlled>true</showGizmoOnNonPlayerControlled>
</li>
</comps>
</AlienRace.ThingDef_AlienRace>
<AlienRace.ThingDef_AlienRace ParentName="ARA_NodeBase">
<defName>ArachnaeNode_Race_WeaponSmith</defName>
@@ -901,26 +919,6 @@
<onlyEatRaceRestrictedFood>true</onlyEatRaceRestrictedFood>
</raceRestriction>
</alienRace>
<comps>
<li Class="ArachnaeSwarm.CompProperties_AutoMechCarrier">
<freeProduction>true</freeProduction>
<disableHediff>WULA_MechCarrierSwitchHediff</disableHediff>
<fixedIngredient>ARA_InsectJelly</fixedIngredient>
<maxIngredientCount>500</maxIngredientCount>
<startingIngredientCount>500</startingIngredientCount>
<costPerPawn>999</costPerPawn>
<cooldownTicks>9999</cooldownTicks>
<productionQueue>
<li>
<!-- <pawnKind>ArachnaeBase_Race_Slavey</pawnKind> -->
<pawnKind>ArachnaeBase_Race_Maid</pawnKind>
<count>3</count>
<cooldownTicks>1000</cooldownTicks>
</li>
</productionQueue>
<spawnEffecter>CocoonDestroyed</spawnEffecter>
</li>
</comps>
<!-- 基础属性设置 -->
<statBases>
@@ -948,6 +946,8 @@
<ArmorRating_Blunt>0.1</ArmorRating_Blunt>
<ArmorRating_Sharp>0.1</ArmorRating_Sharp>
<ArmorRating_Heat>0.05</ArmorRating_Heat>
<MaxNutrition>1.26</MaxNutrition>
</statBases>
<race>
@@ -955,8 +955,46 @@
<body>ArachnaeWeaponSmith_Body</body>
<baseBodySize>0.8</baseBodySize>
<baseHealthScale>0.75</baseHealthScale>
<lifeExpectancy>5</lifeExpectancy>
</race>
<recipes Inherit="False">
<li>ARA_WeaponSmith_Upgrade_1_Stage</li>
</recipes>
<comps>
<li Class="ArachnaeSwarm.CompProperties_HediffGiver">
<hediffs>
<li>ARA_WeaponSmith_0_Stage</li>
</hediffs>
<addChance>1.0</addChance>
<allowDuplicates>false</allowDuplicates>
</li>
<li Class="ArachnaeSwarm.CompProperties_AutoMechCarrier">
<freeProduction>true</freeProduction>
<disableHediff>WULA_MechCarrierSwitchHediff</disableHediff>
<fixedIngredient>ARA_InsectJelly</fixedIngredient>
<maxIngredientCount>500</maxIngredientCount>
<startingIngredientCount>500</startingIngredientCount>
<costPerPawn>999</costPerPawn>
<cooldownTicks>9999</cooldownTicks>
<productionQueue>
<li>
<!-- <pawnKind>ArachnaeBase_Race_Slavey</pawnKind> -->
<pawnKind>ArachnaeBase_Race_Maid</pawnKind>
<count>3</count>
<cooldownTicks>1000</cooldownTicks>
</li>
</productionQueue>
<spawnEffecter>CocoonDestroyed</spawnEffecter>
</li>
<li Class="CompProperties_MechPowerCell">
<totalPowerTicks>7200000</totalPowerTicks>
<labelOverride>寿命</labelOverride>
<tooltipOverride>阿拉克涅的督虫们生命如精密的发条般运转着。</tooltipOverride>
<showGizmoOnNonPlayerControlled>true</showGizmoOnNonPlayerControlled>
</li>
</comps>
</AlienRace.ThingDef_AlienRace>
<AlienRace.ThingDef_AlienRace ParentName="ARA_NodeBase">
<defName>ArachnaeNode_Race_Fighter</defName>
@@ -990,13 +1028,11 @@
<onlyEatRaceRestrictedFood>true</onlyEatRaceRestrictedFood>
</raceRestriction>
</alienRace>
<comps>
</comps>
<!-- 基础属性设置 -->
<statBases>
<!-- 移动速度 -->
<MoveSpeed>4.5</MoveSpeed>
<MoveSpeed>5</MoveSpeed>
<!-- <RestRateMultiplier>1</RestRateMultiplier> -->
<!-- <HungerRateMultiplier>1</HungerRateMultiplier> -->
@@ -1019,6 +1055,8 @@
<ArmorRating_Blunt>0.4</ArmorRating_Blunt>
<ArmorRating_Sharp>0.4</ArmorRating_Sharp>
<ArmorRating_Heat>0.3</ArmorRating_Heat>
<MaxNutrition>1.26</MaxNutrition>
</statBases>
<tools>
@@ -1038,10 +1076,18 @@
<race>
<!-- 身体类型 -->
<body>ArachnaeFighter_Body</body>
<baseBodySize>0.85</baseBodySize>
<baseBodySize>0.8</baseBodySize>
<baseHealthScale>2</baseHealthScale>
<lifeExpectancy>5</lifeExpectancy>
</race>
<comps>
<li Class="CompProperties_MechPowerCell">
<totalPowerTicks>7200000</totalPowerTicks>
<labelOverride>寿命</labelOverride>
<tooltipOverride>阿拉克涅的督虫们生命如精密的发条般运转着。</tooltipOverride>
<showGizmoOnNonPlayerControlled>true</showGizmoOnNonPlayerControlled>
</li>
</comps>
</AlienRace.ThingDef_AlienRace>
<AlienRace.ThingDef_AlienRace ParentName="ARA_NodeBase">
<defName>ArachnaeNode_Race_Facehugger</defName>
@@ -1079,18 +1125,18 @@
<statBases>
<MoveSpeed>5</MoveSpeed>
<EatingSpeed>5</EatingSpeed>
<MaxNutrition>1</MaxNutrition>
<CarryingCapacity>100</CarryingCapacity>
<MeatAmount>20</MeatAmount>
<LeatherAmount>5</LeatherAmount>
<MeleeDodgeChance>1.5</MeleeDodgeChance>
<MaxNutrition>2</MaxNutrition>
</statBases>
<race>
<body>ArachnaeMyrmecocystus_Body</body>
<baseBodySize>0.5</baseBodySize>
<baseHealthScale>0.25</baseHealthScale>
<lifeExpectancy>30</lifeExpectancy>
</race>
<comps>
<li Class="ArachnaeSwarm.CompProperties_HediffGiver">
@@ -1105,7 +1151,7 @@
<AlienRace.ThingDef_AlienRace ParentName="ARA_NodeBase_Huge">
<defName>ArachnaeNode_Race_Smokepop</defName>
<label>阿拉克涅浓雾种</label>
<description>阿拉克涅督虫之一,身披厚重甲壳的大型虫族,拥有在大范围内喷射烟雾、阻燃物和铺设菌毯的能力,虽然移动速度比较慢,但是在战斗中就如同装甲车一样难以撼动。\n\n她可以进行搬运和医护工作拥有不错的战斗技能防御力和伤害耐受能力强大。\n\n作为督虫她可以繁育并监管大量阿拉克涅家政种辅虫以协助巢穴进行清洁和搬运工作。</description>
<description>阿拉克涅督虫之一,身披厚重甲壳的大型虫族,拥有在大范围内喷射信息素以召唤辅虫虫群能力,虽然移动速度比较慢,但是在战斗中就如同装甲车一样难以撼动。\n\n她可以进行搬运和医护工作拥有不错的战斗技能防御力和伤害耐受能力强大。\n\n作为督虫她可以繁育并监管大量阿拉克涅家政种辅虫以协助巢穴进行清洁和搬运工作。</description>
<alienRace>
<generalSettings>
<!-- 各种零件定义 -->
@@ -1180,23 +1226,31 @@
<!-- <TradePriceImprovement>0.5</TradePriceImprovement> -->
<!-- 自带的甲壳可以防御外部攻击 -->
<ArmorRating_Blunt>0.85</ArmorRating_Blunt>
<ArmorRating_Sharp>0.85</ArmorRating_Sharp>
<ArmorRating_Heat>0.6</ArmorRating_Heat>
<ArmorRating_Blunt>1</ArmorRating_Blunt>
<ArmorRating_Sharp>1.2</ArmorRating_Sharp>
<ArmorRating_Heat>0.75</ArmorRating_Heat>
</statBases>
<race>
<!-- 身体类型 -->
<body>ArachnaeFighter_Body</body>
<baseBodySize>2.5</baseBodySize>
<baseHealthScale>4</baseHealthScale>
<lifeExpectancy>10</lifeExpectancy>
</race>
<comps>
<li Class="CompProperties_MechPowerCell">
<totalPowerTicks>14400000</totalPowerTicks>
<labelOverride>寿命</labelOverride>
<tooltipOverride>阿拉克涅的督虫们生命如精密的发条般运转着。</tooltipOverride>
<showGizmoOnNonPlayerControlled>true</showGizmoOnNonPlayerControlled>
</li>
</comps>
</AlienRace.ThingDef_AlienRace>
<AlienRace.ThingDef_AlienRace ParentName="ARA_NodeBase">
<defName>ArachnaeNode_Race_Skyraider</defName>
<label>阿拉克涅空天种</label>
<description>阿拉克涅督虫之一,众督虫中的精锐,进化出了强大飞行能力,是巢穴中无可争议的空中霸主。\n\n她可以进行搬运工作拥有不错的战斗技能非常灵活。\n\n作为为数不多拥有飞行能力的虫族,她可以从空中掠袭猎物并将其带至千米高空之上俯冲投下,只留其余猎物在地面无助的挣扎</description>
<description>阿拉克涅督虫之一,众督虫中的精锐,虽然身材娇小但是拥有引以为傲的强大飞行能力,是巢穴中无可争议的空中霸主。\n\n她可以进行搬运工作拥有不错的战斗技能在战场上行动时非常灵活。\n\n作为督虫,她可以向敌人发射天巢种辅虫,这种辅虫会自动修正姿态追踪敌军,并在命中后对敌人进行持续啃咬</description>
<alienRace>
<generalSettings>
<!-- 各种零件定义 -->
@@ -1204,12 +1258,7 @@
<!-- 额外身体部件 -->
<bodyAddons>
<li>
<path>ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Addons_Fighter_Claw</path>
<inFrontOfBody>true</inFrontOfBody>
<scaleWithPawnDrawsize>true</scaleWithPawnDrawsize>
</li>
<li>
<path>ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Addons_Fighter_Tail</path>
<path>ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Addons_Skyraider_Tail</path>
<inFrontOfBody>false</inFrontOfBody>
<scaleWithPawnDrawsize>true</scaleWithPawnDrawsize>
<offsets>
@@ -1244,7 +1293,7 @@
<!-- 基础属性设置 -->
<statBases>
<!-- 移动速度 -->
<MoveSpeed>4.5</MoveSpeed>
<MoveSpeed>4</MoveSpeed>
<MaxFlightTime>9999</MaxFlightTime>
<FlightCooldown>0</FlightCooldown>
@@ -1252,14 +1301,12 @@
<!-- <RestRateMultiplier>1</RestRateMultiplier> -->
<!-- <HungerRateMultiplier>1</HungerRateMultiplier> -->
<!-- <EatingSpeed>5</EatingSpeed> -->
<MaxNutrition>2</MaxNutrition>
<CarryingCapacity>100</CarryingCapacity>
<MeatAmount>60</MeatAmount>
<LeatherAmount>30</LeatherAmount>
<MeleeDodgeChance>1.25</MeleeDodgeChance>
<MeleeHitChance>1.25</MeleeHitChance>
<MeleeDodgeChance>1.5</MeleeDodgeChance>
<!-- <NegotiationAbility>1</NegotiationAbility> -->
<!-- <SellPriceFactor>1</SellPriceFactor> -->
@@ -1267,33 +1314,97 @@
<!-- <TradePriceImprovement>0.5</TradePriceImprovement> -->
<!-- 自带的甲壳可以防御外部攻击 -->
<ArmorRating_Blunt>0.4</ArmorRating_Blunt>
<ArmorRating_Sharp>0.4</ArmorRating_Sharp>
<ArmorRating_Heat>0.3</ArmorRating_Heat>
</statBases>
<ArmorRating_Blunt>0.3</ArmorRating_Blunt>
<ArmorRating_Sharp>0.2</ArmorRating_Sharp>
<ArmorRating_Heat>0.2</ArmorRating_Heat>
<tools>
<li>
<label>巨镰</label>
<capacities>
<li>Cut</li>
</capacities>
<power>20</power>
<cooldownTime>2.5</cooldownTime>
<linkedBodyPartsGroup>ARA_Sickles</linkedBodyPartsGroup>
<!-- <ensureLinkedBodyPartsGroupAlwaysUsable>true</ensureLinkedBodyPartsGroupAlwaysUsable> -->
<chanceFactor>0.5</chanceFactor>
</li>
</tools>
<MaxNutrition>1.26</MaxNutrition>
</statBases>
<race>
<!-- 身体类型 -->
<body>ArachnaeFighter_Body</body>
<renderTree>ARA_ArachnaeRenderTree</renderTree>
<flightStartChanceOnJobStart>1.0</flightStartChanceOnJobStart>
<baseBodySize>0.85</baseBodySize>
<baseHealthScale>2</baseHealthScale>
<lifeExpectancy>5</lifeExpectancy>
<baseBodySize>0.8</baseBodySize>
<baseHealthScale>1.5</baseHealthScale>
</race>
<comps>
<li Class="CompProperties_MechPowerCell">
<totalPowerTicks>7200000</totalPowerTicks>
<labelOverride>寿命</labelOverride>
<tooltipOverride>阿拉克涅的督虫们生命如精密的发条般运转着。</tooltipOverride>
<showGizmoOnNonPlayerControlled>true</showGizmoOnNonPlayerControlled>
</li>
</comps>
</AlienRace.ThingDef_AlienRace>
<AlienRace.ThingDef_AlienRace ParentName="ARA_NodeBase">
<defName>ArachnaeNode_Race_NeuroSwarm</defName>
<label>阿拉克涅织域种</label>
<description>阿拉克涅督虫之一,是阿拉克涅虫群中最为特殊的虫族,织域种虽然受到女皇种监管,但仍然具有强大的高级智慧和自我意志,织域种之间能够构建一种高度互联的神经网络从而进行复杂的研究和计算工作,织域种进行计算工作时无法感知外界环境,因此她们是虫群的重要保护对象。</description>
<alienRace>
<generalSettings>
<!-- 各种零件定义 -->
<alienPartGenerator>
<!-- 额外身体部件 -->
<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>
</alienPartGenerator>
</generalSettings>
<raceRestriction>
<onlyEatRaceRestrictedFood>true</onlyEatRaceRestrictedFood>
</raceRestriction>
</alienRace>
<comps>
</comps>
<!-- 基础属性设置 -->
<statBases>
<!-- 移动速度 -->
<MoveSpeed>3.5</MoveSpeed>
<!-- <RestRateMultiplier>1</RestRateMultiplier> -->
<!-- <HungerRateMultiplier>1</HungerRateMultiplier> -->
<!-- <EatingSpeed>5</EatingSpeed> -->
<MaxNutrition>2</MaxNutrition>
<CarryingCapacity>100</CarryingCapacity>
<MeatAmount>40</MeatAmount>
<LeatherAmount>10</LeatherAmount>
<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>
<MaxNutrition>1.26</MaxNutrition>
</statBases>
<race>
<!-- 身体类型 -->
<body>ArachnaeWeaponSmith_Body</body>
<baseBodySize>0.8</baseBodySize>
<baseHealthScale>0.75</baseHealthScale>
</race>
</AlienRace.ThingDef_AlienRace>
</Defs>

View File

@@ -0,0 +1,168 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- ==================== 1. 物品定义:阿拉克涅信息素溶剂 ==================== -->
<ThingDef ParentName="MakeableDrugPillBase">
<defName>ARA_PheromoneSolvent</defName>
<label>阿拉克涅信息素溶剂</label>
<description>一种合成的化学制剂,能够模拟阿拉克涅虫群内部用于区分敌我的信息素。定期注射可以欺骗宿主体内的寄生虫,使其进入休眠的共生状态,从而抑制其致命的增殖行为。</description>
<descriptionHyperlinks>
<HediffDef>ARA_SymbioticStabilizer</HediffDef>
<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> <!-- 橙色 -->
</graphicData>
<rotatable>false</rotatable>
<statBases>
<WorkToMake>1000</WorkToMake>
<MarketValue>50</MarketValue>
<Mass>0.01</Mass>
</statBases>
<techLevel>Industrial</techLevel>
<ingestible>
<drugCategory>Medical</drugCategory> <!-- 定义为医疗品,而非娱乐品 -->
<outcomeDoers>
<li Class="IngestionOutcomeDoer_GiveHediff">
<hediffDef>ARA_SymbioticStabilizer</hediffDef>
<severity>1.0</severity> <!-- 每次服用直接将效果补满 -->
</li>
</outcomeDoers>
</ingestible>
<recipeMaker>
<researchPrerequisite>MedicineProduction</researchPrerequisite> <!-- 假设需要基础制药解锁 -->
<recipeUsers>
<li>DrugLab</li>
</recipeUsers>
</recipeMaker>
<costList>
<Neutroamine>2</Neutroamine>
<ARA_InsectJelly>5</ARA_InsectJelly> <!-- 使用虫胶作为特色材料 -->
</costList>
<comps>
<li Class="CompProperties_Drug">
<chemical>ARA_Pheromone</chemical>
<addictiveness>0.05</addictiveness>
<needLevelOffset>1</needLevelOffset>
<listOrder>1000</listOrder>
</li>
</comps>
</ThingDef>
<!-- ==================== 2. Hediff定义共生稳定器效果 ==================== -->
<HediffDef>
<defName>ARA_SymbioticStabilizer</defName>
<label>信息素抑制</label>
<labelNoun>一种信息素抑制效果</labelNoun>
<description>阿拉克涅信息素溶剂的效果正在生效,它模拟了虫群的共生信号,抑制了体内寄生体的活性。</description>
<hediffClass>HediffWithComps</hediffClass>
<defaultLabelColor>(0.7, 1.0, 0.7)</defaultLabelColor>
<isBad>false</isBad>
<comps>
<li Class="HediffCompProperties_SeverityPerDay">
<severityPerDay>-0.34</severityPerDay> <!-- 严重性每天降低0.34大约3天从1.0掉到0 -->
<showHoursToRecover>true</showHoursToRecover>
</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>
<label>信息素依赖</label>
<description>由于长期使用阿拉克涅信息素溶剂,此人的身体已经习惯了这种外部信息素的存在。如果中断使用,体内的拟线虫将因为失去抑制而猛烈反扑。</description>
<fallPerDay>0.333</fallPerDay>
<listPriority>50</listPriority>
</NeedDef>
<HediffDef ParentName="AddictionBase">
<defName>ARA_PheromoneAddiction</defName>
<label>信息素依赖</label>
<description>对阿拉克涅信息素溶剂产生了化学依赖。需要定期使用来维持体内的拟线虫生态平衡,否则会产生严重的戒断反应。</description>
<hediffClass>Hediff_Addiction</hediffClass>
<chemicalNeed>Chemical_ARA_Pheromone</chemicalNeed>
<stages>
<li>
<!-- 需求满足时,无效果 -->
</li>
<li>
<label>戒断反应</label>
<capMods>
<li>
<capacity>Consciousness</capacity>
<offset>-0.1</offset>
</li>
</capMods>
<hediffGivers>
<li Class="ArachnaeSwarm.HediffGiver_RandomWithSeverity">
<hediff>ARA_MimicNematode</hediff>
<mtbDays>1</mtbDays>
<severityRange>0.1~0.2</severityRange>
</li>
</hediffGivers>
</li>
</stages>
</HediffDef>
<ThoughtDef>
<defName>ARA_PheromoneWithdrawal</defName>
<workerClass>ThoughtWorker_Hediff</workerClass>
<hediff>ARA_PheromoneAddiction</hediff>
<validWhileDespawned>true</validWhileDespawned>
<stages>
<li>
<visible>false</visible>
</li>
<li>
<label>信息素戒断</label>
<description>我感觉很糟糕,体内的某些东西正在变得活跃......我需要信息素溶剂。</description>
<baseMoodEffect>-15</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
</Defs>

View File

@@ -40,4 +40,32 @@
</modExtensions>
</ThingDef>
<!-- Gas : Thing -->
<ThingDef ParentName="ARA_BaseGas">
<defName>ARA_AcidGasCloud</defName>
<label>阿拉克涅酸雾</label>
<graphicData>
<texPath>Things/Gas/Puff</texPath>
<drawSize>2.6</drawSize>
<color>(0.56, 1, 0.03,0.5)</color>
</graphicData>
<gas>
<expireSeconds>
<min>30</min>
<max>50</max>
</expireSeconds>
<!--<blockTurretTracking>true</blockTurretTracking>
<accuracyPenalty>0.3</accuracyPenalty>-->
<rotationSpeed>20</rotationSpeed>
</gas>
<thingClass>ArachnaeSwarm.OPToxicGas</thingClass>
<modExtensions>
<li Class="ArachnaeSwarm.OPToxicDefs">
<OPToxicHediff>ARA_AcidCoverd</OPToxicHediff> <!-- Name of HediffDef to apply, change to own HediffDef -->
<OPToxicSeverity>0.1</OPToxicSeverity> <!-- Severity build up per Tick period -->
<OPSevUpTickPeriod>240</OPSevUpTickPeriod> <!-- No of game ticks per each build up, recommend >= 120 -->
</li>
</modExtensions>
</ThingDef>
</Defs>

View File

@@ -28,7 +28,6 @@
<canBeGeneratedToSatisfyToxicEnvironmentResistance>false</canBeGeneratedToSatisfyToxicEnvironmentResistance>
<useWornGraphicMask>true</useWornGraphicMask>
</apparel>
<recipeMaker Inherit="False" IsNull="True"/>
<possessionCount>1</possessionCount>
<statBases>
<Mass>0.1</Mass>
@@ -42,6 +41,12 @@
<graphicData>
<texPath>ArachnaeSwarm/Apparel/ARA_Bodystocking_White</texPath>
</graphicData>
<recipeMaker Inherit="False">
<researchPrerequisite>ARA_Technology_4DIL</researchPrerequisite>
</recipeMaker>
<costList Inherit="False">
<ARA_Carapace>25</ARA_Carapace>
</costList>
<apparel>
<wornGraphicPath>ArachnaeSwarm/Apparel/ARA_Bodystocking_White</wornGraphicPath>
</apparel>
@@ -56,6 +61,12 @@
<graphicData>
<texPath>ArachnaeSwarm/Apparel/ARA_Bodystocking_Black</texPath>
</graphicData>
<recipeMaker Inherit="False">
<researchPrerequisite>ARA_Technology_4DIL</researchPrerequisite>
</recipeMaker>
<costList Inherit="False">
<ARA_Carapace>25</ARA_Carapace>
</costList>
<apparel>
<wornGraphicPath>ArachnaeSwarm/Apparel/ARA_Bodystocking_Black</wornGraphicPath>
</apparel>
@@ -64,9 +75,123 @@
</statBases>
</ThingDef>
<ThingDef Name="ARA_ClothBase" ParentName="ApparelMakeableBase" Abstract="True">
<thingCategories>
<li>ApparelMisc</li>
</thingCategories>
<graphicData>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>CutoutComplex</shaderType>
</graphicData>
<apparel>
<tags>
<li>ARA_Apparel</li>
<li>ARA_Clothes</li>
</tags>
<canBeDesiredForIdeo>false</canBeDesiredForIdeo>
<canBeGeneratedToSatisfyWarmth>false</canBeGeneratedToSatisfyWarmth>
<canBeGeneratedToSatisfyToxicEnvironmentResistance>false</canBeGeneratedToSatisfyToxicEnvironmentResistance>
<useWornGraphicMask>true</useWornGraphicMask>
</apparel>
<colorGenerator Class="ColorGenerator_Options">
<options>
<li>
<weight>10</weight>
<only>(1,1,1,1)</only>
</li>
</options>
</colorGenerator>
<smeltable>false</smeltable>
<stuffCategories Inherit="False" />
<recipeMaker Inherit="False" IsNull="True"/>
<possessionCount>1</possessionCount>
<statBases>
<Mass>1</Mass>
<WorkToMake>7000</WorkToMake>
</statBases>
</ThingDef>
<ThingDef Name="ARA_HatBase" ParentName="HatMakeableBase" Abstract="True">
<thingCategories>
<li>ApparelMisc</li>
</thingCategories>
<graphicData>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>CutoutComplex</shaderType>
</graphicData>
<apparel>
<tags>
<li>Wula_Apparel</li>
<li>Wula_Clothes</li>
</tags>
<renderSkipFlags>
<li>None</li>
</renderSkipFlags>
<canBeDesiredForIdeo>false</canBeDesiredForIdeo>
<canBeGeneratedToSatisfyWarmth>false</canBeGeneratedToSatisfyWarmth>
<canBeGeneratedToSatisfyToxicEnvironmentResistance>false</canBeGeneratedToSatisfyToxicEnvironmentResistance>
<useWornGraphicMask>true</useWornGraphicMask>
</apparel>
<colorGenerator Class="ColorGenerator_Options">
<options>
<li>
<weight>10</weight>
<only>(1,1,1,1)</only>
</li>
</options>
</colorGenerator>
<possessionCount>1</possessionCount>
<recipeMaker>
<unfinishedThingDef>UnfinishedApparel</unfinishedThingDef>
<useIngredientsForColor>false</useIngredientsForColor>
</recipeMaker>
<statBases>
<Mass>0.2</Mass>
<WorkToMake>3000</WorkToMake>
<StuffEffectMultiplierArmor>0.35</StuffEffectMultiplierArmor>
<StuffEffectMultiplierInsulation_Cold>1</StuffEffectMultiplierInsulation_Cold>
<StuffEffectMultiplierInsulation_Heat>1</StuffEffectMultiplierInsulation_Heat>
</statBases>
</ThingDef>
<ThingDef ParentName="ARA_ClothBase">
<defName>ARA_Maid_Uniform</defName>
<label>阿拉克涅女仆装</label>
<description>阿拉克涅督虫们所着织物中的一种,是她们永远服侍虫巢形象的完美具现化。</description>
<recipeMaker Inherit="False">
<researchPrerequisite>ARA_Technology_4DIL</researchPrerequisite>
</recipeMaker>
<costList Inherit="False">
<ARA_Carapace>25</ARA_Carapace>
</costList>
<graphicData>
<texPath>ArachnaeSwarm/Apparel/ARA_Maid_Uniform</texPath>
</graphicData>
<apparel>
<bodyPartGroups>
<li>Torso</li>
<li>Shoulders</li>
<li>Arms</li>
<li>Legs</li>
</bodyPartGroups>
<layers>
<!-- <li>OnSkin</li> -->
<li>Middle</li>
</layers>
<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>
</li>
</comps>
</ThingDef>
<ApparelLayerDef>
<defName>Shield</defName>
<label>盾牌</label>
<drawOrder>275</drawOrder>
</ApparelLayerDef>
</Defs>
</Defs>

View File

@@ -426,7 +426,7 @@
<damageDef>ARA_AcidBurn</damageDef>
<spinRate>15</spinRate>
<damageAmountBase>50</damageAmountBase>
<speed>15</speed>
<speed>45</speed>
<arcHeightFactor>1</arcHeightFactor>
<explosionRadius>3.5</explosionRadius>
<flyOverhead>true</flyOverhead>
@@ -518,7 +518,7 @@
</ThingDef>
<ThingDef ParentName="BaseBullet">
<defName>Bullet_ARA_RW_Basic_SkyHive_Gun</defName>
<label>天巢种</label>
<label>阿拉克涅天巢种</label>
<graphicData>
<graphicClass>Graphic_Single_AgeSecs</graphicClass>
<texPath>Things/Pawn/Insect/Locust/Locust_north</texPath>

View File

@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<ThingDef>
<defName>Arachnae_AcidlingTrap</defName>
<label>阿拉克涅酸爆茧</label>
<description>一种阿拉克涅休眠茧,内藏有休眠中的阿拉克涅虫族。如果靠太近则会唤醒其中的虫族。</description>
<thingClass>ArachnaeSwarm.Building_TrapReleaseRandom</thingClass>
<category>Building</category>
<!-- 基础外观和物理属性 -->
<size>(1,1)</size>
<altitudeLayer>Building</altitudeLayer>
<passability>PassThroughOnly</passability>
<selectable>true</selectable>
<fillPercent>0.20</fillPercent>
<leaveResourcesWhenKilled>false</leaveResourcesWhenKilled>
<rotatable>false</rotatable>
<tickerType>Normal</tickerType>
<building>
<isTrap>true</isTrap>
<trapDestroyOnSpring>true</trapDestroyOnSpring>
<expandHomeArea>false</expandHomeArea>
<ai_chillDestination>false</ai_chillDestination>
<claimable>false</claimable>
</building>
<repairEffect>EatVegetarian</repairEffect>
<filthLeaving>Filth_Slime</filthLeaving>
<costList>
<Steel>20</Steel>
</costList>
<statBases>
<MaxHitPoints>10</MaxHitPoints>
<Mass>4</Mass>
<Flammability>1.0</Flammability>
<MarketValue>50</MarketValue>
</statBases>
<graphicData>
<texPath>ArachnaeSwarm/Building/ARA_Tumor</texPath>
<graphicClass>Graphic_Single</graphicClass>
<drawSize>1.2</drawSize>
<shadowData>
<volume>(0.3, 0.6, 0.3)</volume>
<offset>(0,0,-0.1)</offset>
</shadowData>
</graphicData>
<!-- 正确的配置方式 -->
<modExtensions>
<li Class="ArachnaeSwarm.TrapReleaseRandomExtension">
<detectionRadius>25</detectionRadius>
<countToSpawn>3</countToSpawn>
<pawnKinds>
<li>ArachnaeBase_Race_Acidling</li>
<li>ArachnaeBase_Race_Acid</li>
</pawnKinds>
</li>
</modExtensions>
<!-- 组件:发光、生命周期、延迟地面生成(与风格示例对应) -->
<comps>
<li Class="CompProperties_Glower">
<glowRadius>3</glowRadius>
<glowColor>(220,210,171,0)</glowColor>
</li>
</comps>
</ThingDef>
</Defs>

View File

@@ -1,239 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<!-- 1. 加成建筑 "孵化加速器" -->
<ThingDef ParentName="BuildingBase">
<defName>ARA_IncubationAccelerator</defName>
<label>孵化加速器</label>
<description>一个辅助性的生物机械装置,当放置在大型孵化池旁边时,可以加速其内部的孵化过程。</description>
<graphicData>
<texPath>Things/Building/Misc/ToolCabinet</texPath>
<graphicClass>Graphic_Multi</graphicClass>
</graphicData>
<size>(1,1)</size>
<comps>
<!-- 使用原版的 CompFacility -->
<li Class="CompProperties_Facility">
<statOffsets>
<!-- 提供我们自定义的孵化速度加成 -->
<ARA_IncubationSpeedFactor>0.60</ARA_IncubationSpeedFactor>
</statOffsets>
</li>
</comps>
</ThingDef>
<!-- 3. 主建筑 "生物孵化池" -->
<ThingDef ParentName="BuildingBase">
<defName>ARA_BioforgeIncubator_Thing</defName>
<label>生物质物品孵化池</label>
<description>一个大型的、需要消耗大量营养物质的孵化设施,可以同时孵化多个单位,并能通过链接外部设备来提高效率。</description>
<graphicData>
<texPath>ArachnaeSwarm/Building/ARA_BioforgeIncubator</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>CutoutComplex</shaderType>
<drawSize>(5,6)</drawSize>
</graphicData>
<size>(5,5)</size>
<tickerType>Normal</tickerType>
<stuffCategories Inherit="False" />
<costStuffCount>0</costStuffCount>
<costList>
<ARA_Carapace>50</ARA_Carapace>
</costList>
<castEdgeShadows>false</castEdgeShadows>
<staticSunShadowHeight>0</staticSunShadowHeight>
<altitudeLayer>Building</altitudeLayer>
<passability>PassThroughOnly</passability>
<terrainAffordanceNeeded>ARA_Creep</terrainAffordanceNeeded>
<pathCost>50</pathCost>
<statBases>
<MaxHitPoints>250</MaxHitPoints>
<WorkToBuild>2800</WorkToBuild>
<Flammability>1.0</Flammability>
</statBases>
<placeWorkers>
<li>PlaceWorker_PreventInteractionSpotOverlap</li>
</placeWorkers>
<fillPercent>0.8</fillPercent>
<interactionCellOffset>(0,0,-1)</interactionCellOffset>
<hasInteractionCell>true</hasInteractionCell>
<designationCategory>ARA_Buildings</designationCategory>
<uiOrder>2600</uiOrder>
<surfaceType>Item</surfaceType>
<building>
<workTableRoomRole>Laboratory</workTableRoomRole>
<workTableNotInRoomRoleFactor>0.8</workTableNotInRoomRoleFactor>
</building>
<comps>
<!-- a. 我们新的队列物品生产组件 -->
<li Class="ArachnaeSwarm.CompProperties_QueuedInteractiveProducer">
<!-- 队列和交互设置 -->
<productionQueueLimit>3</productionQueueLimit>
<minNutritionToStart>1.0</minNutritionToStart>
<whitelist>
<li>ArachnaeNode_Race_WeaponSmith</li> <!-- 示例:允许普通殖民者操作 -->
</whitelist>
<!-- 质量系统设置 -->
<minSafeTemperature>10</minSafeTemperature>
<maxSafeTemperature>30</maxSafeTemperature>
<penaltyPerDegreePerTick>0.00001</penaltyPerDegreePerTick>
<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>
<!-- 生产列表 -->
<processes>
<li>
<thingDef>ARA_RW_Basic_Acid_Bladder_Gun</thingDef>
<productionTicks>80000</productionTicks>
<totalNutritionNeeded>30</totalNutritionNeeded>
<requiredResearch>ARA_Technology_7VXI</requiredResearch>
</li>
<li>
<thingDef>ARA_RW_Basic_Fist_Needle_Gun</thingDef>
<productionTicks>40000</productionTicks>
<totalNutritionNeeded>10</totalNutritionNeeded>
<requiredResearch>ARA_Technology_5PAV</requiredResearch>
</li>
</processes>
</li>
<!-- b. 我们的营养燃料组件 -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>100.0</fuelCapacity>
<fuelFilter>
<categories>
<li>Foods</li>
</categories>
</fuelFilter>
<fuelGizmoLabel>生物质</fuelGizmoLabel>
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<targetFuelLevelConfigurable>true</targetFuelLevelConfigurable>
</li>
<!-- c. 原版的设施链接接收组件 -->
<li Class="CompProperties_AffectedByFacilities">
<linkableFacilities>
<li>ARA_IncubationAccelerator</li>
</linkableFacilities>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="BuildingBase">
<defName>ARA_BioforgeIncubator</defName>
<label>生物质孵化池</label>
<description>一个大型的、需要消耗大量营养物质的孵化设施,可以同时孵化多个单位,并能通过链接外部设备来提高效率。</description>
<graphicData>
<texPath>Things/Building/AncientHeatVent</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>CutoutComplex</shaderType>
<drawSize>(7,7)</drawSize>
</graphicData>
<size>(7,7)</size>
<tickerType>Normal</tickerType>
<stuffCategories Inherit="False" />
<costStuffCount>0</costStuffCount>
<costList>
<ARA_Carapace>50</ARA_Carapace>
</costList>
<castEdgeShadows>false</castEdgeShadows>
<staticSunShadowHeight>0</staticSunShadowHeight>
<altitudeLayer>Building</altitudeLayer>
<passability>PassThroughOnly</passability>
<terrainAffordanceNeeded>ARA_Creep</terrainAffordanceNeeded>
<pathCost>50</pathCost>
<statBases>
<MaxHitPoints>250</MaxHitPoints>
<WorkToBuild>2800</WorkToBuild>
<Flammability>1.0</Flammability>
</statBases>
<placeWorkers>
<li>PlaceWorker_PreventInteractionSpotOverlap</li>
</placeWorkers>
<fillPercent>0.8</fillPercent>
<interactionCellOffset>(0,0,-1)</interactionCellOffset>
<hasInteractionCell>true</hasInteractionCell>
<designationCategory>ARA_Buildings</designationCategory>
<uiOrder>2600</uiOrder>
<surfaceType>Item</surfaceType>
<building>
<workTableRoomRole>Laboratory</workTableRoomRole>
<workTableNotInRoomRoleFactor>0.8</workTableNotInRoomRoleFactor>
</building>
<comps>
<!-- a. 我们自己的队列生产组件 -->
<li Class="ArachnaeSwarm.CompProperties_QueuedPawnSpawner">
<productionQueueLimit>5</productionQueueLimit>
<minNutritionToStart>0.5</minNutritionToStart>
<whitelist>
<li>ARA_ArachnaeQueen</li>
</whitelist>
<spawnablePawns>
<li>
<pawnKind>ArachnaeNode_Race_Myrmecocystus</pawnKind>
<delayTicks>180000</delayTicks>
<totalNutritionNeeded>5.0</totalNutritionNeeded>
</li>
<li>
<pawnKind>ArachnaeNode_Race_ShieldHead</pawnKind>
<delayTicks>180000</delayTicks>
<totalNutritionNeeded>5.0</totalNutritionNeeded>
</li>
<li>
<pawnKind>ArachnaeNode_Race_WeaponSmith</pawnKind>
<delayTicks>180000</delayTicks>
<totalNutritionNeeded>5.0</totalNutritionNeeded>
<!--<requiredResearch>ARA_AdvancedBiology</requiredResearch>-->
</li>
</spawnablePawns>
</li>
<!-- b. 我们的营养燃料组件 -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>100.0</fuelCapacity>
<fuelFilter>
<categories>
<li>Foods</li>
</categories>
</fuelFilter>
<fuelGizmoLabel>生物质</fuelGizmoLabel>
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<targetFuelLevelConfigurable>true</targetFuelLevelConfigurable>
</li>
<!-- c. 原版的设施链接接收组件 -->
<li Class="CompProperties_AffectedByFacilities">
<linkableFacilities>
<li>ARA_IncubationAccelerator</li>
</linkableFacilities>
</li>
</comps>
</ThingDef>
</Defs>

View File

@@ -58,10 +58,15 @@
<texPath>ArachnaeSwarm/Building/Linked/ARA_InsectWall</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>CutoutComplex</shaderType>
<shadowData>
<volume>(0.7, 0.4, 0.2)</volume>
<offset>(0,0,-0.1)</offset>
</shadowData>
</graphicData>
<designationCategory>ARA_Buildings</designationCategory>
<!-- <mineable>true</mineable> -->
<blockLight>true</blockLight>
<staticSunShadowHeight>0</staticSunShadowHeight>
<statBases>
<MarketValue>0</MarketValue>
<Beauty>-6</Beauty>
@@ -119,6 +124,10 @@
<graphicData>
<texPath>ArachnaeSwarm/Building/Door/ARA_InsectDoor</texPath>
<graphicClass>Graphic_Multi</graphicClass>
<shadowData>
<volume>(0.7, 0.6, 0.7)</volume>
<offset>(0,0,-0.1)</offset>
</shadowData>
<damageData>
<!-- no damage marks because they don't move with the door
<rect>(0,0.12,1,0.76)</rect>-->
@@ -151,7 +160,7 @@
<!-- <terrainAffordanceNeeded>ARA_Creep</terrainAffordanceNeeded> -->
<designationCategory>ARA_Buildings</designationCategory>
<holdsRoof>true</holdsRoof>
<staticSunShadowHeight>1.0</staticSunShadowHeight>
<staticSunShadowHeight>0</staticSunShadowHeight>
<blockLight>true</blockLight>
<drawerType>RealtimeOnly</drawerType>
<repairEffect>EatVegetarian</repairEffect>
@@ -327,7 +336,7 @@
<ThingDef ParentName="BenchBase">
<defName>ARA_ResearchBench</defName>
<label>阿拉克涅研究台</label>
<description>一个供阿拉克涅女皇种和智囊种进行研究的活体结构,可以让虫群尽情地探索变异和进化方向。</description>
<description>一个供阿拉克涅虫族进行研究的活体结构,可以让虫群尽情地探索变异和进化方向。</description>
<thingClass>Building_ResearchBench</thingClass>
<size>(3,3)</size>
<stuffCategories Inherit="False"/>
@@ -342,6 +351,10 @@
<graphicClass>Graphic_Multi</graphicClass>
<shaderType>CutoutComplex</shaderType>
<drawSize>(3,4.5)</drawSize>
<shadowData>
<volume>(2.5, 0.5, 2.5)</volume>
<offset>(0,0,-0.1)</offset>
</shadowData>
</graphicData>
<castEdgeShadows>false</castEdgeShadows>
<staticSunShadowHeight>0</staticSunShadowHeight>
@@ -388,6 +401,10 @@
<graphicClass>Graphic_Multi</graphicClass>
<shaderType>CutoutComplex</shaderType>
<drawSize>(2,2)</drawSize>
<shadowData>
<volume>(0.8, 0.4, 1.7)</volume>
<offset>(0,0,-0.1)</offset>
</shadowData>
</graphicData>
<staticSunShadowHeight Inherit="False" IsNull="True" />
<castEdgeShadows>False</castEdgeShadows>

View File

@@ -11,7 +11,6 @@
<graphicData>
<texPath>ArachnaeSwarm/Building/ARA_EggSac</texPath>
<graphicClass>Graphic_Single</graphicClass>
<drawSize>(1.2,1.2)</drawSize>
<shadowData>
<volume>(0.8, 0.8, 0.3)</volume>
</shadowData>
@@ -38,10 +37,6 @@
</building>
<comps>
<li Class="CompProperties_Glower">
<glowRadius>6</glowRadius>
<glowColor>(113,141,117,0)</glowColor>
</li>
<li Class="CompProperties_SpawnEffecterOnDestroy">
<effect>CocoonDestroyed</effect>
</li>
@@ -74,6 +69,10 @@
</researchPrerequisites>
<comps>
<li Class="CompProperties_Glower">
<glowRadius>6</glowRadius>
<glowColor>(113,141,117,0)</glowColor>
</li>
<li Class="ArachnaeSwarm.CompProperties_SpawnPawnFromList">
<spawnablePawns>
<li>
@@ -117,6 +116,10 @@
</descriptionHyperlinks>
<comps>
<li Class="CompProperties_Glower">
<glowRadius>6</glowRadius>
<glowColor>(113,141,117,0)</glowColor>
</li>
<li Class="ArachnaeSwarm.CompProperties_SpawnPawnFromList">
<spawnablePawns>
<li>
@@ -163,8 +166,16 @@
<researchPrerequisites>
<li>ARA_Base_Technology</li>
</researchPrerequisites>
<graphicData>
<color>(0.9, 0.9 ,0.5)</color>
<drawSize>(1.1,1.1)</drawSize>
</graphicData>
<comps>
<li Class="CompProperties_Glower">
<glowRadius>6</glowRadius>
<glowColor>(230, 230, 128, 0)</glowColor>
</li>
<li Class="ArachnaeSwarm.CompProperties_SpawnPawnFromList">
<spawnablePawns>
<li>
@@ -205,8 +216,15 @@
<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>
@@ -262,8 +280,16 @@
<ThingDef>ArachnaeNode_Race_Myrmecocystus</ThingDef>
<ThingDef>ArachnaeNode_Race_Smokepop</ThingDef>
</descriptionHyperlinks>
<graphicData>
<color>(0.9, 0.9 ,0.5)</color>
<drawSize>(1.4,1.4)</drawSize>
</graphicData>
<comps>
<li Class="CompProperties_Glower">
<glowRadius>6</glowRadius>
<glowColor>(230, 230, 128, 0)</glowColor>
</li>
<li Class="ArachnaeSwarm.CompProperties_SpawnPawnFromList">
<spawnablePawns>
<li>

View File

@@ -6,6 +6,10 @@
<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>
@@ -151,24 +155,24 @@
</comps>
</ThingDef>
<AbilityDef ParentName="ARA_CocoonSpew_Base">
<defName>ARA_Cocoon_Wepaon</defName>
<defName>ARA_Cocoon_Weapon</defName>
<label>投放武装器官孵化茧</label>
<description>投放一枚武装器官茧,内含可以孵化一套基础武装器官的营养和遗传物质——参阅茧的超链接,了解其能生产的所有装备的特点。</description>
<iconPath>UI/Commands/EggSpew</iconPath>
<comps>
<li Class="CompProperties_AbilityLaunchProjectile">
<projectileDef>ARA_Cocoon_Wepaon_Proj</projectileDef>
<projectileDef>ARA_Cocoon_Weapon_Proj</projectileDef>
</li>
</comps>
</AbilityDef>
<ThingDef ParentName="ARA_CocoonSpew_Base_Proj">
<defName>ARA_Cocoon_Wepaon_Proj</defName>
<defName>ARA_Cocoon_Weapon_Proj</defName>
<projectile>
<spawnsThingDef>ARA_Cocoon_Wepaon</spawnsThingDef>
<spawnsThingDef>ARA_Cocoon_Weapon</spawnsThingDef>
</projectile>
</ThingDef>
<ThingDef ParentName="ARA_Cocoon_Base">
<defName>ARA_Cocoon_Wepaon</defName>
<defName>ARA_Cocoon_Weapon</defName>
<label>阿拉克涅孵化茧 武装器官</label>
<description>一个布满尖刺的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一个武装器官的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感该类型的茧适温为-20~35°C需要小心保护</description>
<descriptionHyperlinks>
@@ -176,9 +180,6 @@
<ThingDef>ARA_RW_Basic_Acid_Bladder_Gun</ThingDef>
<ThingDef>ARA_RW_Basic_Fist_Needle_Gun</ThingDef>
</descriptionHyperlinks>
<researchPrerequisites>
<li>ARA_Technology_5DIL</li>
</researchPrerequisites>
<comps>
<!-- The new, GrowthVat-style fuel component -->
@@ -264,4 +265,5 @@
</li>
</comps>
</ThingDef>
</Defs>

View File

@@ -0,0 +1,509 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<ThingDef ParentName="BuildingBase">
<defName>ARA_NutrientNetworkTower</defName>
<label>阿拉克涅营养供给塔</label>
<description>一个中央营养供给设施。它可以自动为链接到的、需要营养的建筑补充燃料。它本身需要被手动填充大量的生物质。</description>
<size>(5,5)</size>
<graphicData>
<texPath>ArachnaeSwarm/Building/ARA_ResearchBench</texPath>
<graphicClass>Graphic_Multi</graphicClass>
<shaderType>CutoutComplex</shaderType>
<drawSize>(5,6.7)</drawSize>
</graphicData>
<altitudeLayer>Building</altitudeLayer>
<passability>PassThroughOnly</passability>
<pathCost>70</pathCost>
<tickerType>Normal</tickerType> <!-- 改为 Normal 以匹配 CompRefuelable 的要求 -->
<fillPercent>0.5</fillPercent>
<statBases>
<MaxHitPoints>300</MaxHitPoints>
<WorkToBuild>3000</WorkToBuild>
<Mass>20</Mass>
<Flammability>0.5</Flammability>
</statBases>
<costList>
<ARA_Carapace>50</ARA_Carapace>
</costList>
<comps>
<!-- 供能核心组件 -->
<li Class="ArachnaeSwarm.CompProperties_NutrientProvider">
<linkableBuildings>
<!-- 这里列出所有可以被供能的建筑的 defName -->
<!-- 您之后可以手动添加,例如: -->
<li>ARA_BioforgeIncubator</li>
<li>ARA_BioforgeIncubator_Thing</li>
<li>ARA_JellyVat</li>
<li>ARA_GrowthVat</li>
<li>ARA_MorphableResearchBench</li>
</linkableBuildings>
<maxDistance>80</maxDistance> <!-- 供能范围 -->
<maxSimultaneous>10</maxSimultaneous>
<maxEfficiency>0.9</maxEfficiency>
</li>
<!-- 全新的、只负责画线的组件 -->
<li Class="ArachnaeSwarm.CompProperties_LineDrawer">
<linkableBuildings>
<li>ARA_BioforgeIncubator</li>
<li>ARA_BioforgeIncubator_Thing</li>
<li>ARA_JellyVat</li>
<li>ARA_GrowthVat</li>
<li>ARA_MorphableResearchBench</li>
</linkableBuildings>
<maxDistance>80</maxDistance>
</li>
<!-- 自身的燃料库 -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>10000.0</fuelCapacity>
<fuelFilter>
<categories>
<li>Foods</li>
<li>Corpses</li>
</categories>
</fuelFilter>
<fuelGizmoLabel>生物质</fuelGizmoLabel>
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<targetFuelLevelConfigurable>true</targetFuelLevelConfigurable>
</li>
<!-- 开关 -->
<li Class="CompProperties_Flickable"/>
<li Class="CompProperties_AffectedByFacilities">
<linkableFacilities>
<li>ARA_GrowthVat</li>
</linkableFacilities>
</li>
</comps>
<designationCategory>ARA_Buildings</designationCategory>
</ThingDef>
<!-- 3. 主建筑 "生物孵化池" -->
<ThingDef ParentName="BuildingBase">
<defName>ARA_BioforgeIncubator_Thing</defName>
<label>生物质物品孵化池</label>
<description>一个大型的、需要消耗大量营养物质的孵化设施,可以同时孵化多个单位,并能通过链接外部设备来提高效率。</description>
<graphicData>
<texPath>ArachnaeSwarm/Building/ARA_BioforgeIncubator</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>CutoutComplex</shaderType>
<drawSize>(5,6)</drawSize>
<shadowData>
<volume>(4.0, 0.5, 4.0)</volume>
<offset>(0,0,-0.1)</offset>
</shadowData>
</graphicData>
<size>(5,5)</size>
<tickerType>Normal</tickerType>
<stuffCategories Inherit="False" />
<costStuffCount>0</costStuffCount>
<costList>
<ARA_Carapace>50</ARA_Carapace>
</costList>
<castEdgeShadows>false</castEdgeShadows>
<staticSunShadowHeight>0</staticSunShadowHeight>
<altitudeLayer>Building</altitudeLayer>
<passability>PassThroughOnly</passability>
<terrainAffordanceNeeded>ARA_Creep</terrainAffordanceNeeded>
<pathCost>50</pathCost>
<statBases>
<MaxHitPoints>250</MaxHitPoints>
<WorkToBuild>2800</WorkToBuild>
<Flammability>1.0</Flammability>
</statBases>
<placeWorkers>
<li>PlaceWorker_PreventInteractionSpotOverlap</li>
</placeWorkers>
<fillPercent>0.8</fillPercent>
<interactionCellOffset>(0,0,-1)</interactionCellOffset>
<hasInteractionCell>true</hasInteractionCell>
<designationCategory>ARA_Buildings</designationCategory>
<uiOrder>2600</uiOrder>
<surfaceType>Item</surfaceType>
<building>
<workTableRoomRole>Laboratory</workTableRoomRole>
<workTableNotInRoomRoleFactor>0.8</workTableNotInRoomRoleFactor>
</building>
<comps>
<!-- a. 我们新的队列物品生产组件 -->
<li Class="ArachnaeSwarm.CompProperties_QueuedInteractiveProducer">
<!-- 队列和交互设置 -->
<productionQueueLimit>3</productionQueueLimit>
<minNutritionToStart>1.0</minNutritionToStart>
<whitelist>
<li>ArachnaeNode_Race_WeaponSmith</li> <!-- 示例:允许普通殖民者操作 -->
</whitelist>
<!-- 质量系统设置 -->
<minSafeTemperature>10</minSafeTemperature>
<maxSafeTemperature>30</maxSafeTemperature>
<penaltyPerDegreePerTick>0.00001</penaltyPerDegreePerTick>
<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>
<!-- 生产列表 -->
<processes>
<li>
<thingDef>ARA_RW_Basic_Acid_Bladder_Gun</thingDef>
<productionTicks>80000</productionTicks>
<totalNutritionNeeded>30</totalNutritionNeeded>
<requiredResearch>ARA_Technology_7VXI</requiredResearch>
</li>
<li>
<thingDef>ARA_RW_Basic_Fist_Needle_Gun</thingDef>
<productionTicks>40000</productionTicks>
<totalNutritionNeeded>10</totalNutritionNeeded>
<requiredResearch>ARA_Technology_5PAV</requiredResearch>
</li>
</processes>
</li>
<!-- b. 我们的营养燃料组件 -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>100.0</fuelCapacity>
<fuelFilter>
<categories>
<li>Foods</li>
</categories>
</fuelFilter>
<fuelGizmoLabel>生物质</fuelGizmoLabel>
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<targetFuelLevelConfigurable>true</targetFuelLevelConfigurable>
</li>
<!-- c. 原版的设施链接接收组件 -->
<li Class="CompProperties_AffectedByFacilities">
<linkableFacilities>
<li>ARA_NutrientNetworkTower</li>
<li>ARA_GrowthVat</li>
</linkableFacilities>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="BuildingBase">
<defName>ARA_BioforgeIncubator</defName>
<label>生物质孵化池</label>
<description>一个大型的、需要消耗大量营养物质的孵化设施,可以同时孵化多个单位,并能通过链接外部设备来提高效率。</description>
<graphicData>
<texPath>ArachnaeSwarm/Building/ARA_BioforgeIncubatorPawn</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>CutoutComplex</shaderType>
<drawSize>(8,8)</drawSize>
<shadowData>
<volume>(6.0, 0.6, 4.0)</volume>
<offset>(0,0,-0.1)</offset>
</shadowData>
</graphicData>
<size>(7,5)</size>
<tickerType>Normal</tickerType>
<stuffCategories Inherit="False" />
<costStuffCount>0</costStuffCount>
<costList>
<ARA_Carapace>50</ARA_Carapace>
</costList>
<castEdgeShadows>false</castEdgeShadows>
<staticSunShadowHeight>0</staticSunShadowHeight>
<altitudeLayer>Building</altitudeLayer>
<passability>PassThroughOnly</passability>
<terrainAffordanceNeeded>ARA_Creep</terrainAffordanceNeeded>
<pathCost>50</pathCost>
<statBases>
<MaxHitPoints>250</MaxHitPoints>
<WorkToBuild>2800</WorkToBuild>
<Flammability>1.0</Flammability>
</statBases>
<placeWorkers>
<li>PlaceWorker_PreventInteractionSpotOverlap</li>
</placeWorkers>
<fillPercent>0.8</fillPercent>
<interactionCellOffset>(0,0,-1)</interactionCellOffset>
<hasInteractionCell>true</hasInteractionCell>
<designationCategory>ARA_Buildings</designationCategory>
<uiOrder>2600</uiOrder>
<surfaceType>Item</surfaceType>
<building>
<workTableRoomRole>Laboratory</workTableRoomRole>
<workTableNotInRoomRoleFactor>0.8</workTableNotInRoomRoleFactor>
</building>
<comps>
<!-- a. 我们自己的队列生产组件 -->
<li Class="ArachnaeSwarm.CompProperties_QueuedPawnSpawner">
<productionQueueLimit>5</productionQueueLimit>
<minNutritionToStart>0.5</minNutritionToStart>
<whitelist>
<li>ARA_ArachnaeQueen</li>
</whitelist>
<spawnablePawns>
<li>
<pawnKind>ArachnaeNode_Race_Myrmecocystus</pawnKind>
<delayTicks>180000</delayTicks>
<totalNutritionNeeded>5.0</totalNutritionNeeded>
</li>
<li>
<pawnKind>ArachnaeNode_Race_ShieldHead</pawnKind>
<delayTicks>180000</delayTicks>
<totalNutritionNeeded>5.0</totalNutritionNeeded>
</li>
<li>
<pawnKind>ArachnaeNode_Race_WeaponSmith</pawnKind>
<delayTicks>180000</delayTicks>
<totalNutritionNeeded>5.0</totalNutritionNeeded>
<!--<requiredResearch>ARA_AdvancedBiology</requiredResearch>-->
</li>
</spawnablePawns>
</li>
<!-- b. 我们的营养燃料组件 -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>100.0</fuelCapacity>
<fuelFilter>
<categories>
<li>Foods</li>
</categories>
</fuelFilter>
<fuelGizmoLabel>生物质</fuelGizmoLabel>
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<targetFuelLevelConfigurable>true</targetFuelLevelConfigurable>
</li>
<!-- c. 原版的设施链接接收组件 -->
<li Class="CompProperties_AffectedByFacilities">
<linkableFacilities>
<li>ARA_NutrientNetworkTower</li>
<li>ARA_GrowthVat</li>
</linkableFacilities>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="BuildingBase">
<defName>ARA_JellyVat</defName> <!-- defName is changed to reflect its purpose -->
<label>生物质酿造池</label>
<description>一个活体虫族器官,通过分别消化植物和肉类物质,来缓慢培育出营养丰富的阿拉克涅虫蜜。需要同时填充素食和肉类才能工作。</description>
<thingClass>Building</thingClass>
<graphicData>
<texPath>ArachnaeSwarm/Building/ARA_JellyVat</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>CutoutComplex</shaderType>
<drawSize>(2.2,2.2)</drawSize>
<shadowData>
<volume>(1.6, 0.5, 1.6)</volume>
<offset>(0,0,-0.1)</offset>
</shadowData>
</graphicData>
<size>(2,2)</size>
<tickerType>Normal</tickerType>
<stuffCategories Inherit="False" />
<costStuffCount>0</costStuffCount>
<costList>
<ARA_Carapace>50</ARA_Carapace>
</costList>
<castEdgeShadows>false</castEdgeShadows>
<staticSunShadowHeight>0</staticSunShadowHeight>
<altitudeLayer>Building</altitudeLayer>
<passability>PassThroughOnly</passability>
<terrainAffordanceNeeded>ARA_Creep</terrainAffordanceNeeded>
<pathCost>50</pathCost>
<statBases>
<MaxHitPoints>250</MaxHitPoints>
<WorkToBuild>2800</WorkToBuild>
<Flammability>1.0</Flammability>
</statBases>
<placeWorkers>
<li>PlaceWorker_PreventInteractionSpotOverlap</li>
</placeWorkers>
<fillPercent>0.8</fillPercent>
<interactionCellOffset>(0,0,-1)</interactionCellOffset>
<hasInteractionCell>true</hasInteractionCell>
<designationCategory>ARA_Buildings</designationCategory>
<uiOrder>2600</uiOrder>
<surfaceType>Item</surfaceType>
<building>
<workTableRoomRole>Laboratory</workTableRoomRole>
<workTableNotInRoomRoleFactor>0.8</workTableNotInRoomRoleFactor>
</building>
<comps>
<li Class="CompProperties_Flickable"/>
<li Class="ArachnaeSwarm.CompProperties_MultiFuelSpawner">
<spawnIntervalRange>
<min>120000</min> <!-- 2天 -->
<max>120000</max>
</spawnIntervalRange>
<products>
<li>
<thingDef>ARA_InsectJelly</thingDef>
<count>150</count>
</li>
</products>
<showMessageIfOwned>true</showMessageIfOwned>
</li>
<!-- 燃料槽 1: 素食 -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition_WithKey">
<saveKeysPrefix>veg_vat</saveKeysPrefix>
<fuelLabel>素食</fuelLabel>
<fuelFilter>
<categories>
<li>PlantFoodRaw</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>
<consumeFuelOnlyWhenUsed>true</consumeFuelOnlyWhenUsed>
</li>
<li Class="CompProperties_AffectedByFacilities">
<linkableFacilities>
<li>ARA_NutrientNetworkTower</li>
</linkableFacilities>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="BuildingBase">
<defName>ARA_GrowthVat</defName>
<label>阿拉克涅捕获茧</label>
<description>用来存放猎物的茧。</description>
<thingClass>ArachnaeSwarm.Building_NutrientVat</thingClass>
<containedPawnsSelectable>true</containedPawnsSelectable>
<tickerType>Normal</tickerType>
<graphicData>
<texPath>ArachnaeSwarm/Building/ARA_GrowthVat</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>CutoutComplex</shaderType>
<drawSize>(2.5,2.5)</drawSize>
<shadowData>
<volume>(0.85, 0.3, 1.7)</volume>
</shadowData>
</graphicData>
<castEdgeShadows>true</castEdgeShadows>
<defaultPlacingRot>North</defaultPlacingRot>
<size>(1,2)</size>
<statBases>
<MaxHitPoints>500</MaxHitPoints>
<WorkToBuild>8000</WorkToBuild>
<Mass>30</Mass>
<Flammability>0.5</Flammability>
</statBases>
<costList>
<ARA_Carapace>50</ARA_Carapace>
</costList>
<altitudeLayer>Building</altitudeLayer>
<passability>PassThroughOnly</passability>
<pathCost>42</pathCost>
<blockWind>true</blockWind>
<drawerType>MapMeshAndRealTime</drawerType>
<fillPercent>0.5</fillPercent>
<canOverlapZones>false</canOverlapZones>
<designationCategory>ARA_Buildings</designationCategory>
<uiOrder>2200</uiOrder>
<hasInteractionCell>true</hasInteractionCell>
<interactionCellOffset>(0,0,-1)</interactionCellOffset>
<rotatable>false</rotatable>
<inspectorTabs>
<li>ITab_BiosculpterNutritionStorage</li>
<li>ITab_Genes</li>
</inspectorTabs>
<researchPrerequisites>
<li>GrowthVats</li>
</researchPrerequisites>
<building>
<ai_chillDestination>false</ai_chillDestination>
<haulToContainerDuration>120</haulToContainerDuration>
<workTableRoomRole>Laboratory</workTableRoomRole>
</building>
<constructionSkillPrerequisite>4</constructionSkillPrerequisite>
<comps>
<!-- 1. 作为消费者,自己也需要燃料 -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>100.0</fuelCapacity>
<fuelFilter>
<categories>
<li>Foods</li>
</categories>
</fuelFilter>
<fuelGizmoLabel>生物质</fuelGizmoLabel>
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<targetFuelLevelConfigurable>true</targetFuelLevelConfigurable>
</li>
<!-- 2. 作为动态增效器,为其他建筑提供加成 -->
<li Class="ArachnaeSwarm.CompProperties_GrowthVatBooster">
<linkableBuildings>
<li>ARA_NutrientNetworkTower</li>
<li>ARA_BioforgeIncubator</li>
<li>ARA_BioforgeIncubator_Thing</li>
</linkableBuildings>
<maxSimultaneous>10</maxSimultaneous>
<maxDistance>20</maxDistance>
<statOffsets>
<NutrientTransmissionEfficiency>0.05</NutrientTransmissionEfficiency>
<ARA_IncubationSpeedFactor>0.1</ARA_IncubationSpeedFactor>
</statOffsets>
</li>
<!-- 3. 作为消费者,接收来自供能塔的燃料 -->
<li Class="CompProperties_AffectedByFacilities">
<linkableFacilities>
<li>ARA_NutrientNetworkTower</li>
</linkableFacilities>
</li>
</comps>
<modExtensions>
<li Class="ArachnaeSwarm.DefModExtension_NutrientVat">
<!-- 在这里配置您的顶部贴图 -->
<topGraphicPath>ArachnaeSwarm/Building/ARA_GrowthVatTop</topGraphicPath>
<!-- 如果是单张贴图,使用 Graphic_Single -->
<graphicClass>Graphic_Single</graphicClass>
</li>
</modExtensions>
</ThingDef>
</Defs>

View File

@@ -0,0 +1,68 @@
<?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>

View File

@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- ================================================================== -->
<!-- ===== 2. 定义我们的“工作僵尸”思考树,并引用上面的子树 ===== -->
<!-- ================================================================== -->
<ThinkTreeDef>
<defName>ARA_WorkingShambler</defName>
<thinkRoot Class="ThinkNode_Priority">
<subNodes>
<!-- 基础状态检查 (来自 Shambler) -->
<li Class="ThinkNode_Subtree">
<treeDef>Despawned</treeDef>
</li>
<li Class="ThinkNode_ConditionalDowned">
<subNodes>
<li Class="ThinkNode_ConditionalCanCrawl">
<invert>true</invert>
<subNodes>
<li Class="ThinkNode_Subtree">
<treeDef>Downed</treeDef>
</li>
</subNodes>
</li>
</subNodes>
</li>
<li Class="ThinkNode_Subtree">
<treeDef>BurningResponse</treeDef>
</li>
<!-- 响应直接命令和威胁 (来自 Shambler) -->
<li Class="ThinkNode_QueuedJob" />
<li Class="ThinkNodeConditional_EscapingHoldingPlatform">
<subNodes>
<li Class="JobGiver_EscapingHoldingPlatform" />
</subNodes>
</li>
<li Class="JobGiver_ReactToCloseMeleeThreat" />
<li Class="ThinkNode_Subtree">
<treeDef>LordDuty</treeDef>
</li>
<!-- 主动战斗 (来自 Shambler) -->
<li Class="JobGiver_ShamblerFight">
<targetAcquireRadius>20</targetAcquireRadius>
<targetKeepRadius>30</targetKeepRadius>
</li>
<!-- 工作逻辑 (引用我们自己的精简版工作核心) -->
<li Class="JobGiver_SeekAllowedArea" />
<li Class="JobGiver_Work">
<emergency>true</emergency>
</li>
<!-- 核心工作循环,但使用我们的精简版 -->
<li Class="JobGiver_Work"/>
<!-- 空闲时徘徊 (来自 Shambler) -->
<li Class="JobGiver_ShamblerWander">
<wanderRadius>5</wanderRadius>
</li>
</subNodes>
</thinkRoot>
</ThinkTreeDef>
</Defs>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<!-- CompAbilityEffect_Transform -->
<PawnTransformer_SpaceBlocked>{PAWN_labelShort} 无法变形:空间不足或有障碍物。</PawnTransformer_SpaceBlocked>
<AbilityCannotBeUsedOnOthers>此能力只能对自己施放。</AbilityCannotBeUsedOnOthers>
<!-- Building_Morphable -->
<StoredPawn>织域者</StoredPawn>
<Activity>活动</Activity>
<Researching>研究中</Researching>
<Idle>空闲中</Idle>
<Sleeping>睡眠中</Sleeping>
<PawnTransformer_OutOfFuel>{PAWN_labelShort} 因营养耗尽而被强制弹出!</PawnTransformer_OutOfFuel>
<PawnTransformer_ForcedRevert>{PAWN_labelShort} 因受到攻击而被强制弹出!</PawnTransformer_ForcedRevert>
<PawnTransformer_BuildingDestroyed>{PAWN_labelShort} 从被摧毁的 {BUILDING_label} 中弹出!</PawnTransformer_BuildingDestroyed>
</LanguageData>

View File

@@ -22,4 +22,8 @@
<ARA_TipString_ControlledDrones>控制的虫族:</ARA_TipString_ControlledDrones>
<ARA_TipString_NoDronesBound>尚未绑定任何虫族。</ARA_TipString_NoDronesBound>
<!-- Trap messages -->
<MessageTrapSprung>{TRAP} 被 {PAWN} 触发!</MessageTrapSprung>
<MessageTrapSprung_NoInstigator>{TRAP} 被触发!</MessageTrapSprung_NoInstigator>
</LanguageData>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 299 KiB

After

Width:  |  Height:  |  Size: 370 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 266 KiB

After

Width:  |  Height:  |  Size: 323 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 320 KiB

After

Width:  |  Height:  |  Size: 360 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

134
Nutrient_Network_Design.md Normal file
View File

@@ -0,0 +1,134 @@
# 中央营养供给网络设计文档 (v2)
## 1. 概述
为了解决需要手动为大量建筑补充营养(燃料)的繁琐操作,本项目旨在设计并实现一个“中央营养供给网络”。该网络由一个或多个“中央供能塔”组成,它们能够自动、无线地为地图上所有需要营养的建筑进行补给。此外,系统还支持通过辅助建筑来提升供能塔的燃料传输效率。
## 2. 设计目标
* **自动化**: 消除手动为每个建筑“加油”的需求。
* **策略性**: 引入效率加成建筑,鼓励玩家进行更优化的基地布局。
* **可扩展性**: 系统应支持多个供能塔、消费者和增效器建筑。
* **性能友好**: 设计应考虑到性能,避免在游戏后期造成明显的卡顿。
* **用户友好**: 玩家应能轻松理解网络的工作状态,并对其进行基本控制。
## 3. 系统架构
本系统采用**去中心化**的设计。每个“中央供能塔”都是一个独立的网络节点。同时,它也作为一个可以被其他设施影响的单位,以接收效率加成。
### 3.1. 主要组件与建筑
#### a. `CompNutrientNetworkFeeder` (供能塔核心组件)
* **职责**:
1. **扫描与链接**: 定期扫描地图,查找所有在范围内的消费者建筑,并维护一个持久化的 `linkedConsumers` 列表。
2. **计算效率**: 检查自身 `Stat`,获取由“增效器”提供的 `NutrientTransmissionEfficiency` 总加成。
3. **分配与供能**: 从 `linkedConsumers` 列表中选择目标,计算需要补充的燃料量 `X`。根据效率加成,从自身燃料库中扣除 `X * (1 - EfficiencyBonus)` 的燃料。
4. **冲突避免**: 使用一个临时标记 `isBeingFueledNow` 来防止多个供能塔同时为一个目标补充。
5. **视觉效果**: 借鉴原版 `CompFacility`,在选中供能塔时,持续绘制到所有已连接消费者的连接线。
* **依附于**: 中央供能塔 (`Building_NutrientTower`)。
#### b. `CompRefuelableNutrition` (修改现有组件)
* **职责**:
1. **接收燃料**: 增加一个新的公共方法 `ReceiveFuelFromNetwork(float amount)`
2. **状态标记**: 增加一个临时的 `bool isBeingFueledNow` 字段。
#### c. “营养网络增效器” (新建筑)
* **`ThingDef`**: 一个新的建筑,例如 `ARA_NutrientNetworkBooster`
* **`comps`**:
* 拥有 `<li Class="CompProperties_Facility">`
*`statOffsets` 中提供一个新的 `StatDef` 加成:`<NutrientTransmissionEfficiency>0.1</NutrientTransmissionEfficiency>`
#### d. “中央供能塔” (修改)
* **`comps`**:
* 除了原计划的组件,新增 `<li Class="CompProperties_AffectedByFacilities">`,使其可以链接到“增效器”。
### 3.2. 工作流程 (Mermaid)
```mermaid
graph TD
subgraph "增效器 (Booster)"
C(Building_Booster)
C -- 提供加成 --> B
end
subgraph "中央供能塔 (Provider)"
B(Building_NutrientTower)
B -- 拥有 --> B1[CompAffectedByFacilities]
B -- 拥有 --> B2[CompNutrientNetworkFeeder]
end
subgraph "消费者建筑 (Consumer)"
A(Building_Existing)
end
B2 -- 1. 扫描并连接 --> A
B2 -- 2. 选中时绘制连接线 --> A
C -- "statOffsets" --> B1
B2 -- 3. 从B1读取效率加成 --> B1
B2 -- 4. 根据效率进行供能 --> A
```
## 4. 实现细节与挑战
* **自定义StatDef**: 需要在XML中创建一个新的 `StatDef`,名为 `NutrientTransmissionEfficiency`
* **性能优化**: 保持合理的扫描间隔。
* **范围限制**: 供能塔的服务范围和增效器的影响范围都应是可配置的。
* **视觉反馈**:
* 供能塔 -> 消费者:绘制连接线,颜色可根据消费者燃料状态变化。
* 增效器 -> 供能塔:使用原版的 `CompFacility` 机制,在选中增效器时会自动显示其影响的供能塔。
## 5. XML 定义 (示例)
#### a. 新的 StatDef
```xml
<StatDef>
<defName>NutrientTransmissionEfficiency</defName>
<label>nutrient transmission efficiency</label>
<description>Reduces the amount of fuel consumed when transfering nutrients wirelessly. The final cost is multiplied by (1 - efficiency).</description>
<category>Building</category>
<defaultBaseValue>0</defaultBaseValue>
<minValue>0</minValue>
<toStringStyle>PercentZero</toStringStyle>
</StatDef>
```
#### b. 增效器 ThingDef
```xml
<ThingDef ParentName="BuildingBase">
<defName>ARA_NutrientNetworkBooster</defName>
<!-- ...其他属性... -->
<comps>
<li Class="CompProperties_Facility">
<linkableBuildings>
<li>ARA_NutrientNetworkTower</li>
</linkableBuildings>
<statOffsets>
<NutrientTransmissionEfficiency>0.1</NutrientTransmissionEfficiency>
</statOffsets>
</li>
</comps>
</ThingDef>
```
#### c. 供能塔 ThingDef
```xml
<ThingDef ParentName="BuildingBase">
<defName>ARA_NutrientNetworkTower</defName>
<!-- ...其他属性... -->
<comps>
<li Class="CompProperties_RefuelableNutrition">...</li>
<li Class="ArachnaeSwarm.CompProperties_NutrientNetworkFeeder">...</li>
<li Class="CompProperties_AffectedByFacilities">
<linkableFacilities>
<li>ARA_NutrientNetworkBooster</li>
</linkableFacilities>
</li>
<!-- ...Flickable, Breakdownable, Power... -->
</comps>
</ThingDef>
```
---
这份文档现在包含了我们所有的设计决策,形成了一个完整且强大的功能蓝图。

View File

@@ -1,13 +1,13 @@
{
"Version": 1,
"WorkspaceRootPath": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
"WorkspaceRootPath": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\verb\\verb_shootmeltbeam.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\\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\\verb\\compcleave.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}"
}
],
@@ -28,11 +28,11 @@
"$type": "Document",
"DocumentIndex": 0,
"Title": "Verb_ShootMeltBeam.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verb\\Verb_ShootMeltBeam.cs",
"DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verb\\Verb_ShootMeltBeam.cs",
"RelativeDocumentMoniker": "Verb\\Verb_ShootMeltBeam.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verb\\Verb_ShootMeltBeam.cs",
"ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verb\\Verb_ShootMeltBeam.cs",
"RelativeToolTip": "Verb\\Verb_ShootMeltBeam.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAyAAAAAAAAAA==",
"ViewState": "AQIAAAAAAAAAAAAAAADwvwAAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-09T03:04:00.299Z",
"EditorCaption": ""
@@ -41,9 +41,9 @@
"$type": "Document",
"DocumentIndex": 1,
"Title": "CompCleave.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verb\\CompCleave.cs",
"DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verb\\CompCleave.cs",
"RelativeDocumentMoniker": "Verb\\CompCleave.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verb\\CompCleave.cs",
"ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verb\\CompCleave.cs",
"RelativeToolTip": "Verb\\CompCleave.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAmAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",

View File

@@ -0,0 +1,276 @@
using RimWorld;
using System.Text;
using System.Collections.Generic;
using UnityEngine;
using Verse;
namespace ArachnaeSwarm
{
public class Building_Morphable : Building
{
private CompMorphable compMorphable;
private CompRefuelableNutrition compRefuelable;
private Effecter researchEffecter;
public float virtualRest; // Public for external access
private bool forceSleep;
public float VirtualRestMax => 1.0f;
public override void ExposeData()
{
base.ExposeData();
Scribe_Values.Look(ref virtualRest, "virtualRest", 1f);
Scribe_Values.Look(ref forceSleep, "forceSleep", false);
}
public override void SpawnSetup(Map map, bool respawningAfterLoad)
{
base.SpawnSetup(map, respawningAfterLoad);
this.compMorphable = GetComp<CompMorphable>();
this.compRefuelable = GetComp<CompRefuelableNutrition>();
}
protected override void Tick()
{
base.Tick();
if (compMorphable?.StoredPawn == null)
{
StopResearchEffect();
return;
}
Pawn pawn = compMorphable.StoredPawn;
var needs = pawn.needs;
if (needs == null)
{
return;
}
// --- 饮食逻辑 ---
if (needs.food != null && compRefuelable != null)
{
if (compRefuelable.HasFuel)
{
// 模拟消耗
compRefuelable.ConsumeFuel(pawn.needs.food.FoodFallPerTick);
}
else
{
Messages.Message("PawnTransformer_OutOfFuel".Translate(pawn.Named("PAWN")), pawn, MessageTypeDefOf.NegativeEvent);
this.Destroy(DestroyMode.Vanish);
return;
}
}
// --- 休息与研究逻辑 ---
if (needs.rest != null)
{
if (needs.rest.CurLevel <= 0)
{
forceSleep = true;
}
if (forceSleep && needs.rest.CurLevel >= needs.rest.MaxLevel)
{
forceSleep = false;
}
}
TimeAssignmentDef assignment = pawn.timetable?.CurrentAssignment ?? TimeAssignmentDefOf.Anything;
if (forceSleep || assignment == TimeAssignmentDefOf.Sleep || assignment == TimeAssignmentDefOf.Joy)
{
// 休眠期 (只有在强制休眠或日程为睡眠/娱乐时才恢复)
if (needs.rest != null)
{
// 使用XML中定义的乘数
virtualRest = Mathf.Min(VirtualRestMax, virtualRest + (Need_Rest.BaseRestGainPerTick * ((CompProperties_Morphable)compMorphable.props).restGainMultiplier));
}
StopResearchEffect();
}
else // 工作或任意时间 (只要不在休息/娱乐,就下降)
{
// 使用固定的、预估的下降率
if (virtualRest > 0)
{
virtualRest -= (0.66f / 60000f);
}
ResearchProjectDef currentProj = Find.ResearchManager.GetProject();
if (currentProj != null)
{
float researchSpeed = pawn.GetStatValue(StatDefOf.ResearchSpeed);
researchSpeed *= this.GetStatValue(StatDefOf.ResearchSpeedFactor);
Find.ResearchManager.ResearchPerformed(researchSpeed, pawn);
pawn.skills.Learn(SkillDefOf.Intellectual, 0.1f, false);
StartResearchEffect();
}
else
{
StopResearchEffect();
}
}
}
private void StartResearchEffect()
{
if (researchEffecter == null)
{
researchEffecter = EffecterDefOf.Research.Spawn();
}
researchEffecter.EffectTick(this, TargetInfo.Invalid);
}
private void StopResearchEffect()
{
if (researchEffecter != null)
{
researchEffecter.Cleanup();
researchEffecter = null;
}
}
public override string Label
{
get
{
if (compMorphable?.StoredPawn != null)
{
return $"{base.Label} ({compMorphable.StoredPawn.LabelShort})";
}
return base.Label;
}
}
public override string GetInspectString()
{
List<string> inspectStrings = new List<string>();
if (compMorphable?.StoredPawn != null)
{
Pawn pawn = compMorphable.StoredPawn;
// 1. 活动状态 (置于首位)
TimeAssignmentDef assignment = pawn.timetable?.CurrentAssignment ?? TimeAssignmentDefOf.Anything;
bool isWorkingTime = !forceSleep && (assignment == TimeAssignmentDefOf.Work || assignment == TimeAssignmentDefOf.Anything);
string activity;
if (isWorkingTime)
{
ResearchProjectDef currentProj = Find.ResearchManager.GetProject();
if (currentProj != null)
{
activity = "Activity".Translate() + ": " + "Researching".Translate() + $" ({currentProj.LabelCap})";
}
else
{
activity = "Activity".Translate() + ": " + "Idle".Translate();
}
}
else
{
activity = "Activity".Translate() + ": " + "Sleeping".Translate();
}
inspectStrings.Add(activity);
// 2. 智识技能
SkillRecord intellectualSkill = pawn.skills?.GetSkill(SkillDefOf.Intellectual);
if (intellectualSkill != null)
{
inspectStrings.Add($"{SkillDefOf.Intellectual.LabelCap}: {intellectualSkill.Level} ({intellectualSkill.XpProgressPercent:P0})");
}
// 3. 休息需求
Need_Rest restNeed = pawn.needs?.rest;
if (restNeed != null)
{
inspectStrings.Add($"{restNeed.LabelCap}: {virtualRest.ToStringPercent()}");
}
}
// 基础信息如HP最后添加
string baseString = base.GetInspectString();
if (!baseString.NullOrEmpty())
{
inspectStrings.Add(baseString);
}
return string.Join("\n", inspectStrings);
}
public override void PostApplyDamage(DamageInfo dinfo, float totalDamageDealt)
{
base.PostApplyDamage(dinfo, totalDamageDealt);
if (dinfo.Amount <= 0 || this.Destroyed)
{
return;
}
if (compMorphable?.StoredPawn != null)
{
ForceRevert(dinfo);
}
}
private void ForceRevert(DamageInfo dinfo)
{
if (compMorphable?.StoredPawn == null) return;
Pawn pawn = compMorphable.StoredPawn;
// 计算将要对 Pawn 造成的伤害
float damageProportion = dinfo.Amount / this.def.statBases.GetStatValueFromList(StatDefOf.MaxHitPoints, 1f);
float pawnDamage = pawn.MaxHitPoints * damageProportion;
// 关键修复创建一个新的、干净的DamageInfo不指定hitPart让游戏自动选择有效的部位
DamageInfo pawnDinfo = new DamageInfo(
def: dinfo.Def,
amount: pawnDamage,
armorPenetration: dinfo.ArmorPenetrationInt,
angle: dinfo.Angle,
instigator: dinfo.Instigator,
hitPart: null, // 明确设为null防止继承无效上下文
weapon: dinfo.Weapon,
category: dinfo.Category,
intendedTarget: dinfo.IntendedTarget
);
// 调用统一的转换方法它会处理建筑的移除、Pawn的生成和状态同步
compMorphable.TransformBackToPawn();
// 在新生成的 Pawn 身上施加伤害
if(pawn.Spawned)
{
pawn.TakeDamage(pawnDinfo);
}
Messages.Message("PawnTransformer_ForcedRevert".Translate(pawn.Named("PAWN")), pawn, MessageTypeDefOf.NegativeEvent);
}
public override void Destroy(DestroyMode mode)
{
if (researchEffecter != null)
{
researchEffecter.Cleanup();
researchEffecter = null;
}
if (this.Spawned && compMorphable?.StoredPawn != null)
{
Pawn pawn = compMorphable.StoredPawn; // 缓存Pawn的引用
// 调用统一的转换方法
compMorphable.TransformBackToPawn();
// 仅在 DestroyMode.KillFinalize 时显示消息
if (mode == DestroyMode.KillFinalize)
{
Messages.Message("PawnTransformer_BuildingDestroyed".Translate(pawn.Named("PAWN"), this.Named("BUILDING")), pawn, MessageTypeDefOf.NegativeEvent);
}
}
base.Destroy(mode);
}
}
}

View File

@@ -0,0 +1,73 @@
using RimWorld;
using Verse;
namespace ArachnaeSwarm
{
public class CompAbilityEffect_Transform : CompAbilityEffect
{
public new CompProperties_AbilityTransform Props => (CompProperties_AbilityTransform)props;
public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
{
base.Apply(target, dest);
Pawn pawn = parent.pawn;
// 检查空间
foreach (var cell in GenRadial.RadialCellsAround(pawn.Position, Props.buildingDef.Size.x / 2f, true))
{
if (!cell.InBounds(pawn.Map) || !cell.Walkable(pawn.Map) || cell.GetEdifice(pawn.Map) != null)
{
Messages.Message("PawnTransformer_SpaceBlocked".Translate(pawn.Named("PAWN")), pawn, MessageTypeDefOf.RejectInput, false);
// 重置技能冷却
parent.StartCooldown(0);
return;
}
}
// 执行转换
IntVec3 position = pawn.Position;
Map map = pawn.Map;
pawn.DeSpawn(DestroyMode.Vanish);
Building building = (Building)GenSpawn.Spawn(Props.buildingDef, position, map, WipeMode.Vanish);
building.SetFaction(pawn.Faction);
var newMorphComp = building.GetComp<CompMorphable>();
if (newMorphComp != null)
{
newMorphComp.SetStoredPawn(pawn);
}
// 同步需求值
var buildingMorphable = building as Building_Morphable;
var refuelableComp = building.GetComp<CompRefuelableNutrition>();
if (buildingMorphable != null && refuelableComp != null && pawn.needs != null)
{
if(pawn.needs.food != null)
{
refuelableComp.Refuel(refuelableComp.Props.fuelCapacity * pawn.needs.food.CurLevelPercentage);
}
if(pawn.needs.rest != null)
{
buildingMorphable.virtualRest = buildingMorphable.VirtualRestMax * pawn.needs.rest.CurLevelPercentage;
}
}
}
public override bool Valid(LocalTargetInfo target, bool throwMessages = false)
{
// 这个技能只应该对自己释放
if (target.Pawn != parent.pawn)
{
if (throwMessages)
{
Messages.Message("AbilityCannotBeUsedOnOthers".Translate(), MessageTypeDefOf.RejectInput, false);
}
return false;
}
return base.Valid(target, throwMessages);
}
}
}

View File

@@ -0,0 +1,108 @@
using RimWorld;
using System.Collections.Generic;
using Verse;
using Verse.AI;
namespace ArachnaeSwarm
{
public class CompMorphable : ThingComp
{
private Pawn storedPawn;
public bool wasEjectedForFuel = false;
public Pawn StoredPawn => storedPawn;
public CompProperties_Morphable Props => (CompProperties_Morphable)props;
public void SetStoredPawn(Pawn pawn)
{
this.storedPawn = pawn;
}
public override void PostExposeData()
{
base.PostExposeData();
Scribe_Deep.Look(ref storedPawn, "storedPawn", false);
}
public override IEnumerable<Gizmo> CompGetGizmosExtra()
{
if (parent.Faction == Faction.OfPlayer && storedPawn != null)
{
Command_Action command = new Command_Action();
command.defaultLabel = Props.gizmoLabel;
command.defaultDesc = Props.gizmoDesc;
command.action = () => { TransformBackToPawn(); };
if (!Props.gizmoIconPath.NullOrEmpty())
{
command.icon = ContentFinder<UnityEngine.Texture2D>.Get(Props.gizmoIconPath);
}
else
{
command.icon = TexCommand.ReleaseAnimals; // Fallback icon
}
yield return command;
}
}
public void TransformBackToPawn()
{
if (storedPawn == null || !this.parent.Spawned) return;
Building building = (Building)this.parent;
Map map = building.Map;
// 获取建筑和相关组件的引用
var refuelableComp = building.GetComp<CompRefuelableNutrition>();
var buildingMorphable = building as Building_Morphable;
// 在移除建筑之前,获取并缓存所有必要的数据
float cachedFuel = 0f;
float cachedFuelCapacity = 1f; // Avoid division by zero
if (refuelableComp != null)
{
cachedFuel = refuelableComp.Fuel;
cachedFuelCapacity = refuelableComp.Props.fuelCapacity;
}
float cachedVirtualRest = 0f;
float cachedVirtualRestMax = 1f; // Avoid division by zero
if (buildingMorphable != null)
{
cachedVirtualRest = buildingMorphable.virtualRest;
cachedVirtualRestMax = buildingMorphable.VirtualRestMax;
}
// 清理Pawn引用防止在DeSpawn过程中触发循环
Pawn pawnToSpawn = storedPawn;
this.storedPawn = null;
// 移除建筑
building.DeSpawn(DestroyMode.Vanish);
// 重新生成Pawn
GenSpawn.Spawn(pawnToSpawn, building.Position, map, WipeMode.Vanish);
// 重新初始化Pawn在地图上所需的组件
PawnComponentsUtility.AddComponentsForSpawn(pawnToSpawn);
// 同步燃料到食物 (使用缓存的值)
var needs = pawnToSpawn.needs;
if (needs?.food != null)
{
needs.food.CurLevelPercentage = cachedFuel / cachedFuelCapacity;
}
if (needs?.rest != null)
{
needs.rest.CurLevelPercentage = cachedVirtualRest / cachedVirtualRestMax;
}
// 选中Pawn
if (Find.Selector.IsSelected(building))
{
Find.Selector.Select(pawnToSpawn);
}
}
}
}

View File

@@ -0,0 +1,15 @@
using RimWorld;
using Verse;
namespace ArachnaeSwarm
{
public class CompProperties_AbilityTransform : CompProperties_AbilityEffect
{
public ThingDef buildingDef;
public CompProperties_AbilityTransform()
{
compClass = typeof(CompAbilityEffect_Transform);
}
}
}

View File

@@ -0,0 +1,20 @@
using RimWorld;
using Verse;
namespace ArachnaeSwarm
{
public class CompProperties_Morphable : CompProperties
{
public float restGainMultiplier = 1f;
// Gizmo properties
public string gizmoLabel = "离开织座";
public string gizmoDesc = "使织域种离开织座。";
public string gizmoIconPath;
public CompProperties_Morphable()
{
compClass = typeof(CompMorphable);
}
}
}

View File

@@ -0,0 +1,80 @@
using Verse;
using RimWorld;
using System.Linq;
namespace ArachnaeSwarm
{
public class CompAbilityEffect_PsychicBrainburn : CompAbilityEffect
{
public new CompProperties_PsychicBrainburn Props => (CompProperties_PsychicBrainburn)props;
public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
{
base.Apply(target, dest);
Pawn pawn = target.Pawn;
if (pawn == null)
{
return;
}
// 查找作为意识来源的身体部位
BodyPartRecord brain = pawn.health.hediffSet.GetNotMissingParts()
.FirstOrDefault(p => p.def.tags.Contains(BodyPartTagDefOf.ConsciousnessSource));
if (brain != null)
{
// 施加巨大伤害以摧毁大脑
float damageAmount = 99999f;
float penetration = 999f;
pawn.TakeDamage(new DamageInfo(DamageDefOf.Burn, damageAmount, penetration, -1f, parent.pawn, brain));
// 如果在XML中定义了效果则生成它
if (Props.effecterDef != null)
{
Props.effecterDef.Spawn(pawn.Position, pawn.Map, 1f);
}
}
}
public override bool Valid(LocalTargetInfo target, bool throwMessages = false)
{
Pawn pawn = target.Pawn;
if (pawn == null)
{
return false;
}
// 检查目标是否是血肉生物如果XML中设置为需要
if (Props.requiresFlesh && !pawn.RaceProps.IsFlesh)
{
if (throwMessages)
{
Messages.Message("MessageCannotUseOnMechanical".Translate(pawn.Named("PAWN")), pawn, MessageTypeDefOf.RejectInput);
}
return false;
}
// 检查目标是否有意识来源部位
BodyPartRecord brain = pawn.health.hediffSet.GetNotMissingParts()
.FirstOrDefault(p => p.def.tags.Contains(BodyPartTagDefOf.ConsciousnessSource));
if (brain == null)
{
if (throwMessages)
{
Messages.Message("MessageTargetHasNoBrain".Translate(pawn.Named("PAWN")), pawn, MessageTypeDefOf.RejectInput);
}
return false;
}
return base.Valid(target, throwMessages);
}
public override bool AICanTargetNow(LocalTargetInfo target)
{
// AI不应主动使用此技能
return false;
}
}
}

View File

@@ -0,0 +1,20 @@
using Verse;
using RimWorld;
namespace ArachnaeSwarm
{
public class CompProperties_PsychicBrainburn : CompProperties_AbilityEffect
{
// 如果为true则技能只能对血肉生物使用。
// 如果为false则可以对机械体等非血肉生物使用。
public bool requiresFlesh = true;
// 在目标身上产生的视觉效果。
public EffecterDef effecterDef;
public CompProperties_PsychicBrainburn()
{
compClass = typeof(CompAbilityEffect_PsychicBrainburn);
}
}
}

View File

@@ -68,129 +68,132 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="ARA_CustomUniqueWeapon\CompCustomUniqueWeapon.cs" />
<Compile Include="ARA_CustomUniqueWeapon\CompProperties_CustomUniqueWeapon.cs" />
<Compile Include="ARA_GiveHediffsInRangeToRace\HediffCompProperties_GiveHediffsInRangeToRace.cs" />
<Compile Include="ARA_GiveHediffsInRangeToRace\HediffComp_GiveHediffsInRangeToRace.cs" />
<Compile Include="ARA_SpawnPawnFromList\CompProperties_SpawnPawnFromList.cs" />
<Compile Include="ARA_SpawnPawnFromList\CompSpawnPawnFromList.cs" />
<Compile Include="ARA_SpawnPawnFromList\JobDriver_Incubate.cs" />
<Compile Include="ARA_SpawnPawnFromList\CompQueuedPawnSpawner.cs" />
<Compile Include="ARA_SpawnPawnFromList\ProductionContracts.cs" />
<Compile Include="ARA_SpawnPawnFromList\JobDriver_AddToQueue.cs" />
<Compile Include="ARA_QueenAbility\CompProperties_AbilitySprayLiquidMulti.cs" />
<Compile Include="ARA_QueenAbility\CompAbilityEffect_SprayLiquidMulti.cs" />
<Compile Include="DRM_HediffCurseFlame\Hediff_CurseFlame.cs" />
<Compile Include="ARA_QueenAbility\CompAbilityEffect_NeedCost.cs" />
<Compile Include="ARA_QueenAbility\CompAbilityEffect_BodyPartCheck.cs" />
<Compile Include="ARA_QueenAbility\CompAbilityEffect_ResearchPrereq.cs" />
<Compile Include="ARA_HiveMind\Hediff_HiveMindMaster.cs" />
<Compile Include="ARA_HiveMind\Hediff_HiveMindDrone.cs" />
<Compile Include="ARA_HiveMind\HediffCompProperties_HiveMindDrone.cs" />
<Compile Include="ARA_HiveMind\HediffComp_HiveMindDrone.cs" />
<Compile Include="ARA_HiveMind\HediffComp_HiveMindMaster.cs" />
<Compile Include="ARA_HiveMind\CompAbilityEffect_BindDrone.cs" />
<Compile Include="ARA_HiveMind\CompProperties_AbilityBindDrone.cs" />
<Compile Include="ARA_SpawnPawnFromList\JobGiver_MaintainBuildings.cs" />
<Compile Include="Verb\CompCleave.cs" />
<Compile Include="Verb\CompMultiStrike.cs" />
<Compile Include="Verb\VerbPropertiesExplosiveBeam.cs" />
<Compile Include="Verb\VerbProperties_Excalibur.cs" />
<Compile Include="Verb\VerbProperties_WeaponStealBeam.cs" />
<Compile Include="Verb\Verb_MeleeAttack_Cleave.cs" />
<Compile Include="Verb\Verb_MeleeAttack_MultiStrike.cs" />
<Compile Include="Verb\Verb_ShootArc.cs" />
<Compile Include="Verb\Verb_ShootBeamExplosive.cs" />
<Compile Include="Verb\Verb_ShootMeltBeam.cs" />
<Compile Include="Verb\Verb_ShootShotgun.cs" />
<Compile Include="Verb\Verb_ShootWeaponStealBeam.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="ARA_CompHediffGiver\CompHediffGiver.cs" />
<Compile Include="ARA_CompHediffGiver\CompProperties_HediffGiver.cs" />
<Compile Include="ARA_CompMilkableArachnae\CompMilkableArachnae.cs" />
<Compile Include="ARA_CompMilkableArachnae\CompProperties_MilkableArachnae.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="MainHarmony.cs" />
<Compile Include="ARA_TrainingWork\JobPlant\ThinkNode_ConditionalAnimalShouldDoGrowingWork.cs" />
<Compile Include="ARA_TrainingWork\CompAdvancedTraining.cs" />
<Compile Include="ARA_TrainingWork\JobPlant\JobGiver_Grower.cs" />
<Compile Include="ARA_TrainingWork\JobPlant\WorkGiver_ArachnaeSow.cs" />
<Compile Include="ARA_TrainingWork\TrainingSystem_Patcher.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="ARA_BuildingTerrainSpawn\CompProperties_DelayedTerrainSpawn.cs" />
<Compile Include="ARA_BuildingTerrainSpawn\CompDelayedTerrainSpawn.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="ARA_AutoMechCarrier\CompAutoMechCarrier.cs" />
<Compile Include="ARA_AutoMechCarrier\CompProperties_AutoMechCarrier.cs" />
<Compile Include="ARA_AutoMechCarrier\PawnProductionEntry.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="ARA_CompInteractiveProducer\CompInteractiveProducer.cs" />
<Compile Include="ARA_CompInteractiveProducer\JobDriver_StartProduction.cs" />
<Compile Include="ARA_CompInteractiveProducer\CompRefuelableNutrition.cs" />
<Compile Include="ARA_CompInteractiveProducer\DataContracts.cs" />
<Compile Include="ARA_CompInteractiveProducer\CompTemperatureRuinableDamage.cs" />
<Compile Include="ARA_CompInteractiveProducer\CompQueuedInteractiveProducer.cs" />
<Compile Include="ARA_CompInteractiveProducer\JobDriver_AddProcessToQueue.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="ARA_HuggingFace\Hediff_Possession.cs" />
<Compile Include="ARA_HuggingFace\PawnDataUtility.cs" />
<Compile Include="ARA_HuggingFace\CompAbilityEffect_Possess.cs" />
<Compile Include="ARA_HuggingFace\CompProperties_AbilityPossess.cs" />
<Compile Include="ARA_HuggingFace\Verb_JumpAndCastOnLanding.cs" />
<Compile Include="ARA_HuggingFace\OriginalPawnData.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="ARA_TrainingWork\JobClean\ARA_TrainableDefOf_Cleaning.cs" />
<Compile Include="ARA_TrainingWork\JobClean\JobGiver_Cleaner.cs" />
<Compile Include="ARA_TrainingWork\JobClean\ThinkNode_ConditionalAnimalShouldDoCleaningWork.cs" />
<Compile Include="ARA_TrainingWork\JobClean\WorkGiver_ArachnaeClean.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="HediffComp_Temperature.cs" />
<Compile Include="CompPawnFlight.cs" />
<Compile Include="CompProperties_PawnFlight.cs" />
<Compile Include="HarmonyPatches.cs" />
<Compile Include="OPToxicGas.cs" />
<Compile Include="PawnRenderNodeWorker_AttachmentBody_NoFlight.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="CompAbilityEffect_LaunchMultiProjectile.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="Abilities\CompAbilityEffect_TrackingCharge.cs" />
<Compile Include="Abilities\CompProperties_TrackingCharge.cs" />
<Compile Include="Abilities\PawnFlyer_TrackingCharge.cs" />
<Compile Include="Abilities\Verb_CastAbilityTrackingCharge.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" />
<Compile Include="Abilities\ARA_HuggingFace\OriginalPawnData.cs" />
<Compile Include="Abilities\ARA_HuggingFace\PawnDataUtility.cs" />
<Compile Include="Abilities\ARA_HuggingFace\Verb_JumpAndCastOnLanding.cs" />
<Compile Include="Abilities\ARA_Morphable\Building_Morphable.cs" />
<Compile Include="Abilities\ARA_Morphable\CompAbilityEffect_Transform.cs" />
<Compile Include="Abilities\ARA_Morphable\CompMorphable.cs" />
<Compile Include="Abilities\ARA_Morphable\CompProperties_AbilityTransform.cs" />
<Compile Include="Abilities\ARA_Morphable\CompProperties_Morphable.cs" />
<Compile Include="Abilities\ARA_QueenAbility\CompAbilityEffect_BodyPartCheck.cs" />
<Compile Include="Abilities\ARA_QueenAbility\CompAbilityEffect_NeedCost.cs" />
<Compile Include="Abilities\ARA_QueenAbility\CompAbilityEffect_ResearchPrereq.cs" />
<Compile Include="Abilities\ARA_QueenAbility\CompAbilityEffect_SprayLiquidMulti.cs" />
<Compile Include="Abilities\ARA_QueenAbility\CompProperties_AbilitySprayLiquidMulti.cs" />
<Compile Include="Abilities\CompAbilityEffect_DRM_Deaddustpop.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="HediffComp_SpawnPawnOnRemoved.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="Projectiles\BulletWithTrail.cs" />
<Compile Include="Projectiles\ExplosiveTrackingBulletDef.cs" />
<Compile Include="Projectiles\Projectile_ConfigurableHellsphereCannon.cs" />
<Compile Include="Projectiles\Projectile_CruiseMissile.cs" />
<Compile Include="Projectiles\Projectile_ExplosiveTrackingBullet.cs" />
<Compile Include="Projectiles\Projectile_ExplosiveWithTrail.cs" />
<Compile Include="Projectiles\Projectile_TrackingBullet.cs" />
<Compile Include="Projectiles\Projectile_WulaPenetratingBeam.cs" />
<Compile Include="Projectiles\Projectile_WulaPenetratingBullet.cs" />
<Compile Include="Projectiles\TrackingBulletDef.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="HediffComp_NecroticTransformation.cs" />
<Compile Include="Hediff_NecroticVirus_Configurable.cs" />
<Compile Include="NecroticTransformationUtility.cs" />
<Compile Include="ProphecyGearEffect.cs" />
<Compile Include="Hediff_ConfigurableMutant.cs" />
<Compile Include="HediffComp_Symbiosis.cs" />
<Compile Include="Abilities\CompAbilityEffect_LaunchMultiProjectile.cs" />
<Compile Include="Abilities\PsychicBrainburn\CompAbilityEffect_PsychicBrainburn.cs" />
<Compile Include="Abilities\PsychicBrainburn\CompProperties_PsychicBrainburn.cs" />
<Compile Include="Abilities\TrackingCharge\CompAbilityEffect_TrackingCharge.cs" />
<Compile Include="Abilities\TrackingCharge\CompProperties_TrackingCharge.cs" />
<Compile Include="Abilities\TrackingCharge\PawnFlyer_TrackingCharge.cs" />
<Compile Include="Abilities\TrackingCharge\Verb_CastAbilityTrackingCharge.cs" />
<Compile Include="Building_Comps\ARA_BuildingTerrainSpawn\CompDelayedTerrainSpawn.cs" />
<Compile Include="Building_Comps\ARA_BuildingTerrainSpawn\CompProperties_DelayedTerrainSpawn.cs" />
<Compile Include="Building_Comps\ARA_CompInteractiveProducer\CompInteractiveProducer.cs" />
<Compile Include="Building_Comps\ARA_CompInteractiveProducer\CompQueuedInteractiveProducer.cs" />
<Compile Include="Building_Comps\ARA_CompInteractiveProducer\CompRefuelableNutrition.cs" />
<Compile Include="Building_Comps\ARA_CompInteractiveProducer\CompTemperatureRuinableDamage.cs" />
<Compile Include="Building_Comps\ARA_CompInteractiveProducer\DataContracts.cs" />
<Compile Include="Building_Comps\ARA_CompInteractiveProducer\JobDriver_AddProcessToQueue.cs" />
<Compile Include="Building_Comps\ARA_CompInteractiveProducer\JobDriver_StartProduction.cs" />
<Compile Include="Building_Comps\ARA_CompTempControl\Building_SmartThermostat.cs" />
<Compile Include="Building_Comps\ARA_CompTempControl\CompTempControl_Fixed.cs" />
<Compile Include="Building_Comps\ARA_HunterTrap\Building_TrapReleaseRandom.cs" />
<Compile Include="Building_Comps\ARA_HunterTrap\CompHunterExplosion.cs" />
<Compile Include="Building_Comps\ARA_HunterTrap\CompProperties_HunterExplosion.cs" />
<Compile Include="Building_Comps\ARA_HunterTrap\TrapReleaseRandomExtension.cs" />
<Compile Include="Building_Comps\ARA_NutrientNetwork\CompFacility_GrowthVatBooster.cs" />
<Compile Include="Building_Comps\ARA_NutrientNetwork\CompLineDrawer.cs" />
<Compile Include="Building_Comps\ARA_NutrientNetwork\CompNutrientProvider.cs" />
<Compile Include="Building_Comps\ARA_NutrientNetwork\CompProperties_NutrientProvider.cs" />
<Compile Include="Building_Comps\ARA_NutrientVat\Building_NutrientVat.cs" />
<Compile Include="Building_Comps\ARA_NutrientVat\DefModExtension_NutrientVat.cs" />
<Compile Include="Building_Comps\ARA_SpawnPawnFromList\CompProperties_SpawnPawnFromList.cs" />
<Compile Include="Building_Comps\ARA_SpawnPawnFromList\CompQueuedPawnSpawner.cs" />
<Compile Include="Building_Comps\ARA_SpawnPawnFromList\CompSpawnPawnFromList.cs" />
<Compile Include="Building_Comps\ARA_SpawnPawnFromList\JobDriver_AddToQueue.cs" />
<Compile Include="Building_Comps\ARA_SpawnPawnFromList\JobDriver_Incubate.cs" />
<Compile Include="Building_Comps\ARA_SpawnPawnFromList\JobGiver_MaintainBuildings.cs" />
<Compile Include="Building_Comps\ARA_SpawnPawnFromList\ProductionContracts.cs" />
<Compile Include="Building_Comps\WULA_MutiFuelSpawner\CompMultiFuelSpawner.cs" />
<Compile Include="Building_Comps\WULA_MutiFuelSpawner\CompRefuelableNutrition_WithKey.cs" />
<Compile Include="Building_Comps\WULA_MutiFuelSpawner\CompRefuelableWithKey.cs" />
<Compile Include="Building_Comps\WULA_MutiFuelSpawner\IFuelSource.cs" />
<Compile Include="Building_Comps\WULA_MutiFuelSpawner\Patch_CompRefuelableWithKey.cs" />
<Compile Include="Hediffs\ARA_ConfigurableMutant\Hediff_ConfigurableMutant.cs" />
<Compile Include="Hediffs\ARA_ConfigurableMutant\Hediff_NecroticVirus_Configurable.cs" />
<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_HiveMind\CompAbilityEffect_BindDrone.cs" />
<Compile Include="Hediffs\ARA_HiveMind\CompProperties_AbilityBindDrone.cs" />
<Compile Include="Hediffs\ARA_HiveMind\Hediff_HiveMindDrone.cs" />
<Compile Include="Hediffs\ARA_HiveMind\Hediff_HiveMindMaster.cs" />
<Compile Include="Hediffs\ARA_HiveMind\HediffComp_HiveMindDrone.cs" />
<Compile Include="Hediffs\ARA_HiveMind\HediffComp_HiveMindMaster.cs" />
<Compile Include="Hediffs\ARA_HiveMind\HediffCompProperties_HiveMindDrone.cs" />
<Compile Include="Hediffs\DRM_HediffCurseFlame\Hediff_CurseFlame.cs" />
<Compile Include="Hediffs\HediffComp_SpawnPawnOnRemoved.cs" />
<Compile Include="Hediffs\HediffComp_Temperature.cs" />
<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\ProphecyGearEffect.cs" />
<Compile Include="Hediffs\WULA_HediffDamgeShield\DRMDamageShield.cs" />
<Compile Include="Hediffs\WULA_HediffDamgeShield\Hediff_DamageShield.cs" />
<Compile Include="MainHarmony.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" />
<Compile Include="Pawn_Comps\ARA_CompHediffGiver\CompHediffGiver.cs" />
<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_Flight\CompPawnFlight.cs" />
<Compile Include="Pawn_Comps\ARA_Flight\CompProperties_PawnFlight.cs" />
<Compile Include="Pawn_Comps\ARA_Flight\Pawn_FlightTrackerPatches.cs" />
<Compile Include="Pawn_Comps\ARA_Flight\PawnRenderNodeWorker_AttachmentBody_NoFlight.cs" />
<Compile Include="Pawn_Comps\ARA_GiveHediffsInRangeToRace\HediffComp_GiveHediffsInRangeToRace.cs" />
<Compile Include="Pawn_Comps\ARA_GiveHediffsInRangeToRace\HediffCompProperties_GiveHediffsInRangeToRace.cs" />
<Compile Include="Pawn_Comps\ARA_TrainingWork\CompAdvancedTraining.cs" />
<Compile Include="Pawn_Comps\ARA_TrainingWork\JobClean\ARA_TrainableDefOf_Cleaning.cs" />
<Compile Include="Pawn_Comps\ARA_TrainingWork\JobClean\JobGiver_Cleaner.cs" />
<Compile Include="Pawn_Comps\ARA_TrainingWork\JobClean\ThinkNode_ConditionalAnimalShouldDoCleaningWork.cs" />
<Compile Include="Pawn_Comps\ARA_TrainingWork\JobClean\WorkGiver_ArachnaeClean.cs" />
<Compile Include="Pawn_Comps\ARA_TrainingWork\JobPlant\JobGiver_Grower.cs" />
<Compile Include="Pawn_Comps\ARA_TrainingWork\JobPlant\ThinkNode_ConditionalAnimalShouldDoGrowingWork.cs" />
<Compile Include="Pawn_Comps\ARA_TrainingWork\JobPlant\WorkGiver_ArachnaeSow.cs" />
<Compile Include="Pawn_Comps\ARA_TrainingWork\TrainingSystem_Patcher.cs" />
<Compile Include="Thing_Comps\ARA_CustomUniqueWeapon\CompCustomUniqueWeapon.cs" />
<Compile Include="Thing_Comps\ARA_CustomUniqueWeapon\CompProperties_CustomUniqueWeapon.cs" />
<Compile Include="Thing_Comps\OPToxicGas.cs" />
<Compile Include="Verbs\Cleave\CompCleave.cs" />
<Compile Include="Verbs\Cleave\Verb_MeleeAttack_Cleave.cs" />
<Compile Include="Verbs\ExplosiveBeam\Verb_ShootBeamExplosive.cs" />
<Compile Include="Verbs\ExplosiveBeam\VerbPropertiesExplosiveBeam.cs" />
<Compile Include="Verbs\MultiStrike\CompMultiStrike.cs" />
<Compile Include="Verbs\MultiStrike\Verb_MeleeAttack_MultiStrike.cs" />
<Compile Include="Verbs\Projectiles\BulletWithTrail.cs" />
<Compile Include="Verbs\Projectiles\ExplosiveTrackingBulletDef.cs" />
<Compile Include="Verbs\Projectiles\Projectile_ConfigurableHellsphereCannon.cs" />
<Compile Include="Verbs\Projectiles\Projectile_CruiseMissile.cs" />
<Compile Include="Verbs\Projectiles\Projectile_ExplosiveTrackingBullet.cs" />
<Compile Include="Verbs\Projectiles\Projectile_ExplosiveWithTrail.cs" />
<Compile Include="Verbs\Projectiles\Projectile_TrackingBullet.cs" />
<Compile Include="Verbs\Projectiles\Projectile_WulaPenetratingBeam.cs" />
<Compile Include="Verbs\Projectiles\Projectile_WulaPenetratingBullet.cs" />
<Compile Include="Verbs\Projectiles\TrackingBulletDef.cs" />
<Compile Include="Verbs\Verb_ShootArc.cs" />
<Compile Include="Verbs\Verb_ShootMeltBeam.cs" />
<Compile Include="Verbs\Verb_ShootShotgun.cs" />
<Compile Include="Verbs\VerbProperties_Excalibur.cs" />
<Compile Include="Verbs\WeaponStealBeam\Verb_ShootWeaponStealBeam.cs" />
<Compile Include="Verbs\WeaponStealBeam\VerbProperties_WeaponStealBeam.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- 自定义清理任务删除obj文件夹中的临时文件 -->

Some files were not shown because too many files have changed in this diff Show More