杂七杂八

This commit is contained in:
Tourswen
2025-10-27 00:04:47 +08:00
parent 37f140be66
commit 4b5287037e
36 changed files with 969 additions and 255 deletions

Binary file not shown.

View File

@@ -1070,6 +1070,7 @@
<canExtractArchiteGenes>true</canExtractArchiteGenes>
<allowMelaninGenes>false</allowMelaninGenes>
<targetLosesGene>true</targetLosesGene>
<goodwillImpact>-50</goodwillImpact>
<geneCountChanceCurve>
<points>
<li>(1, 0.7)</li>
@@ -1197,6 +1198,43 @@
</li>
</comps>
</AbilityDef> -->
<AbilityDef>
<defName>ARA_Genestealer_EjectOrgans</defName>
<label>血肉外翻</label>
<description>畸变种引发目标强烈的突变,使其器官全部外翻到表面,以供虫群采集——这对目标来说几乎是必死的。该技能只能对非虫群的殖民者、囚犯和奴隶释放。</description>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Genestealer_EjectOrgans</iconPath>
<cooldownTicksRange>1</cooldownTicksRange>
<casterMustBeCapableOfViolence>false</casterMustBeCapableOfViolence>
<stunTargetWhileCasting>true</stunTargetWhileCasting>
<warmupMote>Mote_HoraxSmallSpellWarmup</warmupMote>
<warmupEffecter>HoraxianAbilityCasting</warmupEffecter>
<warmupSound>AnomalyAbilityWarmup</warmupSound>
<jobDef>CastAbilityOnThingMelee</jobDef>
<verbProperties>
<verbClass>Verb_CastAbilityTouch</verbClass>
<drawAimPie>false</drawAimPie>
<range>-1</range>
<warmupTime>3</warmupTime>
<targetParams>
<onlyTargetColonistsOrPrisonersOrSlaves>true</onlyTargetColonistsOrPrisonersOrSlaves>
<canTargetSelf>false</canTargetSelf>
<canTargetMechs>false</canTargetMechs>
<canTargetBuildings>false</canTargetBuildings>
</targetParams>
</verbProperties>
<comps>
<li Class="ArachnaeSwarm.CompProperties_AbilityNeedCost">
<customLabel>饮食</customLabel>
<showProgressBar>true</showProgressBar>
<needDef>Food</needDef>
<needCost>1</needCost>
<failMessage>营养值不足,需要进食</failMessage>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityEjectOrgans">
<goodwillImpact>-75</goodwillImpact>
</li>
</comps>
</AbilityDef>
<!-- 衣服 -->
<AbilityDef>

View File

@@ -883,7 +883,7 @@
<abilityDefs>
<li>ARA_Genestealer_ExtractGene</li>
<li>ARA_Genestealer_InjectGenes</li>
<!-- <li>ARA_Genestealer_Variation</li> -->
<li>ARA_Genestealer_EjectOrgans</li>
</abilityDefs>
</li>
<li Class="HediffCompProperties_DisappearsOnDeath" />

View File

@@ -230,10 +230,20 @@
<setMax>0.5</setMax>
</li>
</capMods>
<statOffsets>
<DecompressionResistance MayRequire="kentington.saveourship2">1</DecompressionResistance>
<VacuumSpeedMultiplier MayRequire="kentington.saveourship2">10</VacuumSpeedMultiplier>
<HypoxiaResistance MayRequire="kentington.saveourship2">1</HypoxiaResistance>
</statOffsets>
</li>
<li>
<minSeverity>0.4</minSeverity>
<label>适应</label>
<statOffsets>
<DecompressionResistance MayRequire="kentington.saveourship2">1</DecompressionResistance>
<VacuumSpeedMultiplier MayRequire="kentington.saveourship2">10</VacuumSpeedMultiplier>
<HypoxiaResistance MayRequire="kentington.saveourship2">1</HypoxiaResistance>
</statOffsets>
</li>
<li>
<minSeverity>0.8</minSeverity>
@@ -244,6 +254,11 @@
<offset>0.25</offset>
</li>
</capMods>
<statOffsets>
<DecompressionResistance MayRequire="kentington.saveourship2">1</DecompressionResistance>
<VacuumSpeedMultiplier MayRequire="kentington.saveourship2">10</VacuumSpeedMultiplier>
<HypoxiaResistance MayRequire="kentington.saveourship2">1</HypoxiaResistance>
</statOffsets>
</li>
</stages>
</HediffDef>

View File

