From c71026fd9459bda09db33c1644b075d5518009cb Mon Sep 17 00:00:00 2001 From: beezm Date: Sat, 8 Aug 2026 18:00:21 -0400 Subject: [PATCH] =?UTF-8?q?feat:=20task-09=20verdict=20=E2=80=94=20BALANCE?= =?UTF-8?q?D=20becomes=20plain=20"v5",=20COMPACT=20retires=20(terrain-wate?= =?UTF-8?q?r=20task=2010=20prerequisite)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The documented one-liner the task-09 gate triggers: TerrainCurve gate is now "off"|"v5" (default v5 = the BALANCED preset, id 2); "v5-compact" retired with a verdict-specific error, "v5-balanced" redirects to plain "v5". Knots/TCRV encoding unchanged. Co-Authored-By: Claude Fable 5 --- Core/Scripts/ConfigManager.cs | 21 ++++++++++++--------- Tools/Scripts/HeightCurve.cs | 7 +++---- Tools/Scripts/MapGenerator.cs | 4 +--- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Core/Scripts/ConfigManager.cs b/Core/Scripts/ConfigManager.cs index 4d13fa4..c9a0033 100644 --- a/Core/Scripts/ConfigManager.cs +++ b/Core/Scripts/ConfigManager.cs @@ -26,13 +26,12 @@ namespace IslaApocalypse.Core // Change this if your namespace is different public static string SeaLevelModel = "flat"; public static float SeaLevelValue = 0.15f; - // Height-redistribution curve (tasks 05–09, graduation M-7): the task-09 taste - // batch runs a tri-state — "v5-compact" (maximum lowland) vs "v5-balanced" - // (task-07/08 lineage), both with the corner fixes; "off" is the raw legacy - // profile. The loser retires after the developer's gate and the winner becomes - // plain "v5". "v1"–"v4" retired. INTERIM default pending the verdict: - // v5-balanced. - public static string TerrainCurve = "v5-balanced"; + // Height-redistribution curve (tasks 05–10, graduation M-7): "v5" is the + // task-09 gate's winner — the BALANCED terraced ascent with corner easing and + // modulated shelves; "off" is the raw legacy profile. "v1"–"v4" and the + // taste-batch tri-state ("v5-compact" lost, "v5-balanced" became plain "v5") + // are retired. Default: v5. + public static string TerrainCurve = "v5"; public static void LoadConfig() { @@ -107,10 +106,14 @@ namespace IslaApocalypse.Core // Change this if your namespace is different if (data.ContainsKey("TerrainCurve")) { string curve = (string)data["TerrainCurve"]; - if (curve == "off" || curve == "v5-compact" || curve == "v5-balanced") + if (curve == "off" || curve == "v5") TerrainCurve = curve; + else if (curve == "v5-balanced") + GD.PrintErr($"[ConfigManager] TerrainCurve 'v5-balanced' won the task-09 gate and is now plain \"v5\". Keeping '{TerrainCurve}'."); + else if (curve == "v5-compact") + GD.PrintErr($"[ConfigManager] TerrainCurve 'v5-compact' was retired by the task-09 verdict (BALANCED won). Keeping '{TerrainCurve}' — use \"v5\" or \"off\"."); else if (curve == "v1" || curve == "v2" || curve == "v3" || curve == "v4") - GD.PrintErr($"[ConfigManager] TerrainCurve '{curve}' was retired by a later recalibration (v5, task 09). Keeping '{TerrainCurve}' — use \"v5-compact\", \"v5-balanced\" or \"off\"."); + GD.PrintErr($"[ConfigManager] TerrainCurve '{curve}' was retired by a later recalibration (v5, tasks 09/10). Keeping '{TerrainCurve}' — use \"v5\" or \"off\"."); else GD.PrintErr($"[ConfigManager] Unknown TerrainCurve '{curve}'. Keeping '{TerrainCurve}'."); } diff --git a/Tools/Scripts/HeightCurve.cs b/Tools/Scripts/HeightCurve.cs index 65916b9..2e18ab0 100644 --- a/Tools/Scripts/HeightCurve.cs +++ b/Tools/Scripts/HeightCurve.cs @@ -47,10 +47,9 @@ public static class HeightCurve { public const ushort VERSION = 5; - public static readonly CurveKnots COMPACT = new CurveKnots(1, "compact", - 0.550982f, 0.646528f, 0.723145f, 0.784045f, 0.903025f, 1.003079f); // P65/77/84/88/94/97 - - public static readonly CurveKnots BALANCED = new CurveKnots(2, "balanced", + // The task-09 taste gate's WINNER: BALANCED (id 2). COMPACT retired with the + // verdict; its knots survive only in the task-09 report/batch for the record. + public static readonly CurveKnots V5 = new CurveKnots(2, "balanced", 0.515899f, 0.612157f, 0.710472f, 0.784045f, 0.962922f, 1.119118f); // P60/73/83/88/96/99 // Fixed output anchors — storm ladder + ceiling (frozen). diff --git a/Tools/Scripts/MapGenerator.cs b/Tools/Scripts/MapGenerator.cs index b7e3dc6..961b38a 100644 --- a/Tools/Scripts/MapGenerator.cs +++ b/Tools/Scripts/MapGenerator.cs @@ -88,9 +88,7 @@ public partial class MapGenerator : TextureRect this.CustomMinimumSize = new Vector2(MapSize, MapSize); _heightMap = new float[MapSize, MapSize]; - _curveKnots = ConfigManager.TerrainCurve == "v5-compact" ? HeightCurve.COMPACT - : ConfigManager.TerrainCurve == "v5-balanced" ? HeightCurve.BALANCED - : null; + _curveKnots = ConfigManager.TerrainCurve == "v5" ? HeightCurve.V5 : null; _curveOn = _curveKnots != null; // (The monotonicity assertion now runs inside GenerateTopography, against the // effective per-seed curve, once hMaxSeed is known.)