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

I want the "1.5.2.2" rend back in 1.6.2

Bertrand

Active Member
Joined
Aug 8, 2012
Messages
1,249
Reaction score
9
Yeah i know, i am like a ltitle spoiled rich brat that just got in the toy store and cant get enough of the "Giles Toy" :D

Seriously though, great work so far, just a minor issue that might need attention. The rend in 1.5.2.2 was working perfectly, not a 0.5 sec was given to elite champs without rend on them. 1.6.2 avoidance work great, so does rend, but is just not as good as it was in 1.5.2.2, i am seriously considering reverting back to 2.2.
Anyone else feels the same ? Or maybe someone know what needs to be tweaked in the code to make rend "more spammable" ?

edit: Look no further guys, with a thx to Bazingaw:

For those of you that know how to manually edit the .cs file and want the 1.5.2.2 version back while giles is out sick look below.

*I suggest if you WW you DO NOT use these changes as it removes all the WW precautions giles added*
*BACK UP GilesTrinity.cs before editing*

Look for
Code:
                    // 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_7] > 0 || targetCurrent.fRadiusDistance <= 7f) &&
                        // Don't use against goblins (they run too quick!)
                        (!targetCurrent.bThisTreasureGoblin || iAnythingWithinRange[RANGE_12] >= 5) &&
                        (
                             // This segment is for people who DON'T have whirlwind
                             (!hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_Whirlwind) &&
                                (
                                // *DON'T* use rend if we currently have wrath/earthquake/call available & needed but need to save up energy energy
                                (!bWaitingForSpecial || playerStatus.dCurrentEnergy >= 75) &&
                                // Bunch of optionals now that go hand in hand with all of the above...
                                    (
                                    // 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_7] > iWithinRangeLastRend && DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Barbarian_Rend]).TotalMilliseconds >= 400) ||
                                    // ... 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 >= 1100) ||
                                    // ... 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 >= 1500) ||
                                    // ... 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 >= 2000)
                                    )
                                )) ||
                             // This segment is for people who *DO* have whirlwind
                             (hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_Whirlwind) &&
                              // See if it's off-cooldown and at least 40 fury, or use as a fury dump
                                 (
                                    (settings.bFuryDumpWrath && playerStatus.dCurrentEnergyPct >= 0.92 && GilesHasBuff(SNOPower.Barbarian_WrathOfTheBerserker)) ||
                                    (settings.bFuryDumpAlways && playerStatus.dCurrentEnergyPct >= 0.92) ||
                                    (DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Barbarian_Rend]).TotalMilliseconds >= 2800)
                                 ) &&
                                 // Max once every 1.2 seconds even if fury dumping, so sprint can be fury dumped too
                                 DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Barbarian_Rend]).TotalMilliseconds >= 1200 &&
                                 // 3+ mobs of any kind at close range *OR* one elite/boss/special at close range
                                 (
                                    (iAnythingWithinRange[RANGE_15] >= 3 && iElitesWithinRange[RANGE_12] >= 1) ||
                                    (iAnythingWithinRange[RANGE_15] >= 3 && targetCurrent.bThisTreasureGoblin && targetCurrent.fRadiusDistance <= 13f) ||
                                    iAnythingWithinRange[RANGE_15] >= 5 ||
                                    ((targetCurrent.bThisEliteRareUnique || targetCurrent.bThisBoss) && targetCurrent.fRadiusDistance <= 13f && iAnythingWithinRange[RANGE_15] >= 3)
                                 )
                             )
                        ) &&
                        // And finally, got at least 20 energy
                        playerStatus.dCurrentEnergy >= 20)
                    {
                        iWithinRangeLastRend = iAnythingWithinRange[RANGE_7];
                        iACDGUIDLastRend = targetCurrent.iThisACDGUID;
                        // Note - we have LONGER animation times for whirlwind-users
                        // Since whirlwind seems to interrupt rend so easily
                        int iPreDelay = 1;
                        int iPostDelay = 1;
                        if (hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_Whirlwind))
                        {
                            if (powerLastSnoPowerUsed == SNOPower.Barbarian_Whirlwind || powerLastSnoPowerUsed == SNOPower.None)
                            {
                                iPreDelay = 4;
                                iPostDelay = 2;
                            }
                            else
                            {
                                iPreDelay = 2;
                                iPostDelay = 2;
                            }
                        }
                        return new GilesPower(SNOPower.Barbarian_Rend, 0f, playerStatus.vCurrentPosition, iCurrentWorldID, -1, iPreDelay, iPostDelay, USE_SLOWLY);
                    }

