public sealed override void OnActionStarted()
        {
            base.OnActionStarted();

            //Subtract Star Power if the Special Move costs SP (Focus, Star Beam, and Peach Beam are Special Moves that doesn't cost SP)
            //The BattleEntity must have SP, and enough of it, at this point, as the action is not selectable from the menu otherwise
            if (CostsSP == true)
            {
                //Subtract Star Power
                MarioStats    marioStats = User.BattleStats as MarioStats;
                StarPowerBase starPower  = marioStats.GetStarPowerFromType(SPType);
                starPower.LoseStarPower(SPCost);
            }
        }
        /// <summary>
        /// What happens when the MoveAction starts.
        /// This is called immediately before starting the Sequence.
        /// </summary>
        public virtual void OnActionStarted()
        {
            //Subtract FP if the move costs FP. The BattleEntity must have enough FP
            //at this point, as the action is not selectable from the menu if it doesn't have enough
            if (CostsFP == true)
            {
                User.LoseFP((int)MoveProperties.ResourceCost);
            }

            //Subtract SP if the move costs SP. The BattleEntity must have enough SP at this point since the move can't be selected otherwise
            if (CostsSP == true)
            {
                MarioStats mStats = User.BattleStats as MarioStats;
                if (mStats != null)
                {
                    StarPowerBase starPower = null;

                    if (MoveProperties.ResourceType == MoveResourceTypes.SSSP)
                    {
                        starPower = mStats.GetStarPowerFromType(StarPowerGlobals.StarPowerTypes.StarSpirit);
                    }
                    else if (MoveProperties.ResourceType == MoveResourceTypes.CSSP)
                    {
                        starPower = mStats.GetStarPowerFromType(StarPowerGlobals.StarPowerTypes.CrystalStar);
                    }

                    //Decrease SP
                    if (starPower != null)
                    {
                        starPower.LoseStarPower(MoveProperties.ResourceCost);
                    }
                }
            }

            //If it's not an item move, remove the dip item turns property
            //This ensures that no item turns remain if the entity was using Double/Triple Dip but did something else via Confusion
            if (User.EntityProperties.HasAdditionalProperty(AdditionalProperty.DipItemTurns) == true)
            {
                User.EntityProperties.RemoveAdditionalProperty(AdditionalProperty.DipItemTurns);
            }
        }