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

[Request] [Monk] [Inna6pc] Cast Primary before Mystic Ally

It isn't casting Mystic Ally at all.

It is also casting EP whenever now. Not sure what is wrong.
 
Last edited:
One thing I changed in the code with noticeable results is moving primary/assimilation above dashing strike.

I have put on 41.5% cdr so that i can use the old Mystic Ally conditions and it works properly for now.

Here is what I am using. I am consistently clearing 72s in 9-12 minutes. 1500 paragon, above average gear with average augment level around 71 and legendary gems at 95.

Settings:

Monk:

Cyclone strike min count: 1
Cyclone strike delay: 3900

Apply EP to 5 units

Dashing Strike delay: 4400
Both boxes checked.

Epiphany: Use whenever in Combat

Misc:
Ignore Yellow + Blue + minions

Minimum mob pack size: 15
Cluster radius: 40

Always kill when combined rift value is more than 4.5

Ignore High Hitpoint Monsters

Settings you might want to modify based on gear/rift level:

Always kill elites below % Health: Mine is currently at 50%

Code:
        public static TrinityPower GetInnasPower()
        {
            TrinityPower power = null;

            // Destructibles
            if (UseDestructiblePower)
                return GetMonkDestroyPower();

            if (CurrentTarget != null)
            {
                var mysticAllyTarget = TargetUtil.LowestHealthTarget(15f, Player.Position, Skills.Monk.ExplodingPalm.SNOPower);

                // Epiphany
                if (CanCastEpiphany())
                    return new TrinityPower(SNOPower.X1_Monk_Epiphany);

                // Cyclone Strike
                var cycloneRange = Runes.Monk.Implosion.IsActive ? 34 : 24;
                if (CanCastCycloneStrike(cycloneRange, 50))
                    return new TrinityPower(SNOPower.Monk_CycloneStrike);

                // Mystic Ally only during Cold
                if (CanCast(SNOPower.X1_Monk_MysticAlly_v2) &&
                    (CacheData.Buffs.ConventionElement == Element.Cold ||
                    GetHasBuff(SNOPower.Pages_Buff_Infinite_Casting)) &&
                    TargetUtil.AnyMobsInRange(25f))
                {
                    if (mysticAllyTarget != null)
                        return new TrinityPower(SNOPower.X1_Monk_MysticAlly_v2, 15f, mysticAllyTarget.ACDGuid);
                    return new TrinityPower(SNOPower.X1_Monk_MysticAlly_v2, 15f, CurrentTarget.ACDGuid);
                }
                
                // Get your Assimilation stacks right before COLD COE buff
                if (CanCast(SNOPower.Monk_WayOfTheHundredFists) &&
                    IsInsideCoeTimeSpan(Element.Physical))
                {
                    if (ShouldSpreadWotHF())
                    {
                        var changeTarget = GetNewWotHFTarget() ?? CurrentTarget;
                        if (changeTarget != null && !changeTarget.HasDebuff(SNOPower.Monk_WayOfTheHundredFists) &&
                            GetCurrentComboLevel() == 0)
                            return new TrinityPower(SNOPower.Monk_WayOfTheHundredFists, 9f, changeTarget.ACDGuid);

                        return new TrinityPower(SNOPower.Monk_WayOfTheHundredFists, 9f, CurrentTarget.ACDGuid);
                    }
                }

                // Dashing Strike
                if (CanCastDashingStrike)
                    return new TrinityPower(SNOPower.X1_Monk_DashingStrike);

                // Spread EP 4~7.5 seconds before Cold element (.5 seconds after Lightning starts until Lightning ends)
                if (!Settings.Combat.Monk.DisableExplodingPalm)
                {
                    if (IsInsideCoeTimeSpan(Element.Physical, 3500, 0))
                    {
                        // Make a mega-splosion
                        if (ShouldSpreadExplodingPalm())
                            ChangeTarget();

                        // Exploding Palm
                        if (CanCastExplodingPalm())
                            return new TrinityPower(SNOPower.Monk_ExplodingPalm, 10f, CurrentTarget.ACDGuid);
                    }
                }

                // Check if the current target is dying so we can make a bomb out of it
                if (!CurrentTarget.HasDebuff(SNOPower.Monk_ExplodingPalm) && CurrentTarget.HitPointsPct <= 10 &&
                    CanCastExplodingPalm())
                    return new TrinityPower(SNOPower.Monk_ExplodingPalm, 10f, CurrentTarget.ACDGuid);

                // if all else fails, just punch
                if (mysticAllyTarget != null)
                    return new TrinityPower(SNOPower.Monk_WayOfTheHundredFists, 9f, mysticAllyTarget.ACDGuid);

                return new TrinityPower(SNOPower.Monk_WayOfTheHundredFists, 9f, CurrentTarget.ACDGuid);
            }

            if (IsNull(null) && !Player.IsInTown && TargetUtil.AnyMobsInRange(60f))
                power = DefaultPower;

            return power;
        }
 
