Fix aegis and Wraith King reincarnation deaths counting as deaths - #89
Open
geracosta wants to merge 1 commit into
Open
Fix aegis and Wraith King reincarnation deaths counting as deaths#89geracosta wants to merge 1 commit into
geracosta wants to merge 1 commit into
Conversation
The stateful aegis filter no longer works on modern replays (it relies on modifier_aegis_regen, which is not logged anymore, and shares one death timestamp across holders), so reincarnation deaths inflate kills_log, killed and killed_by relative to the scoreboard. Reincarnations are now resolved in a pre-scan keyed by event time: the first death of an aegis holder within the 5 minute expiry window is the aegis reincarnation, consuming that pickup, and a Wraith King back on his feet within seconds without a buyback reincarnated (the scepter variant leaves no modifier entry, so this comes from the life_state intervals, keeping the base reincarnation modifier as a fast path). Fixes odota/core#726.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes odota/core#726.
While checking parsed data against the Steam API scoreboard over 100 recent parsed pro matches, I found 24/1000 players whose combat-log death counts (
killed_bysums) disagree with the scoreboard. The breakdown:kills_log/killed/killed_by(14 players, all +1, all aegis carriers — verified case by case against theCHAT_MESSAGE_AEGISpickups). The existing filter doesn't catch them on modern replays: it clears the holder onmodifier_aegis_regen, which the combat log no longer emits (I dumped every event around a verified aegis death — the revival leaves no combat log trace at all), and it shares a singleaegisDeathTimeacross holders.modifier_skeleton_king_reincarnationeither.deaths_logrecords those).The fix resolves reincarnations in a pre-scan keyed by event time, the same pattern as #87/#88, since the chat, modifier, interval and death entries around a reincarnation are not strictly ordered in the stream:
CHAT_MESSAGE_AEGIS/AEGIS_STOLENpickup is the aegis reincarnation, and consumes that pickup — so a later real death counts, and an expired aegis can't swallow anything.life_stateintervals show him back on his feet within 4 seconds and with no buyback event in between is a reincarnation (his revive takes 3s; the shortest real respawn is far longer). The base reincarnation modifier is kept as a fast path for replays that do log it.Validation on 9 matches (8 with aegis activity + the WK match), all against Steam API scoreboards:
This also fixes the same inflation inside teamfight deaths, since those are derived from the
killedentries.