What's new
  • Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Visit Resources
  • Visit Downloads
  • Visit Portal

Trinity 2.1.21 and QuestTools 2.1.38

Status
Not open for further replies.
DH Routine Request

Avoid power :
Code:
/// <summary>
        /// Gets the best (non-movement related) avoidance power
        /// </summary>
        /// <returns></returns>
        private static TrinityPower GetCombatAvoidancePower()
        {
            // Vault
            int kiteDistance = 25;
            if (TargetUtil.EliteOrTrashInRange(5f))
                kiteDistance = 0;

            if (CombatBase.CanCast(SNOPower.DemonHunter_Vault) &&
                (kiteDistance <= 0 || (kiteDistance > 0 &&
                (!CacheData.TimeBoundAvoidance.Any(a => a.Position.Distance(Trinity.CurrentDestination) <= kiteDistance) ||
                (!CacheData.TimeBoundAvoidance.Any(a => MathEx.IntersectsPath(a.Position, a.Radius, Trinity.Player.Position, Trinity.CurrentDestination))) ||
                !CacheData.MonsterObstacles.Any(a => a.Position.Distance(Trinity.CurrentDestination) <= kiteDistance)))))
            {
                return new TrinityPower(SNOPower.DemonHunter_Vault, 90f, Trinity.CurrentDestination);
            }

            // Smoke Screen
            if (CanCast(SNOPower.DemonHunter_SmokeScreen, CanCastFlags.NoTimer))
            {
                return new TrinityPower(SNOPower.DemonHunter_SmokeScreen);
            }

            return null;
        }

Mis reserve :
Code:
int MinEnergyReserve = 5;

            if (Sets.EmbodimentOfTheMarauder.IsFullyEquipped || Hotbar.Contains(SNOPower.DemonHunter_Sentry))
                MinEnergyReserve = 30;

Sentry :
Code:
// Sentry Turret
            if (CanCast(SNOPower.DemonHunter_Sentry, CanCastFlags.NoTimer) &&
                TargetUtil.AnyMobsInRange(150f) && Player.PrimaryResource >= 30)
            {
                // Low Health
                if ((Player.CurrentHealthPct < 0.3f) &&
                    (Runes.DemonHunter.PolarStation.IsActive || Runes.DemonHunter.GuardianTurret.IsActive) &&
                    (TargetUtil.EliteOrTrashInRange(16f) || TargetUtil.AnyMobsInRange(16f, 2)))
                {
                    return new TrinityPower(SNOPower.DemonHunter_Sentry, 5f, ZetaDia.Me.Position);
                }

                // Boss/Elite/Rare/Unique
                if (CurrentTarget.IsBossOrEliteRareUnique)
                    return new TrinityPower(SNOPower.DemonHunter_Sentry, 65f, CurrentTarget.Position);

                // Polar Station/Stun
                if (Runes.DemonHunter.PolarStation.IsActive)
                {
                    // try to Stun enemies on player position
                    if (TargetUtil.AnyMobsInRange(5f, 4))
                        return new TrinityPower(SNOPower.DemonHunter_Sentry, 5f, ZetaDia.Me.Position);

                    // try to Stun close enemies
                    if (TargetUtil.AnyMobsInRange(10f, 4))
                        return new TrinityPower(SNOPower.DemonHunter_Sentry, 65f, MathEx.CalculatePointFrom(Player.Position, CurrentTarget.Position, 15f));
                }

                // Guardian Turret, on player position for minimise damage
                if ((TargetUtil.EliteOrTrashInRange(40f) || TargetUtil.AnyMobsInRange(10f, 5)) && Runes.DemonHunter.GuardianTurret.IsActive)
                    return new TrinityPower(SNOPower.DemonHunter_Sentry, 65f, ZetaDia.Me.Position);

                // Best cluster point
                var clusterPoint = Enemies.BestCluster.Position;
                if (clusterPoint != Vector3.Zero)
                    return new TrinityPower(SNOPower.DemonHunter_Sentry, 65f, clusterPoint);

                return new TrinityPower(SNOPower.DemonHunter_Sentry, 65f, CurrentTarget.ACDGuid);
            }

Min reserve logique for save primary :
Code:
// Cluster Arrow
            if (CanCast(SNOPower.DemonHunter_ClusterArrow) && !Player.IsIncapacitated &&
                Player.PrimaryResource >= [B][COLOR="#00FF00"]MinEnergyReserve + 40[/COLOR][/B])
            {
                return new TrinityPower(SNOPower.DemonHunter_ClusterArrow, 60f, CurrentTarget.ACDGuid);
            }

            // Multi Shot
            if (CanCast(SNOPower.DemonHunter_Multishot) && !Player.IsIncapacitated &&
                Player.PrimaryResource >= [B][COLOR="#00FF00"]MinEnergyReserve + 25[/COLOR][/B])
            {
                return new TrinityPower(SNOPower.DemonHunter_Multishot, 55f, CurrentTarget.Position);
            }

            // Impale
            if (CanCast(SNOPower.DemonHunter_Impale) && !Player.IsIncapacitated &&
                Player.PrimaryResource >= [B][COLOR="#00FF00"]MinEnergyReserve + 20[/COLOR][/B])
            {
                return new TrinityPower(SNOPower.DemonHunter_Impale, 60f, CurrentTarget.ACDGuid);
            }

            // Elemental Arrow
            if (CanCast(SNOPower.DemonHunter_ElementalArrow) && !Player.IsIncapacitated &&
                (Player.PrimaryResource >= [B][COLOR="#00FF00"]MinEnergyReserve + 10[/COLOR][/B] || Legendary.Kridershot.IsEquipped))
            {
                return new TrinityPower(SNOPower.DemonHunter_ElementalArrow, 65f, CurrentTarget.ACDGuid);
            }

            // Elemental Arrow for Lightning DH
            if (CanCast(SNOPower.DemonHunter_ElementalArrow) && !Player.IsIncapacitated && Runes.DemonHunter.BallLightning.IsActive &&
                Passives.DemonHunter.NightStalker.IsActive && [B][COLOR="#00FF00"](Player.PrimaryResource >= MinEnergyReserve + 10 || Legendary.Kridershot.IsEquipped)[/COLOR][/B])
            {
                var bestTarget = TargetUtil.GetBestPierceTarget(60f, 0, true);

                if (bestTarget != null)
                    return new TrinityPower(SNOPower.DemonHunter_ElementalArrow, 65f, bestTarget.Position);
                return new TrinityPower(SNOPower.DemonHunter_ElementalArrow, 65f, CurrentTarget.Position);
            }
            // Chakram normal attack
            if (Hotbar.Contains(SNOPower.DemonHunter_Chakram) && !Player.IsIncapacitated &&
                !Runes.DemonHunter.ShurikenCloud.IsActive &&
                (Player.PrimaryResource >= [B][COLOR="#00FF00"]MinEnergyReserve + 10[/COLOR][/B]))
            {
                return new TrinityPower(SNOPower.DemonHunter_Chakram, 50f, CurrentTarget.ACDGuid);
            }

            // Rapid Fire
            if (CanCast(SNOPower.DemonHunter_RapidFire, CanCastFlags.NoTimer) &&
                !Player.IsIncapacitated && Player.PrimaryResource >= [B][COLOR="#00FF00"]MinEnergyReserve + 16[/COLOR][/B] &&
                (Player.PrimaryResource >= Settings.Combat.DemonHunter.RapidFireMinHatred || LastPowerUsed == SNOPower.DemonHunter_RapidFire))
            {
                // Players with grenades *AND* rapid fire should spam grenades at close-range instead
                if (CanCast(SNOPower.DemonHunter_Grenades) && CurrentTarget.RadiusDistance <= 18f)
                {
                    return new TrinityPower(SNOPower.DemonHunter_Grenades, 18f, CurrentTarget.ACDGuid);
                }
                // Now return rapid fire, if not sending grenades instead
                return new TrinityPower(SNOPower.DemonHunter_RapidFire, 40f, CurrentTarget.Position);
            }

            // Strafe spam - similar to barbarian whirlwind routine
            if (CanCast(SNOPower.DemonHunter_Strafe, CanCastFlags.NoTimer) &&
                !Player.IsIncapacitated && !Player.IsRooted && Player.PrimaryResource >= [B][COLOR="#00FF00"]MinEnergyReserve + Settings.Combat.DemonHunter.StrafeMinHatred[/COLOR][/B])
            {
                bool shouldGetNewZigZag =
                    (DateTime.UtcNow.Subtract(LastChangedZigZag).TotalMilliseconds >= V.I("Barbarian.Whirlwind.ZigZagMaxTime") ||
                    CurrentTarget.ACDGuid != LastZigZagUnitAcdGuid ||
                    ZigZagPosition.Distance2D(Player.Position) <= 5f);

                if (shouldGetNewZigZag)
                {
                    var wwdist = V.F("Barbarian.Whirlwind.ZigZagDistance");

                    ZigZagPosition = TargetUtil.GetZigZagTarget(CurrentTarget.Position, wwdist);

                    LastZigZagUnitAcdGuid = CurrentTarget.ACDGuid;
                    LastChangedZigZag = DateTime.UtcNow;
                }

                int postCastTickDelay = TrinityPower.MillisecondsToTickDelay(250);

                return new TrinityPower(SNOPower.DemonHunter_Strafe, 15f, ZigZagPosition, Trinity.Player.WorldDynamicID, -1, 0, postCastTickDelay);
            }

