各种修改

This commit is contained in:
Tourswen
2025-10-02 17:07:09 +08:00
parent 5d7d88e4ad
commit 09579a936f
24 changed files with 543 additions and 443 deletions

Binary file not shown.

View File

@@ -323,6 +323,11 @@
<li Class="CompProperties_AbilityLaunchProjectile">
<projectileDef>ARA_Cocoon_Proj_Medicine</projectileDef>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityShowTemperatureRange">
<temperatureCheckBuilding>ARA_Cocoon_Medicine</temperatureCheckBuilding>
<customLabel>温度要求</customLabel>
<showCurrentTemperature>true</showCurrentTemperature>
</li>
</comps>
</AbilityDef>
</Defs>

View File

@@ -9,7 +9,7 @@
<JobDef>
<defName>ARA_CarryPrisonerToNutrientVat</defName>
<driverClass>ArachnaeSwarm.JobDriver_CarryPrisonerToNutrientVat</driverClass>
<reportString>carrying TargetA to TargetB.</reportString>
<reportString> TargetA 带到 TargetB.</reportString>
<suspendable>false</suspendable>
</JobDef>
</Defs>

View File

@@ -10,9 +10,9 @@
<!-- <consumableBuildings>
<li>CannibalPlatter</li>
</consumableBuildings> -->
<exclusionTags>
<!-- <exclusionTags>
<li>SupremacistIndividualist</li>
</exclusionTags>
</exclusionTags> -->
<requireOne>
<li>
<li>ARA_Hive_Dear</li>

View File

@@ -8,6 +8,8 @@
<workSkillLearnFactor>16</workSkillLearnFactor>
<surgeryOutcomeEffect>SurgeryOutcomeBase</surgeryOutcomeEffect>
<workerClass>Recipe_InstallImplant</workerClass>
<!-- Always succeeds -->
<anesthetize>false</anesthetize>
<!-- <workerClass>Recipe_InstallArtificialBodyPart</workerClass> -->
<workAmount>2500</workAmount>
<!-- <developmentalStageFilter>Child, Adult</developmentalStageFilter> -->
@@ -54,6 +56,22 @@
</filter>
<count>20</count>
</li>
<li>
<filter>
<thingDefs>
<li>ARA_Activated_Bacterium</li>
</thingDefs>
</filter>
<count>30</count>
</li>
<li>
<filter>
<thingDefs>
<li>ARA_Carapace</li>
</thingDefs>
</filter>
<count>30</count>
</li>
</ingredients>
<appliedOnFixedBodyParts>
<li>ARA_Chitin_Shell</li>
@@ -106,7 +124,15 @@
<li>ARA_Activated_Bacterium</li>
</thingDefs>
</filter>
<count>6</count>
<count>15</count>
</li>
<li>
<filter>
<thingDefs>
<li>ARA_Carapace</li>
</thingDefs>
</filter>
<count>20</count>
</li>
</ingredients>
<appliedOnFixedBodyParts>
@@ -163,7 +189,15 @@
<li>ARA_Activated_Bacterium</li>
</thingDefs>
</filter>
<count>6</count>
<count>1</count>
</li>
<li>
<filter>
<thingDefs>
<li>ARA_Carapace</li>
</thingDefs>
</filter>
<count>5</count>
</li>
</ingredients>
<fixedIngredientFilter>
@@ -210,6 +244,14 @@
</filter>
<count>6</count>
</li>
<li>
<filter>
<thingDefs>
<li>ARA_Carapace</li>
</thingDefs>
</filter>
<count>20</count>
</li>
</ingredients>
<fixedIngredientFilter>
<thingDefs>
@@ -266,6 +308,14 @@
</filter>
<count>6</count>
</li>
<li>
<filter>
<thingDefs>
<li>ARA_Carapace</li>
</thingDefs>
</filter>
<count>20</count>
</li>
</ingredients>
<fixedIngredientFilter>
<thingDefs>
@@ -353,10 +403,10 @@
<li>
<filter>
<thingDefs>
<li>ARA_Activated_Bacterium</li>
<li>ARA_InsectJelly</li>
</thingDefs>
</filter>
<count>6</count>
<count>25</count>
</li>
</ingredients>
<fixedIngredientFilter>
@@ -403,7 +453,7 @@
<li>ARA_Activated_Bacterium</li>
</thingDefs>
</filter>
<count>6</count>
<count>50</count>
</li>
</ingredients>
<appliedOnFixedBodyParts>
@@ -443,10 +493,10 @@
<li>
<filter>
<thingDefs>
<li>ARA_Activated_Bacterium</li>
<li>ARA_InsectJelly</li>
</thingDefs>
</filter>
<count>2</count>
<count>5</count>
</li>
</ingredients>
<appliedOnFixedBodyParts>
@@ -491,10 +541,10 @@
<li>
<filter>
<thingDefs>
<li>ARA_Activated_Bacterium</li>
<li>ARA_InsectJelly</li>
</thingDefs>
</filter>
<count>2</count>
<count>5</count>
</li>
</ingredients>
<appliedOnFixedBodyParts>

View File

@@ -41,18 +41,6 @@
<li>ARA_Technology_1BAC</li>
</prerequisites>
</ResearchProjectDef>
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_1NPT</defName>
<label>节点NPT-1"中央塔"</label>
<description>允许虫族建造一个中央营养供给设施,它可以自动为链接到的、需要营养的建筑自动补充营养。</description>
<baseCost>4000</baseCost>
<researchViewX>14.50</researchViewX>
<researchViewY>3.20</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<prerequisites>
<li>ARA_Technology_2WMT</li>
</prerequisites>
</ResearchProjectDef>
<!-- 酸类发展 -->
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_6VXI</defName>
@@ -99,7 +87,7 @@
<description>允许工艺种孵化新的武器。</description>
<baseCost>2000</baseCost>
<researchViewX>10.00</researchViewX>
<researchViewY>0.90</researchViewY>
<researchViewY>1.50</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<hiddenPrerequisites>
<li>ARA_Technology_8VXI</li>
@@ -114,7 +102,7 @@
<description>允许工艺种孵化新的武器。</description>
<baseCost>1000</baseCost>
<researchViewX>11.00</researchViewX>
<researchViewY>0.90</researchViewY>
<researchViewY>2.10</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<prerequisites>
<li>ARA_Technology_9VXI</li>
@@ -123,10 +111,10 @@
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_10VXI</defName>
<label>节点VXI-10"微型天灾"</label>
<description>允许工艺种孵化新的“微型天灾酸烧导弹”武器。</description>
<description>允许工艺种孵化新的武器。</description>
<baseCost>3000</baseCost>
<researchViewX>12.00</researchViewX>
<researchViewY>0.90</researchViewY>
<researchViewX>11.00</researchViewX>
<researchViewY>1.50</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<prerequisites>
<li>ARA_Technology_9VXI</li>
@@ -137,13 +125,11 @@
<label>节点VXI-11"天灾"</label>
<description>允许建造天灾酸烧炮组织,一种强大的防御设施,不仅能解决成片的来犯之敌,也可以跨越地图发起打击。</description>
<baseCost>3000</baseCost>
<researchViewX>15.50</researchViewX>
<researchViewX>12.00</researchViewX>
<researchViewY>0.90</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<hiddenPrerequisites>
<li>ARA_Technology_10VXI</li>
</hiddenPrerequisites>
<prerequisites>
<li>ARA_Technology_10VXI</li>
<li>ARA_Technology_1NPT</li>
</prerequisites>
</ResearchProjectDef>
@@ -200,7 +186,7 @@
<defName>ARA_Technology_6KYC</defName>
<label>节点KYC-6"灵脑"</label>
<description>允许女皇种孵化新的虫族——织域种,一种寿命长且拥有强大灵能的特殊,不仅能协助虫群的科研工作,也能承担战场指挥官的责任。</description>
<baseCost>1200</baseCost>
<baseCost>800</baseCost>
<researchViewX>7.50</researchViewX>
<researchViewY>2.70</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
@@ -226,11 +212,11 @@
<label>节点DIL-5"护士"</label>
<description>允许工艺种在织物茧孵化新的织物。</description>
<baseCost>800</baseCost>
<researchViewX>10.00</researchViewX>
<researchViewY>1.50</researchViewY>
<researchViewX>6.50</researchViewX>
<researchViewY>3.80</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<prerequisites>
<li>ARA_Technology_2WMT</li>
<li>ARA_Technology_1WMT</li>
</prerequisites>
</ResearchProjectDef>
<ResearchProjectDef ParentName="ARA_techBase">
@@ -239,7 +225,7 @@
<description>允许工艺种在织物茧孵化新的织物。</description>
<baseCost>800</baseCost>
<researchViewX>5.50</researchViewX>
<researchViewY>3.70</researchViewY>
<researchViewY>3.80</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<prerequisites>
<li>ARA_Technology_1WMT</li>
@@ -250,8 +236,8 @@
<label>节点DIL-7"花嫁"</label>
<description>允许工艺种在织物茧孵化新的织物。</description>
<baseCost>1000</baseCost>
<researchViewX>11.00</researchViewX>
<researchViewY>1.50</researchViewY>
<researchViewX>10.00</researchViewX>
<researchViewY>4.80</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<prerequisites>
<li>ARA_Technology_2WMT</li>
@@ -262,11 +248,11 @@
<label>节点DIL-8"卫兵"</label>
<description>允许工艺种在织物茧孵化新的织物。</description>
<baseCost>1800</baseCost>
<researchViewX>15.50</researchViewX>
<researchViewY>2.10</researchViewY>
<researchViewX>11.00</researchViewX>
<researchViewY>4.80</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<prerequisites>
<li>ARA_Technology_1NPT</li>
<li>ARA_Technology_2WMT</li>
</prerequisites>
</ResearchProjectDef>
<!-- 棘刺发展 -->
@@ -329,14 +315,12 @@
<label>节点PAV-8"千兆炮"</label>
<description>允许虫族建造一种强大的防御设施,具有强大的穿甲能力和较高的射速,专擅于对抗重甲目标。</description>
<baseCost>2500</baseCost>
<researchViewX>15.50</researchViewX>
<researchViewX>12.00</researchViewX>
<researchViewY>0.30</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<hiddenPrerequisites>
<li>ARA_Technology_7XPAV</li>
</hiddenPrerequisites>
<prerequisites>
<li>ARA_Technology_1NPT</li>
<li>ARA_Technology_7XPAV</li>
</prerequisites>
</ResearchProjectDef>
<!-- 近战发展 -->
@@ -358,7 +342,7 @@
<description>允许工艺种孵化新的武器。</description>
<baseCost>1200</baseCost>
<researchViewX>10.00</researchViewX>
<researchViewY>2.70</researchViewY>
<researchViewY>0.90</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<hiddenPrerequisites>
<li>ARA_Technology_2MEL</li>
@@ -368,6 +352,18 @@
</prerequisites>
</ResearchProjectDef>
<!-- 建筑发展 -->
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_1NPT</defName>
<label>节点NPT-1"中央塔"</label>
<description>允许虫族建造一个中央营养供给设施,它可以自动为链接到的、需要营养的建筑自动补充营养。</description>
<baseCost>1800</baseCost>
<researchViewX>11.00</researchViewX>
<researchViewY>0.90</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<prerequisites>
<li>ARA_Technology_2WMT</li>
</prerequisites>
</ResearchProjectDef>
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_5SHL</defName>
<label>节点SHL-5"光瘤"</label>
@@ -386,7 +382,7 @@
<description>允许虫族建造一种可以控制房间温度的特殊固定辅虫。</description>
<baseCost>500</baseCost>
<researchViewX>1.00</researchViewX>
<researchViewY>3.60</researchViewY>
<researchViewY>3.90</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<prerequisites>
<li>ARA_Base_Technology</li>
@@ -413,7 +409,7 @@
<description>允许虫族建造一种利用活体钜菌和生物质产出阿拉克涅虫蜜的建筑。</description>
<baseCost>1000</baseCost>
<researchViewX>10.00</researchViewX>
<researchViewY>3.70</researchViewY>
<researchViewY>3.80</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<hiddenPrerequisites>
<li>ARA_Technology_8VXI</li>
@@ -427,8 +423,8 @@
<label>节点NPT-2"消化腔"</label>
<description>允许虫族建造用于存放和消化猎物的茧,溶解猎物为阿拉克涅营养供给塔网络提供额外的生物质传输效率和孵化速度。</description>
<baseCost>2000</baseCost>
<researchViewX>15.50</researchViewX>
<researchViewY>3.70</researchViewY>
<researchViewX>12.00</researchViewX>
<researchViewY>3.80</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<prerequisites>
<li>ARA_Technology_1NPT</li>
@@ -439,8 +435,8 @@
<label>节点NPT-3"蜜晶糕"</label>
<description>允许虫族建造生产阿拉克涅蜜晶糕的巢穴,通过分解虫蜜来生产可食用的蜜晶糕。这种在巢穴内加工过的食物可以帮助虫群抵御冷血动物的影响,并且软糯的口感让非虫族殖民者也能乐在其中。</description>
<baseCost>2000</baseCost>
<researchViewX>16.50</researchViewX>
<researchViewY>3.70</researchViewY>
<researchViewX>13.00</researchViewX>
<researchViewY>3.80</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<prerequisites>
<li>ARA_Technology_2NPT</li>
@@ -451,8 +447,8 @@
<label>节点NPT-4"孵化池"</label>
<description>允许虫族建造孵化池。一种专用于批量生产虫族的孵化场地。孵化池的孵化效率比孵化茧更高。</description>
<baseCost>1800</baseCost>
<researchViewX>15.50</researchViewX>
<researchViewY>2.70</researchViewY>
<researchViewX>12.00</researchViewX>
<researchViewY>2.10</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<prerequisites>
<li>ARA_Technology_1NPT</li>
@@ -501,14 +497,14 @@
<label>节点SPV-7"酸爆投射"</label>
<description>允许虫族建造一种强大的防御设施,能够向进犯的敌军投射以自杀式袭击为核心的酸爆种辅虫。</description>
<baseCost>2500</baseCost>
<researchViewX>15.50</researchViewX>
<researchViewX>12.00</researchViewX>
<researchViewY>1.50</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<hiddenPrerequisites>
<li>ARA_Technology_9VXI</li>
<li>ARA_Technology_6SPV</li>
</hiddenPrerequisites>
<prerequisites>
<li>ARA_Technology_10VXI</li>
<li>ARA_Technology_1NPT</li>
</prerequisites>
</ResearchProjectDef>
@@ -575,7 +571,7 @@
<description>允许迷雾种进行定向进化,牺牲其护甲和喷射信息素的能力以换成生产虫群所需高级资源"活化钜菌"的能力。</description>
<baseCost>1000</baseCost>
<researchViewX>7.50</researchViewX>
<researchViewY>3.70</researchViewY>
<researchViewY>3.80</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<prerequisites>
<li>ARA_Technology_1WMT</li>
@@ -604,7 +600,7 @@
<description>允许实行新的阿拉克涅进化手术,允许阿拉克涅虫族获得更大的营养储存能力。</description>
<baseCost>250</baseCost>
<researchViewX>1.00</researchViewX>
<researchViewY>4.20</researchViewY>
<researchViewY>4.40</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<prerequisites>
<li>ARA_Base_Technology</li>
@@ -616,7 +612,7 @@
<description>允许实行新的阿拉克涅进化手术,允许阿拉克涅虫族使用蜕荚孵化一枚菌瘤。</description>
<baseCost>400</baseCost>
<researchViewX>1.00</researchViewX>
<researchViewY>4.80</researchViewY>
<researchViewY>4.90</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<prerequisites>
<li>ARA_Base_Technology</li>
@@ -702,11 +698,11 @@
<label>节点EVO-9"生理抑制"</label>
<description>允许实行新的阿拉克涅进化手术,允许阿拉克涅虫族以丧失自愈能力为代价摆脱寿命的限制。</description>
<baseCost>4000</baseCost>
<researchViewX>15.50</researchViewX>
<researchViewX>11.00</researchViewX>
<researchViewY>4.30</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<prerequisites>
<li>ARA_Technology_1NPT</li>
<li>ARA_Technology_2WMT</li>
</prerequisites>
</ResearchProjectDef>
</Defs>

