2024-11-06 08:29:24 -08:00
import { StatusEffect } from "#app/enums/status-effect" ;
import { Abilities } from "#enums/abilities" ;
import { Moves } from "#enums/moves" ;
import { Species } from "#enums/species" ;
2025-02-22 22:52:07 -06:00
import GameManager from "#test/testUtils/gameManager" ;
2024-11-06 08:29:24 -08:00
import Phaser from "phaser" ;
import { afterEach , beforeAll , beforeEach , describe , expect , it } from "vitest" ;
describe ( "Moves - Psycho Shift" , ( ) = > {
let phaserGame : Phaser.Game ;
let game : GameManager ;
beforeAll ( ( ) = > {
phaserGame = new Phaser . Game ( {
type : Phaser . HEADLESS ,
} ) ;
} ) ;
afterEach ( ( ) = > {
game . phaseInterceptor . restoreOg ( ) ;
} ) ;
beforeEach ( ( ) = > {
game = new GameManager ( phaserGame ) ;
game . override
. moveset ( [ Moves . PSYCHO_SHIFT ] )
. ability ( Abilities . BALL_FETCH )
. statusEffect ( StatusEffect . POISON )
. battleType ( "single" )
. disableCrits ( )
. enemySpecies ( Species . MAGIKARP )
. enemyLevel ( 20 )
. enemyAbility ( Abilities . SYNCHRONIZE )
. enemyMoveset ( Moves . SPLASH ) ;
} ) ;
it ( "If Psycho Shift is used on a Pokémon with Synchronize, the user of Psycho Shift will already be afflicted with a status condition when Synchronize activates" , async ( ) = > {
await game . classicMode . startBattle ( [ Species . FEEBAS ] ) ;
const playerPokemon = game . scene . getPlayerPokemon ( ) ;
const enemyPokemon = game . scene . getEnemyPokemon ( ) ;
expect ( enemyPokemon ? . status ) . toBeUndefined ( ) ;
game . move . select ( Moves . PSYCHO_SHIFT ) ;
await game . phaseInterceptor . to ( "TurnEndPhase" ) ;
expect ( playerPokemon ? . status ) . toBeNull ( ) ;
expect ( enemyPokemon ? . status ) . toBeDefined ( ) ;
} ) ;
} ) ;