From 68214040237f1b874a915950ccc8054f2ad1f5ef Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Sat, 6 Apr 2024 19:41:12 -0400 Subject: [PATCH] Filter out sacrificial moves from boss movesets --- src/field/pokemon.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 76996dcc09a..b190a80c82d 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -2,7 +2,7 @@ import Phaser from 'phaser'; import BattleScene, { ABILITY_OVERRIDE, AnySound, MOVE_OVERRIDE, OPP_ABILITY_OVERRIDE, OPP_MOVE_OVERRIDE } from '../battle-scene'; import BattleInfo, { PlayerBattleInfo, EnemyBattleInfo } from '../ui/battle-info'; import { Moves } from "../data/enums/moves"; -import Move, { HighCritAttr, HitsTagAttr, applyMoveAttrs, FixedDamageAttr, VariableAtkAttr, VariablePowerAttr, allMoves, MoveCategory, TypelessAttr, CritOnlyAttr, getMoveTargets, OneHitKOAttr, MultiHitAttr, StatusMoveTypeImmunityAttr, MoveTarget, VariableDefAttr, AttackMove, ModifiedDamageAttr, VariableMoveTypeMultiplierAttr, IgnoreOpponentStatChangesAttr } from "../data/move"; +import Move, { HighCritAttr, HitsTagAttr, applyMoveAttrs, FixedDamageAttr, VariableAtkAttr, VariablePowerAttr, allMoves, MoveCategory, TypelessAttr, CritOnlyAttr, getMoveTargets, OneHitKOAttr, MultiHitAttr, StatusMoveTypeImmunityAttr, MoveTarget, VariableDefAttr, AttackMove, ModifiedDamageAttr, VariableMoveTypeMultiplierAttr, IgnoreOpponentStatChangesAttr, SacrificialAttr } from "../data/move"; import { default as PokemonSpecies, PokemonSpeciesForm, SpeciesFormKey, getFusedSpeciesName, getPokemonSpecies, getPokemonSpeciesForm } from '../data/pokemon-species'; import * as Utils from '../utils'; import { Type, TypeDamageMultiplier, getTypeDamageMultiplier, getTypeRgb } from '../data/type'; @@ -181,8 +181,6 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.calculateStats(); this.generateFusionSpecies(); } - - this.generateAndPopulateMoveset(); } this.generateName(); @@ -939,7 +937,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { generateAndPopulateMoveset(): void { this.moveset = []; - const movePool = []; + let movePool: Moves[] = []; const allLevelMoves = this.getLevelMoves(1, true, true); if (!allLevelMoves) { console.log(this.species.speciesId, 'ERROR'); @@ -958,6 +956,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } } + if (this.isBoss()) + movePool = movePool.filter(m => !allMoves[m].getAttrs(SacrificialAttr).length); + movePool.reverse(); const attackMovePool = movePool.filter(m => { @@ -2047,6 +2048,8 @@ export class PlayerPokemon extends Pokemon { constructor(scene: BattleScene, species: PokemonSpecies, level: integer, abilityIndex: integer, formIndex: integer, gender: Gender, shiny: boolean, ivs: integer[], nature: Nature, dataSource: Pokemon | PokemonData) { super(scene, 106, 148, species, level, abilityIndex, formIndex, gender, shiny, ivs, nature, dataSource); + if (!dataSource) + this.generateAndPopulateMoveset(); this.generateCompatibleTms(); } @@ -2319,6 +2322,8 @@ export class EnemyPokemon extends Pokemon { this.setBoss(); if (!dataSource) { + this.generateAndPopulateMoveset(); + this.trySetShiny(); let prevolution: Species;