View File

@@ -26,7 +26,7 @@
</li>
<li Class="ScenPart_GameStartDialog">
<def>GameStartDialog</def>
<text>虫族开场信息</text>
<text>女皇种已抵达既定地区。行星环境检测:宜居。生物质资源:丰富。本地原生文明:威胁等级-低。\n神经织网重构完成。欢迎加入我们。\n\n初始指令\n确保女皇种生存。女皇种是巢穴的根基。\n孵化阿拉克涅虫卵。扩充本地虫族种群数量。\n同化本地生物质。储存能够确保虫群生存的物资。\n重建基因树。让我们再次完整。\n\n为了蜂群的存续。</text>
<closeSound>GameStartSting</closeSound>
</li>
<li Class="ScenPart_ConfigPage_ConfigureStartingPawns_KindDefs">

View File

@@ -333,6 +333,7 @@
<li>ARA_RW_Toxic_Needle_MG</li>
<li>ARA_MW_Cartilage_Whip</li>
<li>ARA_MW_Scything_Talons</li>
<li>ARA_RW_Missile_HG_Gun</li>
</weaponList>
<onlyUseRaceRestrictedWeapons>false</onlyUseRaceRestrictedWeapons>
<!-- 可以穿戴的衣服 -->
@@ -693,6 +694,7 @@
<li>ARA_RW_Acid_Mortar</li>
<li>ARA_RW_Basic_SniperCannon_Gun</li>
<li>ARA_RW_Basic_Acid_Spreay_Gun</li>
<li>ARA_RW_Missile_AR_Gun</li>
</weaponList>
</raceRestriction>
</alienRace>

View File

@@ -459,6 +459,7 @@
<thoughtSettings>
<!-- 不会产生的想法 -->
<cannotReceiveThoughts>
<li>PsychicDrone</li>
<li>ARA_CreepyCrawly</li>
<li>Naked</li>
<li>AnyBodyPartButGroinCovered_Disapproved_Female</li>

View File

