BigWigs Bossmods

452 - Warlord Zon'ozz timer bar for Psychic Drain is fatally inaccurate

What steps will reproduce the problem?

1. In 10-man regular Warlord Zon'ozz, be a tank.

2. Pay attention to the BigWigs bar for Psychic Drain so that can pop a tank CD to mitigate some/all of that spell damage. Or if you are a healer assigned to the tank, so you know when to pop your healer CDs, etc.. Which is critically important in regular/heroic 10 & 25 man (but unimportant in LFR).

3. Never has that timer bar ever come close to his actual cast when I was using BigWigs on him. Also, before either the first cast of Psychic Drain in a fight or the first cast after a tentacle phase, BigWigs often fails to provide any timer bar for the upcoming cast at all. When following the inaccurate BigWigs timer bar and/or it didn't show up, was blowing tank cooldowns that often ended before he actually cast the spell.

It appears hardcoded in BigWig's Zonozz.lua to account for a 20 second delay between casts of Psychic Drain (that is, when the bar decides to appear at all). Only problem is it simply isn't always 20 seconds, its actually a number that varies depending only on the dungeon difficulty you are doing, as can be seen in DBM's own Zonozz.lua.

What version of the Big Wigs are you using?

r8987 and all earlier versions.

Do you have an error log of what happened?

No errors.

Please provide any additional information below. (example: localization of your client if not enUS or enGB)

As Psychic Drain is a direct tank-killer ability, its critical for tanks to know accurately when the cast is about to happen. Very slightly less important for healers so they know when to switch off healing others and pre/active heal the tank.

BigWig's module for that boss as it is now can't be relied upon for accurate measurement of when that spell is going to be cast; its a blocker liability. So hopefully it can be changed/fixed.