Very nice. I'll use that if you don't mind :). Thanks mate.
Hey..you did all the hard work.

I still would like to figure out why it wouldn't work with IsInsideCoeTimeSpan(Element.Cold, 0, 2500). It just caused it to never cast Mystic Ally.
 
It's really weird. It happened to me when I first wrote the code, so I had to replace it with CacheData.Buffs.ConventionElement == Element.Cold to get it working properly. Then yesterday I tried it again with IsInsideCoeTimeSpan(Element.Cold, 0, 2500) and it worked perfectly for me, but it appears it didn't for you. Honestly I have no idea what that's about.
 
I think it needs one more touch.

Right above "if all else fails just punch"

If element is cold and mystic ally was cast within the past 2.5 seconds
then find lowest HP target in range (not percent), apply EP. If epiphany is active, the range is probably larger.

-> inside the then, probably also add if mystic ally was cast within the last 1 second, then cyclone strike. We want to do this at least once.

I will see what i can do about making these edits myself, but any hints would be appreciated.
 
I love this thread, good job ExMatt.
My monk can do 69GR w/current Monk.cs wo/dying. (1700 paragon)
I will copy/paste your code and settings tonight and see if I can push 72.
Looking at your settings mine are just wrong....lol
 
Here, try this. I changed a bunch of stuff around and added the behaviors you requested. Let me know how it goes.
 

Attachments

Ok, so whats the best monk file to use? And what options do I need to turn off and on in trinity? please help, thanks :)
 
@Jubisman
I copied your trinity folder and used the settings from Exmatt. Something I notice is the Way of the huntred fists kinda cast random. Sometimes I've got it on Holy CoE, sometimes lightning CoE sometimes psy CoE and if Iam lucky I get the psy one and once it uses Mytic ally I got the 7-20 stack buff %

Iam running 70 grift atm and I must say you have both done an amazing job. But maybe want to check this one out abit more.
Keep up the good work!
 
I haven't had a chance to try the newest zip of trinity. Are there changes to other files than Monk Combat?

Edit: From the looks of the MonkCombat.cs changes. I think it looks proper, I will try it. But I still think the Physical WotHF priority should be above dashing strike (in general this will guarantee better results unless you die often).
 
Last edited:
Cleared a 74 with 4 minutes left on my first attempt. I'd say it was improved once I moved a few lines of code around again.
 
Running 76s overnight and cleared at least 50% on time. At least I can automate my gem levels to 77 now.
 
Would you mind explaining again why you believe that dashing strike should have less priority?
 
Would you mind explaining again why you believe that dashing strike should have less priority?
Unless you can force WotHF to use its third attack sometime towards the end of the physical rotation, it gets interrupted quite often by dashing strike and causes the damage buff to not be present during Mystic Ally damage, which becomes a total waste of 20 seconds, or the complete inability to kill an elite pack in some cases.
 
Is there any way to change the strategy of attack for bosses?

1. Don't cast EP on boss if EP is cold rune.
2. Get adds to 50-15% hp and put EP on them during lightning/physical (don't kill the adds if possible, we want them to only blow up during cold).

I see this as a 5-25% improvement in boss kill time depending on the boss.

#1 isn't specific to this build, so it could be handled in the general EP targetting code.
 
Back
Top