diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index bd681c5..3af92f5 100644 Binary files a/1.6/1.6/Assemblies/ArachnaeSwarm.dll and b/1.6/1.6/Assemblies/ArachnaeSwarm.dll differ diff --git a/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/Building_EquipmentOotheca.cs b/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/Building_EquipmentOotheca.cs index 763878f..0af84f4 100644 --- a/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/Building_EquipmentOotheca.cs +++ b/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/Building_EquipmentOotheca.cs @@ -8,7 +8,7 @@ using System; namespace ArachnaeSwarm { - public class Building_EquipmentOotheca : Building, IFluxController, ILarvaActivatable, IOrderGizmoProvider + public class Building_EquipmentOotheca : Building, IFluxController, ILarvaActivatable, IOrderGizmoProvider, IIncubationState { // === 通量系统字段 === private float neutronFlux = 0.5f; @@ -71,6 +71,12 @@ namespace ArachnaeSwarm public float QualityPercent => qualityTotal > 0 ? qualityProgress / qualityTotal : 0f; public float AdjustedProgressPercent => IncubationProgress; + // IIncubationState 接口实现 + float IIncubationState.IncubationProgress { get => incubationProgress; set => incubationProgress = value; } + float IIncubationState.IncubationDuration => incubationDuration; + float IIncubationState.QualityProgress { get => qualityProgress; set => qualityProgress = value; } + float IIncubationState.QualityTotal => qualityTotal; + public float SpeedMultiplier { get @@ -230,13 +236,8 @@ namespace ArachnaeSwarm } else { - // 进度增长 - float fluxSpeed = SpeedMultiplier * FluxEfficiency * 5f; - incubationProgress += fluxSpeed; - - // 品质增长(新公式:50%通量时与进度同步) - float qualityGain = IncubatorUtils.CalculateQualityGainNew(fluxSpeed, neutronFlux); - qualityProgress = Mathf.Min(qualityProgress + qualityGain, qualityTotal); + // 使用统一工具方法处理进度和品质 + IncubatorUtils.TickIncubation(this, SpeedMultiplier, neutronFlux, false); } if (incubationProgress >= incubationDuration) diff --git a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs index e6c472e..870e5d8 100644 --- a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs +++ b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs @@ -8,7 +8,7 @@ using Verse.AI; namespace ArachnaeSwarm { - public class Building_Ootheca : Building, IFluxController, ILarvaActivatable, IOrderGizmoProvider + public class Building_Ootheca : Building, IFluxController, ILarvaActivatable, IOrderGizmoProvider, IIncubationState { // === 通量系统字段 === private float neutronFlux = 0.5f; @@ -86,6 +86,12 @@ namespace ArachnaeSwarm public float QualityPercent => qualityTotal > 0 ? qualityProgress / qualityTotal : 0f; public float AdjustedProgressPercent => incubationDuration > 0 ? incubationProgress / incubationDuration : 0f; + // IIncubationState 接口实现 + float IIncubationState.IncubationProgress { get => incubationProgress; set => incubationProgress = value; } + float IIncubationState.IncubationDuration => incubationDuration; + float IIncubationState.QualityProgress { get => qualityProgress; set => qualityProgress = value; } + float IIncubationState.QualityTotal => qualityTotal; + // === IOrderGizmoProvider 实现 === private float gizmoScrollPosition = 0f; public float GizmoScrollPosition { get => gizmoScrollPosition; set => gizmoScrollPosition = value; } @@ -335,14 +341,8 @@ namespace ArachnaeSwarm } else { - // 进度增长 - float fluxSpeed = SpeedMultiplier * FluxEfficiency * 5f; - incubationProgress += fluxSpeed; - - // 品质增长(新公式:50%通量时与进度同步) - float qualityGain = IncubatorUtils.CalculateQualityGainNew(fluxSpeed, neutronFlux); - // 不限制上限,允许超过100%(最高150%) - qualityProgress += qualityGain; + // 使用统一工具方法处理进度和品质 + IncubatorUtils.TickIncubation(this, SpeedMultiplier, neutronFlux, false); } if (incubationProgress >= incubationDuration) diff --git a/Source/ArachnaeSwarm/Buildings/IncubatorUtils.cs b/Source/ArachnaeSwarm/Buildings/IncubatorUtils.cs index b207e4b..59f8dbf 100644 --- a/Source/ArachnaeSwarm/Buildings/IncubatorUtils.cs +++ b/Source/ArachnaeSwarm/Buildings/IncubatorUtils.cs @@ -53,7 +53,8 @@ namespace ArachnaeSwarm float qualityGain = CalculateQualityGainNew(progressGain, neutronFlux); state.IncubationProgress += progressGain; - state.QualityProgress = Mathf.Min(state.QualityProgress + qualityGain, state.QualityTotal); + // 不限制上限,允许超过100%(最高150%) + state.QualityProgress += qualityGain; return progressGain; }