User When Change
funkydude Feb 16, 2012 at 15:06 UTC Changed status from Waiting to Fixed
funkydude Feb 13, 2012 at 01:20 UTC Changed status from New to Waiting
Zidomo Jan 21, 2012 at 15:43 UTC Changed description:
  2. Pay attention to the BigWigs bar for [[http://www.wowhead.com/spell=104322|Psychic Drain]] so that can pop a tank CD to mitigate some/all of that spell damage. Or if you are a healer assigned to the tank, so you know when to pop your healer CDs, etc.. Which is critically important in regular/heroic 10 & 25 man (but unimportant in LFR).

- 3. Never has that timer bar ever come close to to his actual cast when I was using BigWigs on him. Also, before either the first cast of Psychic Drain in a fight or the first cast after a tentacle phase, BigWigs often fails to provide any timer bar for the upcoming cast at all. When following the inaccurate BigWigs timer bar and/or it didn't show up, was blowing tank cooldowns that often ended before he actually cast the spell.
+ 3. Never has that timer bar ever come close to his actual cast when I was using BigWigs on him. Also, before either the first cast of Psychic Drain in a fight or the first cast after a tentacle phase, BigWigs often fails to provide any timer bar for the upcoming cast at all. When following the inaccurate BigWigs timer bar and/or it didn't show up, was blowing tank cooldowns that often ended before he actually cast the spell.
  It appears hardcoded in BigWig's //Zonozz.lua// to account for a 20 second delay between casts of Psychic Drain (that is, when the bar decides to appear at all). Only problem is it simply isn't always 20 seconds, its actually a number that varies depending **only** on the dungeon difficulty you are doing, as can be seen in DBM's own //Zonozz.lua//.
Zidomo Jan 21, 2012 at 12:34 UTC Create

You must login to post a comment. Don't have an account? Register to get one!

  • 8 comments
  • Avatar of funkydude funkydude Feb 13, 2012 at 01:19 UTC - 0 likes

    I've updated it with info from Mysticalos, but really the only thing that's changed is that we now show a bar for the first Psychic Drain after a dark phase, the original timer is still the exact same, according to mysticalos DBM also uses this timer. (pigmonkey was correct all along).

    Additionally I added a bar for the void ball from mysticalos.

    edit: Note that my commit is drycoded based off what I could fathom from the code mysticalos provided.

    Last edited Feb 13, 2012 by funkydude
  • Avatar of funkydude funkydude Jan 30, 2012 at 02:58 UTC - 0 likes

    You know you're free to ask me these things on IRC right? There's 2 ways to do this that I can think of right now. The first way is to get the time remaining. You can do that by using a timer like this: http://www.wowace.com/paste/4665/ The TimeLeft call will print how much time in seconds until the timer expires.

    The second (and probably better) way is to get the total time that has passed so far, that can simply be done by setting a variable to GetTime() when the bar starts, then removing that variable from GetTime() when you want to update the bar. If less than a certain amount of time has passed then update the bar.

  • Avatar of mysticalos mysticalos Jan 29, 2012 at 22:05 UTC - 0 likes

    It's linked to void of the unmaking.

    any time there is no void ball out, drain is DISABLED, the boss can NOT use it (one of many encounter failsafes, so you can aim the boss anywhere you damn well please if no ball is out and not worry about him zapping raid, makes sense, if encounter strat is to aim where you want the ball to spawn). Once a ball is summoned, drain is hardcoded to be cast after 8.5 seconds exactly from time the ball UNIT_SPELLCAST_SUCCEEDED event fired. After that first one, it has a 20 second CD with a 20-25 second variation and will follow this CD until the ball vanishes, upon which ability is against disabled. This cycle repeats. There is one exception, the FIRST drain on engage does not follow 8.5 second rule, so you have to make sure to ignore that rule for pull like I do, the engaeg bar is 16.5 minimum from pull with a 5 second variation (in other words, 10.5 to 15.5 seconds after first void, ignoring the 8.5 rule)

    Void of the unmaking has a 90.3 second CD from time of casts, HOWEVER, there is an encounter failsafe coded in so he cannot cast it during a dark phase, or within 6 seconds of it ending (15 seconds on heroic). If it comes off CD before that failsafe, the Cd is extended to minimum time (pretty much aways after 6+ bounces). when you account for this, you can have a perfect void timer every time, and a perfect drain timer 8.5 seconds after the void ball, :) that code zidomo posted is old and not valid at all.

    also to note, in LFR, and only LFR, void of the unmaking doesn't have a cast trigger (don't ask, that's blizzard for you). all other difficulties have to detect using UNIT_SPELLCAST_SUCCEEDED of spellid 103571 (NOT name). Here is my current DBM code

    function mod:OnCombatStart()
    	voidWarned = false
    	phase2Started = false
    	timerVoidofUnmakingCD:Start(5.5)
    	timerPsychicDrainCD:Start(16.5)
    end
    
    local function blackBloodEnds()
    	voidWarned = false
    	phase2Started = false
    end
    
    function mod:SPELL_AURA_APPLIED(args)
    	if args:IsSpellID(104377, 104378, 110322, 110306) and not phase2Started then---Black blood being applied to raid
    		phase2Started = true
    		timerPsychicDrainCD:Cancel()
    		timerShadowsCD:Cancel()
    		self:Schedule(30, blackBloodEnds)
    		--Check duration on current void of unmaking bar to see if they are further progressed then failsafe will allow.
    		if self:IsDifficulty("heroic10", "heroic25") then
    			if timerVoidofUnmakingCD:GetTime() > 45.3 then--If CD ends before 15 seconds after black phase ending (on heroic), it's extended
    				timerVoidofUnmakingCD:Update(45.3, 90.3)--force 45 remaining on CD
    			end
    		else
    			if timerVoidofUnmakingCD:GetTime() > 54.3 then--Normal also has a failsafe but much smaller (6 seconds after black blood ends)
    				timerVoidofUnmakingCD:Update(54.3, 90.3)--force 36 remaining on CD
    			end
    		end
    	end
    end
    
    function mod:UNIT_SPELLCAST_SUCCEEDED(uId, spellName, _, _, spellID)
    	if uId ~= "boss1" then return end--Anti spam to ignore all other args (like target/focus/mouseover)
    	--Void of the unmaking cast, do NOT use spellname because we want to ignore events using spellid 103627 which fires when ball hits boss
    	--It looks this event doesn't fire in raid finder. It seems to still fire in normal and heroic modes.
    	if spellID == 103571 and not voidWarned then
    		if timerPsychicDrainCD:GetTime() == 0 then--Prevent this from overriding first timer on pull, which is only drain that doesn't follow this rule
    			timerPsychicDrainCD:Start(8.5)
    		end
    		timerVoidofUnmakingCD:Start(90.3)
    		voidWarned = true
    	end
    end
    
    --Backup trigger for LFR where UNIT_SPELLCAST_SUCCEEDED doesn't fire for void cast
    function mod:CHAT_MSG_MONSTER_YELL(msg)
    	if (msg == L.voidYell or msg:find(L.voidYell)) and not voidWarned then
    		timerPsychicDrainCD:Start(8.3)--Yell comes .2 after unit event in normal and heroic, so we adjust the timers for LFR for yell being later.
    		timerVoidofUnmakingCD:Start(90.1)
    		voidWarned = true
    	end
    end
    
    	voidYell	= "Gul'kafh an'qov N'Zoth."
    

    http://pastebin.com/1qaNvW1S for complete mod code. api notes, GetTime on a dbm bar returns bar duration. Update completely replaces an existing bars status such as reversing the timer a little if you want to adjust timing off encounter failsafe in this case. I didn't commit this to bigwigs cause honestly i woudln't know what the equivs are to do it. I'm great at figuring out encounter design, no one else even caught the true void ball CD mechanics or the drain being linked to it, but when it comes to coding, pssht i'm terrible :)

    Last edited Jan 29, 2012 by mysticalos
  • Avatar of funkydude funkydude Jan 25, 2012 at 15:55 UTC - 0 likes

    That was probably done by mysticalos so if he has some secret sauce on this ability he's more than welcome to contribute it.

  • Avatar of Zidomo Zidomo Jan 24, 2012 at 17:19 UTC - 0 likes

    Will need more data on this end to verify that "all BigWigs timers are as accurate as possible in all modes" as I haven't seen this to be the case in several instances over time.

    Even if it is in fact "just lacking the timer for the very first one and each first one after a shadow phase", that's still way too much lacking of what is needed. Lacking of which can cause wipes.

  • Avatar of pigmonkey pigmonkey Jan 24, 2012 at 03:15 UTC - 0 likes

    The first bit of code you linked was what I saw, and that deals with timers after the shadow phase. The second bit looks like their new take on it, which would be the best way to implement it. The third is the timer from the start of the fight.

    I'm still fairly confident that all BigWigs timers are as accurate as possible in all modes, it is just lacking the timer for the very first one and each first one after a shadow phase. I checked some of my WoL data from a 10N run and noted the Psychic Drain casts at minimum 20s apart.

    Last edited Jan 24, 2012 by pigmonkey
  • Avatar of Zidomo Zidomo Jan 24, 2012 at 02:29 UTC - 0 likes

    @pigmonkey: Go

    You are missing the raid difficulty adjustments for that timer later in the file. At least in the beta DBM ("4.10.9-r7052 Beta", Dec 28-11, latest download off the Curse page) I used in the next raid after this BigWigs problem caused me to finally zip it up & stop using it. Which is where the details in the ticket came from (lines 77-90):

    --Seems every difficulty has a variation. They aren't random, i verify from pull to pull each difficulty is always the same, but completely different from one another
    	if mod:IsDifficulty("lfr25") then--LFR timers come earliest
    		timerVoidofUnmakingCD:Start()--6
    		timerPsychicDrainCD:Start(14.5)
    	elseif mod:IsDifficulty("normal25") then--Normal 25 appears to be next
    		timerVoidofUnmakingCD:Start(12)
    		timerPsychicDrainCD:Start(20.5)
    	elseif mod:IsDifficulty("heroic10", "heroic25") then--Heroic 25 and 10 seem to be the same
    		timerVoidofUnmakingCD:Start(15)
    		timerPsychicDrainCD:Start(23.5)
    	elseif mod:IsDifficulty("normal10") then--Normal 10 has the longest timers for this stuff after a dark phase.
    		timerVoidofUnmakingCD:Start(22.5)
    		timerPsychicDrainCD:Start(31)
    	end
    

    The code above is also in the earlier "4.10.8" release version. Later DBM alphas from Curseforge are somewhat different; that code section isn't present, but other ones are:

    if (msg == L.voidYell or msg:find(L.voidYell)) and not voidWarned then
    		timerPsychicDrainCD:Start(8.3)--Yell comes .2 after unit event, so we adjust the timers.
    
    timerPsychicDrainCD:Start(16.5-delay)
    
    if timerPsychicDrainCD:GetTime() == 0 then--Just a hack to prevent this from overriding first timer on pull, which is only drain that doesn't follow this rule
    			timerPsychicDrainCD:Start(8.5)
    	end
    

    and so on.

    I was healing again when I switch to the DBM beta, but it appeared to be accurate in its timer bars for when Psychic Drain appeared. BigWigs' bar never was when I was tanking.

    The issue isn't what DBM does or doesn't do, the issue is BigWigs' Psychic Drain timer bar as it is now (unreliable & inaccurate) can contribute to 10/25m wipes.

    Last edited Jan 24, 2012 by Zidomo
  • Avatar of pigmonkey pigmonkey Jan 23, 2012 at 23:20 UTC - 0 likes

    Actually, DBM uses the same 20s approximation:

    local timerPsychicDrainCD = mod:NewCDTimer(20, 104322) --Every 20-25 seconds, variates.
    

    The only difference is that the first Psychic Drain coming out of the shadows phase is not timed in BigWigs, and that is the size/difficulty discrepancy you are noting. Every timer you do see in BigWigs should be the exact same as DBM since they both trigger off of the cast for 20s.

  • 8 comments

Facts

Last updated
Feb 16, 2012
Reported
Jan 21, 2012
Status
Fixed - Developer made requested changes. QA should verify.
Type
Defect - A shortcoming, fault, or imperfection
Priority
Medium - Normal priority.
Votes
0

Reported by

Possible assignees