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

Trinity - Monk Class

hi giles,
i tried the green cold out, replacing with existing // dashing strike stuff.
well he teleported in and after the mob is dead, it teleported to another guy in the same group.
Can we make it teleport into the group and not do it anymore until they are dead ?
To teleport far i need to increase my attack range too ?

Yes you should increase you default kill radius - try set it to 40, see how that works.

And glad it works. It shouldn't be using it again if there's anything within 25 yards range... maybe try change this line;
iAnythingWithinRange[RANGE_25] == 0 && iAnythingWithinRange[RANGE_50] >= 1 &&
(in the new code I gave you) to this;
iAnythingWithinRange[RANGE_30] == 0 && iAnythingWithinRange[RANGE_50] >= 1 &&

Otherwise the cheat-solution will be to add a timer so it can only use dashing strike max once every 10 seconds or so. If you want to do that, then you'll need to add some more code and change a timer too. First, change the timer;
Code:
                {SNOPower.Monk_DashingStrike, 1000},
Try change that 1000, to like 10000 (10000 = 10 seconds).
Next, change the code I have you before for dashing strike, to this;
Code:
                    // Dashing Strike as a teleport
                    if (!bOOCBuff && !bCurrentlyAvoiding && !playerStatus.bIsIncapacitated && hashPowerHotbarAbilities.Contains(SNOPower.Monk_DashingStrike) &&
                        iAnythingWithinRange[RANGE_40] == 0 && iAnythingWithinRange[RANGE_50] >= 1 && 
                        ((playerStatus.dCurrentEnergy >= 30 && !playerStatus.bWaitingForReserveEnergy) || playerStatus.dCurrentEnergy >= iWaitingReservedAmount) &&
                        GilesUseTimer(SNOPower.Monk_DashingStrike))
                    {
                        return new GilesPower(SNOPower.Monk_DashingStrike, 50f, vNullLocation, -1, targetCurrent.iThisACDGUID, 1, 2, USE_SLOWLY);
                    }

^^ Which adds the timer-check to the Dashing Strike code, so it makes sure it uses the new 10 second timer.
 
Sweeping Wind:
Original:
Code:
                    // Sweeping wind
                    if (!bOOCBuff && hashPowerHotbarAbilities.Contains(SNOPower.Monk_SweepingWind) && !GilesHasBuff(SNOPower.Monk_SweepingWind) &&
                        (iElitesWithinRange[RANGE_25] > 0 || iAnythingWithinRange[RANGE_20] >= 2 || ((targetCurrent.bThisEliteRareUnique || targetCurrent.bThisBoss) && targetCurrent.fRadiusDistance <= 25f)) &&
                        // Check if either we don't have blinding flash, or we do and it's been cast in the last 6000ms
                        [COLOR="#FF0000"](!hashPowerHotbarAbilities.Contains(SNOPower.Monk_BlindingFlash) || (hashPowerHotbarAbilities.Contains(SNOPower.Monk_BlindingFlash) && DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Monk_BlindingFlash]).TotalMilliseconds <= 6000)) &&[/COLOR]
                        // Check our mantras, if we have them, are up first
                        (!hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfEvasion) || (hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfEvasion) && GilesHasBuff(SNOPower.Monk_MantraOfEvasion))) &&
                        (!hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfConviction) || (hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfConviction) && GilesHasBuff(SNOPower.Monk_MantraOfConviction))) &&
                        (!hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfRetribution) || (hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfRetribution) && GilesHasBuff(SNOPower.Monk_MantraOfRetribution))) &&
                        // Check the re-use timer and energy costs
                        (playerStatus.dCurrentEnergy >= 75 || (settings.bMonkInnaSet && playerStatus.dCurrentEnergy >= 5)) && [COLOR="#FF0000"]GilesUseTimer[/COLOR](SNOPower.Monk_SweepingWind))
                    {
                        return new GilesPower(SNOPower.Monk_SweepingWind, 0f, vNullLocation, iCurrentWorldID, -1, 2, 2, USE_SLOWLY);
                    }

