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

[Guide] A walkthrough of changing skill activation criteria (range etc) for Dummies!

Ah ok now i know what you mean. Jes i pickup magic/yellow items 61+ potition/gems to.
 
Is there an easy way to remove ALL monster priorities (except goblins) and just let the bot attack the closest monster?
 
I edited the Wave of Light config so it can be cast fast at elites or a group of few mobs. With the Empowered Wave rune, the spirit cost is just 40 and it giver a pretty good damage and clear my way with a short knockback. I also want to check if sweeping winds is active.
Correct me if i'm wrong. The code is below.


Code:
// Wave of light
                    if (!bOOCBuff && !bCurrentlyAvoiding && !playerStatus.bIsIncapacitated &&
                        (iElitesWithinRange[RANGE_25] > 0 || ((targetCurrent.bThisEliteRareUnique || targetCurrent.bThisBoss) && targetCurrent.fRadiusDistance <= 14f) || iAnythingWithinRange[RANGE_15] > 2) &&
                        hashPowerHotbarAbilities.Contains(SNOPower.Monk_WaveOfLight) &&
                        // Check if either we don't have sweeping winds, or we do and it's ready to cast in a moment
                            (!hashPowerHotbarAbilities.Contains(SNOPower.Monk_SweepingWind) ||
                             (hashPowerHotbarAbilities.Contains(SNOPower.Monk_SweepingWind) && playerStatus.dCurrentEnergy >= 85 && GilesUseTimer(SNOPower.Monk_SweepingWind))) &&
                        GilesUseTimer(SNOPower.Monk_WaveOfLight) &&
                        (playerStatus.dCurrentEnergy >= 60 || playerStatus.dCurrentEnergyPct >= 0.85))
                    {
                        return new GilesPower(SNOPower.Monk_WaveOfLight, 16f, vNullLocation, -1, targetCurrent.iThisACDGUID, 0, 0, USE_SLOWLY);
                    }
 
Anyway to prevent the bot from attempting to "Rend" the following?:
-Desecrator Pools
-Frozen Bombs
-Arcane Sentries
-Poison Pools
-Molten Bombs
-Molten Trails
-Act3 Flame Cannons
 
I'm having Trouble with Furious Charge.
I just started reading though the .cs and this thread and I don't see how to change it's settings.

What I'm seeing, when the bot starts, he shouts, then he charges, 2 secs later, he's fighting, but he can't charge because the timer isn't up.
Then he charges again every time the timer is up. I tried to turn off Out of combat movement, but then he doesn't sprint.

Once he gets into combat, it seems to be working ok, but if it worked as desired, combat would be over that much quicker.

My goal is to tell him not to charge unless there are >=3 monsters in range.
Then I want him to use it as often as possible until there are none.
The cooldown is about 10 seconds, Normal combat for 10 trash mobs is about 7-8 seconds, so unless it's a big pack or elite, he doesn't even get to use the skill.

Below are all the lines I could find that might be edited. I have changed most of them one at a time to see if anything changed but so far no luck.

Code:
---
                // Furious Charge movement for a barb
                if (!bFoundSpecialMovement && hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_FuriousCharge) &&
                    DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Barbarian_FuriousCharge]).TotalMilliseconds >= dictAbilityRepeatDelay[SNOPower.Barbarian_FuriousCharge] &&
                    PowerManager.CanCast(SNOPower.Barbarian_FuriousCharge))
                {
                    WaitWhileAnimating(3, true);
                    ZetaDia.Me.UsePower(SNOPower.Barbarian_FuriousCharge, vCurrentDestination, iCurrentWorldID, -1);
                    dictAbilityLastUse[SNOPower.Barbarian_FuriousCharge] = DateTime.Now;
                    bFoundSpecialMovement = true;
                }