@@ -23,7 +23,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Base_Technology</defName>
<label>基础基因序列获取</label>
<description>解锁虫群的基础科技,允许孵化基本的辅虫和武装器官。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n解锁虫群的基础科技,允许孵化基本的辅虫和武装器官。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<baseCost>100</baseCost>
<researchViewX>0.00</researchViewX>
<researchViewY>3.20</researchViewY>
@@ -31,7 +31,7 @@
<ResearchProjectDef ParentName="ARA_techBase_Needtechprint">
<defName>ARA_Technology_1WMT</defName>
<label>节点WMT-1"突破"</label>
<description>允许女皇种和工艺种进化到下一个阶段。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许女皇种和工艺种进化到下一个阶段。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<baseCost>3000</baseCost>
<researchViewX>4.50</researchViewX>
<researchViewY>3.20</researchViewY>
@@ -49,7 +49,7 @@
<ResearchProjectDef ParentName="ARA_techBase_Needtechprint">
<defName>ARA_Technology_2WMT</defName>
<label>节点WMT-2"突破2"</label>
<description>允许女皇种和工艺种进化到下一个阶段。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许女皇种和工艺种进化到下一个阶段。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<baseCost>7000</baseCost>
<researchViewX>9.00</researchViewX>
<researchViewY>3.20</researchViewY>
@@ -63,7 +63,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_6VXI</defName>
<label>节点VXI-6"酸囊"</label>
<description>使拥有酸囊的虫族允许喷射强酸击退敌人。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n使拥有酸囊的虫族允许喷射强酸击退敌人。</description>
<baseCost>150</baseCost>
<researchViewX>1.00</researchViewX>
<researchViewY>0.90</researchViewY>
@@ -75,7 +75,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_7VXI</defName>
<label>节点VXI-7"外置酸袋"</label>
<description>允许工艺种孵化新的武器。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许工艺种孵化新的武器。</description>
<baseCost>300</baseCost>
<researchViewX>2.00</researchViewX>
<researchViewY>0.90</researchViewY>
@@ -87,7 +87,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_8VXI</defName>
<label>节点VXI-8"巨型酸腺"</label>
<description>允许工艺种孵化新的武器。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许工艺种孵化新的武器。</description>
<baseCost>1250</baseCost>
<researchViewX>5.50</researchViewX>
<researchViewY>0.90</researchViewY>
@@ -102,7 +102,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_9VXI</defName>
<label>节点VXI-9"酸雨"</label>
<description>允许工艺种孵化新的武器。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许工艺种孵化新的武器。</description>
<baseCost>2000</baseCost>
<researchViewX>10.00</researchViewX>
<researchViewY>1.50</researchViewY>
@@ -117,7 +117,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_10VXI</defName>
<label>节点VXI-10"微型天灾"</label>
<description>允许工艺种孵化新的武器。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许工艺种孵化新的武器。</description>
<baseCost>3000</baseCost>
<researchViewX>11.00</researchViewX>
<researchViewY>1.50</researchViewY>
@@ -129,7 +129,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_11VXI</defName>
<label>节点VXI-11"天灾"</label>
<description>允许建造天灾酸烧炮组织,一种强大的防御设施,不仅能解决成片的来犯之敌,也可以跨越地图发起打击。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许建造天灾酸烧炮组织,一种强大的防御设施,不仅能解决成片的来犯之敌,也可以跨越地图发起打击。</description>
<baseCost>3000</baseCost>
<researchViewX>12.00</researchViewX>
<researchViewY>0.90</researchViewY>
@@ -143,7 +143,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_1THD</defName>
<label>节点THD-1"灵能闪电"</label>
<description>允许工艺种孵化新的灵能闪电系武器。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许工艺种孵化新的灵能闪电系武器。</description>
<baseCost>2500</baseCost>
<researchViewX>7.50</researchViewX>
<researchViewY>2.70</researchViewY>
@@ -156,7 +156,7 @@
<ResearchProjectDef ParentName="ARA_techBase_Needtechprint">
<defName>ARA_Technology_1KYC</defName>
<label>节点KYC-1"战士虫"</label>
<description>允许女皇种孵化新的虫族——战士种。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许女皇种孵化新的虫族——战士种。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<baseCost>150</baseCost>
<researchViewX>1.00</researchViewX>
<researchViewY>5.40</researchViewY>
@@ -168,7 +168,7 @@
<ResearchProjectDef ParentName="ARA_techBase_Needtechprint">
<defName>ARA_Technology_4KYC</defName>
<label>节点KYC-4"原虫"</label>
<description>允许女皇种孵化新的虫族——原虫种,一种可以寄生在别的种族身上以控制它们的特殊督虫。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许女皇种孵化新的虫族——原虫种,一种可以寄生在别的种族身上以控制它们的特殊督虫。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<baseCost>200</baseCost>
<researchViewX>1.00</researchViewX>
<researchViewY>4.90</researchViewY>
@@ -180,7 +180,7 @@
<ResearchProjectDef ParentName="ARA_techBase_Needtechprint">
<defName>ARA_Technology_2KYC</defName>
<label>节点KYC-2"飞行翼膜"</label>
<description>允许女皇种孵化新的虫族——空天种,敏捷而致命的精锐虫族,拥有以飞行姿态穿梭于战场的能力。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许女皇种孵化新的虫族——空天种,敏捷而致命的精锐虫族,拥有以飞行姿态穿梭于战场的能力。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<baseCost>1600</baseCost>
<researchViewX>5.50</researchViewX>
<researchViewY>4.30</researchViewY>
@@ -192,7 +192,7 @@
<ResearchProjectDef ParentName="ARA_techBase_Needtechprint">
<defName>ARA_Technology_5KYC</defName>
<label>节点KYC-5"巨甲"</label>
<description>允许女皇种孵化新的虫族——迷雾种,一种拥有厚重甲壳的大型督虫,可以释放烟雾、阻燃剂和召唤虫族增援的信息素以协助虫群进行集群冲击。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许女皇种孵化新的虫族——迷雾种,一种拥有厚重甲壳的大型督虫,可以释放烟雾、阻燃剂和召唤虫族增援的信息素以协助虫群进行集群冲击。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<baseCost>800</baseCost>
<researchViewX>5.50</researchViewX>
<researchViewY>4.80</researchViewY>
@@ -204,7 +204,7 @@
<ResearchProjectDef ParentName="ARA_techBase_Needtechprint">
<defName>ARA_Technology_6KYC</defName>
<label>节点KYC-6"灵脑"</label>
<description>允许女皇种孵化新的虫族——织域种,一种寿命长且拥有强大灵能的特殊虫族,不仅能协助虫群的科研工作,也是一个强大的施法者。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许女皇种孵化新的虫族——织域种,一种寿命长且拥有强大灵能的特殊虫族,不仅能协助虫群的科研工作,也是一个强大的施法者。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<baseCost>800</baseCost>
<researchViewX>6.50</researchViewX>
<researchViewY>2.70</researchViewY>
@@ -216,7 +216,7 @@
<ResearchProjectDef ParentName="ARA_techBase_Needtechprint">
<defName>ARA_Technology_7KYC</defName>
<label>节点KYC-7"亲卫"</label>
<description>允许女皇种孵化新的虫族——禁卫种,一种寿命较其他虫族更长的精锐虫族,拥有优秀的远程作战能力和社交能力,同时也可以作为指挥官指挥虫群。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许女皇种孵化新的虫族——禁卫种,一种寿命较其他虫族更长的精锐虫族,拥有优秀的远程作战能力和社交能力,同时也可以作为指挥官指挥虫群。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<baseCost>2800</baseCost>
<researchViewX>10.00</researchViewX>
<researchViewY>3.80</researchViewY>
@@ -228,7 +228,7 @@
<ResearchProjectDef ParentName="ARA_techBase_Needtechprint">
<defName>ARA_Technology_6MEN</defName>
<label>节点MEN-6"拟线"</label>
<description>允许女皇种孵化新的虫族——拟线体,一种出生时躯体便已经被阿拉克涅拟线种寄生的虫族,便宜廉价并且可以快速得到的炮灰,倒是没什么纪律性就是了。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许女皇种孵化新的虫族——拟线体,一种出生时躯体便已经被阿拉克涅拟线种寄生的虫族,便宜廉价并且可以快速得到的炮灰,倒是没什么纪律性就是了。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<baseCost>1800</baseCost>
<researchViewX>7.50</researchViewX>
<researchViewY>2.10</researchViewY>
@@ -241,7 +241,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_4DIL</defName>
<label>节点DIL-4"女仆"</label>
<description>允许工艺种在织物茧孵化新的织物。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许工艺种在织物茧孵化新的织物。</description>
<baseCost>250</baseCost>
<researchViewX>1.00</researchViewX>
<researchViewY>1.50</researchViewY>
@@ -253,7 +253,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_5DIL</defName>
<label>节点DIL-5"护士"</label>
<description>允许工艺种在织物茧孵化新的织物。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许工艺种在织物茧孵化新的织物。</description>
<baseCost>800</baseCost>
<researchViewX>6.50</researchViewX>
<researchViewY>3.80</researchViewY>
@@ -265,7 +265,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_6DIL</defName>
<label>节点DIL-6"兔女郎"</label>
<description>允许工艺种在织物茧孵化新的织物。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许工艺种在织物茧孵化新的织物。</description>
<baseCost>800</baseCost>
<researchViewX>5.50</researchViewX>
<researchViewY>3.80</researchViewY>
@@ -277,7 +277,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_7DIL</defName>
<label>节点DIL-7"花嫁"</label>
<description>允许工艺种在织物茧孵化新的织物。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许工艺种在织物茧孵化新的织物。</description>
<baseCost>1000</baseCost>
<researchViewX>10.00</researchViewX>
<researchViewY>4.80</researchViewY>
@@ -289,7 +289,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_8DIL</defName>
<label>节点DIL-8"卫兵"</label>
<description>允许工艺种在织物茧孵化新的织物。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许工艺种在织物茧孵化新的织物。</description>
<baseCost>1800</baseCost>
<researchViewX>11.00</researchViewX>
<researchViewY>4.80</researchViewY>
@@ -302,7 +302,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_5PAV</defName>
<label>节点PAV-5"毒刺"</label>
<description>允许工艺种孵化新的武器,并允许部分带毒针的虫族进行毒针喷射。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许工艺种孵化新的武器,并允许部分带毒针的虫族进行毒针喷射。</description>
<baseCost>200</baseCost>
<researchViewX>1.00</researchViewX>
<researchViewY>0.30</researchViewY>
@@ -314,7 +314,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_6PAV</defName>
<label>节点PAV-6"暴雨"</label>
<description>允许工艺种孵化新的武器。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许工艺种孵化新的武器。</description>
<baseCost>1000</baseCost>
<researchViewX>5.50</researchViewX>
<researchViewY>0.30</researchViewY>
@@ -329,7 +329,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_7PAV</defName>
<label>节点PAV-7"血棘"</label>
<description>允许工艺种孵化新的武器。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许工艺种孵化新的武器。</description>
<baseCost>1800</baseCost>
<researchViewX>10.00</researchViewX>
<researchViewY>0.30</researchViewY>
@@ -344,7 +344,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_7XPAV</defName>
<label>节点PAV-7X"梭镖"</label>
<description>允许工艺种孵化新的武器。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许工艺种孵化新的武器。</description>
<baseCost>2000</baseCost>
<researchViewX>11.00</researchViewX>
<researchViewY>0.30</researchViewY>
@@ -356,7 +356,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_8PAV</defName>
<label>节点PAV-8"千兆炮"</label>
<description>允许虫族建造一种强大的防御设施,具有强大的穿甲能力和较高的射速,专擅于对抗重甲目标。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许虫族建造一种强大的防御设施,具有强大的穿甲能力和较高的射速,专擅于对抗重甲目标。</description>
<baseCost>2500</baseCost>
<researchViewX>12.00</researchViewX>
<researchViewY>0.30</researchViewY>
@@ -370,7 +370,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_2MEL</defName>
<label>节点MEL-2"骨鞭"</label>
<description>允许工艺种孵化新的武器。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许工艺种孵化新的武器。</description>
<baseCost>600</baseCost>
<researchViewX>5.50</researchViewX>
<researchViewY>2.70</researchViewY>
@@ -382,7 +382,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_3MEL</defName>
<label>节点MEL-3"镰爪"</label>
<description>允许工艺种孵化新的武器。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许工艺种孵化新的武器。</description>
<baseCost>1200</baseCost>
<researchViewX>10.00</researchViewX>
<researchViewY>0.90</researchViewY>
@@ -398,7 +398,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_5ESS</defName>
<label>节点ESS-5"精华萃取"</label>
<description>允许阿拉克涅虫群建造特殊的活体建筑,将俘虏投入以产出精华素。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许阿拉克涅虫群建造特殊的活体建筑,将俘虏投入以产出精华素。</description>
<baseCost>250</baseCost>
<researchViewX>1.00</researchViewX>
<researchViewY>4.40</researchViewY>
@@ -410,7 +410,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_8POD</defName>
<label>节点POD-8"气囊种"</label>
<description>允许虫族建造一种特殊的辅虫,可以将物品和虫族以空投的方式送到大地图上的其他地方,不需要燃料。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许虫族建造一种特殊的辅虫,可以将物品和虫族以空投的方式送到大地图上的其他地方,不需要燃料。</description>
<baseCost>200</baseCost>
<researchViewX>2.00</researchViewX>
<researchViewY>3.90</researchViewY>
@@ -422,7 +422,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_1NPT</defName>
<label>节点NPT-1"中央塔"</label>
<description>允许虫族建造一个中央营养供给设施,它可以自动为链接到的、需要营养的建筑自动补充营养。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许虫族建造一个中央营养供给设施,它可以自动为链接到的、需要营养的建筑自动补充营养。</description>
<baseCost>1800</baseCost>
<researchViewX>11.00</researchViewX>
<researchViewY>0.90</researchViewY>
@@ -434,7 +434,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_5SHL</defName>
<label>节点SHL-5"光瘤"</label>
<description>允许虫族建造一种可以提供直射光源以供植物生长的特殊菌瘤。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许虫族建造一种可以提供直射光源以供植物生长的特殊菌瘤。</description>
<baseCost>250</baseCost>
<researchViewX>1.00</researchViewX>
<researchViewY>2.10</researchViewY>
@@ -446,7 +446,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_6SHL</defName>
<label>节点SHL-6"温度控制"</label>
<description>允许虫族建造一种可以控制房间温度的特殊固定辅虫。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许虫族建造一种可以控制房间温度的特殊固定辅虫。</description>
<baseCost>500</baseCost>
<researchViewX>1.00</researchViewX>
<researchViewY>3.90</researchViewY>
@@ -458,7 +458,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_1TUN</defName>
<label>节点TUN-1"坑道种"</label>
<description>允许虫族建造一种可以通过挖掘地道连接两地的特殊固定辅虫,以在两地间快速传输人员和物资。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许虫族建造一种可以通过挖掘地道连接两地的特殊固定辅虫,以在两地间快速传输人员和物资。</description>
<baseCost>2500</baseCost>
<researchViewX>10.00</researchViewX>
<researchViewY>2.10</researchViewY>
@@ -473,7 +473,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_6GUT</defName>
<label>节点GUT-6"催化"</label>
<description>允许虫利用活体钜菌的催化能力,使虫群可以建造一系列产出建筑。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许虫利用活体钜菌的催化能力,使虫群可以建造一系列产出建筑。</description>
<baseCost>1000</baseCost>
<researchViewX>6.50</researchViewX>
<researchViewY>0.90</researchViewY>
@@ -488,10 +488,10 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_2NPT</defName>
<label>节点NPT-2"消化腔"</label>
<description>允许虫族建造用于存放和消化猎物的茧,溶解猎物为阿拉克涅营养供给塔网络提供额外的生物质传输效率和孵化速度。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许虫族建造用于存放和消化猎物的茧,溶解猎物为阿拉克涅营养供给塔网络提供额外的生物质传输效率和孵化速度。</description>
<baseCost>2000</baseCost>
<researchViewX>12.00</researchViewX>
<researchViewY>3.80</researchViewY>
<researchViewX>13.00</researchViewX>
<researchViewY>2.10</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding> <!-- ARA_MorphableResearchBench-->
<prerequisites>
<li>ARA_Technology_1NPT</li>
@@ -500,10 +500,10 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_3NPT</defName>
<label>节点NPT-3"蜜晶糕"</label>
<description>允许虫族建造生产阿拉克涅蜜晶糕的巢穴,通过分解虫蜜来生产可食用的蜜晶糕。这种在巢穴内加工过的食物可以帮助虫群抵御冷血动物的影响,并且软糯的口感让非虫族殖民者也能乐在其中。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许虫族建造生产阿拉克涅蜜晶糕的巢穴,通过分解虫蜜来生产可食用的蜜晶糕。这种在巢穴内加工过的食物可以帮助虫群抵御冷血动物的影响,并且软糯的口感让非虫族殖民者也能乐在其中。</description>
<baseCost>2000</baseCost>
<researchViewX>13.00</researchViewX>
<researchViewY>3.80</researchViewY>
<researchViewX>14.00</researchViewX>
<researchViewY>2.10</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding> <!-- ARA_MorphableResearchBench-->
<prerequisites>
<li>ARA_Technology_2NPT</li>
@@ -512,7 +512,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_4NPT</defName>
<label>节点NPT-4"孵化池"</label>
<description>允许虫族建造孵化池。一种专用于批量生产虫族的孵化场地。孵化池的孵化效率比孵化茧更高。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许虫族建造孵化池。一种专用于批量生产虫族的孵化场地。孵化池的孵化效率比孵化茧更高。</description>
<baseCost>1800</baseCost>
<researchViewX>12.00</researchViewX>
<researchViewY>2.10</researchViewY>
@@ -525,7 +525,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_8CPE</defName>
<label>节点CPE-8"作物"</label>
<description>允许虫族在菌毯上种植一种食用作物,可以依靠菌毯和土地的营养成长,以供巢穴获取生物质。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许虫族在菌毯上种植一种食用作物,可以依靠菌毯和土地的营养成长,以供巢穴获取生物质。</description>
<baseCost>250</baseCost>
<researchViewX>1.00</researchViewX>
<researchViewY>2.70</researchViewY>
@@ -537,7 +537,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_9CPE</defName>
<label>节点CPE-9"蜂刺射手"</label>
<description>允许虫族在菌毯上种植一种特殊的作物,会成长为拥有攻击性、向敌人发射毒刺的真菌聚合体。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许虫族在菌毯上种植一种特殊的作物,会成长为拥有攻击性、向敌人发射毒刺的真菌聚合体。</description>
<baseCost>600</baseCost>
<researchViewX>6.50</researchViewX>
<researchViewY>0.30</researchViewY>
@@ -550,7 +550,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_6SPV</defName>
<label>节点SPV-6"辅虫巢"</label>
<description>允许工艺种孵化新的武器。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许工艺种孵化新的武器。</description>
<baseCost>800</baseCost>
<researchViewX>5.50</researchViewX>
<researchViewY>1.50</researchViewY>
@@ -562,7 +562,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_7SPV</defName>
<label>节点SPV-7"爆裂投射"</label>
<description>允许虫族建造一种强大的防御设施,能够向进犯的敌军投射以自杀式袭击为核心的爆裂种辅虫。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许虫族建造一种强大的防御设施,能够向进犯的敌军投射以自杀式袭击为核心的爆裂种辅虫。</description>
<baseCost>2500</baseCost>
<researchViewX>12.00</researchViewX>
<researchViewY>1.50</researchViewY>
@@ -579,7 +579,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_2MED</defName>
<label>节点MED-2"侵蚀寄生"</label>
<description>允许蜜罐种使用拟线种寄生的能力,并在医药茧中解锁拟线种抑制剂的制作。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许蜜罐种使用拟线种寄生的能力,并在医药茧中解锁拟线种抑制剂的制作。</description>
<baseCost>1600</baseCost>
<researchViewX>6.50</researchViewX>
<researchViewY>2.10</researchViewY>
@@ -593,7 +593,7 @@
<ResearchProjectDef ParentName="ARA_techBase_Needtechprint">
<defName>ARA_Technology_5STL</defName>
<label>节点STL-5"基因窃取"</label>
<description>允许战士种进行定向进化,抛弃其战斗技能以换取其从殖民者、囚犯和奴隶身上抽取和注入基因的能力。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许战士种进行定向进化,抛弃其战斗技能以换取其从殖民者、囚犯和奴隶身上抽取和注入基因的能力。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<baseCost>500</baseCost>
<researchViewX>2.00</researchViewX>
<researchViewY>5.40</researchViewY>
@@ -605,7 +605,7 @@
<ResearchProjectDef ParentName="ARA_techBase_Needtechprint">
<defName>ARA_Technology_1VTE</defName>
<label>节点VTE-1"护卫者"</label>
<description>允许盾头种进行定向进化,抛弃其产出甲壳素和建造建筑的能力以换取战斗能力、移动能力和冲撞攻击的技能。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许盾头种进行定向进化,抛弃其产出甲壳素和建造建筑的能力以换取战斗能力、移动能力和冲撞攻击的技能。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<baseCost>1200</baseCost>
<researchViewX>6.50</researchViewX>
<researchViewY>4.80</researchViewY>
@@ -620,7 +620,7 @@
<ResearchProjectDef ParentName="ARA_techBase_Needtechprint">
<defName>ARA_Technology_1MED</defName>
<label>节点MED-1"疗愈种"</label>
<description>允许蜜罐种进行定向进化,抛弃生产虫蜜的能力,以强化其自身的医疗能力并解锁孵化医药茧的技能。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许蜜罐种进行定向进化,抛弃生产虫蜜的能力,以强化其自身的医疗能力并解锁孵化医药茧的技能。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<baseCost>1200</baseCost>
<researchViewX>5.50</researchViewX>
<researchViewY>2.10</researchViewY>
@@ -632,7 +632,7 @@
<ResearchProjectDef ParentName="ARA_techBase_Needtechprint">
<defName>ARA_Technology_4CLO</defName>
<label>节点CLO-4"追猎种"</label>
<description>允许战士种进行定向进化,牺牲其使用远程武器的能力以换取强大的近战和永久隐身的能力。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许战士种进行定向进化,牺牲其使用远程武器的能力以换取强大的近战和永久隐身的能力。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<baseCost>1800</baseCost>
<researchViewX>5.50</researchViewX>
<researchViewY>5.30</researchViewY>
@@ -647,7 +647,7 @@
<ResearchProjectDef ParentName="ARA_techBase_Needtechprint">
<defName>ARA_Technology_1BAC</defName>
<label>节点BAC-1"育菌种"</label>
<description>允许迷雾种进行定向进化,牺牲其护甲和喷射信息素的能力以换成生产虫群所需高级资源"活化钜菌"的能力。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许迷雾种进行定向进化,牺牲其护甲和喷射信息素的能力以换成生产虫群所需高级资源"活化钜菌"的能力。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<baseCost>1000</baseCost>
<researchViewX>7.50</researchViewX>
<researchViewY>3.80</researchViewY>
@@ -660,7 +660,7 @@
<ResearchProjectDef ParentName="ARA_techBase_Needtechprint">
<defName>ARA_Technology_9WID</defName>
<label>节点WID-9"磁暴"</label>
<description>允许空天种进行定向进化以牺牲高速和高空机动的能力换取向敌人投射大量磁暴种的能力这种虫群可以以自杀性攻击的方式释放EMP以对抗机械族。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许空天种进行定向进化以牺牲高速和高空机动的能力换取向敌人投射大量磁暴种的能力这种虫群可以以自杀性攻击的方式释放EMP以对抗机械族。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<baseCost>1500</baseCost>
<researchViewX>7.50</researchViewX>
<researchViewY>1.50</researchViewY>
@@ -675,7 +675,7 @@
<ResearchProjectDef ParentName="ARA_techBase_Needtechprint">
<defName>ARA_Technology_6LOD</defName>
<label>节点LOD-6"巢之主"</label>
<description>允许空天种进行定向进化,以牺牲高速和高空机动的能力换取向敌人投射大量天巢种的能力,这种飞行辅虫速度很快,并且在近战中很难缠。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许空天种进行定向进化,以牺牲高速和高空机动的能力换取向敌人投射大量天巢种的能力,这种飞行辅虫速度很快,并且在近战中很难缠。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<baseCost>3500</baseCost>
<researchViewX>10.00</researchViewX>
<researchViewY>5.30</researchViewY>
@@ -690,7 +690,7 @@
<ResearchProjectDef ParentName="ARA_techBase_Needtechprint">
<defName>ARA_Technology_3CON</defName>
<label>节点CON-3"建造者"</label>
<description>允许盾头种进行定向进化,抛弃其防御能力以换取更强大的甲壳素产出能力和建造建筑的能力。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许盾头种进行定向进化,抛弃其防御能力以换取更强大的甲壳素产出能力和建造建筑的能力。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<baseCost>300</baseCost>
<researchViewX>2.00</researchViewX>
<researchViewY>2.70</researchViewY>
@@ -702,7 +702,7 @@
<ResearchProjectDef ParentName="ARA_techBase_Needtechprint">
<defName>ARA_Technology_8FEL</defName>
<label>节点FEL-8"爆燃腔"</label>
<description>允许蜜罐种进行定向进化,抛弃生产虫蜜的能力,以获得防御力增强、生产化合燃料和喷射火焰的能力。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许蜜罐种进行定向进化,抛弃生产虫蜜的能力,以获得防御力增强、生产化合燃料和喷射火焰的能力。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<baseCost>300</baseCost>
<researchViewX>2.00</researchViewX>
<researchViewY>2.10</researchViewY>
@@ -714,7 +714,7 @@
<ResearchProjectDef ParentName="ARA_techBase_Needtechprint">
<defName>ARA_Technology_3CRP</defName>
<label>节点CRP-3"菌毯铺设"</label>
<description>允许迷雾种进行定向进化,抛弃喷射信息素的能力,以获得防御力、移动速度的增强和大规模铺设菌毯的能力。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许迷雾种进行定向进化,抛弃喷射信息素的能力,以获得防御力、移动速度的增强和大规模铺设菌毯的能力。\n\n阿拉克涅虫群所有需要蓝图的科技其蓝图只能通过女皇种的基因试验卵获取。</description>
<baseCost>1300</baseCost>
<researchViewX>7.50</researchViewX>
<researchViewY>0.90</researchViewY>
@@ -730,7 +730,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_1EVO</defName>
<label>节点EVO-1"初级进化"</label>
<description>允许实行新的阿拉克涅进化手术,使得阿拉克涅虫族获得更大的营养储存能力和更厚的甲壳。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许实行新的阿拉克涅进化手术,使得阿拉克涅虫族获得更大的营养储存能力和更厚的甲壳。</description>
<baseCost>250</baseCost>
<researchViewX>2.00</researchViewX>
<researchViewY>4.40</researchViewY>
@@ -742,7 +742,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_3EVO</defName>
<label>节点EVO-3"滑行翼膜"</label>
<description>允许实行新的阿拉克涅进化手术,允许阿拉克涅虫族在腿部植入滑行翼膜,在菌毯上获得更高的移动速度。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许实行新的阿拉克涅进化手术,允许阿拉克涅虫族在腿部植入滑行翼膜,在菌毯上获得更高的移动速度。</description>
<baseCost>1000</baseCost>
<researchViewX>6.50</researchViewX>
<researchViewY>4.30</researchViewY>
@@ -757,7 +757,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_4EVO</defName>
<label>节点EVO-4"爆裂蜕荚"</label>
<description>允许实行新的阿拉克涅进化手术,允许阿拉克涅虫族使用蜕荚孵化能发起自杀性袭击的爆裂种。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许实行新的阿拉克涅进化手术,允许阿拉克涅虫族使用蜕荚孵化能发起自杀性袭击的爆裂种。</description>
<baseCost>1200</baseCost>
<researchViewX>6.50</researchViewX>
<researchViewY>1.50</researchViewY>
@@ -772,7 +772,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_5EVO</defName>
<label>节点EVO-5"反应甲壳"</label>
<description>允许实行新的阿拉克涅进化手术,允许阿拉克涅虫族植入可以抵挡一次任意数额伤害的反应甲壳。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许实行新的阿拉克涅进化手术,允许阿拉克涅虫族植入可以抵挡一次任意数额伤害的反应甲壳。</description>
<baseCost>1500</baseCost>
<researchViewX>7.50</researchViewX>
<researchViewY>4.30</researchViewY>
@@ -787,7 +787,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_6EVO</defName>
<label>节点EVO-6"强化肌腱"</label>
<description>允许实行新的阿拉克涅进化手术,允许阿拉克涅虫族植入可以支持跳跃能力的肌腱。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许实行新的阿拉克涅进化手术,允许阿拉克涅虫族植入可以支持跳跃能力的肌腱。</description>
<baseCost>1500</baseCost>
<researchViewX>6.50</researchViewX>
<researchViewY>5.30</researchViewY>
@@ -802,7 +802,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_7EVO</defName>
<label>节点EVO-7"甲壳棘刺"</label>
<description>允许实行新的阿拉克涅进化手术,允许阿拉克涅虫族植入会自动攻击附近敌人的棘刺腔管。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许实行新的阿拉克涅进化手术,允许阿拉克涅虫族植入会自动攻击附近敌人的棘刺腔管。</description>
<baseCost>1500</baseCost>
<researchViewX>7.50</researchViewX>
<researchViewY>4.80</researchViewY>
@@ -817,7 +817,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_8EVO</defName>
<label>节点EVO-8"玻璃钢壳"</label>
<description>允许实行新的阿拉克涅进化手术,允许阿拉克涅虫族在甲壳植入玻璃钢以获得强大防御力。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许实行新的阿拉克涅进化手术,允许阿拉克涅虫族在甲壳植入玻璃钢以获得强大防御力。</description>
<baseCost>2500</baseCost>
<researchViewX>10.00</researchViewX>
<researchViewY>4.30</researchViewY>
@@ -835,7 +835,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_9EVO</defName>
<label>节点EVO-9"生理抑制"</label>
<description>允许实行新的阿拉克涅进化手术,允许阿拉克涅虫族以丧失自愈能力为代价摆脱寿命的限制。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许实行新的阿拉克涅进化手术,允许阿拉克涅虫族以丧失自愈能力为代价摆脱寿命的限制。</description>
<baseCost>4000</baseCost>
<researchViewX>11.00</researchViewX>
<researchViewY>3.80</researchViewY>
@@ -850,7 +850,7 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_10EVO</defName>
<label>节点EVO-10"高级肺"</label>
<description>允许实行新的阿拉克涅进化手术,允许阿拉克涅虫族获得更强大的肺部。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许实行新的阿拉克涅进化手术,使得阿拉克涅虫族获得更强大的肺部。</description>
<baseCost>1000</baseCost>
<researchViewX>7.50</researchViewX>
<researchViewY>5.30</researchViewY>
@@ -866,7 +866,7 @@
<ResearchProjectDef ParentName="ARA_techBase_Needtechprint">
<defName>ARA_Technology_2SYM</defName>
<label>节点SYM-2"霜结体"</label>
<description>允许阿拉克涅虫族建造特殊的活体建筑——阿拉克涅共生肌群,一种可以和督虫融合的无意识组织体,能为督虫提供强大的战斗力。\n\n霜结体共生肌群可以支持与其融合的阿拉克涅督虫使用多种急冻类武装可以在控制大范围人群和快速点杀高价值目标间切换。</description>
<description>&lt;color=#887E78>&lt;i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径它们奠定了虫群在生物学上的优越性。&lt;/i>&lt;/color>\n\n允许阿拉克涅虫族建造特殊的活体建筑——阿拉克涅共生肌群,一种可以和督虫融合的无意识组织体,能为督虫提供强大的战斗力。\n\n霜结体共生肌群可以支持与其融合的阿拉克涅督虫使用多种急冻类武装可以在控制大范围人群和快速点杀高价值目标间切换。</description>
<baseCost>4000</baseCost>
<researchViewX>12.00</researchViewX>
<researchViewY>4.30</researchViewY>

