Skip to content

ppVon/ultimate-cobblemon-progression

Repository files navigation

Ultimate Cobblemon Progression

A Fabric Cobblemon side-mod that introduces a Trainer Level progression system, adding a sense of growth and scaling to wild Pokémon encounters. As your trainer level increases, new species become available in the wild, and spawn levels and weights are dynamically influenced by your progression tier.


Overview

Ultimate Cobblemon Progression (UCP) introduces a player-bound Trainer Level that directly affects Pokémon spawning behavior, rarity, and strength.
This system aims to make the world feel more progressive — starting with early‑route Pokémon and gradually unlocking stronger species as your trainer grows.

UCP works through two main parts:

  • Trainer Level Component — stores the player’s trainer level.
  • Trainer Level Influence — modifies spawnability, weights, and level distributions using the player’s tier.

Note: Natural trainer‑leveling is not implemented yet. Use commands for now:

/trainerlevel set <level>

Features

Trainer Level → Progression Tier

Your trainer level maps to a progression tier (defined in data). Tiers control which Pokémon can spawn, what level they spawn at, and what level party pokemon can achieve.

Spawnability (Tier‑Gated Species)

  • Tier files define what species unlock at each tier.
  • If a species is not found in any tier, the spawn is blocked by default (see config to allow unknown species).

Spawn Weight Scaling

  • Pokémon in your current tier get a weight buff.
  • Pokémon below your tier get a per‑tier decay to their weight, but never below a minimum.

The general weight-scaling formula is:

newWeight = baseWeight × max(1 − (tierDifference × WEIGHT_DECAY_PER_TIER), WEIGHT_MIN_FACTOR)

Example:

  • Pokemon Tier: 1
  • Pokemon Weight: 300
  • Player Level: 5
  • WEIGHT_DECAY_PER_TIER = 0.20 (default)
  • WEIGHT_MIN_FACTOR = 0.15 (default)
New weight = 300 × (1 − (4 × 0.20)) = 60  (doesn’t drop below 0.15×)

Level Scaling

Wild Pokémon levels use a triangle distribution centered near the tier’s level cap. The curve edges and center are controlled by min/avg/max scaling ratios.
Lower‑tier species get a cap boost when the player is much higher tier (so low‑tier spawns don’t stay permanently low level), but they still remain weaker than higher‑tier species.

capBoost = (playerTierCap - pokemonTierCap) * TIER_CAP_SCALING
newBaseLevel = pokemonTierCap + capBoost

minLevel = MIN_LEVEL_SCALING * newBaseLevel
avgLevel = AVG_LEVEL_SCALING * newBaseLevel
maxLevel = MAX_LEVEL_SCALING * newBaseLevel

Example:

  • Pokemon's tier cap: 15
  • Player's tier cap (at trainer level 5): 69
  • TIER_CAP_SCALING = 0.25 (defult)
  • MIN_LEVEL_SCALING = 0.45 (default)
  • AVG_LEVEL_SCALING = 0.75 (default)
  • MAX_LEVEL_SCALING = 1.1 (default)
capBoost = (69 - 15) * 0.25 ~= 14
newBaseLevel = 15 + 14 = 29

minLevel = 0.45 * 29 ~= 13
avgLevel = 0.75 * 29 ~= 22
maxLevel = 1.1 * 29 ~= 32

With defaults, Tier‑1 spawns (at player Tier 5) land roughly 13–32, avg ~22.


Data / Datapack Integration

Tiers and unlock lists are defined via datapack JSON. A typical layout is:

data/ultimate-cobblemon-progression/tiers/
  tier_1.json
  tier_2.json
  ...

Example tier_3.json:

{
  "levelCap": 10,
  "requirements": {
    "dex": {
      "seen": 80,
      "caught": 20
    }
  },
  "species": [
    "cobblemon:pidgeotto",
    "cobblemon:mankey",
    "cobblemon:nidorino",
    ...
  ]
}

You can structure tiers as you like per namespace; the mod only requires that it can resolve a tier → species list and a level cap for that tier.

The default tiers are auto-generated via a script that organizes mons by Base Stat Total:

Tier Boundaries (BST Range) Pokémon Count Level cap
1 [175, 305] 214 15
2 (305, 354] 186 27
3 (354, 440] 200 40
4 (440, 475] 214 54
5 (475, 500] 186 69
6 (500, 570] 244 85
7 (570, 1125] 155 100

The default data includes species from the following addons and sidemods, but the mod itself does not require them:

  • Myths and Legends
  • Complete Cobblemon Collection + Myths and Legends
  • Mega Showdown
  • MysticMons

And some fun stats about Pokemon BST:

Total Pokémon: 1399

Metric Value
BST Range 175 – 1125
Mean 442.62
Median 472.00
Standard Deviation 116.98

Percentiles

Percentile BST
10th 290
25th 336
50th (Median) 472
75th 514
90th 580

Commands

/trainerlevel set <level> (requires op level 2)
/trainerlevel get

About

Progression sidemod for Cobblemon

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages