Raise speed cap to 100x and increase base growth/recovery rates

- /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 <noreply@anthropic.com>
This commit is contained in:
George
2026-06-07 22:22:05 +01:00
parent 66dc2f336a
commit 1727c3a406
4 changed files with 9 additions and 9 deletions
@@ -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;
@@ -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);
@@ -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.
@@ -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;