---
                    // Furious charge
                    if (!bOOCBuff && !bCurrentlyAvoiding && hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_FuriousCharge) && !playerStatus.bIsRooted && !playerStatus.bIsIncapacitated &&
                        (iElitesWithinRange[RANGE_25] > 0 || iAnythingWithinRange[RANGE_7] >= 3 || playerStatus.dCurrentHealthPct <= 0.7 || targetCurrent.fCentreDistance >= 7f || targetCurrent.bThisEliteRareUnique || targetCurrent.bThisTreasureGoblin || targetCurrent.bThisBoss) &&
                        GilesUseTimer(SNOPower.Barbarian_FuriousCharge) &&
                        //GilesCanRecastAfterFailure(SNOPower.Barbarian_FuriousCharge) &&
                        PowerManager.CanCast(SNOPower.Barbarian_FuriousCharge))
                    {
                        float fExtraDistance;
                        if (targetCurrent.fCentreDistance <= 15)
                            fExtraDistance = 10;
                        else
                            fExtraDistance = (25 - targetCurrent.fCentreDistance);
                        if (fExtraDistance < 5f)
                            fExtraDistance = 5f;
                        Vector3 vNewTarget = MathEx.CalculatePointFrom(targetCurrent.vThisPosition, playerStatus.vCurrentPosition, targetCurrent.fCentreDistance + fExtraDistance);
                        return new GilesPower(SNOPower.Barbarian_FuriousCharge, 32f, vNewTarget, iCurrentWorldID, -1, 1, 1, USE_SLOWLY);
                    }

---
                // Furious Charge movement for a barb
                if (GilesTrinity.hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_FuriousCharge) && !bTooMuchZChange &&
                    DateTime.Now.Subtract(GilesTrinity.dictAbilityLastUse[SNOPower.Barbarian_FuriousCharge]).TotalMilliseconds >= GilesTrinity.dictAbilityRepeatDelay[SNOPower.Barbarian_FuriousCharge] &&
                    fDistanceFromTarget >= 12f && 
                    PowerManager.CanCast(SNOPower.Barbarian_FuriousCharge) && !ShrinesInArea(vMoveToTarget))
                {
                    Vector3 vThisTarget = vMoveToTarget;
                    if (fDistanceFromTarget > 35f)
                        vThisTarget = MathEx.CalculatePointFrom(vMoveToTarget, vMyCurrentPosition, 35f);
                    ZetaDia.Me.UsePower(SNOPower.Barbarian_FuriousCharge, vThisTarget, GilesTrinity.iCurrentWorldID, -1);
                    GilesTrinity.dictAbilityLastUse[SNOPower.Barbarian_FuriousCharge] = DateTime.Now;
                    return;
                }

---
                {SNOPower.Barbarian_FuriousCharge, 500}, // Need to be able to check skill-rune for the dynamic cooldown - set to 10 always except for the skill rune :(
 
Right guys! Apologies for not responding sooner, I've been very ill the past week and haven't been out of bed :P.

Hi Beardi, sorry to be bothering you again with another question: How do I edit Seismic Slam to make it as spammable and accurate as Hammer of the Ancients?

Seismic Slam doesn't seem to activate even at full fury and on the rare occasions that it's actually used, it actually casts the spell in the wrong direction :(

Change this:
Code:
{SNOPower.Barbarian_SeismicSlam, 2500},
to this:
Code:
{SNOPower.Barbarian_SeismicSlam, 150},

Also replace the entire seismic slam code with the hammer of the ancients code, adjusting energy levels accordingly. New Seismic slam code:

Code:
// Seismic slam enemies within close range                    if (!bOOCBuff && !bCurrentlyAvoiding && !bWaitingForSpecial && hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_SeismicSlam) && !playerStatus.bIsIncapacitated &&
                        playerStatus.dCurrentEnergy >= 20 &&
                       (
                        // More than 75 energy... *OR* 55 energy and target is high on health... 
                            playerStatus.dCurrentEnergy >= 75 || (playerStatus.dCurrentEnergy >= 55 && targetCurrent.iThisHitPoints >= 0.50) ||
                        // OR... target is elite/goblin/boss...
                            targetCurrent.bThisEliteRareUnique || targetCurrent.bThisTreasureGoblin || targetCurrent.bThisBoss ||
                        // OR... player WOTB is active... OR player is low on health...
                            GilesHasBuff(SNOPower.Barbarian_SeismicSlam) || playerStatus.dCurrentHealthPct <= 0.38
                       ) &&
                       GilesUseTimer(SNOPower.Barbarian_SeismicSlam))

