Fix optimizer output when new spread has a 0 (#2241)

This commit is contained in:
pyuk-bot 2024-04-08 07:36:13 -05:00 committed by GitHub
parent 877bda4378
commit e1643c52dc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 17 additions and 6 deletions

View File

@ -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];

View File

@ -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",