diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index cc0ab20..02b820c 100644 Binary files a/1.6/1.6/Assemblies/ArachnaeSwarm.dll and b/1.6/1.6/Assemblies/ArachnaeSwarm.dll differ diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.pdb b/1.6/1.6/Assemblies/ArachnaeSwarm.pdb index 8e6861b..49bfb77 100644 Binary files a/1.6/1.6/Assemblies/ArachnaeSwarm.pdb and b/1.6/1.6/Assemblies/ArachnaeSwarm.pdb differ diff --git a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs index 7d4a4b4..2368112 100644 --- a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs +++ b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs @@ -809,50 +809,98 @@ private void CalculateAutoFlux() // 计算进度百分比 float incubationPercent = incubationDuration > 0 ? incubationProgress / incubationDuration : 0f; float qualityPercent = qualityTotal > 0 ? qualityProgress / qualityTotal : 0f; + float gap = qualityPercent - incubationPercent; // 正=品质领先,负=品质落后 switch (fluxMode) { case FluxMode.Quality: - // 品质优先:低活性,追求100%品质 - targetFlux = 0.3f; - // 品质已满时加速 - if (qualityPercent >= 0.95f) targetFlux = 0.8f; + // 品质优先:确保品质始终领先于孵化进度 + // 目标:品质 >= 孵化进度 + 10% + if (qualityPercent >= 0.98f) + { + // 品质已满,全速 + targetFlux = 1.0f; + } + else if (gap > 0.2f) + { + // 品质大幅领先,可以加速 + targetFlux = 0.6f; + } + else if (gap > 0.1f) + { + // 品质小幅领先 + targetFlux = 0.45f; + } + else if (gap > 0f) + { + // 品质略微领先 + targetFlux = 0.35f; + } + else + { + // 品质落后或持平,放慢追品质 + targetFlux = 0.2f; + } break; case FluxMode.Speed: - // 速度优先:高活性,快速完成 - targetFlux = 0.9f; - // 资源紧张时稍微降低 - if (FuelComp != null && FuelComp.Fuel < 5f) targetFlux = 0.6f; + // 速度优先:尽快完成孵化,允许品质落后 + // 目标:最大化速度,只在品质太低时稍微降速 + if (qualityPercent >= 0.95f) + { + // 品质已满 + targetFlux = 1.0f; + } + else if (qualityPercent < 0.3f && incubationPercent > 0.5f) + { + // 品质太低且孵化过半,稍微降速 + targetFlux = 0.7f; + } + else if (qualityPercent < 0.2f && incubationPercent > 0.7f) + { + // 品质极低且快完成,降速救品质 + targetFlux = 0.5f; + } + else + { + // 正常全速 + targetFlux = 1.0f; + } break; case FluxMode.Balance: default: - // 平衡模式:动态调整,追求两者同时完成 - targetFlux = 0.5f; - - if (isIncubating) + // 平衡模式:追求品质和孵化同时完成 + // 目标:gap ≈ 0 + if (qualityPercent >= 0.95f) { - // 品质已满时全速 - if (qualityPercent >= 0.95f) - { - targetFlux = 1.0f; - } - // 孵化快完成但品质不够,降速追品质 - else if (incubationPercent > 0.8f && qualityPercent < 0.6f) - { - targetFlux = 0.25f; - } - // 品质落后,降速 - else if (qualityPercent < incubationPercent - 0.15f) - { - targetFlux = 0.35f; - } - // 品质领先,加速 - else if (qualityPercent > incubationPercent + 0.1f) - { - targetFlux = 0.7f; - } + // 品质已满,全速 + targetFlux = 1.0f; + } + else if (gap > 0.15f) + { + // 品质大幅领先,加速孵化 + targetFlux = 0.8f; + } + else if (gap > 0.05f) + { + // 品质小幅领先 + targetFlux = 0.6f; + } + else if (gap > -0.05f) + { + // 接近平衡 + targetFlux = 0.5f; + } + else if (gap > -0.15f) + { + // 品质小幅落后 + targetFlux = 0.35f; + } + else + { + // 品质大幅落后,降速追品质 + targetFlux = 0.2f; } break; }