Change the energy levels to what you want, I know nothing of the barbarian class and fury costs :)

Ah ok now i know what you mean. Jes i pickup magic/yellow items 61+ potition/gems to.

Try to pick up as little as possible, only 61+ Yellows, 750-1000+ gold piles, and no blues, should help your bot not run towards loot mid combat.

Is there an easy way to remove ALL monster priorities (except goblins) and just let the bot attack the closest monster?

To remove all monster priorities, search for
Code:
// A list of ranged mobs that should be attacked even if they are outside of the routines current kill radius
and remove all the numbers below, this will remove all ranged mob priorities.

I edited the Wave of Light config so it can be cast fast at elites or a group of few mobs. With the Empowered Wave rune, the spirit cost is just 40 and it giver a pretty good damage and clear my way with a short knockback. I also want to check if sweeping winds is active.
Correct me if i'm wrong. The code is below.

Code:
// Wave of light
                    if (!bOOCBuff && !bCurrentlyAvoiding && !playerStatus.bIsIncapacitated &&
                        (iElitesWithinRange[RANGE_25] > 0 || ((targetCurrent.bThisEliteRareUnique || targetCurrent.bThisBoss) && targetCurrent.fRadiusDistance <= 14f) || iAnythingWithinRange[RANGE_15] > 2) &&
                        hashPowerHotbarAbilities.Contains(SNOPower.Monk_WaveOfLight) &&
                        // Check if either we don't have sweeping winds, or we do and it's ready to cast in a moment
                            (!hashPowerHotbarAbilities.Contains(SNOPower.Monk_SweepingWind) ||
                             (hashPowerHotbarAbilities.Contains(SNOPower.Monk_SweepingWind) && playerStatus.dCurrentEnergy >= 85 && GilesUseTimer(SNOPower.Monk_SweepingWind))) &&
                        GilesUseTimer(SNOPower.Monk_WaveOfLight) &&
                        (playerStatus.dCurrentEnergy >= 60 || playerStatus.dCurrentEnergyPct >= 0.85))
                    {
                        return new GilesPower(SNOPower.Monk_WaveOfLight, 16f, vNullLocation, -1, targetCurrent.iThisACDGUID, 0, 0, USE_SLOWLY);
                    }

Looks good to me :)

Anyway to prevent the bot from attempting to "Rend" the following?:
-Desecrator Pools
-Frozen Bombs
-Arcane Sentries
-Poison Pools
-Molten Bombs
-Molten Trails
-Act3 Flame Cannons

Speak to Giles about that, nothing I can do :)
 
I'm having Trouble with Furious Charge.
I just started reading though the .cs and this thread and I don't see how to change it's settings.

What I'm seeing, when the bot starts, he shouts, then he charges, 2 secs later, he's fighting, but he can't charge because the timer isn't up.
Then he charges again every time the timer is up. I tried to turn off Out of combat movement, but then he doesn't sprint.

Once he gets into combat, it seems to be working ok, but if it worked as desired, combat would be over that much quicker.

My goal is to tell him not to charge unless there are >=3 monsters in range.
Then I want him to use it as often as possible until there are none.
The cooldown is about 10 seconds, Normal combat for 10 trash mobs is about 7-8 seconds, so unless it's a big pack or elite, he doesn't even get to use the skill.

Below are all the lines I could find that might be edited. I have changed most of them one at a time to see if anything changed but so far no luck.