@@ -1,279 +1,3 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<ThingDef ParentName="BaseBullet">
<defName>Bullet_RW_Missile_AR_Gun</defName>
<label>微型酸烧导弹</label>
<graphicData>
<graphicClass>Graphic_Single_AgeSecs</graphicClass>
<texPath>ArachnaeSwarm/Mote/ARA_CatastropheMissile_Shell</texPath>
<drawSize>(1,1)</drawSize>
<shaderType>MoteGlow</shaderType>
</graphicData>
<thingClass>ArachnaeSwarm.Projectile_ExplosiveTrackingBullet</thingClass>
<projectile>
<speed>60</speed>
<damageDef>ARA_AcidBurn</damageDef>
<damageAmountBase>8</damageAmountBase>
<filth>Filth_SpentAcid</filth>
<filthCount>2</filthCount>
<explosionSpawnsSingleFilth>true</explosionSpawnsSingleFilth>
<explosionRadius>1.1</explosionRadius>
<explosionEffect>Shell_AcidSpitImpact</explosionEffect>
<explosionEffectLifetimeTicks>60</explosionEffectLifetimeTicks>
<soundExplode>Explosion_EMP</soundExplode>
<armorPenetrationBase>0.25</armorPenetrationBase>
<screenShakeFactor>0.5</screenShakeFactor>
<flyOverhead>true</flyOverhead>
</projectile>
<modExtensions>
<li Class="ArachnaeSwarm.ExplosiveTrackingBulletDef">
<explosionRadius>1.1</explosionRadius>
<damageDef>ARA_AcidBurn</damageDef>
</li>
<li Class="ArachnaeSwarm.TrackingBulletDef">
<homingSpeed>0.75</homingSpeed>
<initRotateAngle>15</initRotateAngle>
<destroyTicksAfterLosingTrack>
<min>60</min>
<max>120</max>
</destroyTicksAfterLosingTrack>
<tailFleckDef>Fleck_AcidSpitLaunchedDenseMist</tailFleckDef>
<fleckMakeFleckTickMax>3</fleckMakeFleckTickMax>
<impactThreshold>1</impactThreshold>
</li>
</modExtensions>
</ThingDef>
<ThingDef ParentName="BaseBullet">
<defName>Bullet_RW_Missile_HG_Gun</defName>
<label>小型酸烧导弹</label>
<graphicData>
<graphicClass>Graphic_Single_AgeSecs</graphicClass>
<texPath>ArachnaeSwarm/Mote/ARA_CatastropheMissile_Shell</texPath>
<drawSize>(1.25,1.25)</drawSize>
<shaderType>MoteGlow</shaderType>
</graphicData>
<thingClass>ArachnaeSwarm.Projectile_ExplosiveTrackingBullet</thingClass>
<projectile>
<speed>60</speed>
<damageDef>ARA_AcidBurn</damageDef>
<damageAmountBase>12</damageAmountBase>
<filth>Filth_SpentAcid</filth>
<filthCount>2</filthCount>
<explosionSpawnsSingleFilth>true</explosionSpawnsSingleFilth>
<explosionRadius>2.1</explosionRadius>
<explosionEffect>Shell_AcidSpitImpact</explosionEffect>
<explosionEffectLifetimeTicks>60</explosionEffectLifetimeTicks>
<soundExplode>Explosion_EMP</soundExplode>
<armorPenetrationBase>0.25</armorPenetrationBase>
<screenShakeFactor>0.5</screenShakeFactor>
<flyOverhead>true</flyOverhead>
</projectile>
<modExtensions>
<li Class="ArachnaeSwarm.ExplosiveTrackingBulletDef">
<explosionRadius>2.1</explosionRadius>
<damageDef>ARA_AcidBurn</damageDef>
</li>
<li Class="ArachnaeSwarm.TrackingBulletDef">
<homingSpeed>0.5</homingSpeed>
<initRotateAngle>15</initRotateAngle>
<destroyTicksAfterLosingTrack>
<min>60</min>
<max>120</max>
</destroyTicksAfterLosingTrack>
<tailFleckDef>Fleck_AcidSpitLaunchedDenseMist</tailFleckDef>
<fleckMakeFleckTickMax>3</fleckMakeFleckTickMax>
<impactThreshold>1</impactThreshold>
</li>
<li Class="ArachnaeSwarm.ShotgunExtension">
<pelletCount>2</pelletCount>
</li>
</modExtensions>
</ThingDef>
<ThingDef ParentName="BaseHumanMakeableGun">
<defName>ARA_RW_Missile_HG_Gun</defName>
<label>武装器官"双发天灾炮"</label>
<description>阿拉克涅虫群督虫使用基础远程武装器官,作为双持手枪形态发射小型酸爆虫导弹。这种武器的特点就是其比迅发天灾炮相比口径较大的导弹和轻便易使用。</description>
<tickerType>Normal</tickerType>
<techLevel>Animal</techLevel>
<descriptionHyperlinks>
<ThingDef>ARA_Cocoon_Weapon_2Stage</ThingDef>
</descriptionHyperlinks>
<graphicData>
<texPath>ArachnaeSwarm/Weapon/ARA_RW_Basic_Fist_Needle_Gun</texPath>
<graphicClass>Graphic_Single</graphicClass>
<drawSize>0.75</drawSize>
</graphicData>
<uiIconScale>1.3</uiIconScale>
<soundInteract>SpitterSpawn</soundInteract>
<recipeMaker>
<recipeUsers Inherit="False" />
<researchPrerequisite>ARA_Technology_10VXI</researchPrerequisite>
<unfinishedThingDef>UnfinishedWeapon</unfinishedThingDef>
</recipeMaker>
<statBases>
<WorkToMake>1300</WorkToMake>
<!-- <MarketValue>370</MarketValue> -->
<Mass>4</Mass>
<AccuracyTouch>0.5</AccuracyTouch>
<AccuracyShort>0.4</AccuracyShort>
<AccuracyMedium>0.35</AccuracyMedium>
<AccuracyLong>0.3</AccuracyLong>
<RangedWeapon_Cooldown>2.5</RangedWeapon_Cooldown>
<ARA_IncubationCost>450</ARA_IncubationCost>
<ARA_IncubationTime>15</ARA_IncubationTime>
</statBases>
<verbs>
<li>
<verbClass>ArachnaeSwarm.Verb_ShootShotgun</verbClass>
<hasStandardCommand>true</hasStandardCommand>
<forceNormalTimeSpeed>false</forceNormalTimeSpeed>
<warmupTime>0.8</warmupTime>
<defaultProjectile>Bullet_RW_Missile_HG_Gun</defaultProjectile>
<range>32</range>
<burstShotCount>2</burstShotCount>
<ticksBetweenBurstShots>12</ticksBetweenBurstShots>
<soundCast>SpitterSpit</soundCast>
<targetParams>
<canTargetLocations>true</canTargetLocations>
</targetParams>
</li>
</verbs>
<costList Inherit="False">
<ARA_Carapace>25</ARA_Carapace>
</costList>
<weaponTags Inherit="False">
<li>ARA_Armed_Organ</li>
<li>ARA_Armed_Organ_Ranged</li>
<li>ARA_Armed_Organ_T1</li>
</weaponTags>
<thingSetMakerTags>
<li>RewardStandardQualitySuper</li>
</thingSetMakerTags>
<tools Inherit="False">
<li>
<label>拳针枪拳击</label>
<capacities>
<li>Poke</li>
</capacities>
<power>10</power>
<armorPenetration>0.25</armorPenetration>
<cooldownTime>1.25</cooldownTime>
<extraMeleeDamages>
<li>
<def>Stun</def>
<amount>12</amount>
</li>
</extraMeleeDamages>
</li>
</tools>
<comps>
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Weapon_2Stage</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
<li Class="ArachnaeSwarm.CompProperties_GiveHediffOnShot">
<hediffDef>ARA_ChainReload</hediffDef>
<severityToAdd>0.2</severityToAdd>
</li>
<li Class="ArachnaeSwarm.CompProperties_CustomUniqueWeapon" MayRequire="Ludeon.RimWorld.Odyssey">
<forcedTraits>
<li>ARA_Weapon_Damage_Acid</li>
<li>ARA_Weapon_ChainReload</li>
</forcedTraits>
<numTraitsRange>
<min>2</min>
<max>2</max>
</numTraitsRange>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="BaseHumanMakeableGun">
<defName>ARA_RW_Missile_AR_Gun</defName>
<label>武装器官"迅发天灾炮"</label>
<description>阿拉克涅虫群的大型武装器官,成排的发射出微型酸爆虫导弹。这种武器的特点就是其巨大的弹容量和全自动发射爆炸导弹。</description>
<tickerType>Normal</tickerType>
<techLevel>Animal</techLevel>
<descriptionHyperlinks>
<ThingDef>ARA_Cocoon_Weapon_2Stage</ThingDef>
</descriptionHyperlinks>
<graphicData>
<texPath>ArachnaeSwarm/Weapon/ARA_RW_Basic_SniperCannon_Gun</texPath>
<graphicClass>Graphic_Single</graphicClass>
<drawSize>1.5</drawSize>
</graphicData>
<uiIconScale>0.75</uiIconScale>
<soundInteract>SpitterSpawn</soundInteract>
<recipeMaker>
<recipeUsers Inherit="False" />
<researchPrerequisite>ARA_Technology_10VXI</researchPrerequisite>
<unfinishedThingDef>UnfinishedWeapon</unfinishedThingDef>
</recipeMaker>
<statBases>
<WorkToMake>1300</WorkToMake>
<!-- <MarketValue>370</MarketValue> -->
<Mass>4</Mass>
<AccuracyTouch>0.5</AccuracyTouch>
<AccuracyShort>0.4</AccuracyShort>
<AccuracyMedium>0.35</AccuracyMedium>
<AccuracyLong>0.3</AccuracyLong>
<RangedWeapon_Cooldown>2.5</RangedWeapon_Cooldown>
<ARA_IncubationCost>450</ARA_IncubationCost>
<ARA_IncubationTime>15</ARA_IncubationTime>
</statBases>
<verbs>
<li>
<verbClass>Verb_Shoot</verbClass>
<hasStandardCommand>true</hasStandardCommand>
<forceNormalTimeSpeed>false</forceNormalTimeSpeed>
<warmupTime>0.8</warmupTime>
<defaultProjectile>Bullet_RW_Missile_AR_Gun</defaultProjectile>
<range>38</range>
<burstShotCount>8</burstShotCount>
<ticksBetweenBurstShots>4</ticksBetweenBurstShots>
<soundCast>SpitterSpit</soundCast>
<targetParams>
<canTargetLocations>true</canTargetLocations>
</targetParams>
</li>
</verbs>
<costList Inherit="False">
<ARA_Carapace>50</ARA_Carapace>
</costList>
<weaponTags Inherit="False">
<li>ARA_Armed_Organ</li>
<li>ARA_Armed_Organ_Ranged</li>
<li>ARA_Armed_Organ_T2</li>
</weaponTags>
<thingSetMakerTags>
<li>RewardStandardQualitySuper</li>
</thingSetMakerTags>
<comps>
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Weapon_2Stage</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
<li Class="ArachnaeSwarm.CompProperties_GiveHediffOnShot">
<hediffDef>ARA_ChainReload</hediffDef>
<severityToAdd>0.1</severityToAdd>
</li>
<li Class="ArachnaeSwarm.CompProperties_CustomUniqueWeapon" MayRequire="Ludeon.RimWorld.Odyssey">
<forcedTraits>
<li>ARA_Huge_Weapon</li>
<li>ARA_Weapon_Damage_Acid</li>
<li>ARA_Weapon_ChainReload</li>
</forcedTraits>
<numTraitsRange>
<min>3</min>
<max>3</max>
</numTraitsRange>
</li>
</comps>
</ThingDef>
</Defs>

View File

