Skip to content

Commit

Permalink
Random Battles: Fix 3-move Pokemon
Browse files Browse the repository at this point in the history
  • Loading branch information
AnnikaCodes committed Jun 6, 2021
1 parent d8988bb commit c55658c
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 10 deletions.
7 changes: 5 additions & 2 deletions data/mods/gen3/random-teams.ts
Original file line number Diff line number Diff line change
Expand Up @@ -456,17 +456,20 @@ export class RandomGen3Teams extends RandomGen4Teams {
}

// Remove rejected moves from the move list
const moveIsHP = moveid.startsWith('hiddenpower');
if (
cull &&
(movePool.length - availableHP || availableHP && (moveid.startsWith('hiddenpower') || !hasHiddenPower))
(movePool.length - availableHP || availableHP && (moveIsHP || !hasHiddenPower))
) {
if (move.category !== 'Status' && !move.damage && (!moveid.startsWith('hiddenpower') || !availableHP)) {
if (move.category !== 'Status' && !move.damage && (!moveIsHP || !availableHP)) {
rejectedPool.push(moveid);
}
if (moveIsHP) hasHiddenPower = false;
moves.delete(moveid);
break;
}
if (cull && rejectedPool.length) {
if (moveIsHP) hasHiddenPower = false;
moves.delete(moveid);
break;
}
Expand Down
7 changes: 5 additions & 2 deletions data/mods/gen7/random-teams.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1166,23 +1166,26 @@ export class RandomGen7Teams extends RandomTeams {
}

// Remove rejected moves from the move list
const moveIsHP = moveid.startsWith('hiddenpower');
if (cull && (
movePool.length - availableHP ||
(availableHP && (moveid.startsWith('hiddenpower') || !hasHiddenPower))
(availableHP && (moveIsHP || !hasHiddenPower))
)) {
if (
move.category !== 'Status' &&
!move.damage &&
!move.flags.charge &&
(!moveid.startsWith('hiddenpower') || !availableHP)
(!moveIsHP || !availableHP)
) {
rejectedPool.push(moveid);
}
if (moveIsHP) hasHiddenPower = false;
moves.delete(moveid);
break;
}

if (cull && rejectedPool.length) {
if (moveIsHP) hasHiddenPower = false;
moves.delete(moveid);
break;
}
Expand Down
5 changes: 4 additions & 1 deletion test/random-battles/gen3.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,8 @@ describe('[Gen 3] Random Battle', () => {
testAlwaysHasMove('delcatty', options, 'doubleedge');
});

it('should prevent double Hidden Power', () => testHiddenPower('kingler', options));
it('should prevent double Hidden Power', () => {
testHiddenPower('kingler', options);
testHiddenPower('moltres', options);
});
});
2 changes: 1 addition & 1 deletion test/random-battles/gen7.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,5 @@ describe('[Gen 7] Random Battle', () => {
testNotBothMoves('arceusground', options, 'swordsdance', 'icebeam');
});

it('should prevent double Hidden Power', () => testHiddenPower('lilligant', options));
it('should prevent double Hidden Power', () => testHiddenPower('thundurustherian', options));
});
11 changes: 7 additions & 4 deletions test/random-battles/tools.js
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,13 @@ function testNotBothMoves(pokemon, options, move1, move2) {
* @param {{format?: string, rounds?: number, isDoubles?: boolean, isLead?: boolean, isDynamax?: boolean, seed?: PRNGSeed}} options
*/
function testHiddenPower(pokemon, options) {
testSet(pokemon, options, set => assert(
set.moves.filter(m => m.startsWith('hiddenpower')).length < 2,
`multiple Hidden Power moves (got ${JSON.stringify(set.moves)})`
));
testSet(pokemon, options, set => {
assert.equal(set.moves.length, 4, `fewer than 4 moves (got ${JSON.stringify(set.moves)})`);
assert(
set.moves.filter(m => m.startsWith('hiddenpower')).length < 2,
`multiple Hidden Power moves (got ${JSON.stringify(set.moves)})`
);
});
}

/**
Expand Down

0 comments on commit c55658c

Please sign in to comment.