Remove this part :
Code:
[COLOR="#FF0000"]// Vault
            if (CanCast(SNOPower.DemonHunter_Vault) && !Player.IsRooted && !Player.IsIncapacitated &&
                Settings.Combat.DemonHunter.VaultMode != DemonHunterVaultMode.MovementOnly &&
                (TargetUtil.AnyMobsInRange(7f, 6) || Player.CurrentHealthPct <= 0.7) &&
                // if we have ShadowPower and Disicpline is >= 16
                // or if we don't have ShadoWpower and Discipline is >= 22
                (Player.SecondaryResource >= (Hotbar.Contains(SNOPower.DemonHunter_ShadowPower) ? 22 : 16)) &&
                    TimeSincePowerUse(SNOPower.DemonHunter_Vault) >= Settings.Combat.DemonHunter.VaultMovementDelay)
            {
                Vector3 vNewTarget = NavHelper.MainFindSafeZone(Player.Position, true);

                return new TrinityPower(SNOPower.DemonHunter_Vault, 20f, vNewTarget);
            }[/COLOR]

:hap: :)
 

Attachments

Last edited:
Kite Logique Request

Addition in Green

Trinity/Movement/Kite.cs

adding this :
Code:
[COLOR="#008000"][B]// Determines if a target is in agreement with the kite
public static bool IsTargetInAgreementWithKite(Vector3 vTarget, bool canBeUnit = false)
        {
            if (canBeUnit && CurrentTarget != null && CurrentTarget.Type == GObjectType.Unit)
                return ZetaDia.Me.Position.Distance(vTarget) >= CombatBase.PlayerKiteDistance;

            return  CombatBase.PlayerKiteDistance <= 0 || (CombatBase.PlayerKiteDistance > 0 &&
                ((CurrentTarget != null && CurrentTarget.Type != GObjectType.Unit) || CurrentTarget == null) &&
                !CacheData.MonsterObstacles.Any(m => m.Position.Distance(vTarget) <= CombatBase.PlayerKiteDistance) &&
                !CacheData.TimeBoundAvoidance.Any(a => a.Position.Distance(vTarget) <= CombatBase.PlayerKiteDistance));
        }[/B][/COLOR]

Trinity/Combat/HandleTarget.cs

In private static void SetRangeRequiredForTarget()

Code:
// * Unit, we need to pick an ability to use and get within range
                    case GObjectType.Unit:
                        {
                            // Pick a range to try to reach
                            [COLOR="#008000"][B]if (CombatBase.CurrentPower.MinimumRange < CombatBase.PlayerKiteDistance)
                                CombatBase.CurrentPower.MinimumRange = CombatBase.PlayerKiteDistance;[/B][/COLOR]

                            TargetRangeRequired = CombatBase.CurrentPower.MinimumRange;
                            TargetCurrentDistance = CurrentTarget.Distance;
                            break;
                        }
and
Code:
default:
                        [B][COLOR="#008000"]if (CurrentTarget.Radius < CombatBase.PlayerKiteDistance)
                            CurrentTarget.Radius = CombatBase.PlayerKiteDistance;[/COLOR][/B]

                        TargetRangeRequired = CurrentTarget.Radius;
                        break;

Adding to the creation of SafePoint and KitePoint :
Trinity/Movement/Kite.cs
in private static void RefreshSetKiting(ref Vector3 vKitePointAvoid, bool NeedToKite)
Code:
case KiteMode.Always:
                            kiteMonsterList = [COLOR="#008000"][B](from m in ObjectCache
                                where m.IsUnit &&
                                m.Weight > 0 &&
                                m.RadiusDistance > 0
                                select m)[/B][/COLOR].ToList();
                            break;
and
Code:
if (vAnySafePoint != Vector3.Zero && vAnySafePoint.Distance(Player.Position) >= 1[COLOR="#008000"][B] && IsTargetInAgreementWithKite(vAnySafePoint)[/B][/COLOR])
                    {

                        if ((DateTime.UtcNow.Subtract(LastKitePosition.PositionFoundTime).TotalMilliseconds > 3000 && LastKitePosition.Position == vAnySafePoint) ||
                            (CurrentTarget != null && DateTime.UtcNow.Subtract(lastGlobalCooldownUse).TotalMilliseconds > 1500 && TryToKite))
                        {
                            timeCancelledKiteMove = DateTime.UtcNow;
                            cancelledKiteMoveForMilliseconds = 1500;
                            Logger.Log(TrinityLogLevel.Debug, LogCategory.UserInformation, "Kite movement failed, cancelling for {0:0}ms", cancelledKiteMoveForMilliseconds);
                            return;
                        }
                        else
                        {
                            LastKitePosition = new KitePosition()
                            {
                                PositionFoundTime = DateTime.UtcNow,
                                Position = vAnySafePoint,
                                Distance = vAnySafePoint.Distance(Player.Position)
                            };
                        }

                        if (Settings.Advanced.LogCategories.HasFlag(LogCategory.Movement))
                        {
                            Logger.Log(TrinityLogLevel.Verbose, LogCategory.Movement, "Kiting to: {0} Distance: {1:0} Direction: {2:0}, Health%={3:0.00}, KiteDistance: {4:0}, Nearby Monsters: {5:0} NeedToKite: {6} TryToKite: {7}",
                                vAnySafePoint, vAnySafePoint.Distance(Player.Position), MathUtil.GetHeading(MathUtil.FindDirectionDegree(Me.Position, vAnySafePoint)),
                                Player.CurrentHealthPct, CombatBase.PlayerKiteDistance, kiteMonsterList.Count(),
                                NeedToKite, TryToKite);
                        }
                        CurrentTarget = new TrinityCacheObject()
                        {
                            Position = vAnySafePoint,
                            Type = GObjectType.Avoidance,
                            Weight = 90000,
                            Distance = Vector3.Distance(Player.Position, vAnySafePoint),
                            Radius = 2f,
                            InternalName = "KitePoint"
                        };
                    }

Trinity/Cache/RefreshObjects.cs
in public static bool RefreshDiaObjectCache() at "AvoidanceCheck"
Code:
// Ignore avoidance stuff if we're incapacitated or didn't find a safe spot we could reach
                        if (safePosition != Vector3.Zero[B][COLOR="#008000"] && IsTargetInAgreementWithKite(safePosition)[/COLOR][/B])
                        {
                            if (Settings.Advanced.LogCategories.HasFlag(LogCategory.Movement))
                            {
                                Logger.Log(TrinityLogLevel.Verbose, LogCategory.Movement, "Kiting Avoidance: {0} Distance: {1:0} Direction: {2:0}, Health%={3:0.00}, KiteDistance: {4:0}",
                                    safePosition, safePosition.Distance(Me.Position), MathUtil.GetHeading(MathUtil.FindDirectionDegree(Me.Position, safePosition)),
                                    Player.CurrentHealthPct, CombatBase.PlayerKiteDistance);
                            }

                            hasFoundSafePoint = true;
                            CurrentTarget = new TrinityCacheObject()
                                {
                                    Position = safePosition,
                                    Type = GObjectType.Avoidance,
                                    Weight = 20000,
                                    Distance = Vector3.Distance(Player.Position, safePosition),
                                    Radius = 2f,
                                    InternalName = "SafePoint"
                                }; ;
                        }