Code:
---
                // Furious Charge movement for a barb
                if (!bFoundSpecialMovement && hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_FuriousCharge) &&
                    DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Barbarian_FuriousCharge]).TotalMilliseconds >= dictAbilityRepeatDelay[SNOPower.Barbarian_FuriousCharge] &&
                    PowerManager.CanCast(SNOPower.Barbarian_FuriousCharge))
                {
                    WaitWhileAnimating(3, true);
                    ZetaDia.Me.UsePower(SNOPower.Barbarian_FuriousCharge, vCurrentDestination, iCurrentWorldID, -1);
                    dictAbilityLastUse[SNOPower.Barbarian_FuriousCharge] = DateTime.Now;
                    bFoundSpecialMovement = true;
                }


---
                    // Furious charge
                    if (!bOOCBuff && !bCurrentlyAvoiding && hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_FuriousCharge) && !playerStatus.bIsRooted && !playerStatus.bIsIncapacitated &&
                        (iElitesWithinRange[RANGE_25] > 0 || iAnythingWithinRange[RANGE_7] >= 3 || playerStatus.dCurrentHealthPct <= 0.7 || targetCurrent.fCentreDistance >= 7f || targetCurrent.bThisEliteRareUnique || targetCurrent.bThisTreasureGoblin || targetCurrent.bThisBoss) &&
                        GilesUseTimer(SNOPower.Barbarian_FuriousCharge) &&
                        //GilesCanRecastAfterFailure(SNOPower.Barbarian_FuriousCharge) &&
                        PowerManager.CanCast(SNOPower.Barbarian_FuriousCharge))
                    {
                        float fExtraDistance;
                        if (targetCurrent.fCentreDistance <= 15)
                            fExtraDistance = 10;
                        else
                            fExtraDistance = (25 - targetCurrent.fCentreDistance);
                        if (fExtraDistance < 5f)
                            fExtraDistance = 5f;
                        Vector3 vNewTarget = MathEx.CalculatePointFrom(targetCurrent.vThisPosition, playerStatus.vCurrentPosition, targetCurrent.fCentreDistance + fExtraDistance);
                        return new GilesPower(SNOPower.Barbarian_FuriousCharge, 32f, vNewTarget, iCurrentWorldID, -1, 1, 1, USE_SLOWLY);
                    }

---
                // Furious Charge movement for a barb
                if (GilesTrinity.hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_FuriousCharge) && !bTooMuchZChange &&
                    DateTime.Now.Subtract(GilesTrinity.dictAbilityLastUse[SNOPower.Barbarian_FuriousCharge]).TotalMilliseconds >= GilesTrinity.dictAbilityRepeatDelay[SNOPower.Barbarian_FuriousCharge] &&
                    fDistanceFromTarget >= 12f && 
                    PowerManager.CanCast(SNOPower.Barbarian_FuriousCharge) && !ShrinesInArea(vMoveToTarget))
                {
                    Vector3 vThisTarget = vMoveToTarget;
                    if (fDistanceFromTarget > 35f)
                        vThisTarget = MathEx.CalculatePointFrom(vMoveToTarget, vMyCurrentPosition, 35f);
                    ZetaDia.Me.UsePower(SNOPower.Barbarian_FuriousCharge, vThisTarget, GilesTrinity.iCurrentWorldID, -1);
                    GilesTrinity.dictAbilityLastUse[SNOPower.Barbarian_FuriousCharge] = DateTime.Now;
                    return;
                }

---
                {SNOPower.Barbarian_FuriousCharge, 500}, // Need to be able to check skill-rune for the dynamic cooldown - set to 10 always except for the skill rune :(

The issue I have with what you're trying to do is regarding "My goal is to tell him not to charge unless there are >=3 monsters in range.". The problem here is that the bot only registers mobs in range at a specific time, it doesn't cache it so that it knows there was a pack of 10 that is now down to one mob.

Because of this changing the code to >=3 will be fine, but it will stop using it to finish them off.

Unfortunately I'm not too comfortable editing the code that deals with movement either, so I guess just post on the Barb Thread to see if Giles can look at it for you :)
 