Should be:
Code:
                    // Sweeping wind
                    if (!bOOCBuff && hashPowerHotbarAbilities.Contains(SNOPower.Monk_SweepingWind) && !GilesHasBuff(SNOPower.Monk_SweepingWind) &&
                        (iElitesWithinRange[RANGE_25] > 0 || iAnythingWithinRange[RANGE_20] >= 1 || ((targetCurrent.bThisEliteRareUnique || targetCurrent.bThisBoss) && targetCurrent.fRadiusDistance <= 25f)) &&
                        // Check if either we don't have blinding flash, or we do and it's been cast in the last 6000ms
[COLOR="#008000"]                        //(!hashPowerHotbarAbilities.Contains(SNOPower.Monk_BlindingFlash) || (hashPowerHotbarAbilities.Contains(SNOPower.Monk_BlindingFlash) && DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Monk_BlindingFlash]).TotalMilliseconds <= 6000)) &&[/COLOR]
                        // Check our mantras, if we have them, are up first
                        (!hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfEvasion) || (hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfEvasion) && GilesHasBuff(SNOPower.Monk_MantraOfEvasion))) &&
                        (!hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfConviction) || (hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfConviction) && GilesHasBuff(SNOPower.Monk_MantraOfConviction))) &&
                        (!hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfRetribution) || (hashPowerHotbarAbilities.Contains(SNOPower.Monk_MantraOfRetribution) && GilesHasBuff(SNOPower.Monk_MantraOfRetribution))) &&
                        // Check the re-use timer and energy costs
                        (playerStatus.dCurrentEnergy >= 75 || (settings.bMonkInnaSet && playerStatus.dCurrentEnergy >= 5)) && [COLOR="#008000"]PowerManager.CanCast[/COLOR](SNOPower.Monk_SweepingWind))
                    {
                        return new GilesPower(SNOPower.Monk_SweepingWind, 0f, vNullLocation, iCurrentWorldID, -1, 2, 2, USE_SLOWLY);
                    }

When I do all this changes and Inna's set is ticked it will spam Sweeping Wind on every encounter if there is at least one mob around:-)
On binding flash it will recast Sweeping Wind anyway for extra demage.

Thank You!
Just commenting the check for BF is a bad idea, maybe adding a check for inna's users to skip it will be ok, but since Trinity won't check if the current SW was cast with the 30%dmg buff to replace it, will have a detrimental impact on most monk's dps...
 
What I meant was to comment it out when Inna's is set:-)

Just commenting the check for BF is a bad idea, maybe adding a check for inna's users to skip it will be ok, but since Trinity won't check if the current SW was cast with the 30%dmg buff to replace it, will have a detrimental impact on most monk's dps...
 
Something like this:
Change this:
Code:
(!hashPowerHotbarAbilities.Contains(SNOPower.Monk_BlindingFlash) || (hashPowerHotbarAbilities.Contains(SNOPower.Monk_BlindingFlash) && DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Monk_BlindingFlash]).TotalMilliseconds <= 6000)) &&

to this:
Code:
[COLOR="#FF0000"]([/COLOR](!hashPowerHotbarAbilities.Contains(SNOPower.Monk_BlindingFlash) || (hashPowerHotbarAbilities.Contains(SNOPower.Monk_BlindingFlash) && DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Monk_BlindingFlash]).TotalMilliseconds <= 6000)) [COLOR="#FF0000"]|| settings.bMonkInnaSet)[/COLOR] &&

This should do the trick.
 
Hi Giles.

I've been trying to edit some of your code to get tempest rush to hold down the skill, but I can't seem to get it to work. I've raised the minimum spirit usage to 75 in hopes that it wont spam every time it gets 20 spirit, but now he just tempest rushes for about 1 second then stops, waiting until he has 75 spirit again.

He also will stop using tempest rush when running over gold...

Here is my logs for everything tempest rush


Also, is there a way to edit the code to not let it drop my sweeping wind? Maybe activating the skill when it gets down to 1 second left on it?
 

Attachments

Hi Giles.