DemonHunter Appliquation (Vault logique) :
Trinity/Combat/HandleTarget.cs
in private static bool UsedSpecialMovement()
Code:
[COLOR="#008000"][B]// Vault for a Demon Hunter
                Vector3 vVaultTarget = MathEx.CalculatePointFrom(CurrentDestination, ZetaDia.Me.Position, 35f);
                if (CombatBase.CanCast(SNOPower.DemonHunter_Vault) && Settings.Combat.DemonHunter.VaultMode != DemonHunterVaultMode.MovementOnly &&
                    // Don't Vault into avoidance/monsters if we're kiting
                    IsTargetInAgreementWithKite(vVaultTarget))
                {
                    ZetaDia.Me.UsePower(SNOPower.DemonHunter_Vault, CurrentDestination, CurrentWorldDynamicId, -1);
                    SpellHistory.RecordSpell(SNOPower.DemonHunter_Vault);
                    return true;
                }[/B][/COLOR]

Trinity/Combat/Abilities/DemonHunterCombat.cs
in private static TrinityPower GetCombatAvoidancePower()
Code:
private static TrinityPower GetCombatAvoidancePower()
        {
           [COLOR="#008000"][B] // Vault
            Vector3 vVaultTarget = MathEx.CalculatePointFrom(Trinity.CurrentDestination, ZetaDia.Me.Position, 35f);
            if (CombatBase.CanCast(SNOPower.DemonHunter_Vault) &&
                Trinity.IsTargetInAgreementWithKite(vVaultTarget))
            {
                return new TrinityPower(SNOPower.DemonHunter_Vault, 90f, vVaultTarget);
            }[/B][/COLOR]

            // Smoke Screen
            if (CanCast(SNOPower.DemonHunter_SmokeScreen, CanCastFlags.NoTimer))
            {
                return new TrinityPower(SNOPower.DemonHunter_SmokeScreen);
            }

            return null;
        }

Trinity/Movement/PlayerMover.cs
in public void MoveTowards(Vector3 vMoveToTarget)
Code:
bool hasTacticalAdvantage = HotbarSkills.PassiveSkills.Any(s => s == SNOPower.DemonHunter_Passive_TacticalAdvantage);
                bool hasDoubleDanettas = Sets.DanettasHatred.IsFirstBonusActive;
                bool TacticalAndDanettas = (hasTacticalAdvantage && !hasDoubleDanettas);
                int vaultDelay = TacticalAndDanettas ? 2000 : Trinity.Settings.Combat.DemonHunter.VaultMovementDelay;

                [COLOR="#008000"][B]if (destinationDistance >= 18f)
                {[/B][/COLOR]
                    [COLOR="#008000"][B]Vector3 vVaultTarget = MathEx.CalculatePointFrom(vMoveToTarget, ZetaDia.Me.Position, 35f);[/B][/COLOR]
                    // DemonHunter Vault
                    if (Trinity.Hotbar.Contains(SNOPower.DemonHunter_Vault) && Trinity.Settings.Combat.DemonHunter.VaultMode != DemonHunterVaultMode.CombatOnly &&
                        CombatBase.TimeSincePowerUse(SNOPower.DemonHunter_Vault) > vaultDelay &&
                        PowerManager.CanCast(SNOPower.DemonHunter_Vault) && !ShrinesInArea(vVaultTarget) &&
                        // Don't Vault into avoidance/monsters if we're kiting
                        [COLOR="#008000"][B]Trinity.IsTargetInAgreementWithKite(vVaultTarget)[/B][/COLOR])
                    {
                        ZetaDia.Me.UsePower(SNOPower.DemonHunter_Vault, vVaultTarget, Trinity.CurrentWorldDynamicId, -1);
                        SpellHistory.RecordSpell(SNOPower.DemonHunter_Vault);
                        if (Trinity.Settings.Advanced.LogCategories.HasFlag(LogCategory.Movement))
                            Logger.Log(TrinityLogLevel.Debug, LogCategory.Movement, "Using Vault for OOC movement, distance={0}", destinationDistance);
                        return;
                   }
               [COLOR="#008000"][B] }[/B][/COLOR]

All this works well. I test with my Dh and he can now make Grift much higher. :)
 
BuddyMe mate could you upload your files?
I've edited all and trinity (2.1.24) shows no error and is working but it seems like the kiterange is not triggered? he is avoiding good on elites but now he is getting hit in melee quite often at trash packs :(

*edit:
seems to be a trinity 2.1.24 issue, testing on 2.1.22 now and looks awesome till now
 
Last edited:
Addition in Green

Trinity/Movement/Kite.cs

adding this :
Code:
[COLOR="#008000"][B]// Determines if a target is in agreement with the kite
public static bool IsTargetInAgreementWithKite(Vector3 vTarget, bool canBeUnit = false)
        {
            if (canBeUnit && CurrentTarget != null && CurrentTarget.Type == GObjectType.Unit)
                return ZetaDia.Me.Position.Distance(vTarget) >= CombatBase.PlayerKiteDistance;

            return  CombatBase.PlayerKiteDistance <= 0 || (CombatBase.PlayerKiteDistance > 0 &&
                ((CurrentTarget != null && CurrentTarget.Type != GObjectType.Unit) || CurrentTarget == null) &&
                !CacheData.MonsterObstacles.Any(m => m.Position.Distance(vTarget) <= CombatBase.PlayerKiteDistance) &&
                !CacheData.TimeBoundAvoidance.Any(a => a.Position.Distance(vTarget) <= CombatBase.PlayerKiteDistance));
        }[/B][/COLOR]

Trinity/Combat/HandleTarget.cs

In private static void SetRangeRequiredForTarget()

Code:
// * Unit, we need to pick an ability to use and get within range
                    case GObjectType.Unit:
                        {
                            // Pick a range to try to reach
                            [COLOR="#008000"][B]if (CombatBase.CurrentPower.MinimumRange < CombatBase.PlayerKiteDistance)
                                CombatBase.CurrentPower.MinimumRange = CombatBase.PlayerKiteDistance;[/B][/COLOR]

                            TargetRangeRequired = CombatBase.CurrentPower.MinimumRange;
                            TargetCurrentDistance = CurrentTarget.Distance;
                            break;
                        }
and
Code:
default:
                        [B][COLOR="#008000"]if (CurrentTarget.Radius < CombatBase.PlayerKiteDistance)
                            CurrentTarget.Radius = CombatBase.PlayerKiteDistance;[/COLOR][/B]

                        TargetRangeRequired = CurrentTarget.Radius;
                        break;

Adding to the creation of SafePoint and KitePoint :
Trinity/Movement/Kite.cs
in private static void RefreshSetKiting(ref Vector3 vKitePointAvoid, bool NeedToKite)
Code:
case KiteMode.Always:
                            kiteMonsterList = [COLOR="#008000"][B](from m in ObjectCache
                                where m.IsUnit &&
                                m.Weight > 0 &&
                                m.RadiusDistance > 0
                                select m)[/B][/COLOR].ToList();
                            break;