The issue I have with what you're trying to do is regarding "My goal is to tell him not to charge unless there are >=3 monsters in range.". The problem here is that the bot only registers mobs in range at a specific time, it doesn't cache it so that it knows there was a pack of 10 that is now down to one mob.

Because of this changing the code to >=3 will be fine, but it will stop using it to finish them off.

Unfortunately I'm not too comfortable editing the code that deals with movement either, so I guess just post on the Barb Thread to see if Giles can look at it for you :)

Code:
---
                    // Furious charge
                    if (!bOOCBuff && !bCurrentlyAvoiding && hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_FuriousCharge) && !playerStatus.bIsRooted && !playerStatus.bIsIncapacitated &&
                        (iElitesWithinRange[RANGE_25] > 0 || iAnythingWithinRange[RANGE_7] >= 3 || iAnythingWithinRange[RANGE_12] <= 3 ||playerStatus.dCurrentHealthPct <= 0.7 || targetCurrent.fCentreDistance >= 7f || targetCurrent.bThisEliteRareUnique || targetCurrent.bThisTreasureGoblin || targetCurrent.bThisBoss) &&

                        PowerManager.CanCast(SNOPower.Barbarian_FuriousCharge))
                    {
                        float fExtraDistance;
                        if (targetCurrent.fCentreDistance <= 15)
                            fExtraDistance = 10;
                        else
                            fExtraDistance = (25 - targetCurrent.fCentreDistance);
                        if (fExtraDistance < 5f)
                            fExtraDistance = 5f;
                        Vector3 vNewTarget = MathEx.CalculatePointFrom(targetCurrent.vThisPosition, playerStatus.vCurrentPosition, targetCurrent.fCentreDistance + fExtraDistance);
                        return new GilesPower(SNOPower.Barbarian_FuriousCharge, 32f, vNewTarget, iCurrentWorldID, -1, 1, 1, USE_SLOWLY);
                    }

This will cast, when avail on 3 or more within 7ft OR 3 or less within 12ft, may help with the "Finish them off"
otherwise, you can try moving furious charge UP the list in the skill priority tree

I too don't have a barb, just trying to help
 
Anyway to prevent the bot from attempting to "Rend" the following?:
-Desecrator Pools
-Frozen Bombs
-Arcane Sentries
-Poison Pools
-Molten Bombs
-Molten Trails
-Act3 Flame Cannons

What exactly do you mean? using rend on elites with these affixes? I am unsure
 
Great guide, I have stickied this!

But, muhahahaha, I shall leave you at the whim of the wrath of the userbase and you can maintain this guide completely how you wish! It saves me having to do it! ;)

Thanks for sharing, and it's very well written :D


Hiho there .aah great Guide i was looking for something like this! , Ok here,s my thingie , i,m playing a somewhat tactical Wizzard with , Arcane Torrent -Hydra-Archon , now i managed to change the Cs file so the Archon now activates at elites nearby only ,

But ...i can,t get the Slowtime skill to activate only when 1 or more elite , ..or 5 or more Trashmob,s are nearby as in Range like 4 -8 , any suggestion,s maybe ? ...it just spawn,s the slowtime whenever it,s CD is over -.0 ..:P

thx in advance for responding ..for any1 ^_
 
Thanks for the thread on this.

My problem. Monk - Skill : Tempest Rush.

I moved up the tempest rush use at spirit to 75. This worked out, but it still is unusable.

It will rush, then stop, rush, then stop. *some of the time. Destroying all my spirit in seconds, instead of holding the skill down which takes significantly less spirit.

It will stop rushing to pick up gold, then will start again, also sucking spirit.

How can I fix these problems?

*attaching my custom txt file that lists every time tempest rush is mentioned in Giles trinity to make searching less of a problem.
 

Attachments

Sounds like the same issue that Archon Disintegrate has, the bot cannot hold a button down unless the window is focussed, which is a damn pain. Test that out though, should stop it doing that.

