Okay, update time.
I tried fiddling with the code to make ti easier to read and possibly spam Rend more.
I changed Rend's default timer to:
Code:
{SNOPower.Barbarian_Rend, [B]1100[/B]},
Then I changed the "Rend Spam" code section around (made it simpler):
Code:
// Rend spam
[B]if[/B] (!bBuffsOnly && 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) &&
// Bunch of optionals now that go hand in hand with all of the above...
(
// Either off the full 1.1s...
GilesUseTimer(SNOPower.Barbarian_Rend) ||
// Use rend every 0.25s if there are more enemies in range than when last used rend...
(iAnythingWithinRange[RANGE_7] > iWithinRangeLastRend && DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Barbarian_Rend]).TotalMilliseconds >= [B]250[/B]) ||
// Use rend every 0.25s if current primary target changes...
(targetCurrent.iThisACDGUID != iACDGUIDLastRend && DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Barbarian_Rend]).TotalMilliseconds >= [B]250[/B])
) &&
// And make sure we have more than 20 fury.
playerStatus.dCurrentEnergy >= 20)
{
[B]Logging.Write("Attemping to rend...");[/B]
iWithinRangeLastRend = iAnythingWithinRange[RANGE_7];
iACDGUIDLastRend = targetCurrent.iThisACDGUID;
return new GilesPower(SNOPower.Barbarian_Rend, 0f, playerStatus.vCurrentPosition, iCurrentWorldID, -1, USE_COMBAT_ONLY, USE_SLOWLY);
}
I basically removed the Wrath wait check, !bEmergencyAvoidance, lowered some of the times, and got rid of the redundant checks to see if he's high fury (there's no point having those).
Most importantly, I added that Logging line of code to see when he actually makes it through that check. Lo and behold, on Azmodan, he casted Rend early on:
[08:27:28.332 N] Attemping to rend...
[08:27:59.915 N] Attemping to rend...
He didn't even attempt to cast it again until Az was seemingly dead (right as Az died). It should be noted that I started the fight with no fury, but within seconds, I was at full fury the entire fight duration.
So, Giles, which if check is failing to make it only enter that check once for the whole fight? Broken timer? Range checker failing? Number of mobs checker failing? "!bBuffsOnly"?
I'm at a loss.
EDIT!!! I have an idea. I'm going to nest the If statements and add a Logger comment for each one, that way I know which one it's failing on. Ah ha! Programming without proper break points!