diff --git a/play.pokemonshowdown.com/src/battle-tooltips.ts b/play.pokemonshowdown.com/src/battle-tooltips.ts index 7b8f1a465..0aa73f73f 100644 --- a/play.pokemonshowdown.com/src/battle-tooltips.ts +++ b/play.pokemonshowdown.com/src/battle-tooltips.ts @@ -3015,15 +3015,13 @@ function BattleStatOptimizer(set: PokemonSet, formatid: ID) { minus?: StatNameExceptHP, } = {evs: {...origSpread.evs}, plus: bestPlus, minus: bestMinus}; if (bestPlus !== origNature.plus || bestMinus !== origNature.minus) { - if (bestPlusMinEVs) newSpread.evs[bestPlus] = bestPlusMinEVs; - if (bestMinusMinEVs) newSpread.evs[bestMinus] = bestMinusMinEVs; + newSpread.evs[bestPlus] = bestPlusMinEVs!; + newSpread.evs[bestMinus] = bestMinusMinEVs!; if (origNature.plus && origNature.plus !== bestPlus && origNature.plus !== bestMinus) { - const oldPlusEVs = getMinEVs(origNature.plus, newSpread); - if (oldPlusEVs) newSpread.evs[origNature.plus] = oldPlusEVs; + newSpread.evs[origNature.plus] = getMinEVs(origNature.plus, newSpread); } if (origNature.minus && origNature.minus !== bestPlus && origNature.minus !== bestMinus) { - const oldMinusEVS = getMinEVs(origNature.minus, newSpread); - if (oldMinusEVS) newSpread.evs[origNature.minus] = oldMinusEVS; + newSpread.evs[origNature.minus] = getMinEVs(origNature.minus, newSpread); } for (const stat of Dex.statNames) { if (!newSpread.evs[stat]) delete newSpread.evs[stat]; diff --git a/test/ev-optimizer.test.js b/test/ev-optimizer.test.js index 4f1035a6a..2aaa262c3 100644 --- a/test/ev-optimizer.test.js +++ b/test/ev-optimizer.test.js @@ -94,6 +94,19 @@ describe('EV Optimizer', () => { }, 'gen9'); assert.equal(mew2, null); + const greatTusk = BattleStatOptimizer({ + species: "Great Tusk", + nature: "Jolly", + evs: {hp: 136, atk: 92, def: 100, spd: 72, spe: 108}, + level: 100 + }, 'gen9'); + assert.deepStrictEqual(greatTusk, { + evs: {hp: 136, atk: 92, spd: 72, spe: 200}, + plus: 'def', + minus: 'spa', + savedEVs: 8, + }); + const mienfoo = BattleStatOptimizer({ species: "Mienfoo", nature: "Jolly",