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

Trinity - Witch Doctor Class

Thanks Buzzalot,

have another question - should i buy the zunimassa set? Also i would like to know if that build is good enough to farm ACT1 or ACT3? Or is there a "better" build?
 
2pc zuni is nice but for the acid spam build with attack speed you use zuni ring and boots for the 2pc. Boots are expensive, ring is decently priced. As for the build it is good throughout all of the game. I run 1 Acid Spam build and 1 Toad / Bear build and my acidspam build does better due to the faster attacks / higher loh than my high dps bears build.
 
Hello, Moley/Giles is there a way to make gargantuan and zombie dogs summoned only when they are killed?
if not posible is there a way to make them summoned once per game? or maybe have very long cooldown like 5 mins for recast? ty
 
Hmm can sombody help me change the settings, so that the bot spams bears, unless there is no mana. Then it uses ghost bomb. Right now it insists of using ghost bomb, even though it could kill everything 4 times faster with the bears.
 
Hmm can sombody help me change the settings, so that the bot spams bears, unless there is no mana. Then it uses ghost bomb. Right now it insists of using ghost bomb, even though it could kill everything 4 times faster with the bears.
do you have WD Grave Injustice box checked?
 
Code:
                    // Fire Bomb fast-attacks Spams Bomb when mana is too low (VisionQuest) (to cast bears) @10yds or @4yds if Bears avialable and not a fast mob
                    if (!bOOCBuff && !bCurrentlyAvoiding && hashPowerHotbarAbilities.Contains(SNOPower.Witchdoctor_Firebomb) && !playerStatus.bIsIncapacitated)
                    {
                        float fUseThisRange = 30f;
                        if (hashPowerHotbarAbilities.Contains(SNOPower.Witchdoctor_ZombieCharger))
                            fUseThisRange = 12f;
						if (hashPowerHotbarAbilities.Contains(SNOPower.Witchdoctor_ZombieCharger) && (hashActorSNOFastMobs.Contains(targetCurrent.iThisActorSNO)&& playerStatus.dCurrentEnergy <= 130))
                            fUseThisRange = 21f;
							
                        return new GilesPower(SNOPower.Witchdoctor_Firebomb, fUseThisRange, vNullLocation, -1, targetCurrent.iThisACDGUID, 0, 1, USE_SLOWLY);
do you have WD Grave Injustice box checked?

Here is preview of some of the new code in the next trinty. p.self explanatory
 
haeh
my WD activates soul harvest not very often ... i have grave injustice and the 230% dam rune on soul harvest ... so i like to harvest as soon as soul harvest ist up again no matter if there are 1 or 5 enemies around. how do i do this?
 
Code:
                    // Fire Bomb fast-attacks Spams Bomb when mana is too low (VisionQuest) (to cast bears) @10yds or @4yds if Bears avialable and not a fast mob
                    if (!bOOCBuff && !bCurrentlyAvoiding && hashPowerHotbarAbilities.Contains(SNOPower.Witchdoctor_Firebomb) && !playerStatus.bIsIncapacitated)
                    {
                        float fUseThisRange = 30f;
                        if (hashPowerHotbarAbilities.Contains(SNOPower.Witchdoctor_ZombieCharger))
                            fUseThisRange = 12f;
						if (hashPowerHotbarAbilities.Contains(SNOPower.Witchdoctor_ZombieCharger) && (hashActorSNOFastMobs.Contains(targetCurrent.iThisActorSNO)&& playerStatus.dCurrentEnergy <= 130))
                            fUseThisRange = 21f;
							
                        return new GilesPower(SNOPower.Witchdoctor_Firebomb, fUseThisRange, vNullLocation, -1, targetCurrent.iThisACDGUID, 0, 1, USE_SLOWLY);


Here is preview of some of the new code in the next trinty. p.self explanatory

This is great. This is exactly what i am looking for. I have 120k unbuffed dmg, without pierce the veil. So i really want to get those bears going even more. Now if a champ, or any mop is far away, instead of running to it (with full mana) its spamming those ghost bombs. Therefore i ahve changed to acid cloud, just to get closer.

Moley, if i want to use the code now, do i have to replace anything or can i just put it in?

Oh yeah, and thank you Moley and Giles!
 
This is great. This is exactly what i am looking for. I have 120k unbuffed dmg, without pierce the veil. So i really want to get those bears going even more. Now if a champ, or any mop is far away, instead of running to it (with full mana) its spamming those ghost bombs. Therefore i ahve changed to acid cloud, just to get closer.

Moley, if i want to use the code now, do i have to replace anything or can i just put it in?


Oh yeah, and thank you Moley and Giles!

just copy and replace, you can add more snos to the hashActorSNOFastMobs list at the top of the Trinity.cs for anything you don't want chase with bears
 
The last week i have been trying to optimize my WD build to get the highest amount of items dropped pr hour. The build i currently have most success with is the one. With bears and ghost bomb.

Witch Doctor - Game Guide - Diablo III

The build is for high dps, and "low" EHP.
115k dmg
60k hp
600 allres ( but as soon at i get that int up for grusome fest and soul harvest, its more like 800 ).
300 crit dmg
32 crit hit

So my question is, does anyone have a better high dps build, i think it can get better, or maybe completely different? There is a lack of posts here from WD's with high dmg, and not doing the regular acid cloud / toad build. What build are you using, and why?
 
Can anyone help me out with how I would be able to set it so zombie dogs and gargantuan are casted once and then never again or on a long delay such as every 500 seconds? Because i'm farming MP0 and my pets and I never die so constantly casting them during the beginning of every combat wastes my mana and slows down the overall run. I tried setting the spell delay timers from 20,000 to 60,000 in the plugin file but it doesn't change anything.
 
Don't know if this is Gile's or DB related but I get significant lag spike whenever my WD tries to avoid certain attacks like arcane, azmodan's fireballs, etc. Any ideas? Thanks :)
 
Last edited:
Don't know if this is Gile's or DB related but I get significant lag spike whenever my WD tries to avoid certain attacks like arcane, azmodan's fireballs, etc. Any ideas? Thanks :)
thats funny cuz i have that to only for my WD and not my monk or barb. Only for azmodan though nothing else. Dont know what is causing this but i just turn off azmodan for my WD
 
moley - Any chance you can add support or help me figure out how to: Spam Spirit walk - w/ G.I. it's up so often for me that I really wish it would spam it to increase its dps as well as survivability.
 
Can anyone help me out with how I would be able to set it so zombie dogs and gargantuan are casted once and then never again or on a long delay such as every 500 seconds? Because i'm farming MP0 and my pets and I never die so constantly casting them during the beginning of every combat wastes my mana and slows down the overall run. I tried setting the spell delay timers from 20,000 to 60,000 in the plugin file but it doesn't change anything.

I would also like to know how to change so my Garg and dogs only get re-summoned when they die, not when the timer is up. The code seems a little special regarding these two spells.

A "spam dogs" tick-box would be ideal, but I'd be happy to just get some help how to change the code :o
 
I would also like to know how to change so my Garg and dogs only get re-summoned when they die, not when the timer is up. The code seems a little special regarding these two spells.

A "spam dogs" tick-box would be ideal, but I'd be happy to just get some help how to change the code :o

I have actually been looking through his code and in his code it does in fact have a part that says not to cast zombie dogs unless there are 1 or less zombie dogs... My assumption is the bot is not correctly getting the values for how many zombie dogs you have.
Code:
if (!bCurrentlyAvoiding && hashPowerHotbarAbilities.Contains(SNOPower.Witchdoctor_SummonZombieDog) && !playerStatus.bIsIncapacitated &&
                        playerStatus.dCurrentEnergy >= 49 && (iElitesWithinRange[RANGE_20] >= 2 || iAnythingWithinRange[RANGE_20] >= 5 ||
                         (targetCurrent != null && ((targetCurrent.bThisEliteRareUnique || targetCurrent.bThisTreasureGoblin) && targetCurrent.fRadiusDistance <= 30f)) || iPlayerOwnedZombieDog <= 1) &&
                        PowerManager.CanCast(SNOPower.Witchdoctor_SummonZombieDog))

UPDATE: I added a log that writes the value of how many dogs you have and it appears I'm correct.
Code:
[19:59:12.231 N] Casting Zombie Dogs. iPlayerOwnedZombieDog is equal to: 0
[19:59:49.802 N] Casting Zombie Dogs. iPlayerOwnedZombieDog is equal to: 0
[20:00:29.105 N] Casting Zombie Dogs. iPlayerOwnedZombieDog is equal to: 0
 
Last edited:
WD Pet cast fix

Found a work around. His code that counts your zombie dogs/garg/any other pet is getting an exception while trying to make sure that the dogs were in fact summoned by you and not another player.

For those of you who want to make the changes yourself... Replace
Code:
                    if (hashPowerHotbarAbilities.Contains(SNOPower.Witchdoctor_Gargantuan) && hashGargantuan.Contains(tmp_iThisActorSNO))
                    {
                        int iSummonedByID = -1;
                        // Get the summoned-by info, cached if possible
                        if (!dictSummonedByID.TryGetValue(tmp_iThisRActorGuid, out tmp_iThisActorSNO))
                        {
                            try
                            {
                                iSummonedByID = tempCommonData.GetAttribute<int>(ActorAttributeType.SummonedByACDID);
                            }
                            catch (Exception ex)
                            {
                                Logging.WriteDiagnostic("[GilesTrinity] Safely handled exception getting summoned-by info for Gargantuan [" + tmp_iThisActorSNO.ToString() + "]");
                                Logging.WriteDiagnostic(ex.ToString());
                                continue;
                            }
                            dictSummonedByID.Add(tmp_iThisRActorGuid, iSummonedByID);
                        }
                        if (playerStatus.iMyDynamicID == iSummonedByID)
                        {
                            iPlayerOwnedGargantuan++;
                            continue;
                        }
                    }
                    if (hashPowerHotbarAbilities.Contains(SNOPower.Witchdoctor_SummonZombieDog) && hashZombie.Contains(tmp_iThisActorSNO))
                    {
                        int iSummonedByID = -1;
                        // Get the summoned-by info, cached if possible
                        if (!dictSummonedByID.TryGetValue(tmp_iThisRActorGuid, out tmp_iThisActorSNO))
                        {
                            try
                            {
                                iSummonedByID = tempCommonData.GetAttribute<int>(ActorAttributeType.SummonedByACDID);
                            }
                            catch (Exception ex)
                            {
                                Logging.WriteDiagnostic("[GilesTrinity] Safely handled exception getting summoned-by info for Zombie Dogs [" + tmp_iThisActorSNO.ToString() + "]");
                                Logging.WriteDiagnostic(ex.ToString());
                                continue;
                            }
                            dictSummonedByID.Add(tmp_iThisRActorGuid, iSummonedByID);
                        }
                        if (playerStatus.iMyDynamicID == iSummonedByID)
                        {
                            iPlayerOwnedZombieDog++;
                            continue;
                        }
                    }
With this MUCH simpler code ;-)
Code:
                    //Vbnm EDIT
                    if (hashPowerHotbarAbilities.Contains(SNOPower.Witchdoctor_SummonZombieDog) && hashZombie.Contains(tmp_iThisActorSNO))
                    {
                        iPlayerOwnedZombieDog++;
                        continue;
                    }
                    if (hashPowerHotbarAbilities.Contains(SNOPower.Witchdoctor_Gargantuan) && hashGargantuan.Contains(tmp_iThisActorSNO))
                    {
                        iPlayerOwnedGargantuan++;
                        continue;
                    }

Here are my changes that I've made to my script if you want it. I am using it as Im posting this and it is working well
***********************************
Garg doesnt cast unless you dont have one
Zombie Dogs doesn't cast unless you have 2 or less.
*Also to note his code does cast zombie dogs and garg when you encounter a elite/champ/rare npc or if you have quite a few enemy NPC's close to you I made no changes to this.
***I have made no other changes to this script and am providing it as is to those interested***
 

Attachments

Last edited:
Found a work around. His code that counts your zombie dogs/garg/any other pet is getting an exception while trying to make sure that the dogs were in fact summoned by you and not another player.

For those of you who want to make the changes yourself... Replace
Code:
                    if (hashPowerHotbarAbilities.Contains(SNOPower.Witchdoctor_Gargantuan) && hashGargantuan.Contains(tmp_iThisActorSNO))
                    {
                        int iSummonedByID = -1;
                        // Get the summoned-by info, cached if possible
                        if (!dictSummonedByID.TryGetValue(tmp_iThisRActorGuid, out tmp_iThisActorSNO))
                        {
                            try
                            {
                                iSummonedByID = tempCommonData.GetAttribute<int>(ActorAttributeType.SummonedByACDID);
                            }
                            catch (Exception ex)
                            {
                                Logging.WriteDiagnostic("[GilesTrinity] Safely handled exception getting summoned-by info for Gargantuan [" + tmp_iThisActorSNO.ToString() + "]");
                                Logging.WriteDiagnostic(ex.ToString());
                                continue;
                            }
                            dictSummonedByID.Add(tmp_iThisRActorGuid, iSummonedByID);
                        }
                        if (playerStatus.iMyDynamicID == iSummonedByID)
                        {
                            iPlayerOwnedGargantuan++;
                            continue;
                        }
                    }
                    if (hashPowerHotbarAbilities.Contains(SNOPower.Witchdoctor_SummonZombieDog) && hashZombie.Contains(tmp_iThisActorSNO))
                    {
                        int iSummonedByID = -1;
                        // Get the summoned-by info, cached if possible
                        if (!dictSummonedByID.TryGetValue(tmp_iThisRActorGuid, out tmp_iThisActorSNO))
                        {
                            try
                            {
                                iSummonedByID = tempCommonData.GetAttribute<int>(ActorAttributeType.SummonedByACDID);
                            }
                            catch (Exception ex)
                            {
                                Logging.WriteDiagnostic("[GilesTrinity] Safely handled exception getting summoned-by info for Zombie Dogs [" + tmp_iThisActorSNO.ToString() + "]");
                                Logging.WriteDiagnostic(ex.ToString());
                                continue;
                            }
                            dictSummonedByID.Add(tmp_iThisRActorGuid, iSummonedByID);
                        }
                        if (playerStatus.iMyDynamicID == iSummonedByID)
                        {
                            iPlayerOwnedZombieDog++;
                            continue;
                        }
                    }
With this MUCH simpler code ;-)
Code:
                    //Vbnm EDIT
                    if (hashPowerHotbarAbilities.Contains(SNOPower.Witchdoctor_SummonZombieDog) && hashZombie.Contains(tmp_iThisActorSNO))
                    {
                        //Logging.Write("Adding Zombie Dog");
                        iPlayerOwnedZombieDog++;
                        //Logging.Write("Count is: " + iPlayerOwnedZombieDog.ToString());
                        continue;
                    }
                    if (hashPowerHotbarAbilities.Contains(SNOPower.Witchdoctor_Gargantuan) && hashGargantuan.Contains(tmp_iThisActorSNO))
                    {
                        iPlayerOwnedGargantuan++;
                        continue;
                    }

Here are my changes that I've made to my script if you want it. I am using it as Im posting this and it is working well
***********************************
Garg doesnt cast unless you dont have one
Zombie Dogs doesn't cast unless you have 2 or less.
*Also to note his code does cast zombie dogs and garg when you encounter a elite/champ/rare npc or if you have quite a few enemy NPC's close to you I made no changes to this.
***I have made no other changes to this script and am providing it as is to those interested***

excellent work, I will have this added to next trinity in some capacity, i knew there was something wrong but it was beyond me
I will have to look at the Zombie Dog code, because it must synergize with Sacrifice.
EDIT, also it shouldn't depend counting on whether or not you have the ZD skill. lots of runes pop out dogs after monster death, will take a good long look at it, and test it some

Spirit walk is fine the way it is, open up the code and change the conditions for when it is cast if you want it to be more offensive, change the health to cast at to like .90 ,Spiritwalk is preferred to be used for defense by most, and not wasted when you really need it.

I will still work in recasting garg on elites to trigger restless giant rune. It works better this way, 147 mana is nothing
 
Last edited:
Back
Top