Phase 9: reproducible builds, balance from the server, spark check, play feedback
Build: every tool pinned (JDK, packwiz, Gradle plugins, Python packages), exports normalised, tools/check_reproducible.py proves two clean builds are byte-identical. Server-side balance: a server can load config/cobblesurvival/datapack.zip in place of the jar's data, /reload applies it, tools/server_update.py packages it and refuses when a client change is needed. JEI drop pages are sent by the server. Code-held balance numbers moved to tuning/server.json. Performance: spark in the pack (server only), tools/perf_test.py with fake players whose chunks really are active, docs/performance.md. Adrian's feedback: default keys R, U, J, §; drop pages link to Cobblemon Info and show real chances; bosses only hurt in battles; battle XP halved; channels between the islands low level; temperature ×3 with insulation doubled; hazards start at once; no item dots on the map; a wild attack starts a battle; the starter only faints; quest book on join with a basics page and an HMs page; regional forms obtainable. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
0741c84077
commit
4083791944
133 files changed
+8350
-3273
No files matched your search
+13
-2
@@ -1,6 +1,6 @@
|
||||
# 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.
|
||||
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. Anything applied in `datapacks/core`, `config/` or a KubeJS server script can be changed on a running server without players updating: see "Balancing on a running server" in the README.
|
||||
|
||||
| Value | Current | Status | Where it is applied | Notes |
|
||||
| --- | --- | --- | --- | --- |
|
||||
@@ -20,7 +20,7 @@ Every tunable lives in a config file or in this table. **Placeholder** means gue
|
||||
| Lines pinned to a zone | Durant, Torkoal, Heatmor → Basalt Furnace; Ditto → Deep Dark, rare bucket in slime chunks and ultra-rare elsewhere (Placeholder; Adrian, 2026-10-31: rare, in an endgame area) | Decided (Adrian, 2026-10-30) | `world/zones.json` → `species` | Basalt's own lines were all too big for its caves. Ditto breeds with anything, so it's an endgame find; Deep Dark target 21 lines, Button Isle 19, so nothing else moved |
|
||||
| Comfortable temperature range | 0.25–1.51 (Cold Sweat units; Cold Sweat: 0.4–1.51) | Decided (Adrian, 2026-10-30) | `config/coldsweat/main.toml` | Keeps the lowlands' nights livable without gear |
|
||||
| Windswept hills temperature | 45–72 °F (Cold Sweat: 24–58 °F) | Decided (Adrian, 2026-10-30) | `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) | Decided (Adrian, 2026-10-30) | `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 |
|
||||
| Insulating armour | fur set (cold 20/28/24/20), hide set (heat 20/28/24/20), twice Cold Sweat's, to keep the protected time when body temperature went ×3 (2026-11-09); leather armour none (Cold Sweat: 5/7/6/5 both) | Decided (Adrian, 2026-10-30) | `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) | Decided (Adrian, 2026-10-30) | `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) | Decided (Adrian, 2026-10-30) | `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 |
|
||||
@@ -82,3 +82,14 @@ Every tunable lives in a config file or in this table. **Placeholder** means gue
|
||||
| Dev client heap (Prism) | 6 GB | Tooling | `tools/prism_instance.py --memory` | Not a gameplay value |
|
||||
|
||||
Sections to fill as phases land: hazard damage (Phase 3), field-move cooldowns and caps (Phase 5), machine output (Phase 6), boss attack damage and telegraph times (Phase 7).
|
||||
| Boss training | 170 EVs each in HP, Defense, Sp. Def | Placeholder | `tuning/server.json` → `boss_evs` | |
|
||||
| Guardian and End boss wake range, leash | guardians 96 / 24 blocks, End boss 160 / 24 | Placeholder | `tuning/server.json` | |
|
||||
| Summon spacing | one summoned legend per 96 blocks | Placeholder | `tuning/server.json` → `summon_spacing` | |
|
||||
| Wanderer range | 64 blocks | Placeholder | `tuning/server.json` → `wanderer_range` | |
|
||||
| Battle XP | ×1 (Cobblemon: ×2), half of before (Adrian, 2026-11-09) | Placeholder | `config/cobblemon/main.json` → `experienceMultiplier` | |
|
||||
| Body temperature speed | ×3 (Cold Sweat: ×1), so heat and cold bite sooner (Adrian, 2026-11-09) | Placeholder | `config/coldsweat/main.toml` → `Rate Multiplier` | |
|
||||
| Attacked by a wild Pokémon | starts a battle instead of hurting; a player with no Pokémon able to fight is hurt (Adrian, 2026-11-09) | Decided | `catching/AttackBattles.kt`; after fleeing 5 s of grace: `tuning/server.json` → `attack_battle_grace_ticks` | |
|
||||
| Bosses' damage | only from battles; players, fire, falls and drowning do nothing (Adrian, 2026-11-09) | Decided | `boss/BossToughness.kt` | |
|
||||
| Sea levels | channels between the islands are Shallows (Lv 5–20), everything beyond 1,500 blocks from the centre is Deep Sea (Lv 30–50) (Adrian, 2026-11-09) | Decided | `world/zones.json` → `deep_sea.rule.beyond` | Run `tools/zone_layout.py`, `zone_spawns.py`, `zone_bosses.py`, `zone_ores.py` after changing it |
|
||||
| Starter | only faints: never removed, can't be released or sacrificed, a Revival Charm on it isn't used up (Adrian, 2026-11-09) | Decided | `permadeath/Permadeath.kt`, `mixin/HardcorePartyMixin.java` | Cobblemon's own record of each player's starter |
|
||||
| Regional forms | a rare spawn (`homeless`) unless a line or an evolution brings them; Galarian Zapdos, Articuno, Moltres from Sigils, tier 2 (Adrian, 2026-11-09) | Placeholder | `world/zones.json` → `homeless.zones`, `world/summons.json` | Five regional evolutions got an island biome: `data/cobblemon/tags/worldgen/biome/evolution/regional/` |
|
||||
Reference in new issue
Block a user