and replace with (This is the exact code from 1.5.2.2)

Code:
                    // Rend spam
                    if (!bOOCBuff && !playerStatus.bIsIncapacitated && hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_Rend) &&
                        // Doesn't need CURRENT target to be in range, just needs ANYTHING to be within 9 foot, since it's an AOE!
                        (iAnythingWithinRange[RANGE_7] > 0 || targetCurrent.fRadiusDistance <= 7f) &&
                        // Don't use against goblins (they run too quick!)
                        (!targetCurrent.bThisTreasureGoblin || iAnythingWithinRange[RANGE_12] >= 5) &&
                        // *DON'T* use rend if we currently have wrath/earthquake/call available & needed but need to save up energy energy
                        (!bWaitingForSpecial || playerStatus.dCurrentEnergy >= 75) &&
                        // Bunch of optionals now that go hand in hand with all of the above...
                        (
                        // 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_7] > iWithinRangeLastRend && DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Barbarian_Rend]).TotalMilliseconds >= 400) ||
                        // ... 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 >= 1100) ||
                        // ... 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 >= 1500) ||
                        // ... 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 >= 2000)
                        ) &&
                        // And finally, got at least 20 energy
                        playerStatus.dCurrentEnergy >= 20)
                    {
                        iWithinRangeLastRend = iAnythingWithinRange[RANGE_7];
                        iACDGUIDLastRend = targetCurrent.iThisACDGUID;
                        return new GilesPower(SNOPower.Barbarian_Rend, 0f, playerStatus.vCurrentPosition, iCurrentWorldID, -1, 1, 0, USE_SLOWLY);
                    }


photo hosting
 
Last edited:
edit it yourself, its not difficult. theres a sticky that shows you how to if you have trouble
 
I agree about Rend. I made my own edits to have it used more frequently.
 
packetlos, can you copy paste your edited code for rend pls ?
 
The wait-timers have been increased for next release, which probably won't be for a while as I'm now suffering with a serious case of man-flu.

That being said, using the "next release" myself in testing, it seems to be once again rending like a crazy mother-trucker.
 
Giles, you know the entire db community is praying for your fast recovery right ? :D
 
The wait-timers have been increased for next release, which probably won't be for a while as I'm now suffering with a serious case of man-flu.

That being said, using the "next release" myself in testing, it seems to be once again rending like a crazy mother-trucker.

Get some Rimantadine; when I got a prescription for it from my doctor it knocked out my flu in less than 24 hours.

Rimantadine - Wikipedia, the free encyclopedia
 
For those of you that know how to manually edit the .cs file and want the 1.5.2.2 version back while giles is out sick look below.

*I suggest if you WW you DO NOT use these changes as it removes all the WW precautions giles added*
*BACK UP GilesTrinity.cs before editing*

