if (!EnhancementShamanSettings.Instance.EB_on_five && utils.CanCast(ELEMENTAL_BLAST, target, true))
                {
                    utils.LogActivity(ELEMENTAL_BLAST, target.Name);
                    return utils.Cast(ELEMENTAL_BLAST, target);
                }
		if (utils.AllAttaccableEnemyMobsInRangeFromTarget(target, 15).Count() >= EnhancementShamanSettings.Instance.FireNova_number
                    && utils.CanCast(FIRE_NOVA) && utils.MyAuraTimeLeft(FLAME_SHOCK, target) > 0)
                {
                    utils.LogActivity(FIRE_NOVA);
                    return utils.Cast(FIRE_NOVA);
                }
                if (utils.PlayerCountBuff(MAELSTROM_WEAPON) == 5 &&
                    utils.AllAttaccableEnemyMobsInRangeFromTarget(target, 15).Count() >= EnhancementShamanSettings.Instance.ChainLightining_number
                    && utils.CanCast(CHAIN_LIGHTNING, target, true))
                {
                    utils.LogActivity(CHAIN_LIGHTNING, target.Name);
                    return utils.Cast(CHAIN_LIGHTNING, target);
                }
                if (utils.PlayerCountBuff(MAELSTROM_WEAPON) == 5 && utils.CanCast(LIGHTNING_BOLT, target, true))
                {
                    utils.LogActivity(LIGHTNING_BOLT, target.Name);
                    return utils.Cast(LIGHTNING_BOLT, target);
                }
                if (utils.isAuraActive(ASCENDANCE) && target.Distance2DSqr <= 30 * 30 && !StromsBlastOnCoolDown)
                {
                    utils.LogActivity(STORMBLAST, target.Name);
                    utils.RunMacroText("/Cast " + STORMBLAST);
                    //return utils.Cast(STORMBLAST, target);
                }
                if (target.IsWithinMeleeRange && !StromStrikeOnCoolDown)
                {
                    utils.LogActivity(STORMSTRIKE, target.Name);
                    return utils.Cast(STORMSTRIKE, target);
                }
		if (utils.CanCast(FLAME_SHOCK, target, true) &&
                    (!utils.isAuraActive(FLAME_SHOCK, target) || utils.MyAuraTimeLeft(FLAME_SHOCK, target) < 3000) ||
                    utils.isAuraActive("Unleash Flame", target))
                {
                    utils.LogActivity(FLAME_SHOCK, target.Name);
                    return utils.Cast(FLAME_SHOCK, target);
                }
		if (target.IsWithinMeleeRange && utils.GetSpellCooldown(LAVA_LASH).Milliseconds <= StyxWoW.WoWClient.Latency)
                {
                    utils.LogActivity(LAVA_LASH, target.Name);
                    return utils.Cast(LAVA_LASH, target);
                }
                if (utils.CanCast(UNLEASH_ELEMENTS, target, true))
                {
                    utils.LogActivity(UNLEASH_ELEMENTS, target.Name);
                    return utils.Cast(UNLEASH_ELEMENTS, target);
                }             
                if (!Me.IsMoving && utils.CanCast(TOTEMIC_PROJECTION) && shammyCommon.TotemsInRangeOf(Me) == 0)
                {
                    utils.LogActivity(TOTEMIC_PROJECTION);
                    utils.Cast(TOTEMIC_PROJECTION);
                    return SpellManager.ClickRemoteLocation(target.Location);
                }        
                if (utils.CanCast(EARTH_SHOCK, target, true) && utils.isAuraActive(FLAME_SHOCK, target)
                    && utils.MyAuraTimeLeft(FLAME_SHOCK, target) >= 7000)
                {
                    utils.LogActivity(EARTH_SHOCK, target.Name);
                    return utils.Cast(EARTH_SHOCK, target);
                }
		if (utils.PlayerCountBuff(MAELSTROM_WEAPON) >= 1 && utils.CanCast(LIGHTNING_BOLT, target, true))
                {
                    utils.LogActivity(LIGHTNING_BOLT, target.Name);
                    return utils.Cast(LIGHTNING_BOLT, target);
                }