// Wave of light
if (!UseOOCBuff && !IsCurrentlyAvoiding && !PlayerStatus.IsIncapacitated &&
Hotbar.Contains(SNOPower.Monk_WaveOfLight) &&
GilesUseTimer(SNOPower.Monk_WaveOfLight) &&
(ElitesWithinRange[RANGE_25] > 1 || AnythingWithinRange[RANGE_25] > 4 || (CurrentTarget.IsBossOrEliteRareUnique && CurrentTarget.RadiusDistance <= 20f)) &&
(PlayerStatus.PrimaryResource >= 75 ||
(hasEmpoweredWaveRune && PlayerStatus.PrimaryResource >= 40 && !IsWaitingForSpecial)) && // Empowered Wave
Monk_HasMantraAbilityAndBuff())
(ElitesWithinRange[RANGE_25] > 1 || AnythingWithinRange[RANGE_25] > 4 || (CurrentTarget.IsBossOrEliteRareUnique && CurrentTarget.RadiusDistance <= 20f)) &&
(PlayerStatus.PrimaryResource >= 75 ||
(hasEmpoweredWaveRune && PlayerStatus.PrimaryResource >= 40 && !IsWaitingForSpecial)) && // Empowered Wave
// Wave of light
if (!UseOOCBuff && !IsCurrentlyAvoiding && !PlayerStatus.IsIncapacitated && Hotbar.Contains(SNOPower.Monk_WaveOfLight) && GilesUseTimer(SNOPower.Monk_WaveOfLight) &&
(TargetUtil.AnyMobsInRange(90f,Settings.Combat.Monk.MinWoLTrashCount) || TargetUtil.IsEliteTargetInRange(20f)) &&
(PlayerStatus.PrimaryResource >= minWoLSpirit || !IsWaitingForSpecial) &&
// (CheckAbilityAndBuff(SNOPower.Monk_SweepingWind) && GetBuffStacks(SNOPower.Monk_SweepingWind) == 3) && // optional check for SW stacks
Monk_HasMantraAbilityAndBuff())
{
var bestClusterPoint = TargetUtil.GetBestClusterPoint(15f, 15f);
return new TrinityPower(SNOPower.Monk_WaveOfLight, 16f, bestClusterPoint, -1, CurrentTarget.ACDGuid, 0, 1, USE_SLOWLY);
}