The cheat sheet
Scenarios are written your shields - their shields at the moment the fight starts. Two moves matter: your prey move (Dive, or Surf) which loads a fish and arms the free, unshieldable Gulp Missile, and your banked move (Fly on the standard build). "Dive-rush" means throwing the prey move the moment you have the energy, even though Fly hits harder. "Tanking" means deliberately not shielding while you hold a fish, so their hit triggers your missile.
| Start | Move choice | Shielding |
|---|---|---|
| 0-0, 0-1 | Dive-rush only if you win CMP (your Attack stat is higher - the dive pages mark this per IV). If you lose CMP, play normal PvPoke move choices: bank Fly. | You have no shields; nothing to decide. |
| 0-2 | Dive-rush always. | Nothing to decide. |
| 1-0 | No dive-rush - normal PvPoke move choices. | Tank a little more bravely than usual while holding a fish: eat any hit that leaves you above roughly half your current HP. Shield the big stuff. |
| 1-1, 1-2 | Dive-rush always. | Tank hard while holding a fish: eat anything that won't take you below about 30% of your current HP - unless you are far ahead on HP (a lead of 40+ percentage points), in which case shield normally and bank the win. |
| 2-0 | Play plain PvPoke. You are already heavily favored; every tweak we tested here only gave rating back. | |
| 2-1 | Dive-rush only in a narrow window: you win CMP, and all their charged moves are expensive (40+ energy), and they have the energy to fire one right now, and their fast move barely dents you. Otherwise: normal move choices. | Shield normally (PvPoke's rules). |
| 2-2 | Dive-rush always. | The loaded-opponent rule: while holding a fish, refuse the shield (eat hits up to about 60% of your current HP) only while the opponent stays loaded - that is, only if the move they are throwing still leaves them enough energy for another charged move. If this throw empties their bar, take the shield: nothing will punish them for a long time, so the HP buys you nothing. |
Which IVs to build
The short answer: max stat product. Under this plan, the scenario-averaged battle score across all 4096 Great League spreads correlates with stat product at 0.95 (and negatively with attack, -0.74), and the rank-1 stat-product spread 0/14/11 is the outright best build (average score 575.8). The plan's biggest-value scenarios are tank-driven, and tanking loves bulk.
The one tech option: the mirror build. The CMP staircase (next section's plots) means specific attack thresholds buy discrete wins in the CMP-gated scenarios, and the most interesting threshold is the mirror's own attack stat (121.25): rank-1 sits just below it. 2/14/7 (stat-product rank 37, attack 121.48) clears it for about 4.5 points of overall average (0.8%) and converts the Cramorant mirror from 5/9 scenarios won to 7/9 - flipping the 0-0 and 2-1 starts outright - and picks up the Talonflame boundary on the way. Pushing attack higher buys nothing more in the mirror while steadily bleeding bulk, so this is the optimum, not a compromise. Build rank-1 by default; build the mirror tech if you expect Cramorant mirrors.
Why this works (the three mechanisms)
1. The missile is only free if your Dive isn't punished. Dive-rushing trades your efficient Fly for tempo: a fish in the mouth and an unshieldable ~15%-of-their-bar missile with a guaranteed debuff. That trade goes bad exactly when the opponent's own charged move crosses yours - which is why every dive-rush rule above is gated on winning CMP. This is also why the per-IV plots on the dive show two sharp populations: whole IV blocks flip behavior at an Attack breakpoint.
2. A shield you refuse must buy a missile that matters. Tanking converts HP into missile tempo. The HP price is real; the missile's value is capped around 15% of their bar. So the plan tanks hard when the game is close (1-1, 1-2, 2-2), gently when you're a shield up (1-0), and never when you're two shields up on a cornered opponent (2-0, and most of 2-1).
3. Only feed on a loaded opponent. The 2-2 discovery that closed out the tuning campaign: refusing a shield is only profitable while the opponent still has another charged move behind the one you're eating. If their bar is emptying, shield it - you keep the HP and lose nothing, because the missile can wait.
How this relates to PvPoke's plan
We love PvPoke - this project is a Python port of its open-source engine, its data, and its rankings, and its battle AI is the reference we verify against, cell by cell. PvPoke's plan for Cramorant already includes a dive-rush rule and a fish-tanking rule; what this page adds is conditioning: the same two levers, switched per shield scenario, per CMP, and per the opponent's energy state. Where our conditions say "don't", the plan is PvPoke's, unchanged - and in the two scenarios where we couldn't beat it cleanly for every spread (2-0, and most 2-1 situations), the plan simply defers to PvPoke entirely. The one philosophical difference is small and honest: PvPoke optimizes each fight in isolation with a general rule set; we allowed ourselves nine scenario-specific rule rows for one very unusual bird.
See it for yourself, on PvPoke
PvPoke's Sandbox mode replays an exact scripted line instead of its AI - which makes it the perfect neutral referee. For each battle below, the first link is the plain matchup (PvPoke's own plan plays it, and loses); the second is a sandbox link that forces our line, turn for turn. Every link pins the exact IVs and was machine-verified: we decoded each URL the way pvpoke.com's own interface does and ran it through PvPoke's engine, confirming it reproduces our simulator's score, ending HP, shields, and stat stages exactly.
1. Great League vs Azumarill, no shields (494 -> 674)
PvPoke's Cramorant banks to 45 and throws Fly, twice, and loses the race by two HP. The PoGoDives line spends its first 40 energy on Dive instead - Azumarill resists it, so it only chips 22 - but that Dive loads Gulp Missile. Azumarill's Ice Beam then fires the missile for free, and the defense drop it leaves behind turns the closing Fly from 57 damage into 71. Same energy, same number of throws, and Cramorant finishes with 44 HP instead of fainting.
PvPoke's plan (loses, 494) · our line (wins, 674)
2. Great League vs Jellicent, 2-1 (467 -> 666)
PvPoke feeds its first Fly straight into Jellicent's shield, then loses the long game to Shadow Ball. PoGoDives opens with Dive instead: Jellicent has no reason to spend its one shield on a 24-damage throw, so Cramorant gets the gulping form for free. Jellicent's Surf then triggers the missile, and from there Cramorant is throwing cheap Dives that arrive with a defense drop attached while its own two shields cover the answers. It wins with a shield still in hand.
PvPoke's plan (loses, 467) · our line (wins, 666)
3. Ultra League vs Blastoise, 2-2 (427 -> 541)
The shield-heavy version. PvPoke pumps both of Cramorant's Flys into Blastoise's shields, runs out of resources, and gets closed out by Skull Bash. PoGoDives never offers Blastoise a big hit to shield: it dives, deliberately takes the Hydro Cannon in gulping form to fire the missile, and then spends the rest of the fight making Blastoise burn both shields on 22-damage Dives. The last Dive lands for the KO with 13 HP to spare.
PvPoke's plan (loses, 427) · our line (wins, 541)
4. Ultra League vs Talonflame, 1-2 (297 -> 573)
The biggest swing in the set, and the difference is a single shield decision. Both plans open the same way - Dive, Talonflame shields, Dive again, Talonflame shields again. Then PvPoke shields Talonflame's Fly, which leaves Cramorant holding a loaded Gulp Missile it never gets to fire, and Brave Bird kills it for 109. PoGoDives declines that shield, eats 67, and the missile fires immediately - so the shield is still there for Brave Bird, and the follow-up Dive lands for 139 into the defense drop.
PvPoke's plan (loses, 297) · our line (wins, 573)
Caveats
The conditions above carry a few tuned constants (the 40-energy bound, the tank thresholds, the fast-move-chip bound). They were fitted on the current Great and Ultra metas and verified at full resolution across every IV spread, all nine scenarios, both leagues, and all five dive movesets - but a move rebalance can move them, and this project's tripwires re-open the verification when that happens. Details and the full disclosure list live in the repo's validation docs.
Methods: how the strategy was built
The tuning bar, set by the developer, was strict: the plan had to be at-or-above PvPoke's in every single shield scenario - on both net wins and average battle rating, in each league, each opponent IV mode, each bait mode, and each of the five movesets the dives carry (360 cells in total), with no negative cell shipped. The loop that got there:
- Cell map. Score every (IV × opponent × scenario) cell of the uniform starting rule against PvPoke's plan, from the dive pages' own score tensors, and list the failing cells.
- Per-opponent oracle. Compute the ceiling a perfect opponent-conditioned rule could reach - this said the failing scenarios were fixable before any search began.
- Trace the losses. Agents re-ran individual losing fights under both plans and diffed the decision logs; the CMP mechanism, the missile's 15% value bound, and the loaded-opponent rule all came out of reading actual fights, not from curve-fitting.
- Targeted re-simulation. Candidate rules were evaluated by re-simulating exact tensor slices (one scenario × all opponents × sampled IVs) through the production battle path, verified integer-exact against the shipped pages before use. Final candidates were certified at full 4096-IV resolution - sampled screens turned out to alias the HP-IV axis.
- Adversarial review. Independent skeptic agents attacked the result twice, and both mattered: one caught a rule that failed the bar on a moveset outside the original test set; the other proved one "load-bearing" constant was dead code. The shipped plan is what survived them.
The per-scenario deltas (Great League, Peck / Dive + Fly)
Each point is one of the 4096 IV spreads; y is the PoGoDives plan's pool-average battle rating minus PvPoke's plan's, x is stat-product rank (rank 1 at the left). The flat 2-0 panel is the deference rule doing its job.
Delta histograms
Scenario-averaged
Anatomy of the humps
The histograms above are lumpy, and the lumps are not noise. Replot the same per-IV deltas against Cramorant's attack stat instead of stat-product rank and the humps resolve into a staircase: the delta is piecewise-constant in attack, and every hump in a histogram is one tread of the staircase projected sideways. Two different mechanisms cut the steps:
CMP boundaries (rule-driven). Twenty of the Great League pool's opponents have an attack stat that falls inside Cramorant's own IV attack range (118.5-129.3). For the CMP-conditioned scenarios (0-0, 0-1, 2-1), crossing one opponent's attack value switches the dive-rush rule on against exactly that opponent - a discrete step in the pool-averaged delta. In the 0-0 panel below, the four largest steps land, to the decimal, on Shadow Dusclops (122.9), Shadow Lapras (125.6), the Feraligatr/Shadow Altaria pair (123.9-124.1), and Sableye (119.7). A step can go either way: winning CMP against Feraligatr makes the dive-rush profitable there (step up); winning it against Shadow Dusclops turns the rule on in a fight where the rush doesn't pay (step down). This is also why the shadow variants behave differently from their normal forms - the shadow attack bonus moves the boundary.
Damage breakpoints (fight-driven). The 2-2 scenario's gate has no CMP condition, yet its staircase has steps too (and 0-1 has steps at attack values matching no opponent). Those treads are ordinary damage tiers: an attack threshold where Peck, Dive, Fly, or an opponent's answer changes by one damage point, shifting how a whole block of IV spreads experiences the missile trade. The strategy's value is piecewise-constant over breakpoint cells - which is exactly why the dives report per-IV numbers rather than one average.
Practical upshot: which hump your Cramorant sits in is knowable before you queue. Check your IVs' attack stat on the dive page; the per-IV plot there tells you whether you're on the high tread or the low one, and the CMP markers tell you which specific mirror-zone opponents flip for your spread.
The ledger (both leagues)
Net wins, mean rating delta, and win rate (PvPoke -> PoGoDives) per start scenario versus PvPoke's plan, plus the same net/rating versus the never-bait plan. Counts are over all 4096 IVs × the full opponent pool.
Great League
| Start | net vs PvPoke | Δrating | win rate | net vs never-bait | Δrating |
|---|---|---|---|---|---|
| 0-0 | +10,509 | +2.25 | 60.1 -> 63.0% | +10,509 | +2.25 |
| 0-1 | +4,143 | +12.20 | 17.9 -> 19.1% | +7,716 | +36.74 |
| 0-2 | +1,570 | +9.06 | 4.9 -> 5.4% | -3,398 | +42.13 |
| 1-0 | +0 | +1.62 | 92.5 -> 92.5% | +0 | +1.62 |
| 1-1 | +30,065 | +13.70 | 62.1 -> 70.5% | +36,204 | +25.39 |
| 1-2 | +36,527 | +19.07 | 35.5 -> 45.7% | +54,352 | +62.76 |
| 2-0 | +0 | +0.00 | 95.7 -> 95.7% | +0 | +0.00 |
| 2-1 | +2,201 | +1.17 | 90.5 -> 91.1% | -1,081 | -14.12 |
| 2-2 | +21,585 | +7.31 | 69.5 -> 75.6% | +40,535 | +25.60 |
Ultra League
| Start | net vs PvPoke | Δrating | win rate | net vs never-bait | Δrating |
|---|---|---|---|---|---|
| 0-0 | +8,258 | +6.33 | 36.8 -> 39.6% | +8,258 | +6.33 |
| 0-1 | +114 | +8.25 | 15.0 -> 15.0% | +1,005 | +16.37 |
| 0-2 | +133 | +27.83 | 3.7 -> 3.7% | +1,881 | +50.66 |
| 1-0 | +473 | +0.66 | 80.9 -> 81.1% | +473 | +0.66 |
| 1-1 | +30,794 | +24.98 | 37.0 -> 47.5% | +33,805 | +32.20 |
| 1-2 | +22,138 | +36.65 | 13.8 -> 21.3% | +21,443 | +65.52 |
| 2-0 | +0 | +0.00 | 90.2 -> 90.2% | +0 | +0.00 |
| 2-1 | +2,862 | +3.77 | 76.9 -> 77.9% | +6,858 | +1.11 |
| 2-2 | +36,267 | +20.24 | 40.2 -> 52.5% | +53,620 | +40.37 |
Versus never-bait, two Great League cells (0-2, 2-1) trade a few hundred net wins for large rating gains - the certified no-negative-cells guarantee is versus PvPoke's plan, which is the baseline both this plan and never-bait should be judged against.
How good is it in Ultra League?
The certification bar treated both leagues identically, and Ultra League passes it everywhere: +101,039 net wins overall, with the even-shield endgames carrying most of it. Measured against a per-opponent selection ceiling (the best any opponent-conditioned rule could do with the plans we tested), the shipped plan captures 97-100% of the available value in 1-1 and 1-2, and 100% in 0-1 and 0-2.
Because Ultra League Cramorants are usually built from good IVs, the table below also restricts to the top-100 stat-product spreads:
| Start | net (all 4096 IVs) | Δrating | net (top-100 SP) | Δrating |
|---|---|---|---|---|
| 0-0 | +8,258 | +6.33 | +30 | +7.24 |
| 0-1 | +114 | +8.25 | +64 | +7.97 |
| 0-2 | +133 | +27.83 | +83 | +27.13 |
| 1-0 | +473 | +0.66 | +0 | +0.03 |
| 1-1 | +30,794 | +24.98 | +758 | +21.42 |
| 1-2 | +22,138 | +36.65 | +523 | +40.45 |
| 2-0 | +0 | +0.00 | +0 | +0.00 |
| 2-1 | +2,862 | +3.77 | +0 | +1.23 |
| 2-2 | +36,267 | +20.24 | +711 | +17.65 |
The Ultra League graphs
The same views as the Great League showpiece, for the Ultra League Peck / Dive + Fly page: per-scenario per-IV deltas, their histograms, the scenario average, and the two attack-staircase panels (the CMP boundary lines are Ultra League opponents here).
Delta histograms
Scenario-averaged
Two honest flags for Ultra League. First: on the top-100 stat-product builds specifically, the 0-0 row is a small net negative on wins (+30 over 7,200 cells, with rating still positive) - the 0-0 dive-rush's certified gains concentrate in high-attack spreads, and a bulky rank-1-style build that wins CMP only narrowly occasionally rushes into a bad trade. If you run a max-bulk UL Cramorant, treat the 0-0 dive-rush as roughly a wash. Second: the 2-1 and 1-0 rows sit near zero for high-SP builds while a per-opponent ceiling of roughly +10 rating exists there - that headroom needs finer conditioning than we could certify league-blind, and it is the flagged target for the next tuning round.