Rarity

Rarity

17M Downloads

The Combat-log based attempts detection doesn't work properly when used to detect outdoor world boss kills

rdw-software opened this issue ยท 7 comments

commented

Verified for Dunegorger Kraulok. After looking at the code, it appears any UNIT_DIED event is now triggering the detection, when only those that are caused by the player or their party/raid should count.

The implementation appears to rely on bit flags for a certain srcFlag bitmap field (see https://wow.gamepedia.com/API_CombatLogGetCurrentEventInfo), but those are no longer working? The value is always -2147483648 and so ALL kills count regardless of who actually caused them.

Potential solutions:

  • Repair the bit flag detection, if Blizzard hasn't removed/broken it
  • Failing that, it might be possible to rely on the defeat detection (loot lockout) and count an attempt if and only if the player isn't yet locked out

Notes:

  • MOP world bosses are probably affected, as well
commented

Added a heuristic in 8a9dc9b, which covers the following scenarios:

  • Player is already locked out (ignore all attempts)
  • Player is not engaged in combat AND player is alive

This could break if, say, the player tags the boss and then feign deaths, vanishes etc, (while not being locked out)? Also if there ever is a boss that doesn't automatically put everyone nearby in combat it wouldn't necessarily be detected either.

However, since most regular scenarios are covered (boss died with the player nearby but before they could tag it, player AFK at flight master near the boss, player already looted the boss, player died but still tagged it) I hope it'll be sufficient. It should at least be an improvement over the existing detection that ALWAYS adds attempts incorrectly.

commented

Improved in 665ffb3, now considering this done. If the heuristic causes unforeseen issues in the future, they must be remedied separately.

commented

Apparently this is not reliable; sometimes the quest WILL be completed even on the first kill... Blizzard, please!

I don't have time to come up with a more elaborate heuristic just to work around the lack of proper events to detect those bosses. So what I'm doing now is, remove the heuristic and simply rely on the world quest being completed for Kraulok ;/

It should remove the duplicate attempts, but won't help with MOP world bosses, nor the odd case where the loot lockout quest is completed but not the world quest. I don't know if it's possible to even trigger this, but time will tell.

commented

Updated in 0020ee5.

commented

Research shows that those flags are always set to COMBATLOG_OBJECT_NONE, which according to Google results was always the case for UNIT_DIED. I wonder if this was a bug that never surfaced, or maybe another event was used for the BOSS detection previously?

Either way, this means that there's no way to filter out random kills by simply repairing the bit flag detection...

Next idea: Since there's an encounterID for some of the world bosses, perhaps there's also one for Kraulok specifically? The DBC files don't seem to contain it, so maybe Blizzard didn't add it.

commented

A quick test verifies that indeed there's no encounterID being used.

commented

Right, so the problem with relying on the defeat detection is that the quest may already flagged as completed by the time the boss dies.

Edit: I tested this, too, and it appears that the loot lockout flag is NOT set instantly. There's probably some delay, which means that the first time the boss is killed, the lockout isn't set yet. Checking the quest completion before adding an attempt should then allow the exclusion of all duplicate attempts.