And to everyone else, I'll be away till monday so don't expect any responses :)
 
Sounds like the same issue that Archon Disintegrate has, the bot cannot hold a button down unless the window is focussed, which is a damn pain. Test that out though, should stop it doing that.

This is fixed in the latest versions, DB will always make the window focused if you want (there's an option in the settings tab).
 
Sounds like the same issue that Archon Disintegrate has, the bot cannot hold a button down unless the window is focussed, which is a damn pain. Test that out though, should stop it doing that.

And to everyone else, I'll be away till monday so don't expect any responses :)

Ill wait until monday, but like starvrakas said... It is forced to the foreground. I'm still having the issue of it not holding down a skill.
 
Hey guys, I need a lil' help here in spamming Rend.

The current code for // Rend Spam is this

// Rend spam
if (!bOOCBuff && !playerStatus.bIsIncapacitated && hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_Rend) &&
(!bCurrentlyAvoiding || iAnythingWithinRange[RANGE_12] >= 1) &&
// Doesn't need CURRENT target to be in range, just needs ANYTHING to be within 9 foot, since it's an AOE!
(iAnythingWithinRange[RANGE_6] > 0 || targetCurrent.fRadiusDistance <= 6f) &&

Do I change the second line iAnythingWithinRange[RANGE_12] >= 1 to iAnythingWithinRange[RANGE_12] >= 0 to make it spam a hell lot?

Or do I change the following highlighted numbers to a smaller value?

// Either off full 4 second or so cooldown...
GilesUseTimer(SNOPower.Barbarian_Rend) ||
// ... or ability to spam rend every 0.4 seconds if more enemies in range than when last used rend...
(iAnythingWithinRange[RANGE_6] > iWithinRangeLastRend && DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Barbarian_Rend]).TotalMilliseconds >= 1000) ||
// ... or ability to spam rend every 1.1 seconds if current primary target changes...
(targetCurrent.iThisACDGUID != iACDGUIDLastRend && DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Barbarian_Rend]).TotalMilliseconds >= 1800) ||
// ... or ability to spam rend every 1.5 seconds with almost full fury
(playerStatus.dCurrentEnergyPct >= 0.85 && DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Barbarian_Rend]).TotalMilliseconds >= 2500) ||
// ... or ability to spam rend every 2 seconds with a lot of fury
(playerStatus.dCurrentEnergyPct >= 0.65 && DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Barbarian_Rend]).TotalMilliseconds >= 3500)
)

Would really hope someone can help me with this
 
I've infinite tempest rush and would also appreciate any feedback or discussion wrt botting w/ TR always held (combat, movement, gold, etc). Thanks!
 
I know a lot of talk has already been done on the sweeping wind issue (not really an issue for most anymore because Giles rules). Sorry if this has already been touched on. I did read everything but was unable to find an answer.

Anyway... So I do like the innate functions of sweeping wind in trinity. However, I was wondering if there was any possible way of having the bot refresh sweeping wind just before it drops regardless of whether in combat or not. With the 4pc Inna's bonus I believe this would prove to dramatically increase my kill rate. The bot wouldn't have to wait for blinding flash to be off cooldown and sweeping wind would constantly be active at full power! Let me know, thanks! =)
 
I'm running a throw barb build similar to this: Barbarian - Game Guide - Diablo III

I'm finding that when I have "Fury Dump always" selected under giles/combat/barb tab, my barb tends to favor spamming Sprint/Marathon during boss fights. Is there a simple edit I can make that will make him spam Hammer of the Ancients as its fury dump instead? 400% damage from hammer definitely beats sprint when I'm standing still :)

Thanks,
 
My HOTA spends 11 Fury, i need a modification to use this skill more times, my Fury always is full.
 
My HOTA spends 11 Fury, i need a modification to use this skill more times, my Fury always is full.

Change the required Fury to 11, and reduce the delay between casts to something lower :)
 
Back
Top