and
Code:
if (vAnySafePoint != Vector3.Zero && vAnySafePoint.Distance(Player.Position) >= 1[COLOR="#008000"][B] && IsTargetInAgreementWithKite(vAnySafePoint)[/B][/COLOR])
                    {

                        if ((DateTime.UtcNow.Subtract(LastKitePosition.PositionFoundTime).TotalMilliseconds > 3000 && LastKitePosition.Position == vAnySafePoint) ||
                            (CurrentTarget != null && DateTime.UtcNow.Subtract(lastGlobalCooldownUse).TotalMilliseconds > 1500 && TryToKite))
                        {
                            timeCancelledKiteMove = DateTime.UtcNow;
                            cancelledKiteMoveForMilliseconds = 1500;
                            Logger.Log(TrinityLogLevel.Debug, LogCategory.UserInformation, "Kite movement failed, cancelling for {0:0}ms", cancelledKiteMoveForMilliseconds);
                            return;
                        }
                        else
                        {
                            LastKitePosition = new KitePosition()
                            {
                                PositionFoundTime = DateTime.UtcNow,
                                Position = vAnySafePoint,
                                Distance = vAnySafePoint.Distance(Player.Position)
                            };
                        }

                        if (Settings.Advanced.LogCategories.HasFlag(LogCategory.Movement))
                        {
                            Logger.Log(TrinityLogLevel.Verbose, LogCategory.Movement, "Kiting to: {0} Distance: {1:0} Direction: {2:0}, Health%={3:0.00}, KiteDistance: {4:0}, Nearby Monsters: {5:0} NeedToKite: {6} TryToKite: {7}",
                                vAnySafePoint, vAnySafePoint.Distance(Player.Position), MathUtil.GetHeading(MathUtil.FindDirectionDegree(Me.Position, vAnySafePoint)),
                                Player.CurrentHealthPct, CombatBase.PlayerKiteDistance, kiteMonsterList.Count(),
                                NeedToKite, TryToKite);
                        }
                        CurrentTarget = new TrinityCacheObject()
                        {
                            Position = vAnySafePoint,
                            Type = GObjectType.Avoidance,
                            Weight = 90000,
                            Distance = Vector3.Distance(Player.Position, vAnySafePoint),
                            Radius = 2f,
                            InternalName = "KitePoint"
                        };
                    }

Trinity/Cache/RefreshObjects.cs
in public static bool RefreshDiaObjectCache() at "AvoidanceCheck"
Code:
// Ignore avoidance stuff if we're incapacitated or didn't find a safe spot we could reach
                        if (safePosition != Vector3.Zero[B][COLOR="#008000"] && IsTargetInAgreementWithKite(safePosition)[/COLOR][/B])
                        {
                            if (Settings.Advanced.LogCategories.HasFlag(LogCategory.Movement))
                            {
                                Logger.Log(TrinityLogLevel.Verbose, LogCategory.Movement, "Kiting Avoidance: {0} Distance: {1:0} Direction: {2:0}, Health%={3:0.00}, KiteDistance: {4:0}",
                                    safePosition, safePosition.Distance(Me.Position), MathUtil.GetHeading(MathUtil.FindDirectionDegree(Me.Position, safePosition)),
                                    Player.CurrentHealthPct, CombatBase.PlayerKiteDistance);
                            }

                            hasFoundSafePoint = true;
                            CurrentTarget = new TrinityCacheObject()
                                {
                                    Position = safePosition,
                                    Type = GObjectType.Avoidance,
                                    Weight = 20000,
                                    Distance = Vector3.Distance(Player.Position, safePosition),
                                    Radius = 2f,
                                    InternalName = "SafePoint"
                                }; ;
                        }

DemonHunter Appliquation (Vault logique) :
Trinity/Combat/HandleTarget.cs
in private static bool UsedSpecialMovement()
Code:
[COLOR="#008000"][B]// Vault for a Demon Hunter
                Vector3 vVaultTarget = MathEx.CalculatePointFrom(CurrentDestination, ZetaDia.Me.Position, 35f);
                if (CombatBase.CanCast(SNOPower.DemonHunter_Vault) && Settings.Combat.DemonHunter.VaultMode != DemonHunterVaultMode.MovementOnly &&
                    // Don't Vault into avoidance/monsters if we're kiting
                    IsTargetInAgreementWithKite(vVaultTarget))
                {
                    ZetaDia.Me.UsePower(SNOPower.DemonHunter_Vault, CurrentDestination, CurrentWorldDynamicId, -1);
                    SpellHistory.RecordSpell(SNOPower.DemonHunter_Vault);
                    return true;
                }[/B][/COLOR]

Trinity/Combat/Abilities/DemonHunterCombat.cs
in private static TrinityPower GetCombatAvoidancePower()
Code:
private static TrinityPower GetCombatAvoidancePower()
        {
           [COLOR="#008000"][B] // Vault
            Vector3 vVaultTarget = MathEx.CalculatePointFrom(Trinity.CurrentDestination, ZetaDia.Me.Position, 35f);
            if (CombatBase.CanCast(SNOPower.DemonHunter_Vault) &&
                Trinity.IsTargetInAgreementWithKite(vVaultTarget))
            {
                return new TrinityPower(SNOPower.DemonHunter_Vault, 90f, vVaultTarget);
            }[/B][/COLOR]

            // Smoke Screen
            if (CanCast(SNOPower.DemonHunter_SmokeScreen, CanCastFlags.NoTimer))
            {
                return new TrinityPower(SNOPower.DemonHunter_SmokeScreen);
            }

            return null;
        }

Trinity/Movement/PlayerMover.cs
in public void MoveTowards(Vector3 vMoveToTarget)
Code:
bool hasTacticalAdvantage = HotbarSkills.PassiveSkills.Any(s => s == SNOPower.DemonHunter_Passive_TacticalAdvantage);
                bool hasDoubleDanettas = Sets.DanettasHatred.IsFirstBonusActive;
                bool TacticalAndDanettas = (hasTacticalAdvantage && !hasDoubleDanettas);
                int vaultDelay = TacticalAndDanettas ? 2000 : Trinity.Settings.Combat.DemonHunter.VaultMovementDelay;

                [COLOR="#008000"][B]if (destinationDistance >= 18f)
                {[/B][/COLOR]
                    [COLOR="#008000"][B]Vector3 vVaultTarget = MathEx.CalculatePointFrom(vMoveToTarget, ZetaDia.Me.Position, 35f);[/B][/COLOR]
                    // DemonHunter Vault
                    if (Trinity.Hotbar.Contains(SNOPower.DemonHunter_Vault) && Trinity.Settings.Combat.DemonHunter.VaultMode != DemonHunterVaultMode.CombatOnly &&
                        CombatBase.TimeSincePowerUse(SNOPower.DemonHunter_Vault) > vaultDelay &&
                        PowerManager.CanCast(SNOPower.DemonHunter_Vault) && !ShrinesInArea(vVaultTarget) &&
                        // Don't Vault into avoidance/monsters if we're kiting
                        [COLOR="#008000"][B]Trinity.IsTargetInAgreementWithKite(vVaultTarget)[/B][/COLOR])
                    {
                        ZetaDia.Me.UsePower(SNOPower.DemonHunter_Vault, vVaultTarget, Trinity.CurrentWorldDynamicId, -1);
                        SpellHistory.RecordSpell(SNOPower.DemonHunter_Vault);
                        if (Trinity.Settings.Advanced.LogCategories.HasFlag(LogCategory.Movement))
                            Logger.Log(TrinityLogLevel.Debug, LogCategory.Movement, "Using Vault for OOC movement, distance={0}", destinationDistance);
                        return;
                   }
               [COLOR="#008000"][B] }[/B][/COLOR]

All this works well. I test with my Dh and he can now make Grift much higher. :)

Yeah mate uplaod ur stuff for testing
 
running trinity 2.1.23 and the bot has really gone slow!

getting less than 10 ticks/s and it takes the bot 2-5s to react which never was a problem!

deaths per hour jumped from 6 to 25!!!!
 
Addition in Green

Trinity/Movement/Kite.cs

adding this :
Code:
[COLOR="#008000"][B]// Determines if a target is in agreement with the kite
public static bool IsTargetInAgreementWithKite(Vector3 vTarget, bool canBeUnit = false)
        {
            if (canBeUnit && CurrentTarget != null && CurrentTarget.Type == GObjectType.Unit)
                return ZetaDia.Me.Position.Distance(vTarget) >= CombatBase.PlayerKiteDistance;

            return  CombatBase.PlayerKiteDistance <= 0 || (CombatBase.PlayerKiteDistance > 0 &&
                ((CurrentTarget != null && CurrentTarget.Type != GObjectType.Unit) || CurrentTarget == null) &&
                !CacheData.MonsterObstacles.Any(m => m.Position.Distance(vTarget) <= CombatBase.PlayerKiteDistance) &&
                !CacheData.TimeBoundAvoidance.Any(a => a.Position.Distance(vTarget) <= CombatBase.PlayerKiteDistance));
        }[/B][/COLOR]

Trinity/Combat/HandleTarget.cs

In private static void SetRangeRequiredForTarget()

