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

[Guide] Complete Vault Optimization for Double Danetta's Works at T6

rimmi2002

New Member
Joined
Apr 28, 2014
Messages
138
Reaction score
2
Alrite have spent the last few days optimizing the Double Danettas to vault around everywhere. Now it works awesome. Wanted to share with everyone. This is now vault everywhere OOC and during combat to get healthglobes/containers for Harringtons/Pick up items.

For Trinity
1) I have Kite distance at 0; you can increase this is you are dying too much...but I am surviving T6 easy with just vault to keep distance with kiting at 0.
2) Set to Vault anytime.

Out of combat Vault: Change in /movement/playermover.cs
Code:
[COLOR="#FF0000"]//bool hasTacticalAdvantage = HotbarSkills.PassiveSkills.Any(s => s == SNOPower.DemonHunter_Passive_TacticalAdvantage);
                //int vaultDelay = hasTacticalAdvantage ? 2000 : Trinity.Settings.Combat.DemonHunter.VaultMovementDelay;
				int vaultDelay = Trinity.Settings.Combat.DemonHunter.VaultMovementDelay;[/COLOR]
                // DemonHunter Vault
                if (Trinity.Hotbar.Contains(SNOPower.DemonHunter_Vault) && !bTooMuchZChange && 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
                    (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))))
                    )
                {

                    Vector3 vThisTarget = vMoveToTarget;
                    if (destinationDistance > 35f)
					//if (destinationDistance > 7f)
                        vThisTarget = MathEx.CalculatePointFrom(vMoveToTarget, MyPosition, 35f);
                    ZetaDia.Me.UsePower(SNOPower.DemonHunter_Vault, vThisTarget, 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;
                }

During Combat Vault: /combat/abilities/demonhunter.cs
Code:
            // Vault
            if (!UseOOCBuff && !IsCurrentlyAvoiding && CombatBase.CanCast(SNOPower.DemonHunter_Vault) && !Player.IsRooted && !Player.IsIncapacitated &&
                Settings.Combat.DemonHunter.VaultMode != Config.Combat.DemonHunterVaultMode.MovementOnly &&
                // Only use vault to retreat if < level 60, or if in inferno difficulty for level 60's
                (Player.Level < 60 || Player.GameDifficulty > GameDifficulty.Master) &&
				(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)) &&
                    TimeSinceUse(SNOPower.DemonHunter_Vault) >= Trinity.Settings.Combat.DemonHunter.VaultMovementDelay)
            {
                //Vector3 vNewTarget = MathEx.CalculatePointFrom(CurrentTarget.Position, Player.Position, -15f);
                // Lets find a smarter Vault position instead of just "backwards"
                //Vector3 vNewTarget = NavHelper.FindSafeZone(Trinity.Player.Position, true, false, null, false);
                Vector3 vNewTarget = NavHelper.MainFindSafeZone(Trinity.Player.Position, true, false, null, false);

                return new TrinityPower(SNOPower.DemonHunter_Vault, 20f, vNewTarget, CurrentWorldDynamicId, -1, 1, 2);
            }


3. Now this was the hardest part to figure. Took a lot of time to read through the whole handletarget.cs and get the toon to vault for all gold, items and containers: In the end it ended up being a subtle change.

Change in combat/handletarget.cs
Code:
// Change Line 445 If we're doing avoidance, globes or backtracking, try to use special abilities to move quicker
                        if ((CurrentTarget.Type == GObjectType.Avoidance ||
                            CurrentTarget.Type == GObjectType.HealthGlobe ||
                            CurrentTarget.Type == GObjectType.PowerGlobe ||
							[COLOR="#FF0000"](CurrentTarget.Type == GObjectType.Gold && CombatBase.CanCast(SNOPower.DemonHunter_Vault)) ||
							((CurrentTarget.Type == GObjectType.Container || CurrentTarget.Type == GObjectType.Item) && 
							CurrentTarget.Distance > 18f && CombatBase.CanCast(SNOPower.DemonHunter_Vault)) ||[/COLOR]
                            Monk_SpecialMovement ||
                            (CurrentTarget.Type == GObjectType.Backtrack && Settings.Combat.Misc.AllowOOCMovement))
                            && NavHelper.CanRayCast(Player.Position, CurrentDestination)
                            )

4. Synergizes really well with xzjv's Harrington's optimization here

5. Also Synergizes really well for pickup healthglobe optimization. I have my own. This is what I use.
Changes in combat/weighting.cs
This code basically either picks up globes in battle if health is less than 60% or Primary resource is < 40% or will pick up everything around after battle (less backtracking for globes otherwise)

Code:
if (!Settings.Combat.Misc.CollectHealthGlobe && Player.PrimaryResourcePct > 1 && Player.CurrentHealthPct >= _playerEmergencyHealthGlobeLimit)
                                {
                                    cacheObject.Weight = 0;
                                }
								else if (Player.PrimaryResourcePct < 0.4 || Player.PrimaryHealthPct < 0.6 )
								{
								// cacheObject.Weight = (90f - cacheObject.RadiusDistance) / 90f * 17000d;
								// cacheObject.Weight += 100000d;
								cacheObject.Weight = 40000d;
								}
                                // Give all globes super low weight if we don't urgently need them, but are not 100% health
								// change made to add resource (change > to sign in middle to >= to pick only when needed
                                else if (!witchDoctorManaLow && (Player.CurrentHealthPct > 1) && Player.PrimaryResourcePct > 1)