Look for
Code:
                    // 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_7] > 0 || targetCurrent.fRadiusDistance <= 7f) &&
                        // Don't use against goblins (they run too quick!)
                        (!targetCurrent.bThisTreasureGoblin || iAnythingWithinRange[RANGE_12] >= 5) &&
                        (
                             // This segment is for people who DON'T have whirlwind
                             (!hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_Whirlwind) &&
                                (
                                // *DON'T* use rend if we currently have wrath/earthquake/call available & needed but need to save up energy energy
                                (!bWaitingForSpecial || playerStatus.dCurrentEnergy >= 75) &&
                                // Bunch of optionals now that go hand in hand with all of the above...
                                    (
                                    // 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_7] > iWithinRangeLastRend && DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Barbarian_Rend]).TotalMilliseconds >= 400) ||
                                    // ... 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 >= 1100) ||
                                    // ... 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 >= 1500) ||
                                    // ... 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 >= 2000)
                                    )
                                )) ||
                             // This segment is for people who *DO* have whirlwind
                             (hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_Whirlwind) &&
                              // See if it's off-cooldown and at least 40 fury, or use as a fury dump
                                 (
                                    (settings.bFuryDumpWrath && playerStatus.dCurrentEnergyPct >= 0.92 && GilesHasBuff(SNOPower.Barbarian_WrathOfTheBerserker)) ||
                                    (settings.bFuryDumpAlways && playerStatus.dCurrentEnergyPct >= 0.92) ||
                                    (DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Barbarian_Rend]).TotalMilliseconds >= 2800)
                                 ) &&
                                 // Max once every 1.2 seconds even if fury dumping, so sprint can be fury dumped too
                                 DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Barbarian_Rend]).TotalMilliseconds >= 1200 &&
                                 // 3+ mobs of any kind at close range *OR* one elite/boss/special at close range
                                 (
                                    (iAnythingWithinRange[RANGE_15] >= 3 && iElitesWithinRange[RANGE_12] >= 1) ||
                                    (iAnythingWithinRange[RANGE_15] >= 3 && targetCurrent.bThisTreasureGoblin && targetCurrent.fRadiusDistance <= 13f) ||
                                    iAnythingWithinRange[RANGE_15] >= 5 ||
                                    ((targetCurrent.bThisEliteRareUnique || targetCurrent.bThisBoss) && targetCurrent.fRadiusDistance <= 13f && iAnythingWithinRange[RANGE_15] >= 3)
                                 )
                             )
                        ) &&
                        // And finally, got at least 20 energy
                        playerStatus.dCurrentEnergy >= 20)
                    {
                        iWithinRangeLastRend = iAnythingWithinRange[RANGE_7];
                        iACDGUIDLastRend = targetCurrent.iThisACDGUID;
                        // Note - we have LONGER animation times for whirlwind-users
                        // Since whirlwind seems to interrupt rend so easily
                        int iPreDelay = 1;
                        int iPostDelay = 1;
                        if (hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_Whirlwind))
                        {
                            if (powerLastSnoPowerUsed == SNOPower.Barbarian_Whirlwind || powerLastSnoPowerUsed == SNOPower.None)
                            {
                                iPreDelay = 4;
                                iPostDelay = 2;
                            }
                            else
                            {
                                iPreDelay = 2;
                                iPostDelay = 2;
                            }
                        }
                        return new GilesPower(SNOPower.Barbarian_Rend, 0f, playerStatus.vCurrentPosition, iCurrentWorldID, -1, iPreDelay, iPostDelay, USE_SLOWLY);
                    }

and replace with (This is the exact code from 1.5.2.2)

