Files
cobblemon-survival-pack/docs/balance.md
T
claudeandClaude Opus 5.5 73fe71918f
CI / build-and-smoke-test (push) Failing after 7m6s
Phase 3: Alpha guardians, one per zone, back 5 hours after a defeat
- Companion mod (zone/Guardians.kt): each zone's guardian stands at the
  zone's sample point, appears when a player is within 96 blocks, stays
  within 24 blocks, is uncatchable and half again as big. Beating it in a
  battle gives every player in the battle its drops; it returns after 5
  hours of game time (Adrian: fixed spots, 5 hours). State lives in the
  world save; /cobblesurvival guardians lists it.
- tools/zone_spawns.py writes data/cobblesurvival/guardians/<zone>.json:
  the strongest walking (or swimming) Pokemon of the zone at band top + 5,
  with the drops from world/zones.json. Boss drops follow Adrian's rule:
  Icy Rocks before Sunscorch, Heat Rocks before Frostpeak.
- Goat Fur and Hoglin Hide recipes make 8 per rock, so one guardian's 3
  rocks pay for one full insulating set.
- Self-test guardian_appears_and_returns; hazard tests cleaned up; the
  zone generator reads Cobblemon's own entries from the field guide's
  hidden_spawns.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 19:01:21 +01:00

6.2 KiB
Raw Blame History

Balance values

Every tunable lives in a config file or in this table. Placeholder means guessed and not yet approved by Adrian; never treat a placeholder as decided.