I've been trying to edit some of your code to get tempest rush to hold down the skill, but I can't seem to get it to work. I've raised the minimum spirit usage to 75 in hopes that it wont spam every time it gets 20 spirit, but now he just tempest rushes for about 1 second then stops, waiting until he has 75 spirit again.

He also will stop using tempest rush when running over gold...

Here is my logs for everything tempest rush


Also, is there a way to edit the code to not let it drop my sweeping wind? Maybe activating the skill when it gets down to 1 second left on it?

Id like to know this too! atm im using belphegor for combat, it doesnt keep it active either, but seems to activate sweeping wind faster "dont know why". but faster activation and keeping it going would be awzum!


LOLS found it;)

// Tempest rush for a monk
if (GilesTrinity.hashPowerHotbarAbilities.Contains(SNOPower.Monk_TempestRush) && !bTooMuchZChange && ZetaDia.Me.CurrentPrimaryResource >= 20)
{
Vector3 vTargetAimPoint = MathEx.CalculatePointFrom(vMoveToTarget, vMyCurrentPosition, 10f);
ZetaDia.Me.UsePower(SNOPower.Monk_TempestRush, vTargetAimPoint, GilesTrinity.iCurrentWorldID, -1);
return;


this controls out of combat movement, change that.

And for Sweeping Winds, i just did a workaround since innas settings doesnt seem to affect it.

BUT all this did was faster activation of Sweeping winds when in combat, so what i figured, is simply that there is not out of combat timer for sweeping wind... *duuh* or there is one not working, im gonna drive my girlfriend to work quickly, but when i come back i will code one, and se how it goes, or if giles is just quicker then me and willing to put a option "keep sweeping wind active" ;)
 