View File

@@ -408,6 +408,7 @@
<li>Gourmand</li>
<li>Wimp</li>
<li>DrugDesire</li>
<li>Pyromaniac</li>
</blackTraitList>
</raceRestriction>
<!-- 想法设置 -->

View File

@@ -69,7 +69,6 @@
<designationHotKey>Misc9</designationHotKey>
<researchPrerequisites>
<li>ARA_Base_Technology</li>
<li>BasicGravtech</li>
</researchPrerequisites>
<affordances>
<li>ARA_Creep</li>
@@ -1063,55 +1062,4 @@
</li>
</comps>
</ThingDef>
<ThingDef ParentName="TorchLamp">
<defName>ARA_WallCreep</defName>
<label>阿拉克涅菌瘤(墙壁)</label>
<description>在墙上的阿拉克涅菌瘤,比在地面上的版本照明范围更大,但是不会扩散菌毯。不需要在阿拉克涅菌毯上建造。</description>
<rotatable>true</rotatable>
<graphicData>
<texPath>Things/Building/Misc/WallTorch/WallTorch</texPath>
<graphicClass>Graphic_Multi</graphicClass>
<drawOffsetNorth>(0,0,0.9)</drawOffsetNorth>
<drawOffsetSouth>(0,0,-0.9)</drawOffsetSouth>
<drawOffsetWest>(-0.9,0,0)</drawOffsetWest>
<drawOffsetEast>(0.9,0,0)</drawOffsetEast>
<damageData>
<enabled>false</enabled>
</damageData>
</graphicData>
<uiIconPath>Things/Building/Misc/WallTorch/WallTorch_MenuIcon</uiIconPath>
<altitudeLayer>BuildingOnTop</altitudeLayer>
<passability>Standable</passability>
<terrainAffordanceNeeded IsNull="True" />
<pathCost>0</pathCost>
<costList>
<ARA_InsectJelly>2</ARA_InsectJelly>
</costList>
<building>
<isEdifice>false</isEdifice>
<isAttachment>true</isAttachment>
</building>
<statBases>
<MaxHitPoints>50</MaxHitPoints>
</statBases>
<placeWorkers>
<li>Placeworker_AttachedToWall</li>
<li>PlaceWorker_GlowRadius</li>
</placeWorkers>
<comps Inherit="False">
<li Class="CompProperties_Glower">
<glowRadius>12</glowRadius>
<glowColor>(220,210,171,0)</glowColor>
</li>
<li Class="CompProperties_Lifespan">
<lifespanTicks>1200000</lifespanTicks>
</li>
<li Class="ArachnaeSwarm.CompProperties_DelayedTerrainSpawn">
<terrainToSpawn>ARA_InsectCreep</terrainToSpawn>
<spawnRadius>6</spawnRadius>
</li>
</comps>
</ThingDef>
</Defs>

