DopingControl v0.6.4

This commit is contained in:
2026-08-30 15:37:17 +02:00
parent ecab5ba845
commit 695dd9dcd4
23 changed files with 2278 additions and 296 deletions
+34
View File
@@ -66,3 +66,37 @@ for name, def in pairs(DC.CLASSBUFFS) do
DC.SPELL_TO_SLOT[def.ids[i]] = def.slot
end
end
-- ------------------------------------------------------------------
-- Name-only aura collisions with CONSUMABLE slots (decision 2026-08-15):
-- a name-only aura match (no spell ID at all for that scan) must NEVER
-- satisfy a CONSUMABLE slot when the matched display name is also a class
-- buff name -- the scan cannot tell the two apart, and defaulting to HAS
-- would hide a missing consumable behind someone else's class buff. Such
-- a slot classifies UNKNOWN instead (core/model.lua's aura name-fallback
-- branch consults this table; core/const.lua's Iron Rule: UNKNOWN is
-- never collapsed into HAS or MISSING).
--
-- Scope is deliberately ONE-SIDED: only the CONSUMABLE slot side of the
-- collision is affected. The class-buff slot (e.g. SPROT) keeps the
-- existing name-fallback behavior unchanged -- the ambiguity here means
-- "we can't prove the CONSUMABLE was used", not "we can't prove the class
-- buff is missing". Do not widen this into "name-only never counts"; that
-- would make every ID-less scan MISSING/UNKNOWN across the whole matrix.
--
-- Keyed by buff display name (a key shared by DC.CONSUMABLES and
-- DC.CLASSBUFFS). test_data.lua asserts every entry here is a key in BOTH
-- tables, so a stale or speculative entry cannot ship silently.
-- "Shadow Protection" -- DC.CONSUMABLES["Shadow Protection"] (SR slot,
-- Shadow Protection Potion, spell 7242, data/consumables.lua) vs.
-- DC.CLASSBUFFS["Shadow Protection"] above (SPROT slot, priest buff,
-- ids 976/10957/10958) -- identical display name, already flagged as a
-- collision at both definitions and wowhead-confirmed 2026-08-11 (see
-- the SR entry's comment in data/consumables.lua). This is the ONLY
-- name shared between DC.CONSUMABLES and DC.CLASSBUFFS (checked against
-- every key in both tables) -- no other entry is added without the same
-- level of evidence.
-- ------------------------------------------------------------------
DC.CONSUMABLE_CLASSBUFF_NAME_COLLISION = {
["Shadow Protection"] = true,
}