My main issue with the routine right now is a major drop in TPS around doors. This is really bad in act3/5 type levels where there are multiple doors, and if there is avoidance to be done while shooting into these doors or standing in them, I will get huge 100-700ms delays for each avoidance (which is death lol)
I've noticed a lot of the same Cael. Try putting vault only out of combat on and it will help a lot. When he fixes smoke screen to work that will be the best option I think, it works out wayyy better. Regardless of how it is doing, is the default trinity really working better for you? Even with the bugs this one seems a lot more consistent.
For grotesque mobs you can go in the avoidance file in Trinity/UI/Combat and set the max to 60 instead of 30 then raise up the avoidance sliders in the dh tab of the bot and that seemed to help a bunch.
I've updated my sentry logic to the following to place turrets 40 units from the target (zei's dmg on each turret is based on turret to target, not player to target so putting them under the target is a waste)
Location: Trinity\Combat\Abilities\DemonHunterCombat
Code:
// Sentry Turret
if (!Player.IsIncapacitated && CanCast(SNOPower.DemonHunter_Sentry, CanCastFlags.NoTimer) && TargetUtil.AnyMobsInRange(65))
{
if (Trinity.PlayerOwnedDHSentryCount < _maxSentryCount)
{
Vector3 vNewSentryTarget = MathEx.CalculatePointFrom(Player.Position, CurrentTarget.Position, 40f);
return new TrinityPower(SNOPower.DemonHunter_Sentry, 55f, vNewSentryTarget);
}
}
I would prefer if it dropped one on the target for the slow/trapped proc instantly but I cant figure it out yet, it doesn't seem to recognize the actor (or i'm doing it wrong is more likely) but it still works for my polar stations as they shoot the frost elemental arrows out anyhow at that range.
Ive also added logic to some skills to avoid reflect damage. You can swap this code into any skill to make it automatically shoot the opposite direction when reflect is up. Im sure there is a 100% better way to implement this for every skill, but im a noob and this works lol.
Code:
// Cluster Arrow
if (CanCast(SNOPower.DemonHunter_ClusterArrow))
{
if (CurrentTarget.MonsterAffixes.HasFlag(MonsterAffixes.ReflectsDamage)){
Vector3 vNewClusterTarget = MathEx.CalculatePointFrom(CurrentTarget.Position, Player.Position, -55f);
return new TrinityPower(SNOPower.DemonHunter_ClusterArrow, 55f, vNewClusterTarget);
}
else
return new TrinityPower(SNOPower.DemonHunter_ClusterArrow, 55f, CurrentTarget.Position);
}