View File

@@ -7,13 +7,16 @@
<thingClass>ArachnaeSwarm.Building_ArachnaeGravEngine</thingClass>
<drawerType>RealtimeOnly</drawerType>
<tickerType>Normal</tickerType>
<minifiedDef>MinifiedThing</minifiedDef>
<uiIconPath>ArachnaeSwarm/Building/ARA_HiveShip_Heart_Icon</uiIconPath>
<graphicData>
<graphicClass>Graphic_Single</graphicClass>
<texPath>ArachnaeSwarm/Weapon/ARA_Weapon_Empty</texPath>
<drawSize>(3.25,3.25)</drawSize>
<drawSize>(1,1)</drawSize>
<addTopAltitudeBias>true</addTopAltitudeBias>
<shadowData>
<volume>(3, 3, 2)</volume>
<offset>(0,0,0)</offset>
</shadowData>
</graphicData>
<statBases>
<MaxHitPoints>1500</MaxHitPoints>
@@ -22,18 +25,29 @@
<SubstructureSupport>800</SubstructureSupport>
<MarketValue>5000</MarketValue>
</statBases>
<terrainAffordanceNeeded>ARA_Creep</terrainAffordanceNeeded>
<researchPrerequisites Inherit="False"/>
<!-- 应用 ModExtension -->
<modExtensions>
<li Class="ArachnaeSwarm.ArachnaeGravEngineExtension">
<orbTexPath>ArachnaeSwarm/Building/ARA_HiveShip_Heart</orbTexPath>
<cooldownTexPath>ArachnaeSwarm/Building/ARA_HiveShip_Heart</cooldownTexPath>
<baseTexPath>ArachnaeSwarm/Building/ARA_HiveShip_Heart_Pedestal</baseTexPath>
<!-- 独立缩放配置 -->
<baseScale>(3.5, 3.5)</baseScale> <!-- 基座缩放 -->
<orbScale>(3.5, 3.5)</orbScale> <!-- 球体正常状态缩放 -->
<cooldownScale>(3.5, 3.5)</cooldownScale> <!-- 球体冷却状态缩放 -->
</li>
</modExtensions>
<costList>
<ARA_InsectJelly>50</ARA_InsectJelly>
<ARA_Carapace>50</ARA_Carapace>
</costList>
<size>(3,3)</size>
<castEdgeShadows>true</castEdgeShadows>
<researchPrerequisites Inherit="False"/>
<staticSunShadowHeight Inherit="False" IsNull="True" />
<castEdgeShadows>False</castEdgeShadows>
<fillPercent>0.6</fillPercent>
<passability>Impassable</passability>
<canOverlapZones>false</canOverlapZones>
<building>
<ai_neverTrashThis>true</ai_neverTrashThis>
@@ -42,21 +56,27 @@
<li>GravshipHull</li>
</relatedBuildCommands>
<relatedTerrain>
<li>Substructure</li>
<li>ARA_InsectCreepFloor</li>
</relatedTerrain>
<blueprintClass>Blueprint_Build</blueprintClass>
<blueprintGraphicData>
<texPath>ArachnaeSwarm/Building/ARA_HiveShip_Heart_Icon</texPath>
<graphicClass>Graphic_Multi</graphicClass>
<drawSize>(3,3)</drawSize>
</blueprintGraphicData>
</building>
<comps>
<li Class="CompProperties_SubstructureFootprint">
<radius>30</radius>
</li>
<li Class="CompProperties_Glower">
<!-- <li Class="CompProperties_Glower">
<glowRadius>8</glowRadius>
<glowColor>(199,136,114,0)</glowColor>
</li>
</li> -->
<li Class="CompProperties_AffectedByFacilities">
<linkableFacilities>
<li>GravFieldExtender</li> <!-- 硬编码 -->
<li>PilotConsole</li> <!-- 硬编码 -->
<li>ARA_PilotConsole</li> <!-- 硬编码 -->
<li>ARA_HiveShip_Stomach</li>
<li>ARA_HiveShip_Tail</li>
<li>FuelOptimizer</li>
@@ -70,14 +90,68 @@
</li>
</comps>
</ThingDef>
<ThingDef ParentName="GravshipComponentBase">
<defName>ARA_PilotConsole</defName>
<label>猎手虫巢舰-链接器</label>
<description>链接器是阿拉克涅虫巢用于与猎手虫巢舰进行交流的平台。</description>
<graphicData>
<graphicClass>Graphic_Multi</graphicClass>
<texPath>Things/Building/PilotConsole/PilotConsole</texPath>
<drawSize>(3.7, 2.6)</drawSize>
</graphicData>
<statBases>
<MaxHitPoints>150</MaxHitPoints>
<Mass>50</Mass>
<Flammability>0</Flammability>
<Beauty>0</Beauty>
<WorkToBuild>2500</WorkToBuild>
</statBases>
<size>(3, 3)</size>
<rotatable>true</rotatable>
<fillPercent>0.4</fillPercent>
<passability>Standable</passability>
<pathCost>14</pathCost>
<canOverlapZones>false</canOverlapZones>
<terrainAffordanceNeeded>ARA_Creep</terrainAffordanceNeeded>
<researchPrerequisites Inherit="False"/>
<costList>
<Steel>140</Steel>
<ComponentIndustrial>3</ComponentIndustrial>
</costList>
<resourcesFractionWhenDeconstructed>1</resourcesFractionWhenDeconstructed>
<constructionSkillPrerequisite>4</constructionSkillPrerequisite>
<hasInteractionCell>true</hasInteractionCell>
<interactionCellOffset>(0, 0, 0)</interactionCellOffset>
<comps>
<li Class="CompProperties_GravshipFacility">
<compClass>CompPilotConsole</compClass>
<componentTypeDef>Controls</componentTypeDef>
<requiresLOS>false</requiresLOS>
<showMaxSimultaneous>false</showMaxSimultaneous>
<maxSimultaneous>1</maxSimultaneous>
<maxDistance>200</maxDistance>
</li>
<li Class="CompProperties_Breakdownable" />
<!-- 新添加的损坏禁用器 -->
<li Class="ArachnaeSwarm.CompProperties_BreakdownDisabler">
<logRepairs>true</logRepairs>
<showVisualFeedback>true</showVisualFeedback>
</li>
</comps>
<uiOrder>2100</uiOrder>
</ThingDef>
<ThingDef ParentName="FuelTankBase">
<defName>ARA_HiveShip_Stomach</defName>
<label>猎手虫巢舰-胃囊</label>
<description>阿拉克涅虫群猎手虫巢舰的胃囊,它可以储存供虫巢舰进行移动的生物质。</description>
<graphicData>
<graphicClass>Graphic_Multi</graphicClass>
<texPath>Things/Building/ChemfuelTank/ChemfuelTank</texPath>
<texPath>ArachnaeSwarm/Building/ARA_HiveShip_Stomach</texPath>
<drawSize>(2, 2)</drawSize>
<shadowData>
<volume>(0.8, 0.8, 1)</volume>
<offset>(0,0,0)</offset>
</shadowData>
</graphicData>
<statBases>
<MaxHitPoints>200</MaxHitPoints>
@@ -88,23 +162,22 @@
</statBases>
<size>(2, 2)</size>
<costList>
<Steel>120</Steel>
<ARA_InsectJelly>15</ARA_InsectJelly>
<ARA_Carapace>50</ARA_Carapace>
</costList>
<researchPrerequisites>
<li>BasicGravtech</li>
</researchPrerequisites>
<researchPrerequisites Inherit="False"/>
<comps>
<li Class="CompProperties_Refuelable">
<fuelCapacity>250</fuelCapacity>
<fuelCapacity>100</fuelCapacity>
<targetFuelLevelConfigurable>true</targetFuelLevelConfigurable>
<initialConfigurableTargetFuelLevel>250</initialConfigurableTargetFuelLevel>
<fuelFilter>
<thingDefs>
<li>Chemfuel</li>
<li>ARA_InsectJelly</li>
</thingDefs>
</fuelFilter>
<fuelLabel>Chemfuel</fuelLabel>
<fuelGizmoLabel>Chemfuel</fuelGizmoLabel>
<fuelLabel>营养</fuelLabel>
<fuelGizmoLabel>营养</fuelGizmoLabel>
<consumeFuelOnlyWhenUsed>true</consumeFuelOnlyWhenUsed>
<autoRefuelPercent>1</autoRefuelPercent>
<showFuelGizmo>true</showFuelGizmo>
@@ -117,8 +190,8 @@
</ThingDef>
<ThingDef ParentName="ThrusterBase">
<defName>ARA_HiveShip_Tail</defName>
<label>small thruster</label>
<description>A chemfuel thruster that increases the range of a gravship. Thrusters require an unobstructed area free of large buildings and gravship substructure.\n\nA gravship can support up to four small thrusters.</description>
<label>猎手虫巢舰-触须</label>
<description>猎手虫巢舰用于移动的器官。</description>
<graphicData>
<graphicClass>Graphic_Multi</graphicClass>
<texPath>Things/Building/SmallThruster/SmallThruster</texPath>
@@ -136,13 +209,11 @@
</statBases>
<size>(1, 2)</size>
<constructionSkillPrerequisite>4</constructionSkillPrerequisite>
<researchPrerequisites Inherit="False"/>
<costList>
<Steel>180</Steel>
<ComponentIndustrial>4</ComponentIndustrial>
</costList>
<researchPrerequisites>
<li>BasicGravtech</li>
</researchPrerequisites>
<comps>
<li Class="CompProperties_GravshipThruster">
<statOffsets>
@@ -152,7 +223,7 @@
<exclusionAreaSize>(1, 0, 5)</exclusionAreaSize>
<exclusionAreaOffset>(0, 0, -5)</exclusionAreaOffset>
<directionInfluence>20</directionInfluence>
<flameSize>4.0</flameSize>
<flameSize>0</flameSize>
<flameOffsetsPerDirection>
<li>(0, 0, 0.5)</li>
<li>(0, 0, 0.5)</li>
@@ -164,7 +235,7 @@
<_MainTex>/Things/Mote/SmallThruster_Burn</_MainTex>
</flameShaderParameters>
<requiresLOS>false</requiresLOS>
<maxSimultaneous>4</maxSimultaneous>
<maxSimultaneous>16</maxSimultaneous>
<maxDistance>500</maxDistance>
<exhaustSettings>
<exhaustFleckDef>GravshipThrusterExhaust</exhaustFleckDef>
@@ -174,10 +245,15 @@
<velocityRotationRange>-10.0~10.0</velocityRotationRange>
<velocityMultiplierRange>0.8~1.2</velocityMultiplierRange>
<rotationOverTimeRange>-180.0~180.0</rotationOverTimeRange>
<scaleRange>1.5~3.0</scaleRange>
<scaleRange>0~0</scaleRange>
</exhaustSettings>
</li>
<li Class="CompProperties_Breakdownable" />
<!-- 新添加的损坏禁用器 -->
<li Class="ArachnaeSwarm.CompProperties_BreakdownDisabler">
<logRepairs>true</logRepairs>
<showVisualFeedback>true</showVisualFeedback>
</li>
</comps>
</ThingDef>
</Defs>

