fix(dbc): correct TBC Spell.dbc DurationIndex (was aliased with RangeIndex at 40)

Data/expansions/tbc/dbc_layouts.json had DurationIndex=40 — but that
column is RangeIndex in TBC 2.4.3. DurationIndex is at column 34.

Per cmangos mangos-tbc src/game/Server/DBCStructure.h:
    uint32  CastingTimeIndex;   // 22
    uint32  DurationIndex;      // 34
    uint32  rangeIndex;         // 40

Visible impact prior to this fix on TBC servers: every spell-duration
lookup read the spell's RangeIndex value (an index into SpellRange.dbc)
instead of its actual DurationIndex (an index into SpellDuration.dbc).
Cast durations and aura durations would have come back as nonsense
values — most likely zero or wildly incorrect for spells whose range
index happens to be a valid duration row.

Found by scanning all dbc_layouts.json files for duplicate field
indices within a single DBC entry — the (DurationIndex, RangeIndex,
40) collision was the only one across all four expansions.

Classic (Duration=40 Range=33) and WotLK (Duration=40 Range=49)
remained intact; only TBC had the alias.
This commit is contained in:
Kelsi
2026-05-15 04:04:01 -07:00
parent 3bec2b8657
commit 293f42d2b2

View File

@@ -210,7 +210,7 @@
"AttributesEx": 6,
"CastingTimeIndex": 22,
"DispelType": 3,
"DurationIndex": 40,
"DurationIndex": 34,
"EffectBasePoints0": 80,
"EffectBasePoints1": 81,
"EffectBasePoints2": 82,