public sealed override void ExecuteAndUpdate(BattlePokemon user, BattlePokemon defender)
        {
            switch (this.TurnsLeft)
            {
            case 0:
                OnRazorWindFirstTurn();
                user.ActivateTwoTurnMove(this);
                this.TurnsLeft = 1;
                break;

            case 1:
                OnUsed();
                if (IsAMiss(user, defender))
                {
                    OnMissed();
                }
                else if (HasNoEffect(defender))
                {
                    OnNoEffect();
                }
                else
                {
                    UpdateEffectivenessUpdateCritFlagAndDoDamage(user, defender);
                }
                user.DeactivateTwoTurnMove();
                this.TurnsLeft = 0;
                SetLastMoveAndMirrorMove(user, defender);
                SubtractPP(1);
                break;
            }
        }
        public sealed override void ExecuteAndUpdate(BattlePokemon user, BattlePokemon defender)
        {
            switch (this.TurnsLeft)
            {
            case 0:
                OnUsed();
                if (HasNoEffect(defender))
                {
                    OnNoEffect();
                }
                else if (IsAMiss(user, defender))
                {
                    OnMissed();
                }
                else
                {
                    UpdateEffectivenessUpdateCritFlagAndDoDamage(user, defender);

                    if (!defender.DidSubstituteBreakThisTurn() &&
                        !defender.IsFainted)
                    {
                        user.ActivateTwoTurnMove(this);
                        this.TurnsLeft = 1;
                    }
                }
                SetLastMoveAndMirrorMove(user, defender);
                SubtractPP(1);
                break;

            case 1:
                OnHyperBeamRecharging();
                this.TurnsLeft = 0;
                user.DeactivateTwoTurnMove();
                break;
            }
        }