View File

@@ -519,7 +519,7 @@
</thingCategories>
<size>(3,3)</size>
<generateCommonality>1</generateCommonality>
<tradeability>None</tradeability>
<tradeability>Sellable</tradeability>
<thingSetMakerTags>
<li>RewardStandardQualitySuper</li>
</thingSetMakerTags>

View File

@@ -120,7 +120,7 @@
<Beauty>-20</Beauty>
<ShootingAccuracyTurret>0.96</ShootingAccuracyTurret>
</statBases>
<!-- <tickerType>Rare</tickerType> -->
<tickerType>Normal</tickerType>
<comps>
<li Class="CompProperties_Forbiddable"/>
<li Class="ArachnaeSwarm.CompProperties_ForceTargetable" />
@@ -211,7 +211,7 @@
<fillPercent>0.20</fillPercent>
<leaveResourcesWhenKilled>false</leaveResourcesWhenKilled>
<rotatable>false</rotatable>
<!-- <tickerType>Rare</tickerType> -->
<tickerType>Normal</tickerType>
<building>
<isTrap>true</isTrap>
<trapDestroyOnSpring>true</trapDestroyOnSpring>

View File

@@ -127,4 +127,7 @@
<ARA_NoValidHediff>没有可用的虫化变异</ARA_NoValidHediff>
<ARA_TargetBlacklisted>目标是虫群的成员</ARA_TargetBlacklisted>
<ARA_TargetAlreadyHasHediff>目标已完成虫化变异</ARA_TargetAlreadyHasHediff>
<ARA_EjectedOrgans>成功将 {0} 的内脏全部翻出</ARA_EjectedOrgans>
<ARA_NoEjectableOrgans>目标没有可以翻出的器官</ARA_NoEjectableOrgans>
</LanguageData>

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 936 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -1,22 +1,18 @@
{
"Version": 1,
"WorkspaceRootPath": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
"WorkspaceRootPath": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\buildings\\building_arachnaegravengine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_arachnaegravengine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\abilities\\ara_ejectorgans\\compabilityeffect_ejectorgans.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_ejectorgans\\compabilityeffect_ejectorgans.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\\building_comps\\ara_building_refuelingvat\\building_refuelingvat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_building_refuelingvat\\building_refuelingvat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\abilities\\ara_genestealer\\compabilityeffect_extractgene.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_genestealer\\compabilityeffect_extractgene.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\hediffs\\ara_hediffterrainspawn\\comphediffterrainspawn.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_hediffterrainspawn\\comphediffterrainspawn.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\abilities\\compabilityeffect_randomhediff.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\compabilityeffect_randomhediff.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\abilities\\ara_terrainrestriction\\compabilityeffect_terrainrestriction .cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_terrainrestriction\\compabilityeffect_terrainrestriction .cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
@@ -26,7 +22,7 @@
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 2,
"SelectedChildIndex": 1,
"Children": [
{
"$type": "Bookmark",
@@ -34,54 +30,42 @@
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "Building_RefuelingVat.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_Building_RefuelingVat\\Building_RefuelingVat.cs",
"RelativeDocumentMoniker": "Building_Comps\\ARA_Building_RefuelingVat\\Building_RefuelingVat.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_Building_RefuelingVat\\Building_RefuelingVat.cs",
"RelativeToolTip": "Building_Comps\\ARA_Building_RefuelingVat\\Building_RefuelingVat.cs",
"ViewState": "AgIAAEQAAAAAAAAAAAAAAEABAAAQAAAAAAAAAA==",
"DocumentIndex": 0,
"Title": "CompAbilityEffect_EjectOrgans.cs",
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_EjectOrgans\\CompAbilityEffect_EjectOrgans.cs",
"RelativeDocumentMoniker": "Abilities\\ARA_EjectOrgans\\CompAbilityEffect_EjectOrgans.cs",
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_EjectOrgans\\CompAbilityEffect_EjectOrgans.cs",
"RelativeToolTip": "Abilities\\ARA_EjectOrgans\\CompAbilityEffect_EjectOrgans.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAC4AAAAoAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-10-24T06:16:14.743Z",
"WhenOpened": "2025-10-25T11:49:25.843Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "Building_ArachnaeGravEngine.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_ArachnaeGravEngine.cs",
"RelativeDocumentMoniker": "Buildings\\Building_ArachnaeGravEngine.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_ArachnaeGravEngine.cs",
"RelativeToolTip": "Buildings\\Building_ArachnaeGravEngine.cs",
"ViewState": "AgIAAHwAAAAAAAAAAAAgwJcAAAAJAAAAAAAAAA==",
"DocumentIndex": 1,
"Title": "CompAbilityEffect_ExtractGene.cs",
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_Genestealer\\CompAbilityEffect_ExtractGene.cs",
"RelativeDocumentMoniker": "Abilities\\ARA_Genestealer\\CompAbilityEffect_ExtractGene.cs",
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_Genestealer\\CompAbilityEffect_ExtractGene.cs",
"RelativeToolTip": "Abilities\\ARA_Genestealer\\CompAbilityEffect_ExtractGene.cs",
"ViewState": "AgIAABEAAAAAAAAAAAAAwCgAAAApAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-10-24T02:30:45.288Z",
"WhenOpened": "2025-10-25T11:49:07.979Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "CompHediffTerrainSpawn.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompHediffTerrainSpawn.cs",
"RelativeDocumentMoniker": "Hediffs\\ARA_HediffTerrainSpawn\\CompHediffTerrainSpawn.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompHediffTerrainSpawn.cs",
"RelativeToolTip": "Hediffs\\ARA_HediffTerrainSpawn\\CompHediffTerrainSpawn.cs",
"ViewState": "AgIAAB0AAAAAAAAAAAAswE0AAABHAAAAAAAAAA==",
"Title": "CompAbilityEffect_TerrainRestriction .cs",
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_TerrainRestriction\\CompAbilityEffect_TerrainRestriction .cs",
"RelativeDocumentMoniker": "Abilities\\ARA_TerrainRestriction\\CompAbilityEffect_TerrainRestriction .cs",
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_TerrainRestriction\\CompAbilityEffect_TerrainRestriction .cs",
"RelativeToolTip": "Abilities\\ARA_TerrainRestriction\\CompAbilityEffect_TerrainRestriction .cs",
"ViewState": "AgIAAAAAAAAAAAAAAADwvwQAAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-10-23T08:00:28.236Z",
"WhenOpened": "2025-10-25T11:48:39.275Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "CompAbilityEffect_RandomHediff.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\CompAbilityEffect_RandomHediff.cs",
"RelativeDocumentMoniker": "Abilities\\CompAbilityEffect_RandomHediff.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\CompAbilityEffect_RandomHediff.cs",
"RelativeToolTip": "Abilities\\CompAbilityEffect_RandomHediff.cs",
"ViewState": "AgIAALoAAAAAAAAAAAAqwNcAAAAZAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-10-22T06:34:08.063Z"
}
]
}