Code:
// * Unit, we need to pick an ability to use and get within range
                    case GObjectType.Unit:
                        {
                            // Pick a range to try to reach
                            [COLOR="#008000"][B]if (CombatBase.CurrentPower.MinimumRange < CombatBase.PlayerKiteDistance)
                                CombatBase.CurrentPower.MinimumRange = CombatBase.PlayerKiteDistance;[/B][/COLOR]

                            TargetRangeRequired = CombatBase.CurrentPower.MinimumRange;
                            TargetCurrentDistance = CurrentTarget.Distance;
                            break;
                        }
and
Code:
default:
                        [B][COLOR="#008000"]if (CurrentTarget.Radius < CombatBase.PlayerKiteDistance)
                            CurrentTarget.Radius = CombatBase.PlayerKiteDistance;[/COLOR][/B]

                        TargetRangeRequired = CurrentTarget.Radius;
                        break;

Adding to the creation of SafePoint and KitePoint :
Trinity/Movement/Kite.cs
in private static void RefreshSetKiting(ref Vector3 vKitePointAvoid, bool NeedToKite)
Code:
case KiteMode.Always:
                            kiteMonsterList = [COLOR="#008000"][B](from m in ObjectCache
                                where m.IsUnit &&
                                m.Weight > 0 &&
                                m.RadiusDistance > 0
                                select m)[/B][/COLOR].ToList();
                            break;
and
Code:
if (vAnySafePoint != Vector3.Zero && vAnySafePoint.Distance(Player.Position) >= 1[COLOR="#008000"][B] && IsTargetInAgreementWithKite(vAnySafePoint)[/B][/COLOR])
                    {

                        if ((DateTime.UtcNow.Subtract(LastKitePosition.PositionFoundTime).TotalMilliseconds > 3000 && LastKitePosition.Position == vAnySafePoint) ||
                            (CurrentTarget != null && DateTime.UtcNow.Subtract(lastGlobalCooldownUse).TotalMilliseconds > 1500 && TryToKite))
                        {
                            timeCancelledKiteMove = DateTime.UtcNow;
                            cancelledKiteMoveForMilliseconds = 1500;
                            Logger.Log(TrinityLogLevel.Debug, LogCategory.UserInformation, "Kite movement failed, cancelling for {0:0}ms", cancelledKiteMoveForMilliseconds);
                            return;
                        }
                        else
                        {
                            LastKitePosition = new KitePosition()
                            {
                                PositionFoundTime = DateTime.UtcNow,
                                Position = vAnySafePoint,
                                Distance = vAnySafePoint.Distance(Player.Position)
                            };
                        }

                        if (Settings.Advanced.LogCategories.HasFlag(LogCategory.Movement))
                        {
                            Logger.Log(TrinityLogLevel.Verbose, LogCategory.Movement, "Kiting to: {0} Distance: {1:0} Direction: {2:0}, Health%={3:0.00}, KiteDistance: {4:0}, Nearby Monsters: {5:0} NeedToKite: {6} TryToKite: {7}",
                                vAnySafePoint, vAnySafePoint.Distance(Player.Position), MathUtil.GetHeading(MathUtil.FindDirectionDegree(Me.Position, vAnySafePoint)),
                                Player.CurrentHealthPct, CombatBase.PlayerKiteDistance, kiteMonsterList.Count(),
                                NeedToKite, TryToKite);
                        }
                        CurrentTarget = new TrinityCacheObject()
                        {
                            Position = vAnySafePoint,
                            Type = GObjectType.Avoidance,
                            Weight = 90000,
                            Distance = Vector3.Distance(Player.Position, vAnySafePoint),
                            Radius = 2f,
                            InternalName = "KitePoint"
                        };
                    }

Trinity/Cache/RefreshObjects.cs
in public static bool RefreshDiaObjectCache() at "AvoidanceCheck"
Code:
// Ignore avoidance stuff if we're incapacitated or didn't find a safe spot we could reach
                        if (safePosition != Vector3.Zero[B][COLOR="#008000"] && IsTargetInAgreementWithKite(safePosition)[/COLOR][/B])
                        {
                            if (Settings.Advanced.LogCategories.HasFlag(LogCategory.Movement))
                            {
                                Logger.Log(TrinityLogLevel.Verbose, LogCategory.Movement, "Kiting Avoidance: {0} Distance: {1:0} Direction: {2:0}, Health%={3:0.00}, KiteDistance: {4:0}",
                                    safePosition, safePosition.Distance(Me.Position), MathUtil.GetHeading(MathUtil.FindDirectionDegree(Me.Position, safePosition)),
                                    Player.CurrentHealthPct, CombatBase.PlayerKiteDistance);
                            }

                            hasFoundSafePoint = true;
                            CurrentTarget = new TrinityCacheObject()
                                {
                                    Position = safePosition,
                                    Type = GObjectType.Avoidance,
                                    Weight = 20000,
                                    Distance = Vector3.Distance(Player.Position, safePosition),
                                    Radius = 2f,
                                    InternalName = "SafePoint"
                                }; ;
                        }

DemonHunter Appliquation (Vault logique) :
Trinity/Combat/HandleTarget.cs
in private static bool UsedSpecialMovement()
Code:
[COLOR="#008000"][B]// Vault for a Demon Hunter
                Vector3 vVaultTarget = MathEx.CalculatePointFrom(CurrentDestination, ZetaDia.Me.Position, 35f);
                if (CombatBase.CanCast(SNOPower.DemonHunter_Vault) && Settings.Combat.DemonHunter.VaultMode != DemonHunterVaultMode.MovementOnly &&
                    // Don't Vault into avoidance/monsters if we're kiting
                    IsTargetInAgreementWithKite(vVaultTarget))
                {
                    ZetaDia.Me.UsePower(SNOPower.DemonHunter_Vault, CurrentDestination, CurrentWorldDynamicId, -1);
                    SpellHistory.RecordSpell(SNOPower.DemonHunter_Vault);
                    return true;
                }[/B][/COLOR]

Trinity/Combat/Abilities/DemonHunterCombat.cs
in private static TrinityPower GetCombatAvoidancePower()
Code:
private static TrinityPower GetCombatAvoidancePower()
        {
           [COLOR="#008000"][B] // Vault
            Vector3 vVaultTarget = MathEx.CalculatePointFrom(Trinity.CurrentDestination, ZetaDia.Me.Position, 35f);
            if (CombatBase.CanCast(SNOPower.DemonHunter_Vault) &&
                Trinity.IsTargetInAgreementWithKite(vVaultTarget))
            {
                return new TrinityPower(SNOPower.DemonHunter_Vault, 90f, vVaultTarget);
            }[/B][/COLOR]

            // Smoke Screen
            if (CanCast(SNOPower.DemonHunter_SmokeScreen, CanCastFlags.NoTimer))
            {
                return new TrinityPower(SNOPower.DemonHunter_SmokeScreen);
            }

            return null;
        }

Trinity/Movement/PlayerMover.cs
in public void MoveTowards(Vector3 vMoveToTarget)
Code:
bool hasTacticalAdvantage = HotbarSkills.PassiveSkills.Any(s => s == SNOPower.DemonHunter_Passive_TacticalAdvantage);
                bool hasDoubleDanettas = Sets.DanettasHatred.IsFirstBonusActive;
                bool TacticalAndDanettas = (hasTacticalAdvantage && !hasDoubleDanettas);
                int vaultDelay = TacticalAndDanettas ? 2000 : Trinity.Settings.Combat.DemonHunter.VaultMovementDelay;

                [COLOR="#008000"][B]if (destinationDistance >= 18f)
                {[/B][/COLOR]
                    [COLOR="#008000"][B]Vector3 vVaultTarget = MathEx.CalculatePointFrom(vMoveToTarget, ZetaDia.Me.Position, 35f);[/B][/COLOR]
                    // DemonHunter Vault
                    if (Trinity.Hotbar.Contains(SNOPower.DemonHunter_Vault) && Trinity.Settings.Combat.DemonHunter.VaultMode != DemonHunterVaultMode.CombatOnly &&
                        CombatBase.TimeSincePowerUse(SNOPower.DemonHunter_Vault) > vaultDelay &&
                        PowerManager.CanCast(SNOPower.DemonHunter_Vault) && !ShrinesInArea(vVaultTarget) &&
                        // Don't Vault into avoidance/monsters if we're kiting
                        [COLOR="#008000"][B]Trinity.IsTargetInAgreementWithKite(vVaultTarget)[/B][/COLOR])
                    {
                        ZetaDia.Me.UsePower(SNOPower.DemonHunter_Vault, vVaultTarget, Trinity.CurrentWorldDynamicId, -1);
                        SpellHistory.RecordSpell(SNOPower.DemonHunter_Vault);
                        if (Trinity.Settings.Advanced.LogCategories.HasFlag(LogCategory.Movement))
                            Logger.Log(TrinityLogLevel.Debug, LogCategory.Movement, "Using Vault for OOC movement, distance={0}", destinationDistance);
                        return;
                   }
               [COLOR="#008000"][B] }[/B][/COLOR]