Code:
                    // Rend spam
                    if (!bOOCBuff && !playerStatus.bIsIncapacitated && hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_Rend) &&
                        // Doesn't need CURRENT target to be in range, just needs ANYTHING to be within 9 foot, since it's an AOE!
                        (iAnythingWithinRange[RANGE_7] > 0 || targetCurrent.fRadiusDistance <= 7f) &&
                        // Don't use against goblins (they run too quick!)
                        (!targetCurrent.bThisTreasureGoblin || iAnythingWithinRange[RANGE_12] >= 5) &&
                        // *DON'T* use rend if we currently have wrath/earthquake/call available & needed but need to save up energy energy
                        (!bWaitingForSpecial || playerStatus.dCurrentEnergy >= 75) &&
                        // Bunch of optionals now that go hand in hand with all of the above...
                        (
                        // 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_7] > iWithinRangeLastRend && DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Barbarian_Rend]).TotalMilliseconds >= 400) ||
                        // ... 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 >= 1100) ||
                        // ... 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 >= 1500) ||
                        // ... 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 >= 2000)
                        ) &&
                        // And finally, got at least 20 energy
                        playerStatus.dCurrentEnergy >= 20)
                    {
                        iWithinRangeLastRend = iAnythingWithinRange[RANGE_7];
                        iACDGUIDLastRend = targetCurrent.iThisACDGUID;
                        return new GilesPower(SNOPower.Barbarian_Rend, 0f, playerStatus.vCurrentPosition, iCurrentWorldID, -1, 1, 0, USE_SLOWLY);
                    }

Reverting Revenge back to 1.5.2.2 Version.

Look for (this is in 1.6.2)

Code:
                    // Revenge used off-cooldown
                    if (!bOOCBuff && hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_Revenge) && !playerStatus.bIsIncapacitated &&
                        // Don't use revenge on goblins, too slow!
                        (!targetCurrent.bThisTreasureGoblin || iAnythingWithinRange[RANGE_12] >= 5) &&
                        // Doesn't need CURRENT target to be in range, just needs ANYTHING to be within 9 foot, since it's an AOE!
                        (iAnythingWithinRange[RANGE_7] > 0 || targetCurrent.fRadiusDistance <= 6f) &&
                        GilesUseTimer(SNOPower.Barbarian_Revenge) && PowerManager.CanCast(SNOPower.Barbarian_Revenge))
                    {
                        // Note - we have LONGER animation times for whirlwind-users
                        // Since whirlwind seems to interrupt rend so easily
                        int iPreDelay = 1;
                        int iPostDelay = 1;
                        if (hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_Whirlwind))
                        {
                            if (powerLastSnoPowerUsed == SNOPower.Barbarian_Whirlwind || powerLastSnoPowerUsed == SNOPower.None)
                            {
                                iPreDelay = 4;
                                iPostDelay = 2;
                            }
                            else
                            {
                                iPreDelay = 2;
                                iPostDelay = 2;
                            }
                        }
                        return new GilesPower(SNOPower.Barbarian_Revenge, 0f, playerStatus.vCurrentPosition, iCurrentWorldID, -1, iPreDelay, iPostDelay, USE_SLOWLY);
                    }

and replace with

Code:
                    // Revenge used off-cooldown
                    if (!bOOCBuff && hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_Revenge) && !playerStatus.bIsIncapacitated &&
                        // Don't use revenge on goblins, too slow!
                        (!targetCurrent.bThisTreasureGoblin) &&
                        // Doesn't need CURRENT target to be in range, just needs ANYTHING to be within 9 foot, since it's an AOE!
                        (iAnythingWithinRange[RANGE_7] > 0 || targetCurrent.fRadiusDistance <= 6f) &&
                        GilesUseTimer(SNOPower.Barbarian_Revenge) && PowerManager.CanCast(SNOPower.Barbarian_Revenge))
                    {
                        return new GilesPower(SNOPower.Barbarian_Revenge, 0f, playerStatus.vCurrentPosition, iCurrentWorldID, -1, 1, 0, USE_SLOWLY);
                    }

Also a slight revenge tweak I did was changed

Code:
                {SNOPower.Barbarian_Revenge, 600},

to

Code:
                {SNOPower.Barbarian_Revenge, 5},