View File

@@ -0,0 +1,158 @@
using RimWorld;
using System.Collections.Generic;
using Verse;
namespace ArachnaeSwarm
{
public class CompAbilityEffect_EjectOrgans : CompAbilityEffect
{
// 定义免疫的 Hediff 列表
private static readonly string[] ImmuneHediffs =
{
"ARA_HiveMindMaster",
"ARA_HiveMindDrone",
"ARA_HiveMindWorker"
};
public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
{
base.Apply(target, dest);
Pawn caster = parent.pawn;
Pawn targetPawn = target.Pawn;
if (caster == null || targetPawn == null || targetPawn.Dead)
return;
// 检查目标是否免疫
if (IsTargetImmune(targetPawn))
{
Messages.Message("ARA_TargetBlacklisted".Translate(), targetPawn, MessageTypeDefOf.RejectInput);
return;
}
List<BodyPartRecord> partsToEject = new List<BodyPartRecord>();
// 遍历所有身体部位
foreach (BodyPartRecord part in targetPawn.RaceProps.body.AllParts)
{
// 只检查有spawnThingOnRemoved且未缺失的部位
if (!targetPawn.health.hediffSet.PartIsMissing(part) &&
part.def.spawnThingOnRemoved != null)
{
partsToEject.Add(part);
}
}
if (partsToEject.Count == 0)
return;
// 执行弹出
foreach (BodyPartRecord part in partsToEject)
{
// 生成物品 - spawnThingOnRemoved 是 ThingDef 类型
ThingDef thingDef = part.def.spawnThingOnRemoved;
if (thingDef != null)
{
Thing thing = ThingMaker.MakeThing(thingDef);
GenSpawn.Spawn(thing, caster.Position, caster.Map);
}
// 标记部位缺失
targetPawn.health.AddHediff(HediffDefOf.MissingBodyPart, part);
}
Messages.Message("ARA_EjectedOrgans".Translate(targetPawn.LabelShort), MessageTypeDefOf.NeutralEvent);
}
public override bool Valid(LocalTargetInfo target, bool throwMessages = false)
{
Pawn targetPawn = target.Pawn;
if (targetPawn == null)
return false;
// 检查目标是否免疫
if (IsTargetImmune(targetPawn))
{
if (throwMessages)
Messages.Message("ARA_TargetBlacklisted".Translate(), targetPawn, MessageTypeDefOf.RejectInput, false);
return false;
}
// 检查是否有可弹出的器官
if (!HasEjectableOrgans(targetPawn))
{
if (throwMessages)
Messages.Message("ARA_NoEjectableOrgans".Translate(), targetPawn, MessageTypeDefOf.RejectInput, false);
return false;
}
return base.Valid(target, throwMessages);
}
public override bool GizmoDisabled(out string reason)
{
Pawn caster = parent.pawn;
if (caster == null || caster.Dead)
{
reason = "ARA_CasterDead".Translate();
return true;
}
reason = null;
return false;
}
/// <summary>
/// 检查目标是否免疫器官弹出
/// </summary>
private bool IsTargetImmune(Pawn pawn)
{
if (pawn?.health?.hediffSet?.hediffs == null)
return false;
foreach (Hediff hediff in pawn.health.hediffSet.hediffs)
{
if (hediff?.def != null)
{
string hediffDefName = hediff.def.defName;
foreach (string immuneHediff in ImmuneHediffs)
{
if (hediffDefName == immuneHediff)
return true;
}
}
}
return false;
}
/// <summary>
/// 检查目标是否有可弹出的器官
/// </summary>
private bool HasEjectableOrgans(Pawn pawn)
{
if (pawn?.RaceProps?.body?.AllParts == null)
return false;
foreach (BodyPartRecord part in pawn.RaceProps.body.AllParts)
{
if (!pawn.health.hediffSet.PartIsMissing(part) &&
part.def.spawnThingOnRemoved != null)
{
return true;
}
}
return false;
}
}
public class CompProperties_AbilityEjectOrgans : CompProperties_AbilityEffect
{
public CompProperties_AbilityEjectOrgans()
{
compClass = typeof(CompAbilityEffect_EjectOrgans);
}
}
}

View File

@@ -78,6 +78,7 @@
<Compile Include="Abilities\ARA_AddExtraExp\CompProperties_AddExtraExp.cs" />
<Compile Include="Abilities\ARA_DestroyOwnBodyPart\CompAbilityEffect_DestroyOwnBodyPart.cs" />
<Compile Include="Abilities\ARA_DestroyOwnBodyPart\CompProperties_AbilityDestroyOwnBodyPart.cs" />
<Compile Include="Abilities\ARA_EjectOrgans\CompAbilityEffect_EjectOrgans.cs" />
<Compile Include="Abilities\ARA_Genestealer\CompAbilityEffect_ExtractGene.cs" />
<Compile Include="Abilities\ARA_Genestealer\CompAbilityEffect_InjectGenes.cs" />
<Compile Include="Abilities\ARA_Genestealer\CompProperties_AbilityInjectGenes.cs" />
@@ -115,8 +116,12 @@
<Compile Include="Building_Comps\ARA_Building_RefuelingVat\CompRefuelingVat.cs" />
<Compile Include="Building_Comps\ARA_CompInteractiveProducer\CompResearchProducer.cs" />
<Compile Include="Building_Comps\ARA_CompInteractiveProducer\JobDriver_StartResearchProduction.cs" />
<Compile Include="Building_Comps\ARA_ForwardClearance\CompForwardClearance.cs" />
<Compile Include="Building_Comps\ARA_ForwardClearance\CompProperties_ForwardClearance.cs" />
<Compile Include="Building_Comps\ARA_ForwardClearance\PlaceWorker_ForwardClearance.cs" />
<Compile Include="Building_Comps\ARA_ProductStorage\CompProductStorage.cs" />
<Compile Include="Building_Comps\ARA_ProductStorage\CompProperties_ProductStorage.cs" />
<Compile Include="Building_Comps\CompBreakdownDisabler.cs" />
<Compile Include="EventSystem\CompOpenCustomUI.cs" />
<Compile Include="EventSystem\Condition.cs" />
<Compile Include="EventSystem\DebugActions.cs" />

View File

