DotaAnalyst: Show the analyst where deaths came from and what they cost - #37
Merged
Merged
Conversation
The analyst saw only a death count, and the event log carried only deaths to heroes, so a player diving a tower or dying to Roshan was invisible. It now gets time spent dead for every player, the focus player's deaths with their killer and gold lost, and non-hero deaths in the log. Kills made under Smoke of Deceit are now marked, so it can tell a planned gank from a chance pickoff. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
coreymaher
force-pushed
the
dota-analyst-deaths-log
branch
from
September 24, 2026 08:34
a1e5e98 to
5917138
Compare
…prompt Killers and damage sources now share one classification, so the analyst reads the same words for what hurt the player and what killed them, and the two cannot drift apart. The death guidance moves into the damage analysis it overlapped with. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
coreymaher
marked this pull request as ready for review
September 25, 2026 07:18
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.
Picks up two fields OpenDota started emitting in September:
deaths_log(Document deaths_log per-death gold lost and time dead odota/core#2973, Add deaths_log with gold lost and time dead per death odota/parser#88): every player gets their total time spent dead, the focus player gets each death with its killer, time dead and gold lost, and deaths to towers, creeps, neutrals and Roshan now appear in the event log, which previously held only hero kills.smokeonkills_log(Annotate kills made from smoke in kills_log odota/parser#91): kills made from Smoke of Deceit are marked in the event log.Non-hero killers are named with the same buckets
damageTakenalready uses (towers, creeps, neutrals, roshan), now shared through oneunitBucket, so the analyst reads one vocabulary for what hurt the player and what killed them.Gold lost is only sent when nonzero. Turbo has no death gold loss, so Turbo matches never carry it; an Ability Draft match checked against its own
gold_reasonsmatched exactly.networth_tand the first-bloodvictim_player_slotwere left out: the first duplicatesgold_tclosely enough not to earn the tokens, and the processor already resolves the first-blood victim from the objective's key.Adds ~400 tokens (2.4%) to a 31-minute Turbo match's prompt.
Testing
npm run typecheck,cdk synthandscripts/load-test-bundles.shpassdamageTakenis identical to master on that match after theunitBucketrefactordeaths_logstripped, as parsed before OpenDota emitted it, produces none of the new fields or log linesgemini-3.8-flash, one call per side, focus player on Disruptor (Turbo, position 5):🤖 Generated with Claude Code