Personal Leap Changes for more often spam rather than <75% hp, also removed is avoiding check to make use of 300% armor as a form of invuln avoidance rather than avoiding then using.
Look for
Code:
                    // Leap used on when off-cooldown, or when out-of-range
                    if (!bOOCBuff && !bCurrentlyAvoiding && hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_Leap) && !playerStatus.bIsIncapacitated &&
                        // Less than 90% health *OR* target >= 18 feet away *OR* an elite within 30 feet of us
                        (playerStatus.dCurrentHealthPct <= 0.75 || targetCurrent.fCentreDistance >= 18f || targetCurrent.bForceLeapAgainst || iElitesWithinRange[RANGE_30] >= 1) &&
                        GilesUseTimer(SNOPower.Barbarian_Leap, true) &&
                        //GilesCanRecastAfterFailure(SNOPower.Barbarian_Leap) &&
                        PowerManager.CanCast(SNOPower.Barbarian_Leap))
                    {
                        // For close-by monsters, try to leap a little further than their centre-point
                        float fExtraDistance = targetCurrent.fThisRadius;
                        if (fExtraDistance <= 4f)
                            fExtraDistance = 4f;
                        if (targetCurrent.fCentreDistance + fExtraDistance > 35f)
                            fExtraDistance = 35 - targetCurrent.fCentreDistance;
                        Vector3 vNewTarget = MathEx.CalculatePointFrom(targetCurrent.vThisPosition, playerStatus.vCurrentPosition, targetCurrent.fCentreDistance + fExtraDistance);
                        return new GilesPower(SNOPower.Barbarian_Leap, 35f, vNewTarget, iCurrentWorldID, -1, 2, 1, USE_SLOWLY);
                    }

Replace with

Code:
                    // Leap used on when off-cooldown, or when out-of-range
                    if (!bOOCBuff && hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_Leap) && !playerStatus.bIsIncapacitated &&
                        // elite within 30 feet of us
                        iElitesWithinRange[RANGE_30] >= 1 &&
                        GilesUseTimer(SNOPower.Barbarian_Leap, true) &&
                        //GilesCanRecastAfterFailure(SNOPower.Barbarian_Leap) &&
                        PowerManager.CanCast(SNOPower.Barbarian_Leap))
                    {
                        // For close-by monsters, try to leap a little further than their centre-point
                        float fExtraDistance = targetCurrent.fThisRadius;
                        if (fExtraDistance <= 4f)
                            fExtraDistance = 4f;
                        if (targetCurrent.fCentreDistance + fExtraDistance > 35f)
                            fExtraDistance = 35 - targetCurrent.fCentreDistance;
                        Vector3 vNewTarget = MathEx.CalculatePointFrom(targetCurrent.vThisPosition, playerStatus.vCurrentPosition, targetCurrent.fCentreDistance + fExtraDistance);
                        return new GilesPower(SNOPower.Barbarian_Leap, 35f, vNewTarget, iCurrentWorldID, -1, 2, 1, USE_SLOWLY);
                    }
 
Last edited:
@Bazingaw: I ve used your Rend code, spam Rend like crazy, to the last fury i have lol, pretty awesome :D Thx Bazingaw n Giles :)
 
Btw sorry I wasn't clear, this is actually just the 1.5.2.2 rend's code
 
For those of you that know how to manually edit the .cs file and want the 1.5.2.2 version back while giles is out sick look below.

*I suggest if you WW you DO NOT use these changes as it removes all the WW precautions giles added*
*BACK UP GilesTrinity.cs before editing*