Last edited:
Giles 2 requests:
1. Mantra of conviction - Use the moment it starts battle with an elite pack, gives an additional 24% damage bonus for 3 seconds which is critical (one time cast don't need to spam it).
2. Wave of light - if it enters battle and all the conditions for it to cast are TRUE it still takes time until it will cast it, if it would insta-cast it cleans up a ton of trash due to AoE, and also can take down half of an elite pack hp.
 
Giles 2 requests:
1. Mantra of conviction - Use the moment it starts battle with an elite pack, gives an additional 24% damage bonus for 3 seconds which is critical (one time cast don't need to spam it).
2. Wave of light - if it enters battle and all the conditions for it to cast are TRUE it still takes time until it will cast it, if it would insta-cast it cleans up a ton of trash due to AoE, and also can take down half of an elite pack hp.

What do we have to do to get Giles attention around here?! The tempest rush skill needs re-working. If it gets used correctly i can double my xp/hour.
 
Hi guys, I was wondering how I would be able to set my monk to use Blinding Flash more than once during a group of elites. I found a thread talking about editing the CS file and setting the energy level lower. But my energy level was already set to 20. Any advice would be much appreciated. Thank you.
 
I believe you'd look for the following
Code:
[COLOR="#FF0000"]                            (!hashPowerHotbarAbilities.Contains(SNOPower.Monk_SweepingWind) ||
                             (hashPowerHotbarAbilities.Contains(SNOPower.Monk_SweepingWind) && playerStatus.dCurrentEnergy >= 85 && GilesUseTimer(SNOPower.Monk_SweepingWind))[/COLOR] ||
[COLOR="#0000FF"]                             playerStatus.dCurrentHealthPct <= 0.6) &&[/COLOR]

and pretty much remove the RED (though this does remove the check for sweeping winds to give it more power), Blue is optional - lastly it will check if youre below 60% before casting (Remove if you want pure spammage)
 
Its wired and i dunno why but lot of time before attacking, my monk make a few step back and after start to atk...
Its very wired to see him going back so often..
Anyone else have this problems?
 
- A lot of mobs are ignored for some reason. This is not due to a low kill-radius, mine is set to 60 and mobs can chase the bot down while the bot ignores it completely.
- When finding packs of elite mobs it sometimes teleports into the corpse explosions with fist of thunder to reach the others.
 
Did you sort the tempest Rush out ?

G

no =/ I'm trying different combinations in the giles.cs but im not seeing anything usable.

He uses tempest rush the instant he gets enough spirit and does it backwards as if he is avoiding something. So frustrated!

If I set it to a higher spirit before using, he just uses it for 1 second then stops uintil he has that much spirit again.

If this could get working well, it could easily double the xp/hour output.
 
Last edited:
no =/ I'm trying different combinations in the giles.cs but im not seeing anything usable.

He uses tempest rush the instant he gets enough spirit and does it backwards as if he is avoiding something. So frustrated!

If I set it to a higher spirit before using, he just uses it for 1 second then stops uintil he has that much spirit again.

If this could get working well, it could easily double the xp/hour output.


Ok, well hopefully Giles is on the mend and secretly working on a new version between medication and will include this.

G
 
The following is an ongoing attempt at Tempest Rushing like WW - If anyone could test it out and let me know how it is that'd be great
*Please back up GilesTrinity.cs before trying any of this*
First look for
Code:
                    // Tempest rush for a monk
                    if (!bFoundSpecialMovement && hashPowerHotbarAbilities.Contains(SNOPower.Monk_TempestRush) && playerStatus.dCurrentEnergy >= 20)
                    {
                        ZetaDia.Me.UsePower(SNOPower.Monk_TempestRush, vCurrentDestination, iCurrentWorldID, -1);
                        // Store the current destination for comparison incase of changes next loop
                        vLastMoveToTarget = vCurrentDestination;
                        // Reset total body-block count, since we should have moved
                        if (DateTime.Now.Subtract(lastForcedKeepCloseRange).TotalMilliseconds >= 2000)
                            iTimesBlockedMoving = 0;
                        return RunStatus.Running;
                    }

Replace it with this
Code:
                    // Tempest rush for a monk
			//Baz
                    if (!bFoundSpecialMovement && hashPowerHotbarAbilities.Contains(SNOPower.Monk_TempestRush) && playerStatus.dCurrentEnergy >= 1)
                    {
                        ZetaDia.Me.UsePower(SNOPower.Monk_TempestRush, vCurrentDestination, iCurrentWorldID, -1);
                        // Store the current destination for comparison incase of changes next loop
                        vLastMoveToTarget = vCurrentDestination;
                        // Reset total body-block count, since we should have moved
                        if (DateTime.Now.Subtract(lastForcedKeepCloseRange).TotalMilliseconds >= 2000)
                            iTimesBlockedMoving = 0;
                        return RunStatus.Running;
                    }

Then look for
Code:
                    // Tempest rush at elites or groups of mobs
                    if (!bOOCBuff && !bCurrentlyAvoiding && !playerStatus.bIsIncapacitated && !playerStatus.bIsRooted &&
                        (iElitesWithinRange[RANGE_25] > 0 || ((targetCurrent.bThisEliteRareUnique || targetCurrent.bThisBoss) && targetCurrent.fRadiusDistance <= 14f) || iAnythingWithinRange[RANGE_15] > 2) &&
                        hashPowerHotbarAbilities.Contains(SNOPower.Monk_TempestRush) && ((playerStatus.dCurrentEnergy >= 20 && !playerStatus.bWaitingForReserveEnergy) || playerStatus.dCurrentEnergy >= iWaitingReservedAmount) &&
                        PowerManager.CanCast(SNOPower.Monk_TempestRush))
                    {
                        bool bGenerateNewZigZag = (DateTime.Now.Subtract(lastChangedZigZag).TotalMilliseconds >= 1500 ||
                            (vPositionLastZigZagCheck != vNullLocation && playerStatus.vCurrentPosition == vPositionLastZigZagCheck && DateTime.Now.Subtract(lastChangedZigZag).TotalMilliseconds >= 200) ||
                            Vector3.Distance(playerStatus.vCurrentPosition, vSideToSideTarget) <= 4f ||
                            targetCurrent.iThisACDGUID != iACDGUIDLastWhirlwind);
                        vPositionLastZigZagCheck = playerStatus.vCurrentPosition;
                        if (bGenerateNewZigZag)
                        {
                            float fExtraDistance = targetCurrent.fCentreDistance <= 20f ? 15f : 5f;
                            vSideToSideTarget = FindZigZagTargetLocation(targetCurrent.vThisPosition, targetCurrent.fCentreDistance + fExtraDistance);
                            // Resetting this to ensure the "no-spam" is reset since we changed our target location
                            powerLastSnoPowerUsed = SNOPower.None;
                            iACDGUIDLastWhirlwind = targetCurrent.iThisACDGUID;
                            lastChangedZigZag = DateTime.Now;
                        }
                        return new GilesPower(SNOPower.Monk_TempestRush, 23f, vSideToSideTarget, iCurrentWorldID, -1, 0, 0, USE_SLOWLY);
                    }

Replace it with
Code:
                    // Tempest rush at elites or groups of mobs
			//Baz
                    if (!bOOCBuff && !playerStatus.bIsIncapacitated && !playerStatus.bIsRooted &&
                        (iElitesWithinRange[RANGE_25] > 0 || ((targetCurrent.bThisEliteRareUnique || targetCurrent.bThisBoss) && targetCurrent.fRadiusDistance <= 14f) || iAnythingWithinRange[RANGE_15] > 1) &&
                        hashPowerHotbarAbilities.Contains(SNOPower.Monk_TempestRush) && playerStatus.dCurrentEnergy >= 1 &&
                        PowerManager.CanCast(SNOPower.Monk_TempestRush))
                    {
                        bool bGenerateNewZigZag = (DateTime.Now.Subtract(lastChangedZigZag).TotalMilliseconds >= 1500 ||
                            (vPositionLastZigZagCheck != vNullLocation && playerStatus.vCurrentPosition == vPositionLastZigZagCheck && DateTime.Now.Subtract(lastChangedZigZag).TotalMilliseconds >= 200) ||
                            Vector3.Distance(playerStatus.vCurrentPosition, vSideToSideTarget) <= 4f ||
                            targetCurrent.iThisACDGUID != iACDGUIDLastWhirlwind);
                        vPositionLastZigZagCheck = playerStatus.vCurrentPosition;
                        if (bGenerateNewZigZag)
                        {
                            float fExtraDistance = targetCurrent.fCentreDistance <= 20f ? 15f : 5f;
                            vSideToSideTarget = FindZigZagTargetLocation(targetCurrent.vThisPosition, targetCurrent.fCentreDistance + fExtraDistance);
                            // Resetting this to ensure the "no-spam" is reset since we changed our target location
                            powerLastSnoPowerUsed = SNOPower.None;
                            iACDGUIDLastWhirlwind = targetCurrent.iThisACDGUID;
                            lastChangedZigZag = DateTime.Now;
                        }
                        return new GilesPower(SNOPower.Monk_TempestRush, 23f, vSideToSideTarget, iCurrentWorldID, -1, 0, 0, USE_SLOWLY);
                    }

- Issues currently is that sometimes at shrines, objects it cuts cast to use it and recasts which causes lots of spirit consumption (I can't test this properly as my monk doesn't have the proper spirit regen yet for constant spammage. I'll be buying more gear later)
 
The following is an ongoing attempt at Tempest Rushing like WW - If anyone could test it out and let me know how it is that'd be great

I'll test it out and let you know.

edit : I tested it and its very buggy. IT will try to use it as a primary attack and sit and wait for spirit to regen to use it again. It will use it too soon after he gets enough spirit.

It needs to be done to where it wont start rushing until hes over 60 spirit but will keep going once he starts, and wont use it in battle(the avoidence itself works fine).
 
Last edited:
Alrighty wasnt too sure on the exact specifics on how tempest rush is best used atm. Will try and change it around to work like that and see how it goes - might take a bit as I am going to head out in a little.

edit: just clarifying: you say that you dont tempest rush in combat? isn't the purpose of the build thats been going around to tempest rush all times through everything?

From what I've seen is the build is meant to be that once you start tempest rushing - you don't stop. And most people gear around so that you can spam TR infinitely. I guess what you mean is that you need a reserve of 50 energy at all times + 10 for recast and chain casting ?
 
Last edited:
Back
Top