From 293f42d2b253f150ebaef0db2148b547ececcef4 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Fri, 15 May 2026 04:04:01 -0700 Subject: [PATCH] fix(dbc): correct TBC Spell.dbc DurationIndex (was aliased with RangeIndex at 40) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- Data/expansions/tbc/dbc_layouts.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Data/expansions/tbc/dbc_layouts.json b/Data/expansions/tbc/dbc_layouts.json index a2a3ffa7..e2cb9908 100644 --- a/Data/expansions/tbc/dbc_layouts.json +++ b/Data/expansions/tbc/dbc_layouts.json @@ -210,7 +210,7 @@ "AttributesEx": 6, "CastingTimeIndex": 22, "DispelType": 3, - "DurationIndex": 40, + "DurationIndex": 34, "EffectBasePoints0": 80, "EffectBasePoints1": 81, "EffectBasePoints2": 82,