I hope this helps. Unfortunately the way Sentry's work Double Danetta doesn't deliver the best DPS. However this makes them very viable. The faster movement speed makes up for the slower killing. Unfortunately after doing all this work I finally got a Bombardier's quiver yesterday and now the kill difference b/t double danetta's and 2H xbow + Quiver is too much. Enjoy the changes though. It makes for a great Botting build. Backtracking and movement is so much faster that it doesn't even bother you. Makes for a really fun bot to watch. Awesome for bounties. Work great for T6 as well...though my testing has shown at T5 I get much faster kill and higher Leg/hr than T6 (best synergy of kill speed and movement speed) averaged ~6-7 leg/hr over 8 hrs of rifting at T5.

Added a zip file with all the modified file necessary. This has the following:
1) Vault Mod
2) Health Potion Mod (Will vault for healt potions)
3) Harrington's Mod. (will vault to use Harrington's as well if you are wearing the belt)

View attachment Trinity Vault Package.zip
 
Last edited:
Can you just attach all changed files here in zip? People are lazy.

And if you can provide some build and items hints (or just links) would be nice too.
 
Awesome ! I'll try it as soon as i will back home !
And for vessel, i think it's better to only list changes here, because we can apply it later avec an update on trinity for example. If he posts files here, people will just copy and replace the original one and at the next version of trinity it will not work...

As you say rimmi, it's not optimal for sentry builds, but definitely spam Vault is the best option for speed bounties farming.

Thanks you very much rimmi002 !
 
Last edited:
Ok just tried it, this is awesome !! I was doing 4.5 bounties per hour act4 normal (not zerg) in T2, and now with the changes i'm doing 5.5 bounties per hour!
 
What line of the weighting.cs did you add your healthglobe mod? Couldn't find it in the default. Going to test the other settings thanks for sharing.
 
This is a beautiful thing. Thanks for sharing bro, love it.
 
so your weighting.cs is optimized for health globes and harrington?

your code

Code:
if (!Settings.Combat.Misc.CollectHealthGlobe && Player.PrimaryResourcePct > 1 && Player.CurrentHealthPct >= _playerEmergencyHealthGlobeLimit)
                                {
                                    cacheObject.Weight = 0;
                                }
								else if (Player.PrimaryResourcePct < 0.4 || Player.PrimaryHealthPct < 0.6 )
								{
								// cacheObject.Weight = (90f - cacheObject.RadiusDistance) / 90f * 17000d;
								// cacheObject.Weight += 100000d;
								cacheObject.Weight = 40000d;
								}
                                // Give all globes super low weight if we don't urgently need them, but are not 100% health
								// change made to add resource (change > to sign in middle to >= to pick only when needed
                                else if (!witchDoctorManaLow && (Player.CurrentHealthPct > 1) && Player.PrimaryResourcePct > 1)

show me error messages in DB

Code:
Compiler Error: Plugins\Trinity\Combat\Weighting.cs(661,60) : error CS1061: 'Trinity.PlayerInfoCache' does not contain a definition for 'PrimaryHealthPct' and no extension method
 'PrimaryHealthPct' accepting a first argument of type 'Trinity.PlayerInfoCache' could be found (are you missing a using directive or an assembly reference?)

What trinity are you using? This was done with 1.98
 
Shouldn't it be Player.CurrentHealthPct instead ?
There is Player.CurrentHealthPct and Player.PrimaryResourcePct but no Player.PrimaryHealthPct
 
The actually Demonhunter.cs vault code was still not optimal imo. Made a few changes to it. Now it is based upon 100% the fact you are using Danetta's set.


Code:
 // Vault
 if (!UseOOCBuff && !IsCurrentlyAvoiding && CombatBase.CanCast(SNOPower.DemonHunter_Vault) && !Player.IsRooted && !Player.IsIncapacitated &&
      Settings.Combat.DemonHunter.VaultMode != Config.Combat.DemonHunterVaultMode.MovementOnly &&
      (TargetUtil.AnyMobsInRange(15, 3) || CurrentTarget.IsBossOrEliteRareUnique || CurrentTarget.IsTreasureGoblin) &&
       Player.PrimaryResource >= 8 && TimeSinceUse(SNOPower.DemonHunter_Vault) >= Trinity.Settings.Combat.DemonHunter.VaultMovementDelay)								
            {	
				var bestPierceTarget = TargetUtil.GetBestPierceTarget(20f);
				if (bestPierceTarget != null)
				return new TrinityPower(SNOPower.DemonHunter_Vault, 20f, bestPierceTarget.ACDGuid);
            }

Borrowed some code from Furious Charge because I was tired of just vaulting backwards in combat. This works especially well with StrongArm because it now rolls through the monsters. I put a 2s vault movement delay so the bot had enough time to use Strafe between Vaults.
 
I've tried the all the .cs files in this thread and mine never uses vault ever. even though Hatred is maxed and im using Danetta's set. Whats wrong?
 
I've tried the all the .cs files in this thread and mine never uses vault ever. even though Hatred is maxed and im using Danetta's set. Whats wrong?

Same, i'll have to take a look into the code later... :( (sad i was supposed to use this to test danettas swap in GSR)
 
dont think so. Tried it today and didnt work

Yeah that's what I thought, I just tried and Demonbuddy crashed when I tried to go into Combat Settings... so now I'm waiting out the excessively long Max Sessions timeout to try again, but I doubt it was a coincidence.

Maybe if I make the changes manually instead of using the ZIP..
 
ok yeah, if you go in manually and make the changes it works.. Just not with the ZIP, which makes sense since it's an older ZIP.


Thanks
 
Yeah that's what I thought, I just tried and Demonbuddy crashed when I tried to go into Combat Settings... so now I'm waiting out the excessively long Max Sessions timeout to try again, but I doubt it was a coincidence.

Maybe if I make the changes manually instead of using the ZIP..
You can manually kill sessions if you log in here: Home Page - Buddy Auth Portal
 
Back
Top