@@ -0,0 +1,175 @@
using System.Collections.Generic;
using RimWorld;
using UnityEngine;
using Verse;
namespace ArachnaeSwarm
{
public class CompForwardClearance : ThingComp
{
private bool isBlocked = false;
private int lastCheckedTick = -99999;
private const int CheckInterval = 60; // 每60tick检查一次
public CompProperties_ForwardClearance Props => (CompProperties_ForwardClearance)props;
public bool IsBlocked
{
get
{
if (Find.TickManager.TicksGame - lastCheckedTick > CheckInterval)
{
CheckClearance();
}
return isBlocked;
}
}
public override void PostSpawnSetup(bool respawningAfterLoad)
{
base.PostSpawnSetup(respawningAfterLoad);
CheckClearance();
}
public override void CompTick()
{
base.CompTick();
if (Find.TickManager.TicksGame % CheckInterval == 0)
{
bool previousState = isBlocked;
CheckClearance();
// 状态变化时发送信号
if (isBlocked != previousState)
{
SendStateSignal();
}
}
}
public override void CompTickRare()
{
base.CompTickRare();
CheckClearance();
}
/// <summary>
/// 检查前方是否有遮挡
/// </summary>
public void CheckClearance()
{
lastCheckedTick = Find.TickManager.TicksGame;
bool newBlockedState = IsForwardBlocked(parent.Position, parent.Rotation, parent.Map, Props);
if (newBlockedState != isBlocked)
{
isBlocked = newBlockedState;
SendStateSignal();
}
}
/// <summary>
/// 发送状态信号
/// </summary>
private void SendStateSignal()
{
if (isBlocked)
{
parent.BroadcastCompSignal(Props.blockedSignal);
}
else
{
parent.BroadcastCompSignal(Props.clearSignal);
}
}
/// <summary>
/// 静态方法:检查指定位置和朝向是否有遮挡
/// </summary>
public static bool IsForwardBlocked(IntVec3 position, Rot4 rotation, Map map, CompProperties_ForwardClearance props)
{
if (!position.InBounds(map))
return false;
// 获取前方检查的单元格
List<IntVec3> checkCells = GetForwardCells(position, rotation, props.checkDistance);
foreach (IntVec3 cell in checkCells)
{
if (!cell.InBounds(map))
continue;
// 检查屋顶
if (props.checkRoof && map.roofGrid.Roofed(cell))
return true;
// 检查建筑
if (props.checkBuildings)
{
foreach (Thing thing in map.thingGrid.ThingsListAt(cell))
{
if (thing.def.passability == Traversability.Impassable &&
!thing.def.IsFrame && !thing.def.IsBlueprint)
{
return true;
}
}
}
// 检查植物
if (props.checkPlants)
{
Plant plant = cell.GetPlant(map);
if (plant != null && plant.def.passability == Traversability.Impassable)
return true;
}
// 检查地形
if (props.checkTerrain)
{
TerrainDef terrain = map.terrainGrid.TerrainAt(cell);
if (terrain != null && terrain.passability == Traversability.Impassable)
return true;
}
}
return false;
}
/// <summary>
/// 获取前方需要检查的单元格
/// </summary>
public static List<IntVec3> GetForwardCells(IntVec3 position, Rot4 rotation, int distance)
{
List<IntVec3> cells = new List<IntVec3>();
// 根据朝向确定检查方向
IntVec3 direction = rotation.FacingCell;
for (int i = 1; i <= distance; i++)
{
IntVec3 checkCell = position + direction * i;
cells.Add(checkCell);
}
return cells;
}
public override string CompInspectStringExtra()
{
if (IsBlocked)
{
return "ForwardClearanceBlocked".Translate(Props.checkDistance);
}
return "ForwardClearanceClear".Translate(Props.checkDistance);
}
public override void PostExposeData()
{
base.PostExposeData();
Scribe_Values.Look(ref isBlocked, "isBlocked", false);
Scribe_Values.Look(ref lastCheckedTick, "lastCheckedTick", -99999);
}
}
}

View File

@@ -0,0 +1,23 @@
using RimWorld;
using Verse;
namespace ArachnaeSwarm
{
public class CompProperties_ForwardClearance : CompProperties
{
public int checkDistance = 5; // 检查距离(格数)
public bool checkRoof = true; // 是否检查屋顶
public bool checkBuildings = true; // 是否检查建筑
public bool checkPlants = false; // 是否检查植物
public bool checkTerrain = false; // 是否检查地形
// 信号定义
public string blockedSignal = "ForwardBlocked";
public string clearSignal = "ForwardClear";
public CompProperties_ForwardClearance()
{
compClass = typeof(CompForwardClearance);
}
}
}

View File

@@ -0,0 +1,112 @@
using System.Collections.Generic;
using RimWorld;
using UnityEngine;
using Verse;
namespace ArachnaeSwarm
{
public class PlaceWorker_ForwardClearance : PlaceWorker
{
private static List<IntVec3> forwardCells = new List<IntVec3>();
public override void DrawGhost(ThingDef def, IntVec3 center, Rot4 rot, Color ghostCol, Thing thing = null)
{
// 获取清除检查组件属性
CompProperties_ForwardClearance compProps = def.GetCompProperties<CompProperties_ForwardClearance>();
if (compProps == null) return;
// 获取前方检查的单元格
forwardCells.Clear();
forwardCells = CompForwardClearance.GetForwardCells(center, rot, compProps.checkDistance);
// 绘制检查区域
Color cellColor = GetBlockedColor(center, rot, Find.CurrentMap, compProps);
GenDraw.DrawFieldEdges(forwardCells, cellColor);
// 绘制方向指示器
DrawDirectionIndicator(center, rot, cellColor);
}
public override AcceptanceReport AllowsPlacing(BuildableDef def, IntVec3 center, Rot4 rot, Map map, Thing thingToIgnore = null, Thing thing = null)
{
// 将 BuildableDef 转换为 ThingDef 来获取组件属性
ThingDef thingDef = def as ThingDef;
if (thingDef == null) return true;
CompProperties_ForwardClearance compProps = thingDef.GetCompProperties<CompProperties_ForwardClearance>();
if (compProps == null) return true;
// 检查前方是否有遮挡
if (CompForwardClearance.IsForwardBlocked(center, rot, map, compProps))
{
return new AcceptanceReport("ForwardClearanceBlockedPlacement".Translate(compProps.checkDistance));
}
return true;
}
public override void PostPlace(Map map, BuildableDef def, IntVec3 loc, Rot4 rot)
{
// 将 BuildableDef 转换为 ThingDef 来获取组件属性
ThingDef thingDef = def as ThingDef;
if (thingDef == null) return;
CompProperties_ForwardClearance compProps = thingDef.GetCompProperties<CompProperties_ForwardClearance>();
if (compProps == null) return;
// 放置后检查并发送警告
if (CompForwardClearance.IsForwardBlocked(loc, rot, map, compProps))
{
Messages.Message("WarningForwardClearanceBlocked".Translate(def.LabelCap, compProps.checkDistance),
MessageTypeDefOf.CautionInput, historical: false);
}
}
/// <summary>
/// 根据遮挡状态获取颜色
/// </summary>
private Color GetBlockedColor(IntVec3 center, Rot4 rot, Map map, CompProperties_ForwardClearance props)
{
if (CompForwardClearance.IsForwardBlocked(center, rot, map, props))
{
return Color.red;
}
return Color.green;
}
/// <summary>
/// 绘制方向指示器
/// </summary>
private void DrawDirectionIndicator(IntVec3 center, Rot4 rot, Color color)
{
Vector3 startPos = center.ToVector3Shifted();
Vector3 direction = rot.FacingCell.ToVector3();
Vector3 endPos = startPos + direction * 2f; // 2格长的方向线
// 使用正确的绘制方法
Material lineMaterial = SolidColorMaterials.SimpleSolidColorMaterial(color);
// 绘制方向线
GenDraw.DrawLineBetween(startPos, endPos, lineMaterial, 0.2f);
// 绘制方向箭头
DrawDirectionArrow(endPos, direction, lineMaterial);
}
/// <summary>
/// 绘制方向箭头
/// </summary>
private void DrawDirectionArrow(Vector3 pos, Vector3 direction, Material material)
{
float arrowSize = 0.5f;
Vector3 perpendicular = new Vector3(-direction.z, 0f, direction.x);
Vector3 arrowTip = pos + direction * arrowSize;
Vector3 arrowLeft = pos - direction * arrowSize * 0.5f + perpendicular * arrowSize * 0.5f;
Vector3 arrowRight = pos - direction * arrowSize * 0.5f - perpendicular * arrowSize * 0.5f;
GenDraw.DrawLineBetween(arrowTip, arrowLeft, material, 0.15f);
GenDraw.DrawLineBetween(arrowTip, arrowRight, material, 0.15f);
}
}
}

View File

@@ -0,0 +1,162 @@
using System.Collections.Generic;
using RimWorld;
using Verse;
namespace ArachnaeSwarm
{
public class CompBreakdownDisabler : ThingComp
{
private CompBreakdownable breakdownable;
private CompPowerTrader powerTrader;
private CompRefuelable refuelable;
private bool wasBrokenDown = false;
public CompProperties_BreakdownDisabler Props => (CompProperties_BreakdownDisabler)props;
public override void PostSpawnSetup(bool respawningAfterLoad)
{
base.PostSpawnSetup(respawningAfterLoad);
// 获取相关的组件
breakdownable = parent.GetComp<CompBreakdownable>();
powerTrader = parent.GetComp<CompPowerTrader>();
refuelable = parent.GetComp<CompRefuelable>();
// 立即修复任何现有的损坏
if (breakdownable != null && breakdownable.BrokenDown)
{
FixBreakdownImmediately();
}
}
public override void CompTick()
{
base.CompTick();
// 每 tick 检查是否需要修复
if (breakdownable != null && breakdownable.BrokenDown && !wasBrokenDown)
{
FixBreakdownImmediately();
}
wasBrokenDown = breakdownable?.BrokenDown ?? false;
}
public override void CompTickRare()
{
base.CompTickRare();
// 每 250 ticks 检查一次(更高效)
if (breakdownable != null && breakdownable.BrokenDown && !wasBrokenDown)
{
FixBreakdownImmediately();
}
wasBrokenDown = breakdownable?.BrokenDown ?? false;
}
public override void ReceiveCompSignal(string signal)
{
base.ReceiveCompSignal(signal);
// 监听损坏信号并立即修复
if (signal == "Breakdown" && breakdownable != null)
{
FixBreakdownImmediately();
}
}
/// <summary>
/// 立即修复损坏并消除所有影响
/// </summary>
private void FixBreakdownImmediately()
{
if (breakdownable == null) return;
// 记录修复前的状态
bool wasPoweredOn = powerTrader?.PowerOn ?? true;
float fuelAmount = refuelable?.Fuel ?? 0f;
// 调用修复方法
breakdownable.Notify_Repaired();
// 恢复电力状态
if (powerTrader != null)
{
// 确保电力交易器恢复正常
if (wasPoweredOn && !powerTrader.PowerOn)
{
powerTrader.PowerOn = true;
}
}
// 恢复燃料状态
if (refuelable != null)
{
refuelable.ConsumeFuel(0f); // 触发更新
}
// 发送修复完成的信号
parent.BroadcastCompSignal("Repaired");
// 记录日志(可选)
if (Props.logRepairs)
{
Log.Message($"[BreakdownDisabler] Automatically repaired {parent.Label} at {parent.Position}");
}
}
public override void PostDraw()
{
base.PostDraw();
// 可选:在修复时显示视觉反馈
if (breakdownable != null && breakdownable.BrokenDown)
{
// 立即在下一次绘制前修复
if (Find.TickManager.TicksGame % 10 == 0) // 每10 tick尝试修复一次
{
FixBreakdownImmediately();
}
}
}
public override string CompInspectStringExtra()
{
if (breakdownable != null && breakdownable.BrokenDown)
{
return "AutoRepairSystemActive".Translate();
}
return null;
}
public override IEnumerable<Gizmo> CompGetGizmosExtra()
{
if (breakdownable != null && breakdownable.BrokenDown)
{
yield return new Command_Action
{
defaultLabel = "ForceAutoRepair".Translate(),
defaultDesc = "ForceAutoRepairDesc".Translate(),
icon = TexCommand.DesirePower,
action = delegate
{
FixBreakdownImmediately();
Messages.Message("ForcedAutoRepairComplete".Translate(parent.Label), parent, MessageTypeDefOf.PositiveEvent);
}
};
}
}
}
public class CompProperties_BreakdownDisabler : CompProperties
{
public bool logRepairs = false; // 是否在控制台记录修复日志
public bool showVisualFeedback = true; // 是否显示视觉反馈
public CompProperties_BreakdownDisabler()
{
compClass = typeof(CompBreakdownDisabler);
}
}
}

