API/Addon for new combat resurrection mechanic available?
So the new combat resurrection mechanic starts with 1 available combat resurrection and you get an additional combat resurrection every 90/<raid members> minutes. The current available count is visible like charges on the combat resurrection spell buttons, but what about classes that don't have a combat resurrection spell?
Is there an API to get the current count of available combat resurrections from the new system? If yes, is there already an addon that uses it? Something like a LDB display? This would be very helpful for raid leaders. |
You don't need an API for gathering this information, just track the combatlog and do the math yourself.
Since this is fairly new, I doubt any addon has been made for this specific purpose yet, but I'm sure there will be. |
You don't need the combat log, you only need to track how many players have come back to life over the course of the current boss fight.
If I understand this correctly, you get 1 charge at the start of a boss fight, and gain another every 90/GetNumGroupMembers() minutes (no rounding?). Should be fairly easy to write, assuming those parameters are accurate. |
Is it really just 90/GetNumGroupMembers()? I'd assume it's more like the flex scaling, where only group members participating in the boss fight (e.g. not outside of the instance) are counted.
And how do you track resurrection without combat log events? Is there a specific event for that? I could only find one for the player itself. |
Here's a dry-coded example, so I have no idea if it works.
Lua Code:
I have no idea how reincarnation is factored into the new rules, and I don't know if reincarnation or soulstones trigger an incoming rez event, so it might just be simpler to check UNIT_HEALTH to track when they've died or rezzed. |
Quote:
|
I'm trying to decide how best to determine that the people in the raid are also in the current boss fight and not outside the instance.
You could loop over the raid on ENCOUNTER_START and put everyone who's in the same zone as you into a table to reference throughout the fight, or you could compare their zone (from GetRaidRosterInfo) to yours when they're resurrected.. but I'm not sure if phasing could potentially cause problems with that. I was thinking something like this.. Lua Code:
|
Isn't the raidSize parameter of the ENCOUNTER_START event that value? I assumed so because you used it in your first example instead of GetNumGroupMembers().
|
Quote:
Since there isn't an event specifically for detecting when someone comes back to life, we have to infer that someone has been resurrected based on the fact that the encounter is still in progress and someone has gone from "dead" to "alive". The combat log can tell us when someone has died, and if someone has cast a resurrection spell on them, but not whether they've taken it. It also is the least reliable method for tracking that someone has been rezzed, because it can occasionally malfunction, and it would completely fail if you're in a different phase than the person who died. In the worst-case-scenario we can't detect whether a player has been rezzed, but we can detect that they've come back to life. This is a tricky distinction because there have been fights where players are killed and resurrected as part of the fight itself (eg. the final phase of the lich king), but it's not something we should really worry too much about. So, ultimately I think the best solution is to make a table of who's in the same zone at the start of the encounter, and either OnUpdate or on UNIT_HEALTH scan for dead and potentially resurrected raid members. I think it's a toss-up whether UNIT_HEALTH or OnUpdate is more efficient in a raid; either way you're going to be calling a lot of functions. UNIT_HEALTH is probably slightly better, but you have to use OnUpdate anyway because the available number of charges is based on elapsed time, assuming you want to update a display as soon as the number changes. There is one other aspect that I picked up from the blizzard post on the subject, and it's that dead players with pending resurrections have a debuff. I don't know what that debuff is called, but it could be used to distinguish between people who have died in the boss fight and people who died outside of it, unless it doesn't show for people with self-resurrections, in which case it isn't terribly helpful. |
CLEU event: SPELL_RESURRECT for start watching
And UNIT_FLAGS event with func UnitIsDead for tracking successful resurrection Don't know how fast this, but it works |
Quote:
The debuff is called "Resurrecting". Seen here: http://wod.wowhead.com/spell=160029 There is a pretty big bug though, it applies in the CLEU but when raid testing was going on, there was no spell_aura_removed for it. One more big caveat, it doesn't work for warlocks who use soulstone. Blizz has some big oversights here and we just have to figure out a way to work around them. |
I logged a dungeon and the time that a battle rez was used, the resurrecting debuff had a CLEU for removal. So there might be hope yet.
|
Seems like oRA3 now has a BattleRes module that shows the remaining res count and a timer until the next one. It uses a way to get the number of raid members that wasn't discussed here yet: The last return value of GetInstanceInfo().
|
Quote:
|
Little bit of information I found. You can scan the left tooltip line 4 for how many seconds are left before another charge (for < 1 min remaining). You could just adjust your Mythic timer if it was found to be off.
|
You mean tooltip scanning of a combat resurrection spell? Does that work for spells you don't have with the current class?
|
Quote:
|
I don't think you need to scan the tooltip for that... you can just use the GetSpellCharges API function.
|
If tooltip scanning or calling GetSpellCharges works on a battle rez spell you don't have, then those are the methods to use for this.
There's no point jumping through hoops tracking anything else. |
Quote:
Had tested it earlier in T14 LFR and reported that it didn't work. But I just went back in and now it does work. Wonder if I screwed up my test macro earlier (rewrote it since then), or if there are actually some conditions under which it'll break... (Note: I am playing a mage) |
Just tested LFR on my warrior and as soon as encounter combat starts, it started returning a value to GetSpellCharges(20484) which is Rebirth.
Since it returns the count and the cooldown it IS an easy way out assuming everything works a-OK. It's odd that you can get charges for a spell that isn't yours, maybe that's new with WoD. |
Quote:
To sync up the combat rezzes between players, they may have simply overridden the normal behavior of the spells to return information about the available resurrections for the encounter instead of information about your spell. |
Quote:
|
Can anyone help me turn this into a LDB so I can track this stuff as a RL
I know oRA3 has this function but I'm not a big fan of it |
|
Awesome thanks for the quick reply Semlar, looks like I was looking in the wrong subsection on Curse add to that the really bad search function on that site :rolleyes:
|
All times are GMT -6. The time now is 01:37 AM. |
vBulletin © 2024, Jelsoft Enterprises Ltd
© 2004 - 2022 MMOUI