Re-implement fixed moveset generation with fix

This commit is contained in:
Flashfyre committed 2024-04-02 00:48:13 -04:00
1 parent 5e8b5c8ac7
commit a33dd47853
3 files changed
+17 -5

No files matched your search

+6 -4
View File
@@ -767,8 +767,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
for (let e = 0; e < evolutionChain.length; e++) {
// TODO: Might need to pass specific form index in simulated evolution chain
const speciesLevelMoves = getPokemonSpeciesForm(evolutionChain[e][0] as Species, this.formIndex).getLevelMoves();
levelMoves.push(...speciesLevelMoves.filter(lm => (includeEvolutionMoves && !lm[0]) || (lm[0] >= evolutionChain[e][1] && (e === evolutionChain.length - 1 || lm[0] <= evolutionChain[e + 1][1]))));
levelMoves.push(...speciesLevelMoves.filter(lm => (includeEvolutionMoves && !lm[0]) || ((!e || lm[0] > 1) && (e === evolutionChain.length - 1 || lm[0] <= evolutionChain[e + 1][1]))));
}
levelMoves.sort((lma: [integer, integer], lmb: [integer, integer]) => lma[0] > lmb[0] ? 1 : lma[0] < lmb[0] ? -1 : 0);
const uniqueMoves: Moves[] = [];
levelMoves = levelMoves.filter(lm => {
if (uniqueMoves.find(m => m === lm[1]))
@@ -904,7 +905,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
const movePool = [];
const allLevelMoves = this.getLevelMoves(1, true, true);
if (!allLevelMoves) {
console.log(this.species.speciesId, 'ERROR')
console.log(this.species.speciesId, 'ERROR');
return;
}
@@ -926,13 +927,14 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
});
if (attackMovePool.length) {
const randomAttackMove = Utils.randSeedWeightedItem(attackMovePool.reverse());
const randomAttackMove = Utils.randSeedEasedWeightedItem(attackMovePool);
this.moveset.push(new PokemonMove(randomAttackMove, 0, 0));
console.log(allMoves[randomAttackMove]);
movePool.splice(movePool.findIndex(m => m === randomAttackMove), 1);
}
while (movePool.length && this.moveset.length < 4) {
const randomMove = Utils.randSeedWeightedItem(movePool.reverse());
const randomMove = Utils.randSeedEasedWeightedItem(movePool);
this.moveset.push(new PokemonMove(randomMove, 0, 0));
console.log(allMoves[randomMove]);
movePool.splice(movePool.indexOf(randomMove), 1);