All this works well. I test with my Dh and he can now make Grift much higher. :)
changes look great but would be awesome if you just uploaded your edited files , i know 90% of the time i screw it up when i edit them
thanks
 
Addition in Green
Trinity/Movement/PlayerMover.cs
in public void MoveTowards(Vector3 vMoveToTarget)
Code:
bool hasTacticalAdvantage = HotbarSkills.PassiveSkills.Any(s => s == SNOPower.DemonHunter_Passive_TacticalAdvantage);
                bool hasDoubleDanettas = Sets.DanettasHatred.IsFirstBonusActive;
                bool TacticalAndDanettas = (hasTacticalAdvantage && !hasDoubleDanettas);
                int vaultDelay = TacticalAndDanettas ? 2000 : Trinity.Settings.Combat.DemonHunter.VaultMovementDelay;

                [COLOR="#008000"][B]if (destinationDistance >= 18f)
                {[/B][/COLOR]
                    [COLOR="#008000"][B]Vector3 vVaultTarget = MathEx.CalculatePointFrom(vMoveToTarget, ZetaDia.Me.Position, 35f);[/B][/COLOR]
                    // DemonHunter Vault
                    if (Trinity.Hotbar.Contains(SNOPower.DemonHunter_Vault) && Trinity.Settings.Combat.DemonHunter.VaultMode != DemonHunterVaultMode.CombatOnly &&
                        CombatBase.TimeSincePowerUse(SNOPower.DemonHunter_Vault) > vaultDelay &&
                        PowerManager.CanCast(SNOPower.DemonHunter_Vault) && !ShrinesInArea(vVaultTarget) &&
                        // Don't Vault into avoidance/monsters if we're kiting
                        [COLOR="#008000"][B]Trinity.IsTargetInAgreementWithKite(vVaultTarget)[/B][/COLOR])
                    {
                        ZetaDia.Me.UsePower(SNOPower.DemonHunter_Vault, vVaultTarget, Trinity.CurrentWorldDynamicId, -1);
                        SpellHistory.RecordSpell(SNOPower.DemonHunter_Vault);
                        if (Trinity.Settings.Advanced.LogCategories.HasFlag(LogCategory.Movement))
                            Logger.Log(TrinityLogLevel.Debug, LogCategory.Movement, "Using Vault for OOC movement, distance={0}", destinationDistance);
                        return;
                   }
               [COLOR="#008000"][B] }[/B][/COLOR]

This is the Normal code for that part i was wondering why you have this:
Code:
                // DemonHunter Vault
                if (Trinity.Hotbar.Contains(SNOPower.DemonHunter_Vault) && Trinity.Settings.Combat.DemonHunter.VaultMode != DemonHunterVaultMode.CombatOnly &&
                    CombatBase.TimeSincePowerUse(SNOPower.DemonHunter_Vault) > vaultDelay &&
                    destinationDistance >= 18f &&
                    PowerManager.CanCast(SNOPower.DemonHunter_Vault) && !ShrinesInArea(vMoveToTarget) &&
                    // Don't Vault into avoidance/monsters if we're kiting
                    [COLOR="#00FF00"](CombatBase.PlayerKiteDistance <= 0 || (CombatBase.PlayerKiteDistance > 0 &&
                     (!CacheData.TimeBoundAvoidance.Any(a => a.Position.Distance(vMoveToTarget) <= CombatBase.PlayerKiteDistance) ||
                     (!CacheData.TimeBoundAvoidance.Any(a => MathEx.IntersectsPath(a.Position, a.Radius, Trinity.Player.Position, vMoveToTarget))) ||
                     !CacheData.MonsterObstacles.Any(a => a.Position.Distance(vMoveToTarget) <= CombatBase.PlayerKiteDistance))))
                    )
                [/COLOR]{

Code:
[COLOR="#FF0000"]ZetaDia.Me.UsePower(SNOPower.DemonHunter_Vault, vVaultTarget, Trinity.CurrentWorldDynamicId, -1);
                        SpellHistory.RecordSpell(SNOPower.DemonHunter_Vault);
                        if (Trinity.Settings.Advanced.LogCategories.HasFlag(LogCategory.Movement))
                            Logger.Log(TrinityLogLevel.Debug, LogCategory.Movement, "Using Vault for OOC movement, distance={0}", destinationDistance);
                        return;
                   }[/COLOR]
 
Can't level barb at all, trying to rift 1-70 but the bot just runs into mobs, killing approx. 50% of the mobs, ignoring the rest, getting stuck in a pack and dies. Fresh install of everything, only running latest trinity+QH. I don't get it at all. Changing settings in combat doesn't seem to have any effect at all.
 
Not sure about your problem with a barb. Seems it's made for barbs, FC barb runs better than I play..

There is a problem with repairing. It stops, tp's, does not repair, returns to play area, stops, tp's.... repeat

There is a problem getting out of trial rifts. Bot needs to walk to a clear area (up or down) before tp'ing out. My dudes cant get out before getting mobbed...

Anyways.. Thanks for your work..
 
rrrix,

not sure if this is the right place to post this, and assuming youre maintaining the itemrules functionality since it is part of trinity i belive
would it be possible to change the way something works? specifically how .dual evaluates things
i'd like to be able to make a macro like this:
@GOODBRACER := [MAXSTAT>480].dual+[SKILLDMG%=20].dual+[CRIT%=6].dual
so that it actually evaluates the values of stats not just their existence for example a bracer with 450 dex, 20% cold dmg, and 6% crit would return a @GOODBACER = 2
 
what is the problem with new trinity????

i cant seem to farm keys, the bot just takes about 5 seconds before each vault (double danetta) and doesnt attack like anything (not even warden), rifts dont work because after killing the boss they just keep exploring the rift (which is fully explored btw.) and many other issues... death counts rose 3 times, experience is at around 100mil (while was getting 1bil before update) ticks are at 6-7

please is there any solution?
 