@@ -1052,6 +1052,254 @@
</li>
</comps>
</ThingDef>
<ThingDef ParentName="BaseHumanMakeableGun">
<defName>ARA_RW_Missile_HG_Gun</defName>
<label>武装器官"双眼天灾枪"</label>
<description>阿拉克涅虫群督虫使用基础远程武装器官,状似人类的手枪,可以发射由酸爆种辅虫构成的导弹。这种武装器官适应性和追踪能力很强,即使是不擅长射击的虫族使用这种武器也能有很好的表现。</description>
<tickerType>Normal</tickerType>
<techLevel>Animal</techLevel>
<descriptionHyperlinks>
<ThingDef>ARA_Cocoon_Weapon_2Stage</ThingDef>
</descriptionHyperlinks>
<graphicData>
<texPath>ArachnaeSwarm/Weapon/ARA_RW_Missile_HG_Gun</texPath>
<graphicClass>Graphic_Single</graphicClass>
<drawSize>0.75</drawSize>
</graphicData>
<uiIconScale>1.3</uiIconScale>
<soundInteract>SpitterSpawn</soundInteract>
<recipeMaker>
<recipeUsers Inherit="False" />
<researchPrerequisite>ARA_Technology_10VXI</researchPrerequisite>
<unfinishedThingDef>UnfinishedWeapon</unfinishedThingDef>
</recipeMaker>
<statBases>
<WorkToMake>1300</WorkToMake>
<!-- <MarketValue>370</MarketValue> -->
<Mass>3</Mass>
<AccuracyTouch>0.5</AccuracyTouch>
<AccuracyShort>0.4</AccuracyShort>
<AccuracyMedium>0.35</AccuracyMedium>
<AccuracyLong>0.3</AccuracyLong>
<RangedWeapon_Cooldown>0.5</RangedWeapon_Cooldown>
<ARA_IncubationCost>450</ARA_IncubationCost>
<ARA_IncubationTime>15</ARA_IncubationTime>
</statBases>
<verbs>
<li>
<verbClass>ArachnaeSwarm.Verb_ShootShotgun</verbClass>
<hasStandardCommand>true</hasStandardCommand>
<forceNormalTimeSpeed>false</forceNormalTimeSpeed>
<warmupTime>3</warmupTime>
<defaultProjectile>Bullet_RW_Missile_HG_Gun</defaultProjectile>
<range>32</range>
<burstShotCount>2</burstShotCount>
<ticksBetweenBurstShots>12</ticksBetweenBurstShots>
<soundCast>SpitterSpit</soundCast>
<targetParams>
<canTargetLocations>true</canTargetLocations>
</targetParams>
</li>
</verbs>
<costList Inherit="False">
<ARA_Carapace>25</ARA_Carapace>
</costList>
<weaponTags Inherit="False">
<li>ARA_Armed_Organ</li>
<li>ARA_Armed_Organ_Ranged</li>
<li>ARA_Armed_Organ_T3</li>
</weaponTags>
<thingSetMakerTags>
<li>RewardStandardQualitySuper</li>
</thingSetMakerTags>
<comps>
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Weapon_2Stage</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
<li Class="ArachnaeSwarm.CompProperties_CustomUniqueWeapon"
MayRequire="Ludeon.RimWorld.Odyssey">
<forcedTraits>
<li>ARA_Weapon_Damage_Acid</li>
</forcedTraits>
<numTraitsRange>
<min>1</min>
<max>1</max>
</numTraitsRange>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="BaseBullet">
<defName>Bullet_RW_Missile_HG_Gun</defName>
<label>小型酸烧导弹</label>
<graphicData>
<graphicClass>Graphic_Single_AgeSecs</graphicClass>
<texPath>ArachnaeSwarm/Mote/ARA_CatastropheMissile_Shell</texPath>
<drawSize>(1.25,1.25)</drawSize>
<shaderType>MoteGlow</shaderType>
</graphicData>
<thingClass>ArachnaeSwarm.Projectile_ExplosiveTrackingBullet</thingClass>
<projectile>
<speed>60</speed>
<damageDef>ARA_AcidBurn</damageDef>
<damageAmountBase>12</damageAmountBase>
<filth>Filth_SpentAcid</filth>
<filthCount>2</filthCount>
<explosionSpawnsSingleFilth>true</explosionSpawnsSingleFilth>
<explosionRadius>2.1</explosionRadius>
<explosionEffect>Shell_AcidSpitImpact</explosionEffect>
<explosionEffectLifetimeTicks>60</explosionEffectLifetimeTicks>
<soundExplode>Explosion_EMP</soundExplode>
<armorPenetrationBase>0.25</armorPenetrationBase>
<screenShakeFactor>0.5</screenShakeFactor>
<flyOverhead>true</flyOverhead>
</projectile>
<modExtensions>
<li Class="ArachnaeSwarm.ExplosiveTrackingBulletDef">
<explosionRadius>2.1</explosionRadius>
<damageDef>ARA_AcidBurn</damageDef>
</li>
<li Class="ArachnaeSwarm.TrackingBulletDef">
<homingSpeed>0.5</homingSpeed>
<initRotateAngle>15</initRotateAngle>
<destroyTicksAfterLosingTrack>
<min>60</min>
<max>120</max>
</destroyTicksAfterLosingTrack>
<tailFleckDef>Fleck_AcidSpitLaunchedDenseMist</tailFleckDef>
<fleckMakeFleckTickMax>3</fleckMakeFleckTickMax>
<impactThreshold>1</impactThreshold>
</li>
<li Class="ArachnaeSwarm.ShotgunExtension">
<pelletCount>2</pelletCount>
</li>
</modExtensions>
</ThingDef>
<ThingDef ParentName="BaseHumanMakeableGun">
<defName>ARA_RW_Missile_AR_Gun</defName>
<label>武装器官"迅发天灾炮"</label>
<description>阿拉克涅虫群的大型武装器官,可以以排山倒海的架势射出成排由酸爆种辅虫构成的导弹,强大的火力使其成为虫族构建血肉军团的核心之一。</description>
<tickerType>Normal</tickerType>
<techLevel>Animal</techLevel>
<descriptionHyperlinks>
<ThingDef>ARA_Cocoon_Weapon_2Stage</ThingDef>
</descriptionHyperlinks>
<graphicData>
<texPath>ArachnaeSwarm/Weapon/ARA_RW_Missile_AR_Gun</texPath>
<graphicClass>Graphic_Single</graphicClass>
<drawSize>1.5</drawSize>
</graphicData>
<uiIconScale>0.75</uiIconScale>
<soundInteract>SpitterSpawn</soundInteract>
<recipeMaker>
<recipeUsers Inherit="False" />
<researchPrerequisite>ARA_Technology_10VXI</researchPrerequisite>
<unfinishedThingDef>UnfinishedWeapon</unfinishedThingDef>
</recipeMaker>
<statBases>
<WorkToMake>1300</WorkToMake>
<!-- <MarketValue>370</MarketValue> -->
<Mass>4</Mass>
<AccuracyTouch>0.5</AccuracyTouch>
<AccuracyShort>0.4</AccuracyShort>
<AccuracyMedium>0.35</AccuracyMedium>
<AccuracyLong>0.3</AccuracyLong>
<RangedWeapon_Cooldown>0.5</RangedWeapon_Cooldown>
<ARA_IncubationCost>450</ARA_IncubationCost>
<ARA_IncubationTime>15</ARA_IncubationTime>
</statBases>
<verbs>
<li>
<verbClass>Verb_Shoot</verbClass>
<hasStandardCommand>true</hasStandardCommand>
<forceNormalTimeSpeed>false</forceNormalTimeSpeed>
<warmupTime>4.5</warmupTime>
<defaultProjectile>Bullet_RW_Missile_AR_Gun</defaultProjectile>
<range>38</range>
<burstShotCount>12</burstShotCount>
<ticksBetweenBurstShots>4</ticksBetweenBurstShots>
<soundCast>SpitterSpit</soundCast>
<targetParams>
<canTargetLocations>true</canTargetLocations>
</targetParams>
</li>
</verbs>
<costList Inherit="False">
<ARA_Carapace>50</ARA_Carapace>
</costList>
<weaponTags Inherit="False">
<li>ARA_Armed_Organ</li>
<li>ARA_Armed_Organ_Ranged</li>
<li>ARA_Armed_Organ_T3</li>
</weaponTags>
<thingSetMakerTags>
<li>RewardStandardQualitySuper</li>
</thingSetMakerTags>
<comps>
<li Class="ArachnaeSwarm.CompProperties_ExtraIncubationInfo">
<cocoonDefs>
<li>ARA_Cocoon_Weapon_2Stage</li>
<li>ARA_BioforgeIncubator_Thing</li>
</cocoonDefs>
</li>
<li Class="ArachnaeSwarm.CompProperties_CustomUniqueWeapon"
MayRequire="Ludeon.RimWorld.Odyssey">
<forcedTraits>
<li>ARA_Huge_Weapon</li>
<li>ARA_Weapon_Damage_Acid</li>
</forcedTraits>
<numTraitsRange>
<min>2</min>
<max>2</max>
</numTraitsRange>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="BaseBullet">
<defName>Bullet_RW_Missile_AR_Gun</defName>
<label>微型酸烧导弹</label>
<graphicData>
<graphicClass>Graphic_Single_AgeSecs</graphicClass>
<texPath>ArachnaeSwarm/Mote/ARA_CatastropheMissile_Shell</texPath>
<drawSize>(1,1)</drawSize>
<shaderType>MoteGlow</shaderType>
</graphicData>
<thingClass>ArachnaeSwarm.Projectile_ExplosiveTrackingBullet</thingClass>
<projectile>
<speed>60</speed>
<damageDef>ARA_AcidBurn</damageDef>
<damageAmountBase>8</damageAmountBase>
<filth>Filth_SpentAcid</filth>
<filthCount>2</filthCount>
<explosionSpawnsSingleFilth>true</explosionSpawnsSingleFilth>
<explosionRadius>1.1</explosionRadius>
<explosionEffect>Shell_AcidSpitImpact</explosionEffect>
<explosionEffectLifetimeTicks>60</explosionEffectLifetimeTicks>
<soundExplode>Explosion_EMP</soundExplode>
<armorPenetrationBase>0.25</armorPenetrationBase>
<screenShakeFactor>0.5</screenShakeFactor>
<flyOverhead>true</flyOverhead>
</projectile>
<modExtensions>
<li Class="ArachnaeSwarm.ExplosiveTrackingBulletDef">
<explosionRadius>1.1</explosionRadius>
<damageDef>ARA_AcidBurn</damageDef>
</li>
<li Class="ArachnaeSwarm.TrackingBulletDef">
<homingSpeed>0.75</homingSpeed>
<initRotateAngle>15</initRotateAngle>
<destroyTicksAfterLosingTrack>
<min>60</min>
<max>120</max>
</destroyTicksAfterLosingTrack>
<tailFleckDef>Fleck_AcidSpitLaunchedDenseMist</tailFleckDef>
<fleckMakeFleckTickMax>3</fleckMakeFleckTickMax>
<impactThreshold>1</impactThreshold>
</li>
</modExtensions>
</ThingDef>
<!-- spawn -->
<ThingDef ParentName="BaseHumanMakeableGun">

View File

@@ -18,7 +18,7 @@
<plant>
<fertilityMin>0.05</fertilityMin>
<fertilitySensitivity>0.05</fertilitySensitivity>
<growDays>10</growDays>
<growDays>6</growDays>
<harvestYield>10</harvestYield>
<harvestedThingDef>ARA_CreepFungus</harvestedThingDef>
<sowTags>
@@ -73,7 +73,7 @@
<plant>
<fertilityMin>0.05</fertilityMin>
<fertilitySensitivity>0.05</fertilitySensitivity>
<growDays>10</growDays>
<growDays>3</growDays>
<harvestYield>10</harvestYield>
<harvestedThingDef>ARA_CreepFungus</harvestedThingDef>
<sowTags>
@@ -113,7 +113,7 @@
<plant>
<fertilityMin>0.05</fertilityMin>
<fertilitySensitivity>0.05</fertilitySensitivity>
<growDays>10</growDays>
<growDays>2</growDays>
<harvestYield>10</harvestYield>
<harvestedThingDef>ARA_CreepFungus</harvestedThingDef>
<sowTags>

View File

@@ -406,6 +406,7 @@
<offset>(0,0,-0.1)</offset>
</shadowData>
</graphicData>
<rotatable>false</rotatable>
<castEdgeShadows>false</castEdgeShadows>
<staticSunShadowHeight>0</staticSunShadowHeight>
<altitudeLayer>Building</altitudeLayer>
@@ -711,11 +712,16 @@
<fuelLabel>生物质</fuelLabel>
<fuelFilter>
<categories>
<li>Foods</li>
<li>MeatRaw</li>
<li>PlantFoodRaw</li>
</categories>
<thingDefs>
<li>Milk</li>
<li>InsectJelly</li>
</thingDefs>
</fuelFilter>
<fuelCapacity>25</fuelCapacity>
<fuelConsumptionRate>25</fuelConsumptionRate>
<fuelCapacity>50</fuelCapacity>
<fuelConsumptionRate>30</fuelConsumptionRate>
<consumeFuelOnlyWhenUsed>true</consumeFuelOnlyWhenUsed>
</li>

View File

@@ -312,7 +312,7 @@
</li>
<li>
<pawnKind>ArachnaeNode_Race_NeuroSwarm</pawnKind>
<delayTicks>1440000</delayTicks>
<delayTicks>880000</delayTicks>
<requiredResearch>ARA_Technology_6KYC</requiredResearch>
</li>
</spawnablePawns>
@@ -524,7 +524,7 @@
<comps>
<!-- The new, GrowthVat-style fuel component -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>10</fuelCapacity>
<fuelCapacity>20</fuelCapacity>
<fuelLabel>虫蜜</fuelLabel>
<fuelFilter>
<thingDefs>
@@ -533,7 +533,7 @@
</fuelFilter>
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>1</initialFuelPercent>
<initialFuelPercent>0.1</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
</li>
<!-- The refactored producer component -->
@@ -603,7 +603,7 @@
<comps>
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>10</fuelCapacity>
<fuelCapacity>20</fuelCapacity>
<fuelLabel>虫蜜</fuelLabel>
<fuelFilter>
<thingDefs>
@@ -612,7 +612,7 @@
</fuelFilter>
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>1</initialFuelPercent>
<initialFuelPercent>0.1</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
</li>
<!-- The refactored producer component -->
@@ -687,7 +687,7 @@
<comps>
<!-- The new, GrowthVat-style fuel component -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>10</fuelCapacity>
<fuelCapacity>50</fuelCapacity>
<fuelLabel>虫蜜</fuelLabel>
<fuelFilter>
<thingDefs>
@@ -696,7 +696,7 @@
</fuelFilter>
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>1</initialFuelPercent>
<initialFuelPercent>0.05</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
</li>
<!-- The refactored producer component -->
@@ -772,7 +772,7 @@
<comps>
<!-- The new, GrowthVat-style fuel component -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>10</fuelCapacity>
<fuelCapacity>50</fuelCapacity>
<fuelLabel>虫蜜</fuelLabel>
<fuelFilter>
<thingDefs>
@@ -781,7 +781,7 @@
</fuelFilter>
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>1</initialFuelPercent>
<initialFuelPercent>0.05</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
</li>
<!-- The refactored producer component -->
@@ -875,7 +875,7 @@
<comps>
<!-- The new, GrowthVat-style fuel component -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>10</fuelCapacity>
<fuelCapacity>100</fuelCapacity>
<fuelLabel>虫蜜</fuelLabel>
<fuelFilter>
<thingDefs>
@@ -884,7 +884,7 @@
</fuelFilter>
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>1</initialFuelPercent>
<initialFuelPercent>0.01</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
</li>
<!-- The refactored producer component -->
@@ -961,7 +961,7 @@
<comps>
<!-- The new, GrowthVat-style fuel component -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>10</fuelCapacity>
<fuelCapacity>100</fuelCapacity>
<fuelLabel>虫蜜</fuelLabel>
<fuelFilter>
<thingDefs>
@@ -970,7 +970,7 @@
</fuelFilter>
<fuelConsumptionRate>0</fuelConsumptionRate> <!-- IMPORTANT: Disable base class consumption -->
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<initialFuelPercent>1</initialFuelPercent>
<initialFuelPercent>0.01</initialFuelPercent>
<autoRefuelPercent>1</autoRefuelPercent>
</li>
<!-- The refactored producer component -->

View File

@@ -55,4 +55,7 @@
<CarrierAssigned>已指派{0}将{1}运送到阿拉克涅消化茧</CarrierAssigned>
<NoAvailableCarriers>没有可用的虫群成员运送者</NoAvailableCarriers>
<NoPrisonersOrSlaves>没有可用的囚犯或奴隶</NoPrisonersOrSlaves>
<DisallowedItems>禁止物品</DisallowedItems>
<CannotUseDisallowedFuel>{0} 不能用作 {1} 的燃料</CannotUseDisallowedFuel>
</LanguageData>

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

View File

@@ -3,12 +3,8 @@
"WorkspaceRootPath": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\jobdriver_carryprisonertonutrientvat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobdriver_carryprisonertonutrientvat.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\\building_comps\\ara_nutrientvat\\building_nutrientvat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_nutrientvat\\building_nutrientvat.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\\building_comps\\wula_mutifuelspawner\\comprefuelablenutrition_withkey.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\wula_mutifuelspawner\\comprefuelablenutrition_withkey.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
@@ -27,27 +23,14 @@
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "JobDriver_CarryPrisonerToNutrientVat.cs",
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\JobDriver_CarryPrisonerToNutrientVat.cs",
"RelativeDocumentMoniker": "JobDriver_CarryPrisonerToNutrientVat.cs",
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\JobDriver_CarryPrisonerToNutrientVat.cs",
"RelativeToolTip": "JobDriver_CarryPrisonerToNutrientVat.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABwAAAAYAAAAAAAAAA==",
"Title": "CompRefuelableNutrition_WithKey.cs",
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\WULA_MutiFuelSpawner\\CompRefuelableNutrition_WithKey.cs",
"RelativeDocumentMoniker": "Building_Comps\\WULA_MutiFuelSpawner\\CompRefuelableNutrition_WithKey.cs",
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\WULA_MutiFuelSpawner\\CompRefuelableNutrition_WithKey.cs",
"RelativeToolTip": "Building_Comps\\WULA_MutiFuelSpawner\\CompRefuelableNutrition_WithKey.cs",
"ViewState": "AgIAABwAAAAAAAAAAAAUwFsAAAAcAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-10-01T07:37:06.309Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "Building_NutrientVat.cs",
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_NutrientVat\\Building_NutrientVat.cs",
"RelativeDocumentMoniker": "Building_Comps\\ARA_NutrientVat\\Building_NutrientVat.cs",
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_NutrientVat\\Building_NutrientVat.cs",
"RelativeToolTip": "Building_Comps\\ARA_NutrientVat\\Building_NutrientVat.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAAXAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-10-01T07:14:25.565Z",
"WhenOpened": "2025-10-02T06:18:10.518Z",
"EditorCaption": ""
}
]

View File

@@ -104,7 +104,7 @@ namespace ArachnaeSwarm
}
}
// 自动构建 ProcessDef 列表的方法
// 自动构建 ProcessDef 列表的方法 - 修改后扫描所有物品
private void BuildProcessList()
{
_cachedProcesses = new List<ProcessDef>();
@@ -112,54 +112,51 @@ namespace ArachnaeSwarm
// 扫描所有定义了 CompExtraIncubationInfo 的物品
foreach (ThingDef thingDef in DefDatabase<ThingDef>.AllDefs)
{
// 检查是否是服装或武器
if (thingDef.IsApparel || thingDef.IsWeapon)
// 移除 IsApparel 和 IsWeapon 的限制,扫描所有物品
var incubationCompProps = thingDef.GetCompProperties<CompProperties_ExtraIncubationInfo>();
if (incubationCompProps != null)
{
var incubationCompProps = thingDef.GetCompProperties<CompProperties_ExtraIncubationInfo>();
if (incubationCompProps != null)
bool isMatch = false;
if (!incubationCompProps.cocoonDefs.NullOrEmpty())
{
bool isMatch = false;
if (!incubationCompProps.cocoonDefs.NullOrEmpty())
isMatch = incubationCompProps.cocoonDefs.Contains(parent.def);
}
else if (incubationCompProps.cocoonDef != null)
{
isMatch = incubationCompProps.cocoonDef == parent.def;
}
if (isMatch)
{
// 获取研究前提 - 从 recipeMaker 中获取
ResearchProjectDef researchPrerequisite = null;
// 方法1从 recipeMaker.researchPrerequisite 获取
if (thingDef.recipeMaker?.researchPrerequisite != null)
{
isMatch = incubationCompProps.cocoonDefs.Contains(parent.def);
researchPrerequisite = thingDef.recipeMaker.researchPrerequisite;
}
else if (incubationCompProps.cocoonDef != null)
// 方法2从 recipeMaker.researchPrerequisites 获取第一个
else if (thingDef.recipeMaker?.researchPrerequisites?.Count > 0)
{
isMatch = incubationCompProps.cocoonDef == parent.def;
researchPrerequisite = thingDef.recipeMaker.researchPrerequisites[0];
}
// 方法3从 thingDef.researchPrerequisites 获取(备用)
else if (thingDef.researchPrerequisites?.Count > 0)
{
researchPrerequisite = thingDef.researchPrerequisites[0];
}
if (isMatch)
// 创建 ProcessDef
ProcessDef process = new ProcessDef
{
// 获取研究前提 - 从 recipeMaker 中获取
ResearchProjectDef researchPrerequisite = null;
// 方法1从 recipeMaker.researchPrerequisite 获取
if (thingDef.recipeMaker?.researchPrerequisite != null)
{
researchPrerequisite = thingDef.recipeMaker.researchPrerequisite;
}
// 方法2从 recipeMaker.researchPrerequisites 获取第一个
else if (thingDef.recipeMaker?.researchPrerequisites?.Count > 0)
{
researchPrerequisite = thingDef.recipeMaker.researchPrerequisites[0];
}
// 方法3从 thingDef.researchPrerequisites 获取(备用)
else if (thingDef.researchPrerequisites?.Count > 0)
{
researchPrerequisite = thingDef.researchPrerequisites[0];
}
thingDef = thingDef,
productionTicks = GetIncubationTimeTicks(thingDef),
totalNutritionNeeded = GetIncubationCost(thingDef),
requiredResearch = researchPrerequisite
};
// 创建 ProcessDef
ProcessDef process = new ProcessDef
{
thingDef = thingDef,
productionTicks = GetIncubationTimeTicks(thingDef),
totalNutritionNeeded = GetIncubationCost(thingDef),
requiredResearch = researchPrerequisite
};
_cachedProcesses.Add(process);
}
_cachedProcesses.Add(process);
}
}
}

