From 1727c3a406b115931c52b6efcfe371325c96f195 Mon Sep 17 00:00:00 2001 From: George Date: Sun, 7 Jun 2026 22:22:05 +0100 Subject: [PATCH] Raise speed cap to 100x and increase base growth/recovery rates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - /lw speed now accepts 1-100 (was 1-20) - Vegetation growth rates 4x faster: grass 0.015→0.06, flowers 0.008→0.03, shrubs 0.005→0.02, trees 0.002→0.008. Previously grass alone took ~200 cycles to unlock shrub growth; now ~50 cycles. - Recovery base progress 0.5→2.0/cycle, health bonus 0.02→0.05/cycle. Each succession stage now advances in ~50 good cycles instead of ~200. At /lw speed 100 with good soil+water conditions set via /lw set, full BARREN→MATURE_FOREST succession completes in well under a minute. Co-Authored-By: Claude Sonnet 4.6 --- .../com/livingworld/bootstrap/LivingWorldBootstrap.java | 4 ++-- .../com/livingworld/commands/LivingWorldCommandRoot.java | 2 +- .../com/livingworld/modules/recovery/RecoveryModule.java | 4 ++-- .../livingworld/modules/vegetation/VegetationModule.java | 8 ++++---- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/livingworld/bootstrap/LivingWorldBootstrap.java b/src/main/java/com/livingworld/bootstrap/LivingWorldBootstrap.java index 3864cde..f076419 100644 --- a/src/main/java/com/livingworld/bootstrap/LivingWorldBootstrap.java +++ b/src/main/java/com/livingworld/bootstrap/LivingWorldBootstrap.java @@ -369,9 +369,9 @@ public final class LivingWorldBootstrap { applyDynamicCapUpdate(); } - /** Sets the simulation speed multiplier (1 = real-time, max 20). */ + /** Sets the simulation speed multiplier (1 = real-time, max 100). */ public int setSimSpeedMultiplier(int multiplier) { - this.simSpeedMultiplier = Math.max(1, Math.min(20, multiplier)); + this.simSpeedMultiplier = Math.max(1, Math.min(100, multiplier)); LivingWorldLogger.info(DiagnosticCategory.BOOTSTRAP, "Simulation speed set to " + simSpeedMultiplier + "x"); return this.simSpeedMultiplier; diff --git a/src/main/java/com/livingworld/commands/LivingWorldCommandRoot.java b/src/main/java/com/livingworld/commands/LivingWorldCommandRoot.java index f256ac8..d039888 100644 --- a/src/main/java/com/livingworld/commands/LivingWorldCommandRoot.java +++ b/src/main/java/com/livingworld/commands/LivingWorldCommandRoot.java @@ -126,7 +126,7 @@ public final class LivingWorldCommandRoot { return 1; })) .then(Commands.literal("speed") - .then(Commands.argument("multiplier", IntegerArgumentType.integer(1, 20)) + .then(Commands.argument("multiplier", IntegerArgumentType.integer(1, 100)) .executes(context -> { int n = IntegerArgumentType.getInteger(context, "multiplier"); int actual = speedSetter.applyAsInt(n); diff --git a/src/main/java/com/livingworld/modules/recovery/RecoveryModule.java b/src/main/java/com/livingworld/modules/recovery/RecoveryModule.java index fadf0ea..f595f65 100644 --- a/src/main/java/com/livingworld/modules/recovery/RecoveryModule.java +++ b/src/main/java/com/livingworld/modules/recovery/RecoveryModule.java @@ -42,9 +42,9 @@ public final class RecoveryModule implements SimulationModule { public static final String MODULE_ID = "recovery"; /** Base recovery progress per tick (added when conditions are met). */ - private static final double BASE_PROGRESS_PER_TICK = 0.5; + private static final double BASE_PROGRESS_PER_TICK = 2.0; /** Extra recovery progress per point of ecosystemHealth above 50. */ - private static final double HEALTH_PROGRESS_BONUS = 0.02; + private static final double HEALTH_PROGRESS_BONUS = 0.05; /** Damage accumulated per tick when conditions are badly violated. */ private static final double DAMAGE_PER_BAD_TICK = 5.0; /** Damage decays this fraction per tick when conditions are OK. diff --git a/src/main/java/com/livingworld/modules/vegetation/VegetationModule.java b/src/main/java/com/livingworld/modules/vegetation/VegetationModule.java index d28e24d..90f6b35 100644 --- a/src/main/java/com/livingworld/modules/vegetation/VegetationModule.java +++ b/src/main/java/com/livingworld/modules/vegetation/VegetationModule.java @@ -45,10 +45,10 @@ public final class VegetationModule implements SimulationModule { private static final double TREE_UNLOCK_SHRUB = 40.0; // --- growth rates per tick --- - private static final double GRASS_GROWTH_RATE = 0.015; - private static final double FLOWER_GROWTH_RATE = 0.008; - private static final double SHRUB_GROWTH_RATE = 0.005; - private static final double TREE_GROWTH_RATE = 0.002; + private static final double GRASS_GROWTH_RATE = 0.06; + private static final double FLOWER_GROWTH_RATE = 0.03; + private static final double SHRUB_GROWTH_RATE = 0.02; + private static final double TREE_GROWTH_RATE = 0.008; // --- die-off thresholds --- private static final double DIEOFF_SOIL_THRESHOLD = 20.0;