This commit is contained in:
2025-12-23 15:34:44 +08:00
parent 79b09af69f
commit c130329439
10 changed files with 777 additions and 152 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -61,6 +61,7 @@
<li>CatastropheMissileSilo</li>
<li>ARA_AutoSniperCannon</li>
<li>ARA_Pawn_Ootheca</li>
<li>ARA_Equipment_Ootheca</li>
</linkableBuildings>
<maxDistance>80</maxDistance> <!-- 供能范围 -->
<maxSimultaneous>10</maxSimultaneous>

View File

@@ -111,42 +111,6 @@
<workTableRoomRole>ARA_Incubator_Room</workTableRoomRole>
</building>
<!-- 添加 ModExtension 配置 -->
<modExtensions>
<li Class="ArachnaeSwarm.OothecaIncubatorExtension">
<!-- 营养液检测半径 -->
<nutrientSolutionRadius>5</nutrientSolutionRadius>
<!-- 其他卵距离检测半径 -->
<nearbyOothecaRadius>5</nearbyOothecaRadius>
<!-- 是否检查同房间内的其他卵 -->
<checkSameRoomForOotheca>false</checkSameRoomForOotheca>
<!-- 营养液加成比例 -->
<!-- <nutrientSolutionBonusPerTile>0.015</nutrientSolutionBonusPerTile> -->
<!-- 附近其他卵的惩罚比例 -->
<!-- <nearbyOothecaPenaltyPerUnit>0.08</nearbyOothecaPenaltyPerUnit> -->
<!-- 幼虫搜索半径 -->
<!-- <larvaSearchRadius>30</larvaSearchRadius> -->
<!-- 是否需要在孵化间内才能正常工作 -->
<!-- <requiresIncubatorRoom>true</requiresIncubatorRoom> -->
<!-- 不在孵化间内的速度惩罚 -->
<!-- <speedPenaltyOutsideIncubator>0.7</speedPenaltyOutsideIncubator> -->
<!-- 质量因子房间检查 -->
<!-- <useRoomQualityFactor>true</useRoomQualityFactor> -->
<!-- 建筑血量影响质量 -->
<!-- <healthAffectsQuality>true</healthAffectsQuality> -->
<!-- 新增营养液不足伤害设置 -->
<nutrientDeficiencyDamageEnabled>true</nutrientDeficiencyDamageEnabled>
<nutrientDeficiencyDamageAmount>2</nutrientDeficiencyDamageAmount>
<nutrientDamageType>Burn</nutrientDamageType>
<stopIncubationWhenNutrientDeficient>true</stopIncubationWhenNutrientDeficient>
<!-- <showDamageMessages>true</showDamageMessages>
<damageMessageChance>0.1</damageMessageChance> -->
</li>
</modExtensions>
<costList>
<ARA_InsectJelly>25</ARA_InsectJelly>
</costList>
@@ -454,44 +418,10 @@
<workTableRoomRole>ARA_Incubator_Room</workTableRoomRole>
</building>
<!-- 添加 ModExtension 配置 -->
<modExtensions>
<li Class="ArachnaeSwarm.OothecaIncubatorExtension">
<!-- 营养液检测半径 -->
<nutrientSolutionRadius>3</nutrientSolutionRadius>
<!-- 其他卵距离检测半径 -->
<nearbyOothecaRadius>3</nearbyOothecaRadius>
<!-- 是否检查同房间内的其他卵 -->
<checkSameRoomForOotheca>false</checkSameRoomForOotheca>
<!-- 营养液加成比例 -->
<nutrientSolutionBonusPerTile>0.03</nutrientSolutionBonusPerTile>
<!-- 附近其他卵的惩罚比例 -->
<!-- <nearbyOothecaPenaltyPerUnit>0.08</nearbyOothecaPenaltyPerUnit> -->
<!-- 幼虫搜索半径 -->
<!-- <larvaSearchRadius>30</larvaSearchRadius> -->
<!-- 是否需要在孵化间内才能正常工作 -->
<!-- <requiresIncubatorRoom>true</requiresIncubatorRoom> -->
<!-- 不在孵化间内的速度惩罚 -->
<!-- <speedPenaltyOutsideIncubator>0.7</speedPenaltyOutsideIncubator> -->
<!-- 质量因子房间检查 -->
<!-- <useRoomQualityFactor>true</useRoomQualityFactor> -->
<!-- 建筑血量影响质量 -->
<!-- <healthAffectsQuality>true</healthAffectsQuality> -->
</li>
</modExtensions>
<costList>
<ARA_InsectJelly>25</ARA_InsectJelly>
</costList>
<!-- ITab配置 -->
<inspectorTabs>
<li>ArachnaeSwarm.ITab_EquipmentOotheca_Incubation</li>
</inspectorTabs>
<placeWorkers>
<li>ArachnaeSwarm.PlaceWorker_CustomRadius</li>
</placeWorkers>
<comps>
<li Class="ArachnaeSwarm.CompProperties_SwarmMaintenance">
<maxMaintenance>100</maxMaintenance>
@@ -500,14 +430,18 @@
<warningThreshold>0.2</warningThreshold>
<maintenanceThresholdForJob>0.5</maintenanceThresholdForJob>
</li>
<li Class="ArachnaeSwarm.CompProperties_CustomRadius">
<radius>3</radius> <!-- 半径大小 -->
<color>(0.5, 1, 1)</color> <!-- 绿色圆圈 -->
<radiusOffset>0</radiusOffset> <!-- 半径偏移 -->
<showInGUI>true</showInGUI>
<label>吸收半径</label>
<description>这个卵在孵化过程中的吸收半径,确保这些地格中铺满阿拉克涅营养液,并且没有其他的卵,以获得最佳的孵化速度和孵化质量。</description>
<defaultVisible>false</defaultVisible>
<!-- 虫蜜燃料组件(孵化活性系统) -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelConsumptionRate>0</fuelConsumptionRate>
<fuelCapacity>10</fuelCapacity>
<initialFuelPercent>0</initialFuelPercent>
<initialConfigurableTargetFuelLevel>5</initialConfigurableTargetFuelLevel>
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<fuelFilter>
<thingDefs>
<li>ARA_InsectJelly</li>
</thingDefs>
</fuelFilter>
</li>
<li Class="ArachnaeSwarm.CompProperties_EquipmentIncubatorData">
<!-- autoScanThingDefs默认为true会自动扫描所有ThingDef -->
@@ -585,4 +519,266 @@
</li>
</comps>
</ThingDef>
<!-- 3. 主建筑 "生物孵化池" -->
<ThingDef ParentName="BuildingBase">
<defName>ARA_BioforgeIncubator_Thing</defName>
<label>物品孵化池</label>
<description>一个大型的、需要消耗大量营养物质的孵化设施,可以同时孵化多个物品,并能通过链接外部设备来提高效率。</description>
<graphicData>
<texPath>ArachnaeSwarm/Building/ARA_BioforgeIncubator_Thing</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>CutoutComplex</shaderType>
<drawRotated>false</drawRotated>
<drawSize>(5.5,6.5)</drawSize>
<drawOffset>(0, 2, 0.5)</drawOffset>
<shadowData>
<volume>(2.75, 1.2, 2)</volume>
<offset>(0.2,0,-1.15)</offset>
</shadowData>
</graphicData>
<size>(5,5)</size>
<rotatable>false</rotatable>
<tickerType>Normal</tickerType>
<stuffCategories Inherit="False" />
<costStuffCount>0</costStuffCount>
<costList>
<ARA_Carapace>200</ARA_Carapace>
<ARA_InsectJelly>40</ARA_InsectJelly>
<ARA_Activated_Bacterium>10</ARA_Activated_Bacterium>
</costList>
<castEdgeShadows>false</castEdgeShadows>
<staticSunShadowHeight>0</staticSunShadowHeight>
<altitudeLayer>Building</altitudeLayer>
<passability>PassThroughOnly</passability>
<terrainAffordanceNeeded>ARA_Creep</terrainAffordanceNeeded>
<pathCost>50</pathCost>
<statBases>
<MarketValue>20000</MarketValue>
<MaxHitPoints>250</MaxHitPoints>
<WorkToBuild>2800</WorkToBuild>
<Flammability>1.0</Flammability>
</statBases>
<placeWorkers>
<li>PlaceWorker_PreventInteractionSpotOverlap</li>
</placeWorkers>
<fillPercent>0.8</fillPercent>
<interactionCellOffset>(0,0,-1)</interactionCellOffset>
<hasInteractionCell>true</hasInteractionCell>
<designationCategory>ARA_Buildings</designationCategory>
<uiOrder>2600</uiOrder>
<surfaceType>Item</surfaceType>
<building>
<workTableRoomRole>Laboratory</workTableRoomRole>
<workTableNotInRoomRoleFactor>0.8</workTableNotInRoomRoleFactor>
<relatedTerrain>
<li>ARA_InsectCreep</li>
</relatedTerrain>
</building>
<researchPrerequisites>
<li>ARA_Technology_4NPT</li>
</researchPrerequisites>
<comps>
<!-- a. 我们新的队列物品生产组件 -->
<li Class="ArachnaeSwarm.CompProperties_QueuedInteractiveProducer">
<!-- 队列和交互设置 -->
<productionQueueLimit>3</productionQueueLimit>
<minNutritionToStart>1.0</minNutritionToStart>
<whitelist>
<li>ArachnaeNode_Race_WeaponSmith</li> <!-- 示例:允许普通殖民者操作 -->
</whitelist>
<!-- 质量系统设置 -->
<minSafeTemperature>10</minSafeTemperature>
<maxSafeTemperature>30</maxSafeTemperature>
<penaltyPerDegreePerTick>0.00001</penaltyPerDegreePerTick>
<qualityThresholds>
<li>
<quality>Legendary</quality>
<threshold>0.99</threshold>
</li>
<li>
<quality>Masterwork</quality>
<threshold>0.90</threshold>
</li>
<li>
<quality>Excellent</quality>
<threshold>0.70</threshold>
</li>
<li>
<quality>Good</quality>
<threshold>0.50</threshold>
</li>
<li>
<quality>Normal</quality>
<threshold>0.20</threshold>
</li>
<li>
<quality>Poor</quality>
<threshold>0.10</threshold>
</li>
</qualityThresholds>
</li>
<!-- b. 我们的营养燃料组件 -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>300.0</fuelCapacity>
<fuelFilter>
<thingDefs>
<li>ARA_InsectJelly</li>
</thingDefs>
</fuelFilter>
<fuelGizmoLabel>虫蜜</fuelGizmoLabel>
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<targetFuelLevelConfigurable>true</targetFuelLevelConfigurable>
</li>
<!-- c. 原版的设施链接接收组件 -->
<li Class="CompProperties_AffectedByFacilities">
<linkableFacilities>
<li>ARA_NutrientNetworkTower</li>
<li>ARA_GrowthVat</li>
</linkableFacilities>
</li>
<li Class="ArachnaeSwarm.CompProperties_DelayedTerrainSpawn">
<terrainToSpawn>ARA_InsectCreep</terrainToSpawn>
<spawnRadius>8</spawnRadius>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="BuildingBase">
<defName>ARA_BioforgeIncubator</defName>
<label>督虫孵化池</label>
<description>一个大型的、需要消耗大量营养物质的孵化设施,可以同时孵化多个单位,并能通过链接外部设备来提高效率。</description>
<graphicData>
<texPath>ArachnaeSwarm/Building/ARA_BioforgeIncubator</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>CutoutComplex</shaderType>
<drawSize>(5.5,6.5)</drawSize>
<drawRotated>false</drawRotated>
<drawOffset>(0, 2, 0.5)</drawOffset>
<shadowData>
<volume>(2.75, 1.4, 2)</volume>
<offset>(0,0,-1.25)</offset>
</shadowData>
</graphicData>
<size>(5,5)</size>
<tickerType>Normal</tickerType>
<rotatable>false</rotatable>
<stuffCategories Inherit="False" />
<costStuffCount>0</costStuffCount>
<costList>
<ARA_Carapace>200</ARA_Carapace>
<ARA_InsectJelly>40</ARA_InsectJelly>
<ARA_Activated_Bacterium>10</ARA_Activated_Bacterium>
</costList>
<castEdgeShadows>false</castEdgeShadows>
<staticSunShadowHeight>0</staticSunShadowHeight>
<altitudeLayer>Building</altitudeLayer>
<passability>PassThroughOnly</passability>
<terrainAffordanceNeeded>ARA_Creep</terrainAffordanceNeeded>
<designationCategory>ARA_Buildings</designationCategory>
<pathCost>50</pathCost>
<researchPrerequisites>
<li>ARA_Technology_4NPT</li>
</researchPrerequisites>
<statBases>
<MarketValue>20000</MarketValue>
<MaxHitPoints>250</MaxHitPoints>
<WorkToBuild>2800</WorkToBuild>
<Flammability>1.0</Flammability>
</statBases>
<placeWorkers>
<li>PlaceWorker_PreventInteractionSpotOverlap</li>
</placeWorkers>
<fillPercent>0.8</fillPercent>
<interactionCellOffset>(0,0,-1)</interactionCellOffset>
<hasInteractionCell>true</hasInteractionCell>
<!-- <designationCategory>ARA_Buildings</designationCategory> -->
<uiOrder>2600</uiOrder>
<surfaceType>Item</surfaceType>
<building>
<workTableRoomRole>Laboratory</workTableRoomRole>
<workTableNotInRoomRoleFactor>0.8</workTableNotInRoomRoleFactor>
<relatedTerrain>
<li>ARA_InsectCreep</li>
</relatedTerrain>
</building>
<comps>
<!-- a. 我们自己的队列生产组件 -->
<li Class="ArachnaeSwarm.CompProperties_QueuedPawnSpawner">
<productionQueueLimit>5</productionQueueLimit>
<minNutritionToStart>0.5</minNutritionToStart>
<whitelist>
<li>ARA_ArachnaeQueen</li>
</whitelist>
<spawnablePawns>
<li>
<pawnKind>ArachnaeNode_Race_Myrmecocystus</pawnKind>
<delayTicks>240000</delayTicks>
<totalNutritionNeeded>100.0</totalNutritionNeeded>
</li>
<li>
<pawnKind>ArachnaeNode_Race_ShieldHead</pawnKind>
<delayTicks>180000</delayTicks>
<totalNutritionNeeded>40.0</totalNutritionNeeded>
</li>
<li>
<pawnKind>ArachnaeNode_Race_WeaponSmith</pawnKind>
<delayTicks>180000</delayTicks>
<totalNutritionNeeded>40.0</totalNutritionNeeded>
</li>
<li>
<pawnKind>ArachnaeNode_Race_Fighter</pawnKind>
<delayTicks>90000</delayTicks>
<totalNutritionNeeded>20.0</totalNutritionNeeded>
<requiredResearch>ARA_Technology_1KYC</requiredResearch>
</li>
<li>
<pawnKind>ArachnaeNode_Race_Smokepop</pawnKind>
<delayTicks>180000</delayTicks>
<totalNutritionNeeded>60.0</totalNutritionNeeded>
<requiredResearch>ARA_Technology_5KYC</requiredResearch>
</li>
<li>
<pawnKind>ArachnaeNode_Race_Skyraider</pawnKind>
<delayTicks>120000</delayTicks>
<totalNutritionNeeded>80.0</totalNutritionNeeded>
<requiredResearch>ARA_Technology_2KYC</requiredResearch>
</li>
<li>
<pawnKind>ARA_MimicNematodeShamblerSwarmer</pawnKind>
<delayTicks>600</delayTicks>
<totalNutritionNeeded>10.0</totalNutritionNeeded>
<requiredResearch>ARA_Technology_6MEN</requiredResearch>
</li>
</spawnablePawns>
</li>
<!-- b. 我们的营养燃料组件 -->
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
<fuelCapacity>20.0</fuelCapacity>
<fuelFilter>
<thingDefs>
<li>ARA_InsectJelly</li>
</thingDefs>
</fuelFilter>
<fuelGizmoLabel>虫蜜</fuelGizmoLabel>
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<targetFuelLevelConfigurable>true</targetFuelLevelConfigurable>
</li>
<!-- c. 原版的设施链接接收组件 -->
<li Class="CompProperties_AffectedByFacilities">
<linkableFacilities>
<li>ARA_NutrientNetworkTower</li>
<li>ARA_GrowthVat</li>
</linkableFacilities>
</li>
<li Class="ArachnaeSwarm.CompProperties_DelayedTerrainSpawn">
<terrainToSpawn>ARA_InsectCreep</terrainToSpawn>
<spawnRadius>8</spawnRadius>
</li>
</comps>
</ThingDef>
</Defs>