Skip to content

fix: stop exporting the stats_count as a scale type - #436

Open
Vergir wants to merge 1 commit into
developfrom
bugfix/scale-type-sentinel
Open

fix: stop exporting the stats_count as a scale type#436
Vergir wants to merge 1 commit into
developfrom
bugfix/scale-type-sentinel

Conversation

@Vergir

@Vergir Vergir commented Aug 2, 2026

Copy link
Copy Markdown
Collaborator

Rake's damage and Card Trick's diamond resist shred duration were both exported as scaling with "stats_count", which is not a hero stat at all.

EStatsType.h in decompiled files reads:

    EAbilityLevel = 97,
    EStatsCount = 98,
    EStatsInvalid = 98,

EStatsCount has same value as EStatsInvalid, so it's not a real scaling.

SCALE_TYPE_MAP had it mapped to an invented "stats_count", which wiki module later remaps into spirit so Rake can display its scaling.


In this PR reading this EStatsCount value falls back to reading _class instead, which is where the real stat lives for both: Rake's scale function is a CScaleFunctionAbilityProperty_TechDamage, so its damage grows with spirit at the rate of 1.0 it already carried, and Card Trick's is a CScaleFunctionAbilityProperty_TechDuration, so its shred grows with ability duration, the same as ClubSlowDuration beside it.

Merging this will replace invented stats_count with real data and allow us to erase this weird stats_count => spirit on the wiki side.

Parsed data in deadlock-data PR - Reopen deadbot PR or run deploy workflow for this branch here to reparse the data

Rake's damage and Card Trick's diamond resist shred duration were both
exported as scaling with "stats_count", which is not a hero stat at all.

The game's stats enum ends with

    EAbilityLevel = 97,
    EStatsCount = 98,
    EStatsInvalid = 98,

and the scale function schema gives EStatsCount as what
m_eSpecificStatScaleType defaults to. So a scale function carrying it
names no stat, and the two abilities above just happen to write the
default out rather than leaving it off. SCALE_TYPE_MAP had it mapped to
an invented "stats_count", which won out over the _class the stat should
have been read from.

Reading the sentinel as naming nothing lets _class answer instead, which
is where the real stat lives for both: Rake's scale function is a
CScaleFunctionAbilityProperty_TechDamage, so its damage grows with
spirit at the rate of 1.0 it already carried, and Card Trick's is a
CScaleFunctionAbilityProperty_TechDuration, so its shred grows with
ability duration, the same as ClubSlowDuration beside it.

The schema also documents m_flStatScale as defaulting to 1.0, confirming
what the rest of this branch infers from a missing rate.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant