if (AreaHasCastCriteria(RangedSkillsCastArea))
{
if (CurrentTarget.MonsterAffixes.HasFlag(MonsterAffixes.ReflectsDamage) &&
Sets.EmbodimentOfTheMarauder.IsFullyEquipped && IsSentryOnTarget())
{
RangedSkillsCastArea.Position = MathEx.CalculatePointFrom(RangedSkillsCastArea.Position, Player.Position, -30f);
}
// Cluster Arrow
if (CanCast(SNOPower.DemonHunter_ClusterArrow))
{
if (!Sets.NatalyasVengeance.IsFullyEquipped || CacheData.Buffs.HasBuff(SNOPower.P2_ItemPassive_Unique_Ring_053))
{
return new TrinityPower(SNOPower.DemonHunter_ClusterArrow, RangedAttackRange, RangedSkillsCastArea.Position);
}
}
// Multi Shot
if (CanCast(SNOPower.DemonHunter_Multishot))
{
return new TrinityPower(SNOPower.DemonHunter_Multishot, RangedAttackRange, RangedSkillsCastArea.Position);
}
// Elemental Arrow for non-kridershot
if (CanCast(SNOPower.DemonHunter_ElementalArrow))
{
return new TrinityPower(SNOPower.DemonHunter_ElementalArrow, RangedAttackRange, RangedSkillsCastArea.Position);
}
// Chakram normal attack
if (CanCast(SNOPower.DemonHunter_Chakram) && !Runes.DemonHunter.ShurikenCloud.IsActive)
{
if (DHSettings.RangedAttackRange > 0)
DHSettings.RangedAttackRange = 50;
return new TrinityPower(SNOPower.DemonHunter_Chakram, RangedAttackRange, RangedSkillsCastArea.Position);
}
// Chakram:Shuriken Cloud
if (!Player.IsInTown && CanCast(SNOPower.DemonHunter_Chakram, CanCastFlags.NoTimer) &&
Runes.DemonHunter.ShurikenCloud.IsActive && TimeSincePowerUse(SNOPower.DemonHunter_Chakram) >= 110000)
{
return new TrinityPower(SNOPower.DemonHunter_Chakram);
}
// Impale
if (CanCast(SNOPower.DemonHunter_Impale))
{
return new TrinityPower(SNOPower.DemonHunter_Impale, RangedAttackRange, RangedSkillsCastArea.Position);
}
}