System.NullReferenceException: Object reference not set to an instance of an object.
at Zeta.Bot.ProfileOrderManager.(ProfileBehavior , Boolean )
at Zeta.Bot.ProfileOrderManager.(Boolean )
at Zeta.Bot.ProfileOrderManager.(Object , EventArgs )
at Zeta.Bot.GameEvents.[](EventHandler`1 , Object ,  )

can anybody help me ?? 2.1.21
 
Last edited:
New Kiting logique :)
I post file when I'm done

Map representation :

OO => Obstacle
__ => Usafe or Close Obstacle
() => Safe Zone
MM => AOE
'' => Kiting zone
XX => Player
## => Best safe point

Code:
[SIZE=2]01:26:39.699 DEBUG TrinityDebug [Trinity]                                                                                 __                                                                                
01:26:39.702 DEBUG TrinityDebug [Trinity]                                                                 __________________________________                                                                
01:26:39.703 DEBUG TrinityDebug [Trinity]                                                         ________()()()()()()()()()()()()()()()()()________                                                        
01:26:39.704 DEBUG TrinityDebug [Trinity]                                                   ______()()()()()()()()()()()()()()()()()()()()()()()()()______                                                  
01:26:39.705 DEBUG TrinityDebug [Trinity]                                               ____()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()______                                              
01:26:39.706 DEBUG TrinityDebug [Trinity]                                           ____()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()____OOOOOO                                          
01:26:39.707 DEBUG TrinityDebug [Trinity]                                       OOOO__()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()____OOOOOOOOOOOOOO                                      
01:26:39.708 DEBUG TrinityDebug [Trinity]                                     OOOOOO__()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()____OOOOOOOOOOOOOOOOOO                                    
01:26:39.709 DEBUG TrinityDebug [Trinity]                                 OOOOOOOOOO__()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()__OOOOOOOOOOOOOOOOOOOOOOOO                                
01:26:39.710 DEBUG TrinityDebug [Trinity]                               OOOOOOOOOOOO__()()()()()()()()()()()()()()()()()()()()()()()()()()()()()__OOOOOOOOOOOOOOOOOOOOOOOOOOOO                              
01:26:39.711 DEBUG TrinityDebug [Trinity]                             OOOOOOOOOOOOOO__()()()()()()()()()()()()()()()()()()()()()()()()()()()()()__OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO                            
01:26:39.712 DEBUG TrinityDebug [Trinity]                           OOOOOOOOOOOOOOOO__()()()()()()()()()()()()()()()()()()()()()()()()()()()()()__OOOOOOOOOOOOOOOOOOOOOOOOOOOO____                          
01:26:39.714 DEBUG TrinityDebug [Trinity]                         OOOOOOOOOOOOOOOOOO__()()()()()()()()()()()()()()()()()()()()()()()()()()()()()__OOOOOOOOOOOOOOOOOOOOOOOOOO________                        
01:26:39.716 DEBUG TrinityDebug [Trinity]                       OOOOOOOOOOOOOOOOOO__()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()__OOOOOOOOOOOOOOOOOOOOOOOOOO__()()____                      
01:26:39.718 DEBUG TrinityDebug [Trinity]                     OOOOOOOOOOOOOOOO____()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()__OOOOOOOOOOOOOOOOOOOOOOOOOO____()()____                    
01:26:39.720 DEBUG TrinityDebug [Trinity]                   OOOOOOOOOOOOOOOO____()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()__OOOOOOOOOOOOOOOOOOOOOOOOOO____()()__EE                  
01:26:39.723 DEBUG TrinityDebug [Trinity]                 OOOOOOOOOOOOOO____()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()__OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO__()()__EE                
01:26:39.726 DEBUG TrinityDebug [Trinity]                 OOOOOOOOOOOO____()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()__OOOOOOOOOOOOOOOOOOOOOOOOOOOO__()()____                
01:26:39.729 DEBUG TrinityDebug [Trinity]               OOOOOOOOOO____()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()____OOOOOOOOOOOOOOOOOOOOOO____()()()()____              
01:26:39.733 DEBUG TrinityDebug [Trinity]             OOOOOO______()()()()()()()()()()()()()()()()()()()()()()__________()()()()()()()()()()()()()()()____OOOOOOOOOOOOOOOO____()()()()()()()____            
01:26:39.738 DEBUG TrinityDebug [Trinity]             OO____()()()()()()()()()()()()()()()()()()()()()()()____OOOOOOOOOO____()()()()()()()()()()()()()()__OOOOOOOOOOOO____()()()()()()()()()()__            
01:26:39.742 DEBUG TrinityDebug [Trinity]           ____()()()()()()()()()()()()()()()()()()()()()()()____OOOOOOOOOOOOOOOO____()()()()()()()()()()()()__OOOOOOOOOOOO____()()()()()()()()()()()()__          
01:26:39.747 DEBUG TrinityDebug [Trinity]           __()()()()()()()()()()()()()()()()()()()()()()()____OOOOOOOOOOOOOOOOOOOO____()()()()()()()()()()()__OOOOOOOOOO____()()()()()()()()____()()()__          
01:26:39.752 DEBUG TrinityDebug [Trinity]         __()()()()()()()()()()()()()()()()()()()()()()____OOOOOOOOOOOOOOOOOOOOOOOOOO____()()()()()()()()()()__OOOOOOOO____()()()()()()()____OOOO__()()()__        
01:26:39.757 DEBUG TrinityDebug [Trinity]         __()()()()()()()()()()()()()()()()()()()()()____OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO____()()()()()()()()()__OOOO____()()()()()()()()____OOOOOO__()()()__        
01:26:39.762 DEBUG TrinityDebug [Trinity]       __()()()()()()()()()()()()()()()()()()()()____OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO____()()()()()()()()()____()()()()()()()()____OOOOOOOOOO__()()()()__      
01:26:39.767 DEBUG TrinityDebug [Trinity]       __()()()()()()()()()()()()()()()()()()()____OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO______()()()()()()()()()()()()()()()()____OOOOOOOOOOOOOO__()()()__      
01:26:39.771 DEBUG TrinityDebug [Trinity]       __()()()()()()()()()()()()()()()()()____OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO__()()()()()()()()()()()()()____OOOOOOOOOOOOOOOOOO____()()__      
01:26:39.775 DEBUG TrinityDebug [Trinity]     __()()()()()()()()()()()()()()()()____OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO__()()()()()()()()()()()____OOOOOOOOOOOOOOOOOOOOOO__()()()__    
01:26:39.779 DEBUG TrinityDebug [Trinity]     __()()()()()()()()()()()()()()____OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO__()()()()()()()()()()__OOOOOOOOOOOOOOOOOOOOOOOOOOOO__()()__    
01:26:39.782 DEBUG TrinityDebug [Trinity]     __()()()()()()()()()()()()____OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO__()()()()()()()()()()__OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO__()()__    
01:26:39.786 DEBUG TrinityDebug [Trinity]     __()()()()()()()()()()()____OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO____()()()()()()()()()()__OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO__()__    
01:26:39.789 DEBUG TrinityDebug [Trinity]   __()()()()()()()()()______OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO____()()()()()()()()()()()()__OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO____()__  
01:26:39.794 DEBUG TrinityDebug [Trinity]   __()()()()()()()____OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO______OOOOOOOOOOOOOO____()()()()()()()()()()()()()()()________OOOOOOOOOOOOOOOOOOOOOOOOOO______  
01:26:39.799 DEBUG TrinityDebug [Trinity]   __()()()()()____OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO____()____OOOOOOOOOO____()()()()()()()______()()()()()()()()()____OOOOOOOOOOOOOOOOOOOOOOOOOO____  
01:26:39.804 DEBUG TrinityDebug [Trinity]   __()()______OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO____()()()()__OOOOOO____()()()()()()()____OOOOOO__()()()()()()()()()____OOOOOOOOOOOOOOOOOOOOOOOO____  
01:26:39.808 DEBUG TrinityDebug [Trinity]   ______OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO____()()()()()__OOOO____()()()()()()()____OOOOOOOO__()()()()()()()()()()__OOOOOOOOOOOOOOOOOOOOOOOOOO__  
01:26:39.812 DEBUG TrinityDebug [Trinity]   __OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO__()()()()()()()____()()()()()()()()____OOOOOOOOOO__()()()()()()()()()()()__OOOOOOOOOOOOOOOOOOOOOOOOOO  
01:26:39.816 DEBUG TrinityDebug [Trinity]   OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO__()()()()()()()()()()()()()()()()____OOOOOOOOOOOOOO__()()()()()()()()()()()____OOOOOOOOOOOOOOOOOOOOOOOO  
01:26:39.820 DEBUG TrinityDebug [Trinity]   OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO__()()()()()()()()()()[COLOR="#008000"]##[/COLOR][COLOR="#EE82EE"]XXXX[/COLOR]()()____OOOOOOOOOOOOOO__()()()()()()()()()()()()()____OOOOOOOOOOOOOOOOOOOOOO  
01:26:39.824 DEBUG TrinityDebug [Trinity] OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO__()()()()()()()()()()[COLOR="#EE82EE"]XXXXXXXX[/COLOR]__OOOOOOOOOOOOOOOOOO____()()()()()()()()()()()()()__OOOOOOOOOOOOOOOOOOOOOOOO
01:26:39.829 DEBUG TrinityDebug [Trinity]   OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO__()()()()()()()________[COLOR="#EE82EE"]XXXX[/COLOR]__OOOOOOOOOOOOOOOOOOOOOO__()()()()()()()()()()()()()()__OOOOOOOOOOOOOOOOOOOO  
01:26:39.832 DEBUG TrinityDebug [Trinity]   OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO__()()()()________________OOOOOOOOOOOOOOOOOOOOOOOOOOOO__()()()()()()()()()()()()()__OOOOOOOOOOOOOOOOOOOO  
01:26:39.836 DEBUG TrinityDebug [Trinity]   OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO__()____________________OOOOOOOOOOOOOOOOOOOOOOOOOOOO____()()()()()()()()()()()()()__OOOOOOOOOOOOOOOOOO  
01:26:39.840 DEBUG TrinityDebug [Trinity]   OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO____________________________OOOOOOOOOOOOOOOOOOOOOOOOOO____()()()()()()()()()()()()____OOOOOOOOOOOOOOOO  
01:26:39.845 DEBUG TrinityDebug [Trinity]   OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO____________________________OOOOOOOOOOOOOOOOOOOOOOOOOO____()()()()()()()()()()()()____OOOOOOOOOOOOOO  
01:26:39.849 DEBUG TrinityDebug [Trinity]   OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO______________________________OOOOOOOOOOOOOOOOOOOOOOOO________()()()()()()()()()()()__OOOOOOOOOOOOOO  
01:26:39.853 DEBUG TrinityDebug [Trinity]   OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO______________________________OOOOOOOOOOOOOOOOOOOOOOOO________()()()()()()()()()()()__OOOOOOOOOOOO  
01:26:39.858 DEBUG TrinityDebug [Trinity]   OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO______________________________OOOOOOOOOOOOOOOOOOOOOOOO________()()()()()()()()()()____OOOOOOOOOO  
01:26:39.862 DEBUG TrinityDebug [Trinity]     OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO______________________________OOOOOOOOOOOOOOOOOOOOOOOOOO________()()()()()()()()()()__OOOOOOOO    
01:26:39.867 DEBUG TrinityDebug [Trinity]     OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO______________________________OOOOOOOOOOOOOOOOOOOOOOOO__________()()()()()()()()()()__OOOOOO    
01:26:39.871 DEBUG TrinityDebug [Trinity]     OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO____________________________OOOOOOOOOOOOOOOOOOOOOOOOOO__________()()()()()()()()()____OOOO    
01:26:39.876 DEBUG TrinityDebug [Trinity]     OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO____________________________OOOOOOOOOOOOOOOOOOOOOOOO____________()()()()()()()()()____OO    
01:26:39.880 DEBUG TrinityDebug [Trinity]       OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO______________''''____________OOOOOOOOOOOOOOOOOOOOOOOO__________()()()()()()()()()()__      
01:26:39.885 DEBUG TrinityDebug [Trinity]       OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO____''''''''''''''''''''''__OOOOOOOOOOOOOOOOOOOOOOOO____________()()()()()()()()()__      
01:26:39.889 DEBUG TrinityDebug [Trinity]       OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO''''''''''''''''''''''''''''OOOOOOOOOOOOOOOOOOOOOOOO__________()()()()()()()()()__      
01:26:39.893 DEBUG TrinityDebug [Trinity]         OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO''''''''''''''''''''''''''OOOOOOOOOOOOOOOOOOOOOOOOOO__________()()()()()()()__        
01:26:39.897 DEBUG TrinityDebug [Trinity]         OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO''''''''''''''''''''''''''''OOOOOOOOOOOOOOOOOOOOOOOO__________()()()()()()()__        
01:26:39.900 DEBUG TrinityDebug [Trinity]           OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO''''''''''''''''''''''''''''OOOOOOOOOOOOOOOOOOOOOOOO__________()()()()()__          
01:26:39.904 DEBUG TrinityDebug [Trinity]           OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO''''''''''''''''''''''''''OOOOOOOOOOOOOOOOOOOOOOOO__________()()()()()__          
01:26:39.907 DEBUG TrinityDebug [Trinity]             OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO''''''''''''''''''''''''''OOOOOOOOOOOOOOOOOOOOOOOO____________()()()__            
01:26:39.911 DEBUG TrinityDebug [Trinity]             OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO''''''''''''''''''''''''OOOOOOOOOOOOOOOOOOOOOOOOOO____________()()____            
01:26:39.913 DEBUG TrinityDebug [Trinity]               OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO''''''''''''''''''''''OOOOOOOOOOOOOOOOOOOOOOOOOOOO____________()()__              
01:26:39.916 DEBUG TrinityDebug [Trinity]                 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO''''''''''''''''''''OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO____________()__                
01:26:39.919 DEBUG TrinityDebug [Trinity]                 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO''[COLOR="#B22222"]MMMMMMMMMM[/COLOR]''''''''OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO________________                
01:26:39.922 DEBUG TrinityDebug [Trinity]                   OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO[COLOR="#B22222"]MMMMMMMMMMMMMMMM[/COLOR]''''''OOOOOOOOOOOOOOOOOOOOOOOOOOOO________________                  
01:26:39.925 DEBUG TrinityDebug [Trinity]                     OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO''[COLOR="#B22222"]MMMMMMMMMMMMMMMMMM[/COLOR]''''OOOOOOOOOOOOOOOOOOOOOOOOOO________________                    
01:26:39.928 DEBUG TrinityDebug [Trinity]                       OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO''[COLOR="#B22222"]MMMMMMMMMMMMMMMMMMMM[/COLOR]''''OOOOOOOOOOOOOOOOOOOOOOOO________________                      
01:26:39.931 DEBUG TrinityDebug [Trinity]                         OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO''''''[COLOR="#B22222"]MMMMMMMMMMMMMMMMMMMMMM[/COLOR]''OOOOOOOOOOOOOOOOOOOOOOOO______________                        
01:26:39.934 DEBUG TrinityDebug [Trinity]                           OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO''''''''''[COLOR="#B22222"]MMMMMMMMMMMMMMMMMMMMMM'[/COLOR]'OOOOOOOOOOOOOOOOOOOOOOOO____________                          
01:26:39.938 DEBUG TrinityDebug [Trinity]                             OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO''''''''''''''[COLOR="#B22222"]MMMMMMMMMMMMMMMMMMMMMM[/COLOR]''''OOOOOOOOOOOOOOOOOOOOOOOO________                            
01:26:39.941 DEBUG TrinityDebug [Trinity]                               OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO''''''''''''''''[COLOR="#B22222"]MMMMMMMMMMMMMMMMMMMM[/COLOR]''''''''OOOOOOOOOOOOOOOOOOOOOOOO____                              
01:26:39.944 DEBUG TrinityDebug [Trinity]                                 OOOOOOOOOOOOOOOOOOOOOOOOOOOO''''''''''''''''''[COLOR="#B22222"]MMMMMMMMMMMMMMMMMM[/COLOR]''''''''''OOOOOOOOOOOOOOOOOOOOOO__                                
01:26:39.948 DEBUG TrinityDebug [Trinity]                                     OOOOOOOOOOOOOOOOOOOOOOOO''''''''''''''''''[COLOR="#B22222"]MMMMMMMMMMMMMMMM[/COLOR]''''''''''''OOOOOOOOOOOOOOOOOOOO                                    
01:26:39.951 DEBUG TrinityDebug [Trinity]                                       OOOOOOOOOOOOOOOOOOOOOO''''''''''''''''''''''[COLOR="#B22222"]MMMMMMMMMM[/COLOR]''''''''''''''''OOOOOOOOOOOOOOOO                                      
01:26:39.954 DEBUG TrinityDebug [Trinity]                                           OOOOOOOOOOOOOOOOOOOO''''''''''''''''''''''''''''''''''''''''''''''OOOOOOOOOOOO                                          
01:26:39.957 DEBUG TrinityDebug [Trinity]                                               OOOOOOOOOOOOOOOO''''''''''''''''''''''''''''''''''''''''''''''''OOOOOO                                              
01:26:39.961 DEBUG TrinityDebug [Trinity]                                                   OOOOOOOOOOOOOO''''''''''''''''''''''''''''''''''''''''''''''''                                                  
01:26:39.963 DEBUG TrinityDebug [Trinity]                                                         OOOOOOOOOO''''''''''''''''''''''''''''''''''''''''                                                        
01:26:39.966 DEBUG TrinityDebug [Trinity]                                                                 OO''''''''''''''''''''''''''''''''                                                                
01:26:39.966 DEBUG TrinityDebug [Trinity]                                                                                 '' [/SIZE]
 
Last edited:
for some reason just today my character doesn't kite boss/elietes. bot kills other mobs fine, but when figthing boss and elietes it just stands there and doesnt avoid things.
anyne else havethis prblem?
 
I've returned to QT 2.1.40 and Trinity 2.1.22
The latest release when using EZUpdater has some consistency issues; bot stops fighting in the middle of an elite pack, bot also sometimes will just stop fighting all together, Kadala plugin doesn't work on a consistent basis.
 
Status
Not open for further replies.
Back
Top