View File

@@ -15,13 +15,19 @@ namespace ArachnaeSwarm
// 自定义图形组件
private Graphic customBaseGraphic; // 基座图形 - 始终静止
private Graphic customOrbGraphic; // 球体图形 - 正常状态下
private Graphic customOrbGraphic; // 球体图形 - 正常状态下
private Graphic customCooldownGraphic; // 冷却球体图形 - 冷却状态下静止
// 渲染相关的变量
private float orbFloatOffset = 0f;
// 搏动相关的变量
private float orbPulseScale = 1f; // 球体缩放比例
private float orbPulseIntensity = 0f; // 搏动强度
private int lastTick = -1;
// 记录初始缩放值
private Vector2 baseInitialScale;
private Vector2 orbInitialScale;
private Vector2 cooldownInitialScale;
public ArachnaeGravEngineExtension ModExtension
{
get
@@ -42,17 +48,18 @@ namespace ArachnaeSwarm
if (customBaseGraphic == null)
{
string basePath = ModExtension?.baseTexPath ?? "ArachnaeSwarm/Building/ARA_HiveShip_Heart_Pedestal";
baseInitialScale = ModExtension?.baseScale ?? Vector2.one * 3f;
customBaseGraphic = GraphicDatabase.Get<Graphic_Single>(
basePath,
ShaderDatabase.Cutout,
def.graphicData?.drawSize ?? Vector2.one * 3f,
baseInitialScale,
Color.white);
}
return customBaseGraphic;
}
}
// 球体图形 - 正常状态下
// 球体图形 - 正常状态下
private Graphic CustomOrbGraphic
{
get
@@ -60,10 +67,11 @@ namespace ArachnaeSwarm
if (customOrbGraphic == null)
{
string orbPath = ModExtension?.orbTexPath ?? "ArachnaeSwarm/Building/ARA_HiveShip_Heart";
orbInitialScale = ModExtension?.orbScale ?? Vector2.one * 2f;
customOrbGraphic = GraphicDatabase.Get<Graphic_Single>(
orbPath,
ShaderDatabase.Cutout,
Vector2.one * 2f,
orbInitialScale,
Color.white);
}
return customOrbGraphic;
@@ -78,10 +86,11 @@ namespace ArachnaeSwarm
if (customCooldownGraphic == null)
{
string cooldownPath = ModExtension?.cooldownTexPath ?? "ArachnaeSwarm/Building/ARA_HiveShip_Heart_Cooldown";
cooldownInitialScale = ModExtension?.cooldownScale ?? Vector2.one * 2f;
customCooldownGraphic = GraphicDatabase.Get<Graphic_Single>(
cooldownPath,
ShaderDatabase.Cutout,
Vector2.one * 2f, // 注意:这里应该和球体大小一致,而不是基座大小
cooldownInitialScale,
Color.white);
}
return customCooldownGraphic;
@@ -110,19 +119,6 @@ namespace ArachnaeSwarm
}
yield return gizmo;
}
// 可以添加虫群特有的 gizmo
if (DebugSettings.ShowDevGizmos)
{
yield return new Command_Action
{
defaultLabel = "DEV: Spawn Arachnae Swarm",
action = delegate
{
SpawnArachnaeSwarm();
}
};
}
}
// 重写 GetFloatMenuOptions 方法,移除检查选项
@@ -162,29 +158,16 @@ namespace ArachnaeSwarm
text = text.Replace("GravEngineNotInspected".Translate() + "\n", "");
}
// 添加虫群特有的信息
if (!string.IsNullOrEmpty(text))
{
text += "\n";
}
text += "ArachnaeSwarmControl".Translate();
return text;
}
// 虫群特有的方法
private void SpawnArachnaeSwarm()
{
Messages.Message("ArachnaeSwarmActivated".Translate(), this, MessageTypeDefOf.PositiveEvent);
}
// 完全重写 DrawAt 方法,实现自定义渲染系统
protected override void DrawAt(Vector3 drawLoc, bool flip = false)
{
// 不调用基类的 DrawAt完全自定义渲染
// 更新动效果
UpdateFloatOffsets();
// 更新动效果
UpdatePulseEffect();
// 基础位置 - 底座始终静止
Vector3 baseDrawPos = drawLoc;
@@ -192,49 +175,75 @@ namespace ArachnaeSwarm
// 球体位置 - 根据状态决定
Vector3 orbDrawPos = drawLoc;
orbDrawPos.y += 0.03658537f; // 基础高度偏移
orbDrawPos.z += 0.05f; // 球体稍微向前偏移,避免与底座重叠
orbDrawPos.y += 0.05f; // 球体稍微向前偏移,避免与底座重叠
orbDrawPos.z += 0.05f;
// 始终绘制底座
CustomBaseGraphic.Draw(baseDrawPos, flip ? base.Rotation.Opposite : base.Rotation, this, 0f);
// 根据状态绘制球体
if (Find.TickManager.TicksGame >= cooldownCompleteTick)
{
// 正常状态:球体浮动
orbDrawPos.y += orbFloatOffset;
CustomOrbGraphic.Draw(orbDrawPos, flip ? base.Rotation.Opposite : base.Rotation, this, 0f);
}
else
{
// 冷却状态:球体静止,使用冷却贴图
CustomCooldownGraphic.Draw(orbDrawPos, flip ? base.Rotation.Opposite : base.Rotation, this, 0f);
}
DrawPulsingOrb(orbDrawPos, flip ? base.Rotation.Opposite : base.Rotation, CustomOrbGraphic);
}
// 更新浮动效果 - 只更新球体浮动
private void UpdateFloatOffsets()
// 绘制搏动的球体
private void DrawPulsingOrb(Vector3 drawPos, Rot4 rotation, Graphic graphic)
{
// 计算搏动缩放,基于初始缩放
Vector3 baseScale = new Vector3(orbInitialScale.x, 1f, orbInitialScale.y);
Vector3 pulseScale = Vector3.one * orbPulseScale;
Vector3 finalScale = Vector3.Scale(baseScale, pulseScale);
// 创建缩放矩阵
Matrix4x4 matrix = Matrix4x4.TRS(drawPos, rotation.AsQuat, finalScale);
// 获取材质
Material material = graphic.MatSingle;
// 绘制缩放后的球体
Graphics.DrawMesh(MeshPool.plane10, matrix, material, 0);
}
// 更新搏动效果 - 类似心脏搏动的放大缩小
private void UpdatePulseEffect()
{
int currentTick = Find.TickManager.TicksGame;
if (currentTick != lastTick)
{
// 只在非冷却状态下更新球体
// 只在非冷却状态下更新球体
if (Find.TickManager.TicksGame >= cooldownCompleteTick)
{
// 球体浮动 - 上下浮动
orbFloatOffset = Mathf.Sin((float)currentTick / 100f) * 0.1f;
// 心脏搏动效果
float time = (float)currentTick / 60f; // 控制搏动速度
// 使用更自然的搏动曲线
// 快速收缩然后缓慢舒张,类似真实心跳
float pulse = Mathf.Sin(time * 3f) * 0.5f + 0.5f; // 0到1的范围
// 应用非线性变换,使搏动更自然
pulse = EaseInOutCubic(pulse);
// 计算缩放比例 (0.9到1.1的范围)
orbPulseScale = 0.9f + pulse * 0.2f;
// 搏动强度用于可能的其他效果
orbPulseIntensity = pulse;
}
else
{
// 冷却状态下球体不浮动
orbFloatOffset = 0f;
// 冷却状态下球体不搏动,保持正常大小
orbPulseScale = 1f;
orbPulseIntensity = 0f;
}
lastTick = currentTick;
}
}
// 缓动函数 - 使搏动更自然
private float EaseInOutCubic(float x)
{
return x < 0.5f ? 4f * x * x * x : 1f - Mathf.Pow(-2f * x + 2f, 3f) / 2f;
}
// 重写额外的绘制阶段(如果需要)
public override void DrawExtraSelectionOverlays()
{
@@ -264,11 +273,16 @@ namespace ArachnaeSwarm
}
}
// 扩展 ModExtension 定义,添加基座纹理路径
// 扩展 ModExtension 定义,添加基座纹理路径和缩放参数
public class ArachnaeGravEngineExtension : DefModExtension
{
public string baseTexPath; // 基座纹理路径 - 始终静止
public string orbTexPath; // 球体纹理路径 - 正常状态下
public string orbTexPath; // 球体纹理路径 - 正常状态下
public string cooldownTexPath; // 冷却球体纹理路径 - 冷却状态下静止
// 新增:各部分的初始缩放比例
public Vector2 baseScale = Vector2.one * 3f; // 基座默认缩放
public Vector2 orbScale = Vector2.one * 2f; // 球体默认缩放
public Vector2 cooldownScale = Vector2.one * 2f; // 冷却球体默认缩放
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB