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

[Monk] Combination Strike: Fists of Thunder + Deadly Reach + Way of the Hundred Fists

tesslerc

New Member
Joined
Jun 27, 2012
Messages
803
Reaction score
9
Ok, so i started working on this and it seems to work nicely.

Using 3 spirit generators, it uses fists of thunder as main, uses wothf for the 3 stacks and refreshes them every 4.5 seconds, and uses deadly reach for the 18% damage bonus.

also uses counters and so on to make sure all 3 spirit generators have activated combination strike.

monk.cs:

Code:
            // Fists of thunder as the primary, repeatable attack
            if (!UseOOCBuff && !IsCurrentlyAvoiding && Hotbar.Contains(SNOPower.Monk_FistsofThunder)
                && (DateTime.Now.Subtract(OtherThanDeadlyReach).TotalMilliseconds < 2700 && DateTime.Now.Subtract(ForeSightFirstHit).TotalMilliseconds < 17000 || !Hotbar.Contains(SNOPower.Monk_DeadlyReach) ||
                CurrentTarget.RadiusDistance > 12f) &&
                (!Hotbar.Contains(SNOPower.Monk_WayOfTheHundredFists) || DateTime.Now.Subtract(LastWotF).TotalMilliseconds < 4500 &&
                GetHasBuff(SNOPower.Monk_WayOfTheHundredFists) && GetBuffStacks(SNOPower.Monk_WayOfTheHundredFists) == 3))
            {
                if (DateTime.Now.Subtract(OtherThanDeadlyReach).TotalMilliseconds < 2700)
                    OtherThanDeadlyReach = DateTime.Now;
                Monk_TickSweepingWindSpam();
                return new TrinityPower(SNOPower.Monk_FistsofThunder, 30f, Vector3.Zero, -1, CurrentTarget.ACDGuid, 0, 1, NO_WAIT_ANIM);
            }
            // Crippling wave
            if (!UseOOCBuff && !IsCurrentlyAvoiding && Hotbar.Contains(SNOPower.Monk_CripplingWave)
                && (DateTime.Now.Subtract(OtherThanDeadlyReach).TotalMilliseconds < 2700 && DateTime.Now.Subtract(ForeSightFirstHit).TotalMilliseconds < 17000 || !Hotbar.Contains(SNOPower.Monk_DeadlyReach)))
            {
                if (DateTime.Now.Subtract(OtherThanDeadlyReach).TotalMilliseconds < 2700)
                    OtherThanDeadlyReach = DateTime.Now;
                Monk_TickSweepingWindSpam();
                return new TrinityPower(SNOPower.Monk_CripplingWave, 14f, Vector3.Zero, -1, CurrentTarget.ACDGuid, 0, 1, NO_WAIT_ANIM);
            }
            // Way of hundred fists
            if (!UseOOCBuff && !IsCurrentlyAvoiding && Hotbar.Contains(SNOPower.Monk_WayOfTheHundredFists)
                && (DateTime.Now.Subtract(OtherThanDeadlyReach).TotalMilliseconds < 2700 && DateTime.Now.Subtract(ForeSightFirstHit).TotalMilliseconds < 17000 || !Hotbar.Contains(SNOPower.Monk_DeadlyReach)))
            {
                if (DateTime.Now.Subtract(LastWotF).TotalMilliseconds > 4900)
                    LastWotF = DateTime.Now;
                if (DateTime.Now.Subtract(OtherThanDeadlyReach).TotalMilliseconds < 2700)
                    OtherThanDeadlyReach = DateTime.Now;
                Monk_TickSweepingWindSpam();
                return new TrinityPower(SNOPower.Monk_WayOfTheHundredFists, 14f, Vector3.Zero, -1, CurrentTarget.ACDGuid, 0, 1, NO_WAIT_ANIM);
            }
            // Deadly reach
            if (!UseOOCBuff && !IsCurrentlyAvoiding && Hotbar.Contains(SNOPower.Monk_DeadlyReach))
            {
                if (DateTime.Now.Subtract(ForeSightFirstHit).TotalMilliseconds > 17000)
                {
                    ForeSightFirstHit = DateTime.Now;
                }
                else if (DateTime.Now.Subtract(ForeSight2).TotalMilliseconds > 400 && DateTime.Now.Subtract(ForeSightFirstHit).TotalMilliseconds > 2000)
                {
                    OtherThanDeadlyReach = DateTime.Now;
                }
                if (DateTime.Now.Subtract(ForeSight2).TotalMilliseconds > 2800)
                {
                    ForeSight2 = DateTime.Now;
                }
                Monk_TickSweepingWindSpam();
                return new TrinityPower(SNOPower.Monk_DeadlyReach, 16f, Vector3.Zero, -1, CurrentTarget.ACDGuid, 0, 1, NO_WAIT_ANIM);
            }


Variables.cs:

add this line

Code:
        // Last WotF used for combo strike + shizzle
        private static DateTime LastWotF = DateTime.Now;


This is tested with the latest build off the GIT 1.7.3.0
 
This is nice, i will try it out. But don't you think 3 spirit generators is a bit extreme :) i mean, you've gotta have another skills as well, right :)
 
This is nice, i will try it out. But don't you think 3 spirit generators is a bit extreme :) i mean, you've gotta have another skills as well, right :)

It solves 2 issues, one is that people wanted it to work with WotHF for increased attack speed and ms and some people also use a 3 spirit gen build.
It will also work fine with only 2 spirit generators :)

I actually ran with 3, it gives you so much damage bonus it is amazing. I got around 100k more dps.

+18% Deadly Reach + 15% Increased Attack Speed + 8 * 3 Spirit Generators + Main attack is a fast one (Fists of Fury)
 
Wow. That sounds like quite a lot. I will experiment with that for sure. Thanks for it, by the way. I had a lot of success with your previous modification :P KEEP IT UP BRO!! :)
 
Got the new trinity and implemented your code real fast. It works like a charm. :) :) I tested it with 3 skills, but i kinda like 2 and WoL better. Anyway, deadly reach now buffs my toons for an extra 26% dmg xD. You've provided a great addition to trinity once more. Kudos to you, sir.
 
If you want to test something else i'm trying out, Exploding palm:

Variables.cs - add this:

Code:
        private static Dictionary<int, DateTime> ExplodingPalmDict = new Dictionary<int, DateTime>();

        private static DateTime ExplodingPalmUse = DateTime.Now;

Monk.cs edit exploding palm part to this:

Code:
            // Reset exploding palm dict - save cpu and shiz
            if (ExplodingPalmDict.Count > 10)
                ExplodingPalmDict = new System.Collections.Generic.Dictionary<int, DateTime>();
            // Exploding Palm
            if (!UseOOCBuff && !IsCurrentlyAvoiding && !Player.IsIncapacitated &&
                (ElitesWithinRange[RANGE_25] > 0 || AnythingWithinRange[RANGE_15] >= 3 || (CurrentTarget.IsBossOrEliteRareUnique && CurrentTarget.RadiusDistance <= 14f)) &&
                Hotbar.Contains(SNOPower.Monk_ExplodingPalm) &&
                ((Player.PrimaryResource >= 40 && !Player.WaitingForReserveEnergy) || Player.PrimaryResource >= MinEnergyReserve) &&
                //(SNOPowerUseTimer(SNOPower.Monk_ExplodingPalm) || Player.PrimaryResource > 140) && 
                //PowerManager.CanCast(SNOPower.Monk_ExplodingPalm) && 
                (!ExplodingPalmDict.ContainsKey(CurrentTarget.ACDGuid) || DateTime.Now.Subtract(ExplodingPalmDict.Where(s => s.Key == CurrentTarget.ACDGuid).FirstOrDefault().Value).TotalMilliseconds >= 8000))
            {
                double TempTime = DateTime.Now.Subtract(ExplodingPalmUse).TotalMilliseconds;
                if (TempTime > 400)
                {
                    TempTime = 0;
                    ExplodingPalmUse = DateTime.Now;
                }
                if (TempTime >= 250)
                {
                    if (ExplodingPalmDict.ContainsKey(CurrentTarget.ACDGuid))
                        ExplodingPalmDict.Remove(CurrentTarget.ACDGuid);
                    ExplodingPalmDict.Add(CurrentTarget.ACDGuid, DateTime.Now);
                }
                return new TrinityPower(SNOPower.Monk_ExplodingPalm, 14f, Vector3.Zero, -1, CurrentTarget.ACDGuid, 1, 1, WAIT_FOR_ANIM);
            }


This takes a longer time than trinity usually does in order to cast exploding palm (should apply it 100% of the time), but it does sometimes double cast on a monster (trying to optimize it...).
It keeps a list of monsters and when it was applied to them, so it won't try again more than once every 9 seconds.
I use it on act 2 dahlgur oasis - soo many monsters that with the 5 spirit rune im at max spirit 99% of the time :)

works like a charm atm :)

Monk - Game Guide - Diablo III

this is my current build running mp8
 
Hehe, i swear.. you must be reading my mind. I was testing it exactly with Exploding Palm, but it wasn't performing well as it is.. so i was just thinking that it needed some attention itself, lol :) I will gladly test it, mate. I am even gonna test it in a party :P
 
Wow. That sounds like quite a lot. I will experiment with that for sure. Thanks for it, by the way. I had a lot of success with your previous modification :P KEEP IT UP BRO!! :)

New Trinity?
All I see is 1.7.2.13. Did a newer version come out?
 
This is why I still bot. Not for the money (which is cool) but for the pure geek+ factor. The tweaking and playing around with what should not work but does anyway is far more entertaining than the game itself.... This is good stuff! Testing now, looks like a winner :p I would buy you a beer if I didn't spend it all on buying myself a beer.
 
New Trinity?
All I see is 1.7.2.13. Did a newer version come out?

There is a new version, BUT it DID NOT come out. Yet. Anyhow, there is a way to get it off Trinity's Assembla git.
 
New Trinity?
All I see is 1.7.2.13. Did a newer version come out?

It's still in development, and not ready for release. I'm regularly breaking it and adding new things. If you want "stable" don't use the one off git, it may do wacky things (although I try to avoid bugs when all possible ofc).
 
TBH, it looks pretty stable to me. :) But yeah, better wait for the official release. I am just testing out the features for fun. Btw, rrrix, i trust you are gonna implement tesslerc's stuff in the official release, right :)


EDIT: Rrrix, how can fix the threatening shout part until the official release?
 
Last edited:
the lastest one on git likes health globes too much and may get you killed lol I even turned the option off and my guys still go for them. Like rrrix says it's a developer version though so it's no surprise.
 
the lastest one on git likes health globes too much and may get you killed lol I even turned the option off and my guys still go for them. Like rrrix says it's a developer version though so it's no surprise.

Yea this happens.. i commented out the whole health globe section in my trinity so it will ignore them completely
 
Where can I find that section? I was looking around but couldn't see it anywhere. Edit: Just commented all the globe stuff in the weighting.cs and it's ignoring them now :)
 
Last edited:
Can someone give me 1.7.3.0 trinity? I tried this in .13 version and it didnt worked in right way: my monk never does 3 attacks with deadly reach for foresight buff.
 
Can someone give me 1.7.3.0 trinity? I tried this in .13 version and it didnt worked in right way: my monk never does 3 attacks with deadly reach for foresight buff.

I'm using 1.7.3.0 and find that deadly reach:foresight doesn't go off a lot of the time. It might be when the mob dies before the 3rd strike occurs, then it doesn't try again for 30 seconds.
 
I'm using 1.7.3.0 and find that deadly reach:foresight doesn't go off a lot of the time. It might be when the mob dies before the 3rd strike occurs, then it doesn't try again for 30 seconds.

It should refresh every 15 seconds incase it misses.
The issue is that this unlike Blazing Fists -> Doesn't add a "buff" icon, but is only noticeable on the dps character sheet.
 
Back
Top