// Dashing Strike if (CanCastDashingStrike)
{
if (Legendary.Jawbreaker.IsEquipped &&
(
(Hotbar.Contains(SNOPower.Monk_FistsofThunder) && SpellHistory.TimeSinceUse(SNOPower.Monk_FistsofThunder) < TimeSpan.FromMilliseconds(4900)) ||
(Hotbar.Contains(SNOPower.Monk_DeadlyReach) && SpellHistory.TimeSinceUse(SNOPower.Monk_DeadlyReach) < TimeSpan.FromMilliseconds(4900)) ||
(Hotbar.Contains(SNOPower.Monk_WayOfTheHundredFists) && SpellHistory.TimeSinceUse(SNOPower.Monk_WayOfTheHundredFists) < TimeSpan.FromMilliseconds(4900)) ||
(Hotbar.Contains(SNOPower.Monk_CripplingWave) && SpellHistory.TimeSinceUse(SNOPower.Monk_CripplingWave) < TimeSpan.FromMilliseconds(4900))
)
)
{
return JawBreakerDashingStrike();
}
// Raiment set, dash costs 75 spirit and refunds a charge when it's used
if (Sets.ThousandStorms.IsSecondBonusActive &&
(
(Skills.Monk.DashingStrike.Charges > 1 && (Skills.Monk.DashingStrike.TimeSinceUse > 200 || CacheData.Buffs.HasCastingShrine)) ||
(Player.PrimaryResource > 250 && Skills.Monk.DashingStrike.Charges > 0 && (Skills.Monk.DashingStrike.TimeSinceUse > 200 || CacheData.Buffs.HasCastingShrine)) ||
(Player.PrimaryResource > 150 && Skills.Monk.DashingStrike.Charges > 0 && (Skills.Monk.DashingStrike.TimeSinceUse > 500|| CacheData.Buffs.HasCastingShrine)) ||
(Player.PrimaryResource > 75 && Skills.Monk.DashingStrike.Charges > 0 && (Skills.Monk.DashingStrike.TimeSinceUse > 1000 || CacheData.Buffs.HasCastingShrine)) ||
(CacheData.Buffs.HasCastingShrine && Skills.Monk.DashingStrike.Charges > 0)
) &&
(
(Hotbar.Contains(SNOPower.Monk_FistsofThunder) && SpellHistory.TimeSinceUse(SNOPower.Monk_FistsofThunder) < TimeSpan.FromMilliseconds(4900)) ||
(Hotbar.Contains(SNOPower.Monk_DeadlyReach) && SpellHistory.TimeSinceUse(SNOPower.Monk_DeadlyReach) < TimeSpan.FromMilliseconds(4900)) ||
(Hotbar.Contains(SNOPower.Monk_WayOfTheHundredFists) && SpellHistory.TimeSinceUse(SNOPower.Monk_WayOfTheHundredFists) < TimeSpan.FromMilliseconds(4900)) ||
(Hotbar.Contains(SNOPower.Monk_CripplingWave) && SpellHistory.TimeSinceUse(SNOPower.Monk_CripplingWave) < TimeSpan.FromMilliseconds(4900))
)
)
{
bool ignoreUnitsInAOE = false;
if (Player.CurrentHealthPct < 0.4) {ignoreUnitsInAOE = true;}
RefreshSweepingWind(true);
if (CurrentTarget.IsBossOrEliteRareUnique)
{
TrinityCacheObject dashtarget = TargetUtil.GetFarthestEliteWithinRange(50f, ignoreUnitsInAOE);
float direction = (float)MathUtil.FindDirectionRadian(Player.Position, dashtarget.Position);
dashtarget.Position = MathEx.GetPointAt(Player.Position, dashtarget.RadiusDistance + 5f, (float)direction);
//SpellHistory.RecordSpell(SNOPower.X1_Monk_DashingStrike);
return new TrinityPower(SNOPower.X1_Monk_DashingStrike, MaxDashingStrikeRange, dashtarget.Position);
}
else
{
TrinityCacheObject dashtarget = TargetUtil.GetBestPierceTarget(50f, ignoreUnitsInAOE);
float direction = (float)MathUtil.FindDirectionRadian(Player.Position, dashtarget.Position);
dashtarget.Position = MathEx.GetPointAt(Player.Position, dashtarget.RadiusDistance + 5f, (float)direction);
//SpellHistory.RecordSpell(SNOPower.X1_Monk_DashingStrike);
return new TrinityPower(SNOPower.X1_Monk_DashingStrike, MaxDashingStrikeRange, dashtarget.Position);
}
}
if (!Sets.ThousandStorms.IsSecondBonusActive)
{
// We get a charge every 8 seconds. If we have 2 charges, be dashing
if (Skills.Monk.DashingStrike.Charges > 1 && (Skills.Monk.DashingStrike.TimeSinceUse > 200 || CacheData.Buffs.HasCastingShrine) )
{
Logger.Log("SecondBonusActive = False");
return new TrinityPower(SNOPower.X1_Monk_DashingStrike, MaxDashingStrikeRange, CurrentTarget.Position);
}
if ((Skills.Monk.DashingStrike.TimeSinceUse > 200 || CacheData.Buffs.HasCastingShrine) && Skills.Monk.DashingStrike.Charges > 1 && CurrentTarget.IsEliteRareUnique || TargetUtil.ClusterExists(15f, 3) &&
TargetUtil.IsUnitWithDebuffInRangeOfPosition(15f, TargetUtil.GetBestClusterPoint(), SNOPower.Monk_ExplodingPalm) ||
TargetUtil.AnyMobsInRangeOfPosition(CurrentTarget.Position, 20f, 3) && Skills.Monk.ExplodingPalm.IsTrackedOnUnit(CurrentTarget) ||
_hasSwk && TargetUtil.AnyMobsInRange(50f))
{
Logger.Log("SecondBonusActive = False");
RefreshSweepingWind(true);
//SpellHistory.RecordSpell(SNOPower.X1_Monk_DashingStrike);
return new TrinityPower(SNOPower.X1_Monk_DashingStrike, MaxDashingStrikeRange, CurrentTarget.Position, Trinity.CurrentWorldDynamicId, -1, 2, 2);
}
}
}