protected virtual void OnMimic(Move moveToCopy, BattlePokemon opponent)
 {
     Mimic?.Invoke(this, new MimicMoveEventArgs()
     {
         pokemon       = Pokemon,
         battlePokemon = this,
         opponent      = opponent,
         moveMimiced   = moveToCopy
     });
 }
        public BattlePokemon(Pokemon pokemon)
        {
            Pokemon = pokemon;
            AttachPokemonEventHandlers();

            StatStageModifiers = new StatStageModifiers();
            mimic         = new Mimic();
            Conversion    = new Conversion();
            Substitute    = new Substitute();
            Transform     = new Transform();
            Bide          = new Bide();
            MultiTurnMove = null;
            TwoTurnMove   = null;
            Disable       = new Disable();
            MistActive    = false;
            LightScreen   = false;
            N             = 1f;
            InitializeEventArgs();
        }