Look for
Code:
                    // 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_7] > 0 || targetCurrent.fRadiusDistance <= 7f) &&
                        // Don't use against goblins (they run too quick!)
                        (!targetCurrent.bThisTreasureGoblin || iAnythingWithinRange[RANGE_12] >= 5) &&
                        (
                             // This segment is for people who DON'T have whirlwind
                             (!hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_Whirlwind) &&
                                (
                                // *DON'T* use rend if we currently have wrath/earthquake/call available & needed but need to save up energy energy
                                (!bWaitingForSpecial || playerStatus.dCurrentEnergy >= 75) &&
                                // Bunch of optionals now that go hand in hand with all of the above...
                                    (
                                    // 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_7] > iWithinRangeLastRend && DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Barbarian_Rend]).TotalMilliseconds >= 400) ||
                                    // ... 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 >= 1100) ||
                                    // ... 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 >= 1500) ||
                                    // ... 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 >= 2000)
                                    )
                                )) ||
                             // This segment is for people who *DO* have whirlwind
                             (hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_Whirlwind) &&
                              // See if it's off-cooldown and at least 40 fury, or use as a fury dump
                                 (
                                    (settings.bFuryDumpWrath && playerStatus.dCurrentEnergyPct >= 0.92 && GilesHasBuff(SNOPower.Barbarian_WrathOfTheBerserker)) ||
                                    (settings.bFuryDumpAlways && playerStatus.dCurrentEnergyPct >= 0.92) ||
                                    (DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Barbarian_Rend]).TotalMilliseconds >= 2800)
                                 ) &&
                                 // Max once every 1.2 seconds even if fury dumping, so sprint can be fury dumped too
                                 DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Barbarian_Rend]).TotalMilliseconds >= 1200 &&
                                 // 3+ mobs of any kind at close range *OR* one elite/boss/special at close range
                                 (
                                    (iAnythingWithinRange[RANGE_15] >= 3 && iElitesWithinRange[RANGE_12] >= 1) ||
                                    (iAnythingWithinRange[RANGE_15] >= 3 && targetCurrent.bThisTreasureGoblin && targetCurrent.fRadiusDistance <= 13f) ||
                                    iAnythingWithinRange[RANGE_15] >= 5 ||
                                    ((targetCurrent.bThisEliteRareUnique || targetCurrent.bThisBoss) && targetCurrent.fRadiusDistance <= 13f && iAnythingWithinRange[RANGE_15] >= 3)
                                 )
                             )
                        ) &&
                        // And finally, got at least 20 energy
                        playerStatus.dCurrentEnergy >= 20)
                    {
                        iWithinRangeLastRend = iAnythingWithinRange[RANGE_7];
                        iACDGUIDLastRend = targetCurrent.iThisACDGUID;
                        // Note - we have LONGER animation times for whirlwind-users
                        // Since whirlwind seems to interrupt rend so easily
                        int iPreDelay = 1;
                        int iPostDelay = 1;
                        if (hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_Whirlwind))
                        {
                            if (powerLastSnoPowerUsed == SNOPower.Barbarian_Whirlwind || powerLastSnoPowerUsed == SNOPower.None)
                            {
                                iPreDelay = 4;
                                iPostDelay = 2;
                            }
                            else
                            {
                                iPreDelay = 2;
                                iPostDelay = 2;
                            }
                        }
                        return new GilesPower(SNOPower.Barbarian_Rend, 0f, playerStatus.vCurrentPosition, iCurrentWorldID, -1, iPreDelay, iPostDelay, USE_SLOWLY);
                    }

and replace with (This is the exact code from 1.5.2.2)

Code:
                    // Rend spam
                    if (!bOOCBuff && !playerStatus.bIsIncapacitated && hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_Rend) &&
                        // Doesn't need CURRENT target to be in range, just needs ANYTHING to be within 9 foot, since it's an AOE!
                        (iAnythingWithinRange[RANGE_7] > 0 || targetCurrent.fRadiusDistance <= 7f) &&
                        // Don't use against goblins (they run too quick!)
                        (!targetCurrent.bThisTreasureGoblin || iAnythingWithinRange[RANGE_12] >= 5) &&
                        // *DON'T* use rend if we currently have wrath/earthquake/call available & needed but need to save up energy energy
                        (!bWaitingForSpecial || playerStatus.dCurrentEnergy >= 75) &&
                        // Bunch of optionals now that go hand in hand with all of the above...
                        (
                        // 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_7] > iWithinRangeLastRend && DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Barbarian_Rend]).TotalMilliseconds >= 400) ||
                        // ... 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 >= 1100) ||
                        // ... 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 >= 1500) ||
                        // ... 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 >= 2000)
                        ) &&
                        // And finally, got at least 20 energy
                        playerStatus.dCurrentEnergy >= 20)
                    {
                        iWithinRangeLastRend = iAnythingWithinRange[RANGE_7];
                        iACDGUIDLastRend = targetCurrent.iThisACDGUID;
                        return new GilesPower(SNOPower.Barbarian_Rend, 0f, playerStatus.vCurrentPosition, iCurrentWorldID, -1, 1, 0, USE_SLOWLY);
                    }


photo hosting

Seriously, the rend in 1.5.2.2 is a masterpiece giles !
Btw, how is the flu issue doin ?
 
Last edited:
Yea 1.5.2.2 was indeed the best interms of rend spammability.

also did a little change to revenge to revert it back to 1.5.2.2 as I noticed it wasn't spamming as much as it could also changed its use timer. All changes are in the previous page's post
 
Btw sorry I wasn't clear, this is actually just the 1.5.2.2 rend's code

_ Means thank you bazingaw for your ver 1522 Trinity back up, i don have that version :D And thx to Giles for his great job :)

_ Im using this build : Barbarian - Game Guide - Diablo III use 2h skorn 1k3 dps 500 str 100 vit, got IK belt for LS, 2k1 Str, 1k AR 10k Armor, I manage to die 2-4 times per hour till i see your post about rend spam :D Now after 10 hours testing, i got 4 death , so awesome :D
 
Last edited:
Reverting Revenge back to 1.5.2.2 Version.

Look for (this is in 1.6.2)

Code:
                    // Revenge used off-cooldown
                    if (!bOOCBuff && hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_Revenge) && !playerStatus.bIsIncapacitated &&
                        // Don't use revenge on goblins, too slow!
                        (!targetCurrent.bThisTreasureGoblin || iAnythingWithinRange[RANGE_12] >= 5) &&
                        // Doesn't need CURRENT target to be in range, just needs ANYTHING to be within 9 foot, since it's an AOE!
                        (iAnythingWithinRange[RANGE_7] > 0 || targetCurrent.fRadiusDistance <= 6f) &&
                        GilesUseTimer(SNOPower.Barbarian_Revenge) && PowerManager.CanCast(SNOPower.Barbarian_Revenge))
                    {
                        // Note - we have LONGER animation times for whirlwind-users
                        // Since whirlwind seems to interrupt rend so easily
                        int iPreDelay = 1;
                        int iPostDelay = 1;
                        if (hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_Whirlwind))
                        {
                            if (powerLastSnoPowerUsed == SNOPower.Barbarian_Whirlwind || powerLastSnoPowerUsed == SNOPower.None)
                            {
                                iPreDelay = 4;
                                iPostDelay = 2;
                            }
                            else
                            {
                                iPreDelay = 2;
                                iPostDelay = 2;
                            }
                        }
                        return new GilesPower(SNOPower.Barbarian_Revenge, 0f, playerStatus.vCurrentPosition, iCurrentWorldID, -1, iPreDelay, iPostDelay, USE_SLOWLY);
                    }

and replace with

Code:
                    // Revenge used off-cooldown
                    if (!bOOCBuff && hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_Revenge) && !playerStatus.bIsIncapacitated &&
                        // Don't use revenge on goblins, too slow!
                        (!targetCurrent.bThisTreasureGoblin) &&
                        // Doesn't need CURRENT target to be in range, just needs ANYTHING to be within 9 foot, since it's an AOE!
                        (iAnythingWithinRange[RANGE_7] > 0 || targetCurrent.fRadiusDistance <= 6f) &&
                        GilesUseTimer(SNOPower.Barbarian_Revenge) && PowerManager.CanCast(SNOPower.Barbarian_Revenge))
                    {
                        return new GilesPower(SNOPower.Barbarian_Revenge, 0f, playerStatus.vCurrentPosition, iCurrentWorldID, -1, 1, 0, USE_SLOWLY);
                    }

Also a slight revenge tweak I did was changed

Code:
                {SNOPower.Barbarian_Revenge, 600},

to

Code:
                {SNOPower.Barbarian_Revenge, 5},

Revenge code failed to compile :(
Not sure why.
 
U guys sure about the spam thing? I reverted the code etc... but didn't seen any difference actually... maybe the tps?

Still running same death/0 as same gold gp/h... I was expecting at last a 10k gold increase on the pool? =x

I mean the visible spam has some diff, but effectively haven't seen any...
 
You're not really going to notice gold per hour changing unless you watch it for long lengths as thats something that varies even more than deaths per hour. Will check the revenge change i posted - was a copy n paste from my files I am using so not sure what went wrong.


edit: Just copy n pasted my current running DB gilestrinity's revenge code and its identical.

Make sure you copy n paste and are replacing the right block of code. And as always make sure to have backups before doing any changes

edit2: added some leap changes I added to my setup for a different handling of spam on i t
 
Last edited:
_ @Bazingaw: Your Leap have some problem : no Leap agains white mobs, just elite. That will slow you down when vs horde of white mobs, and more than that, if your gear isnt good enough, 4 phasebeast + several mage / ranger can chop you down. i just edit Giles 's Leap 1.6.2 like that :

Code:
// Leap used on when off-cooldown, or when out-of-range

if (!bOOCBuff && !bCurrentlyAvoiding && hashPowerHotbarAbilities.Contains(SNOPower.Barbarian_Leap) && !playerStatus.bIsIncapacitated &&
                        // Less than 90% health *OR* target >= 18 feet away *OR* an elite within 30 feet of us
                        ([B]iAnythingWithinRange[RANGE_30] > 2[/B] || playerStatus.dCurrentHealthPct <= [B]0.90[/B] || targetCurrent.fCentreDistance >= 18f || targetCurrent.bForceLeapAgainst || iElitesWithinRange[RANGE_30] [B]>0[/B]) &&
                        GilesUseTimer(SNOPower.Barbarian_Leap, true) &&
                        //GilesCanRecastAfterFailure(SNOPower.Barbarian_Leap) &&
                        PowerManager.CanCast(SNOPower.Barbarian_Leap))
                    {
                        // For close-by monsters, try to leap a little further than their centre-point
                        float fExtraDistance = targetCurrent.fThisRadius;
                        if (fExtraDistance <= 4f)
                            fExtraDistance = 4f;
                        if (targetCurrent.fCentreDistance + fExtraDistance > 35f)
                            fExtraDistance = 35 - targetCurrent.fCentreDistance;
                        Vector3 vNewTarget = MathEx.CalculatePointFrom(targetCurrent.vThisPosition, playerStatus.vCurrentPosition, targetCurrent.fCentreDistance + fExtraDistance);
                        return new GilesPower(SNOPower.Barbarian_Leap, 35f, vNewTarget, iCurrentWorldID, -1, 2, 1, USE_SLOWLY);
                    }

With that change, my barb will leap to every group have more than 2 mobs, within 30 yards. It usually happened to mobs near you = use it often :D

Edit : fix error with [range_15] :(

Edite 2 : Change range checking of Leap from 15 to 30, so every group of mobs within 30 yards range, and have more than 2 ( 3,4,5 etc ) will take a Leap 1st :D
 
Last edited:
Yea 1.5.2.2 was indeed the best interms of rend spammability.

also did a little change to revenge to revert it back to 1.5.2.2 as I noticed it wasn't spamming as much as it could also changed its use timer. All changes are in the previous page's post

Noticed something weird about the 1.5.2.2 Rend.
- It works for 1H weapons (like the spamming :), Bot never reach 100% Fury)
- But it doesn't seem to work for 2H weapons (Bot keeps reaching 100 Fury but doesn't use Rend??? Only use it once on the A3 Fat Golgoth demons).
 
Back
Top