public void MimicMove(Move mimicItself, BattlePokemon opponent) { Move moveToCopy = opponent.LastMoveUsed; if (moveToCopy == null) //failsafe for using mimic on first turn before a last move used is even initialized { moveToCopy = opponent.Move1; } OnMimic(moveToCopy, opponent); Move mimicedMove = MoveFactory.Create(moveToCopy.Index); int moveIndex = 0; if (Move1 == mimicItself) { moveIndex = 1; } else if (Move2 == mimicItself) { moveIndex = 2; } else if (Move3 == mimicItself) { moveIndex = 3; } else if (Move4 == mimicItself) { moveIndex = 4; } mimic.Activate(mimicedMove, moveIndex); }
public sealed override void ExecuteAndUpdate(BattlePokemon user, BattlePokemon defender) { OnUsed(); if (defender.MirrorMove != null && defender.MirrorMove.Index != 119) { Move copy = MoveFactory.Create(defender.MirrorMove.Index); copy.ExecuteAndUpdate(user, defender); } else { OnFailed(); } //MirrorMove does NOT set the last move and update mirror move, // it delegates those responsibilities to the move that it executes SubtractPP(1); }
public void Activate(BattlePokemon pokemonToTransformInto) { Active = true; Type1 = pokemonToTransformInto.Type1; Type2 = pokemonToTransformInto.Type2; Stats = new Stats( 0f, pokemonToTransformInto.PokemonsAttackStat, pokemonToTransformInto.PokemonsDefenseStat, pokemonToTransformInto.PokemonsSpecialStat, pokemonToTransformInto.PokemonsSpeedStat); Move1 = MoveFactory.Create(pokemonToTransformInto.Move1.Index); Move2 = MoveFactory.Create(pokemonToTransformInto.Move2.Index); Move3 = MoveFactory.Create(pokemonToTransformInto.Move3.Index); Move4 = MoveFactory.Create(pokemonToTransformInto.Move4.Index); while (Move1.CurrentPP > 5) { Move1.SubtractPP(1); } while (Move2.CurrentPP > 5) { Move2.SubtractPP(1); } while (Move3.CurrentPP > 5) { Move3.SubtractPP(1); } while (Move4.CurrentPP > 5) { Move4.SubtractPP(1); } }
public ICommand Create(FileType fileType, string path) { return(_moveFactory.Create(fileType, path)); }