Value Current Status Where it is applied Notes
Island radius 1,500 blocks Placeholder tools/pokeball_preset.py --radius Test value from the roadmap; final size after Phase 1 review
Poké Ball band 160 blocks wide channel across the middle Placeholder tools/pokeball_preset.py --band
Poké Ball button centre island r 280, ring channel 120 wide Placeholder tools/pokeball_preset.py --button --ring The world spawn lands on the button
Coastline roughness 0.03 (smooth, so the ball reads as a circle) Placeholder tools/pokeball_preset.py
Raw ore blocks in structures raw iron → tuff, raw copper → terracotta, raw gold → yellow terracotta Placeholder tools/clean_structures.py (RAW) Look-alikes only; ores in structures become stone/deepslate/netherrack
World seed chosen by tools/seed_search.py Placeholder world/world.json Decides where each biome lands on the island
Seed-search targets ≥5% land share per surface biome (3% for cherry grove, mangrove swamp, windswept hills, jagged peaks); no biome above 35%; gentle land within 350 blocks of 0,0 Placeholder tools/seed_search.py Scoring weights, not gameplay values
Revival Charm recipe 2 gold ingots, 2 Revives, 1 Max Revive (shaped) Decided (Adrian, 2026-10-29) kubejs/server_scripts/revival_charm.js Meant to be expensive; gold comes from veins (Phase 4) and loot chests
Healing Machine recipe 3 gold ingots, 4 iron ingots, 1 Max Revive, 1 diamond (shaped; Cobblemon: 3 copper, 4 iron, Max Revive, redstone) Decided (Adrian, 2026-10-29) kubejs/server_scripts/healing_machine.js Roadmap: make Healing Machines expensive
Healing Machine recharge 3,600 s from empty to full (6 charge, one per full Pokémon heal; Cobblemon: 900 s) Decided (Adrian, 2026-10-29) config/cobblemon/main.json → secondsToChargeHealingMachine So a machine heals a full party about once an hour of play
Fainted Pokémon auto-recovery never (defaultFaintTimer 1e9 s) Decided (permadeath) config/cobblemon/main.json
Zone level bands Button Isle 2–10, Southwold 8–18, Westmarch 15–25, Verdant Jungle 18–30, Highland Meadows 25–35, Mangrove Mire 25–38, Sunscorch 30–45, Frostpeak 40–55, Shallows 5–20, Deep Sea 30–50, Lush Caves 12–28, Dripstone 22–38, Deep Dark 45–60, Basalt Furnace 55–70 Placeholder world/zones.json → levels, then tools/zone_layout.py and tools/zone_spawns.py Zone shapes approved (Adrian, 2026-10-29)
Evolution lines per zone (targets) 15–35 per zone, scaled to the 377 lines available Placeholder world/zones.json → lines Result per zone in docs/zone-species.md
Lines pinned to a zone Durant, Torkoal, Heatmor → Basalt Furnace Placeholder world/zones.json → species Basalt's own lines were all too big for its caves
Comfortable temperature range 0.25–1.51 (Cold Sweat units; Cold Sweat: 0.4–1.51) Placeholder config/coldsweat/main.toml Keeps the lowlands' nights livable without gear
Windswept hills temperature 45–72 °F (Cold Sweat: 24–58 °F) Placeholder config/coldsweat/world.toml They lie in the starter lowlands too
Insulating armour fur set (cold 10/14/12/10), hide set (heat 10/14/12/10), as Cold Sweat; leather armour none (Cold Sweat: 5/7/6/5 both) Placeholder config/coldsweat/item.toml Frostpeak at noon: about 1 min bare, 14 min in fur; Sunscorch at noon: about 2 min bare, 25 min in hide
Sewn-in insulation goat fur 2 cold, hoglin hide 2 heat, wool 0.5 cold, leather 0.5/0.5 (Cold Sweat: wool 1.5, leather 1/1, rabbit hide 1.5 heat) Placeholder config/coldsweat/item.toml
Goat Fur / Hoglin Hide recipes 8 wool + 1 Heat Rock → 8 Goat Fur; 8 leather + 1 Icy Rock → 8 Hoglin Hide (a set takes 24) Placeholder kubejs/server_scripts/insulation.js Heat and Icy Rocks come from the guardians before Frostpeak and Sunscorch (archaeology finds too)
Guardian respawn 5 hours of game time after being beaten Decided (Adrian, 2026-10-29) world/zones.json → guardian_respawn_hours Fixed spots
Guardian strength strongest Pokémon spawning in the zone, band top + 5 levels, 1.5× size, uncatchable Placeholder tools/zone_spawns.py (GUARDIAN_*), world/zones.json → guardian.species
Guardian drops Button Isle 10 Poké Balls + 4 Potions; Southwold 6 Great Balls + 4 Exp. Candy S; Westmarch and Jungle 8 Pecha Berries + 2 Exp. Candy M; Mire and Highlands 3 Icy Rocks + 4 Super Potions; Sunscorch 3 Heat Rocks + 2 Exp. Candy L; Frostpeak and Deep Dark 3 Icy Rocks + 2 Exp. Candy L; Deep Sea Mystic Water + 3 Exp. Candy M Placeholder world/zones.json → guardian.drops 3 rocks make one full fur or hide set
Healing while sleeping off (healPercent 0) Decided (roadmap) config/cobblemon/main.json
Loot container refresh 1 hour (72,000 ticks of game time) after first opened, all containers Decided (Adrian, 2026-10-29) config/lootr-common.toml Tiering by structure/biome later
Gamerules in the template doMobSpawning false Decided (Adrian, 2026-10-28; may be reverted later) world/world.json → gamerules Pokémon spawning is Cobblemon's own doPokemonSpawning
Border margin 96 blocks of sea past the outermost coast Placeholder world/world.json
Pregeneration circle radius 1,700 around 0,0 Tooling world/world.json Must cover the land plus border_margin; make_world.py stops if it doesn't
Server heap for smoke test 4 GB Tooling tools/smoke_test.py Not a gameplay value
Dev client heap (Prism) 6 GB Tooling tools/prism_instance.py --memory Not a gameplay value

Sections to fill as phases land: zone level bands (Phase 3), drop rates and drop → consumer list (Phase 4), vein regeneration timers (Phase 4), pasture job cooldowns (Phase 4), hazard damage (Phase 3), field-move cooldowns and caps (Phase 5), machine output (Phase 6), boss attack damage and telegraph times (Phase 7).