View File

@@ -10,7 +10,6 @@ namespace ArachnaeSwarm
public CompProperties_RefuelableNutrition()
{
compClass = typeof(CompRefuelableNutrition);
// 默认启用这些Gizmo除非在XML中明确设置为false
this.targetFuelLevelConfigurable = true;
this.showAllowAutoRefuelToggle = true;
}
@@ -23,10 +22,44 @@ namespace ArachnaeSwarm
public float NutritionStored => Fuel;
public new CompProperties_RefuelableNutrition Props => (CompProperties_RefuelableNutrition)props;
public override void PostSpawnSetup(bool respawningAfterLoad)
{
base.PostSpawnSetup(respawningAfterLoad);
// 确保自动补充目标燃料水平正确设置
if (TargetFuelLevel <= 0f || respawningAfterLoad)
{
SetTargetFuelLevelFromAutoRefuelPercent();
}
}
public override void PostExposeData()
{
base.PostExposeData();
// 在加载后确保目标燃料水平正确
if (Scribe.mode == LoadSaveMode.PostLoadInit)
{
SetTargetFuelLevelFromAutoRefuelPercent();
}
}
private void SetTargetFuelLevelFromAutoRefuelPercent()
{
// 使用 autoRefuelPercent 设置目标燃料水平
if (Props.autoRefuelPercent > 0f)
{
TargetFuelLevel = Props.fuelCapacity * Props.autoRefuelPercent;
}
else
{
// 默认设置为满容量
TargetFuelLevel = Props.fuelCapacity;
}
}
public override void CompTick()
{
// 调用基类的Tick让它处理真空等情况。
// 基类的燃料消耗逻辑将因为 fuelConsumptionRate 为0而无效。
base.CompTick();
// 我们自己的动态消耗逻辑
@@ -92,6 +125,7 @@ namespace ArachnaeSwarm
if (Props.targetFuelLevelConfigurable)
{
text += "\n" + "ConfiguredTargetFuelLevel".Translate(TargetFuelLevel.ToStringDecimalIfSmall());
text += " (" + "AutoRefuelPercent".Translate((Props.autoRefuelPercent * 100f).ToString("F0") + "%)");
}
return text;
@@ -105,4 +139,4 @@ namespace ArachnaeSwarm
}
}
}
}
}

View File

@@ -2,23 +2,25 @@ using RimWorld;
using Verse;
using System.Reflection;
using HarmonyLib;
using System.Collections.Generic;
using System.Linq;
namespace ArachnaeSwarm
{
public class CompProperties_RefuelableNutrition_WithKey : CompProperties_RefuelableNutrition
{
public string saveKeysPrefix;
// 修改:禁止的具体物品定义列表
public List<ThingDef> disallowedThingDefs;
public CompProperties_RefuelableNutrition_WithKey()
{
compClass = typeof(CompRefuelableNutrition_WithKey);
}
}
public class CompRefuelableNutrition_WithKey : CompRefuelableNutrition, IFuelSource
{
public new CompProperties_RefuelableNutrition_WithKey Props => (CompProperties_RefuelableNutrition_WithKey)props;
public override void PostExposeData()
{
string prefix = Props.saveKeysPrefix;
@@ -28,22 +30,19 @@ namespace ArachnaeSwarm
base.PostExposeData();
return;
}
// --- Accessing private fields from CompRefuelable (base of CompRefuelableNutrition) ---
FieldInfo fuelField = AccessTools.Field(typeof(CompRefuelable), "fuel");
FieldInfo configuredTargetFuelLevelField = AccessTools.Field(typeof(CompRefuelable), "configuredTargetFuelLevel");
FieldInfo allowAutoRefuelField = AccessTools.Field(typeof(CompRefuelable), "allowAutoRefuel");
// Get current values
float currentFuel = (float)fuelField.GetValue(this);
float currentConfiguredLevel = (float)configuredTargetFuelLevelField.GetValue(this);
bool currentAllowAuto = (bool)allowAutoRefuelField.GetValue(this);
// Scribe with prefix
Scribe_Values.Look(ref currentFuel, prefix + "_fuel", 0f);
Scribe_Values.Look(ref currentConfiguredLevel, prefix + "_configuredTargetFuelLevel", -1f);
Scribe_Values.Look(ref currentAllowAuto, prefix + "_allowAutoRefuel", true);
// Set values back if loading
if (Scribe.mode == LoadSaveMode.LoadingVars)
{
@@ -51,14 +50,65 @@ namespace ArachnaeSwarm
configuredTargetFuelLevelField.SetValue(this, currentConfiguredLevel);
allowAutoRefuelField.SetValue(this, currentAllowAuto);
}
// --- Accessing private fields from CompRefuelableNutrition ---
// (Assuming there are any. If not, this part is not needed)
// Example:
// FieldInfo someOtherField = AccessTools.Field(typeof(CompRefuelableNutrition), "someOtherPrivateField");
// ... and so on
}
// 重写燃料处理方法,添加物品类型限制
public new void Refuel(List<Thing> fuelThings)
{
// 过滤掉禁止物品类型的物品
List<Thing> allowedFuelThings = new List<Thing>();
List<Thing> disallowedFuelThings = new List<Thing>();
foreach (var thing in fuelThings)
{
if (IsFuelAllowed(thing))
{
allowedFuelThings.Add(thing);
}
else
{
disallowedFuelThings.Add(thing);
}
}
// 如果有被禁止的物品,给出提示
if (disallowedFuelThings.Count > 0)
{
string disallowedNames = string.Join(", ", disallowedFuelThings.Select(t => t.LabelCap));
Messages.Message("CannotUseDisallowedFuel".Translate(disallowedNames, parent.LabelCap), disallowedFuelThings, MessageTypeDefOf.RejectInput);
}
// 只对允许的物品调用基类的Refuel方法
if (allowedFuelThings.Count > 0)
{
base.Refuel(allowedFuelThings);
}
}
// 检查燃料是否被允许
private bool IsFuelAllowed(Thing fuel)
{
// 检查是否在禁止的物品类型列表中
if (IsInDisallowedThingDefs(fuel))
return false;
return true;
}
// 检查物品是否在禁止的物品类型列表中
private bool IsInDisallowedThingDefs(Thing thing)
{
if (Props.disallowedThingDefs == null || Props.disallowedThingDefs.Count == 0)
return false;
return Props.disallowedThingDefs.Contains(thing.def);
}
// 可选:重写燃料描述以显示限制信息
public override string CompInspectStringExtra()
{
string baseString = base.CompInspectStringExtra();
if (Props.disallowedThingDefs != null && Props.disallowedThingDefs.Count > 0)
{
string thingNames = string.Join(", ", Props.disallowedThingDefs.Select(d => d.label));
return baseString + $"\n{"DisallowedItems".Translate()}: {thingNames}";
}
return baseString;
}
public new void Notify_UsedThisTick()
{
if (Props.consumeFuelOnlyWhenUsed)
@@ -67,4 +117,5 @@ namespace ArachnaeSwarm
}
}
}
}