fix Chapter_DealLevelSettlement

This commit is contained in:
Kei-Luna
2026-05-24 07:47:52 +09:00
parent 4fdd093644
commit bc399f6afe

View File

@@ -45,7 +45,8 @@ public class Chapter_DealLevelSettlement : ICallGSHandler
if (string.Equals(sCmd, "BossPvpLogic_LevelSettlement", StringComparison.Ordinal)) if (string.Equals(sCmd, "BossPvpLogic_LevelSettlement", StringComparison.Ordinal))
{ {
var (response, sync) = BossPvpService.HandleSettlement(connection.Player!, tbParam); var normalized = NormalizeBossPvpSettlement(tbParam);
var (response, sync) = BossPvpService.HandleSettlement(connection.Player!, normalized);
extraSync = sync; extraSync = sync;
return response; return response;
} }
@@ -66,6 +67,22 @@ public class Chapter_DealLevelSettlement : ICallGSHandler
return tbParam?.DeepClone() ?? new JsonObject(); return tbParam?.DeepClone() ?? new JsonObject();
} }
private static JsonNode? NormalizeBossPvpSettlement(JsonNode? tbParam)
{
if (tbParam is not JsonObject obj)
return tbParam;
var clone = obj.DeepClone() as JsonObject ?? obj;
if (clone.TryGetPropertyValue("ResidueTime", out var residueNode) &&
residueNode is JsonValue residueValue &&
residueValue.TryGetValue<double>(out var residueTime))
{
clone["ResidueTime"] = (int)Math.Max(0, Math.Round(residueTime, MidpointRounding.AwayFromZero));
}
return clone;
}
} }
internal sealed class DealLevelSettlementParam internal sealed class DealLevelSettlementParam