-- DopingControl data/expectations.lua
-- Default expectation matrix DC.DEFAULT_EXPECT[role][slotId] = true.
-- One flat slot-id namespace across all three tabs (ids are unique).
--
-- This table STAYS the role x slot
-- SEED. The saved/live shape is per class --
-- db.expectations[role][class][slotId] -- materialized from these lines
-- by core/config.lua (DC.EnsureExpectations) for every class that can
-- perform the role (DC_Roles.ROLE_CLASSES). Class-differentiated
-- DEFAULTS are deliberately NOT shipped; the one
-- motivating example lives here as a comment only:
--     a TANK-confirmed SHAMAN wants AI = true (Arcane Intellect for the
--     mana-fed tank kit) while a TANK WARRIOR does not -- the user flips
--     expectations.TANK.SHAMAN.AI in the options grid. AI stays
--     a CASTER/HEALER role default for every performing class.
--
-- Role-line choices:
--   Consumables: the four role sets of the KG stacking-rules atom
--                (data-tables/consumable-stacking-rules, TurtleWoW
--                1.17.2 -- melee / caster / tank / healer, each "all
--                active simultaneously") ARE the defaults now; see the
--                spec 2026-08-11-slot-model-item-icons-design.md. RANGED
--                has no KG set of its own and is derived from the melee
--                line (no STR -- ranged AP scales off AGI -- and no
--                FLASK). FR stays situational for all five roles
--                (enable/disable per boss via the expectation matrix),
--                WPN as before. The other school protection slots
--                (FrR/NR/SR/HR/AR, added 2026-08-11) carry NO seed entry
--                at all: default off for every role, so the dynamic-
--                column rule hides them until someone enables them per
--                role/class for a matching boss (same treatment as EMB
--                and T1/T2 below) -- unlike FR, which ships seeded true.
--   Class buffs: SOUL only HEALER, AI only CASTER/HEALER, SPROT situational
--                for all five -- like FR. EMB (Emerald Blessing) has NO
--                seed entry: the buff comes from a raid questline and most
--                druids do not have it. The column therefore stays hidden
--                until someone enables it per role/class in the options
--                grid; the dynamic-column rule makes an unexpected slot
--                disappear entirely (same treatment as T1/T2 below).
--   Equipment:   ALL armor enchant slots for ALL roles, WAIST included
--                (owner decision, 2026-08-30: every role wears a belt,
--                and it is enchantable on this server via the Belt
--                Buckle item line -- so it is worn equipment like any
--                other slot, not an optional extra like neck/rings);
--                per-item exemptions (wand/holdable) are handled at
--                classify time via DC.ENCH_EXEMPT, not here.
--                NECK/R1/R2 (also enchantable on this server, a custom
--                feature beyond vanilla) stay OFF by default for every
--                role: unlike WAIST, a neck/ring enchant is not assumed
--                baseline raid gear -- enable it per role/class in the
--                options grid when it matters. T1/T2 (trinket item tiles)
--                carry NO seed entry at all -- the model ignores
--                expectations for tile-kind slots entirely (item
--                present/absent decides, always shown, never gated).
--
-- Known debatable rows -- documented deliberately, the shipped defaults
-- win:
--   * TANK+AP / MELEE+FLASK: the OLD defaults deliberately excluded them;
--                   the KG role sets include them (tank runs Winterfall
--                   Firewater, melee runs Flask of the Titans), so both
--                   flipped to true with the v6 slot model.
--   * RANGED line:  derived, not KG-covered (see above) -- BL is included
--                   (Ground Scorpok Assay is +25 AGI), STR/FLASK are not.
--   * HEALER+HPELX: the KG healer set carries no Elixir of Fortitude, so
--                   HPELX defaults off for HEALER while ALC (Kreeg's
--                   Stout Beatdown + Medivh's Merlot Blue) is on.
--   * ZANZA:        expected for every role (all four KG sets carry it).
--   * Equipment:    an alternative default would differentiate per role
--                   (OFFH only TANK/MELEE, RNGD only RANGED,
--                   casters/healers neither); deliberately flattened to
--                   all-roles + ENCH_EXEMPT item checks.
--
-- This table is the pristine seed: core/config.lua materializes it into
-- db.expectations (per class, deep copies) on first load; the options
-- editor mutates only the materialized copies, never this table.
-- Pure Lua 5.0, no WoW API -- dofile-loadable offline.

DopingControl = DopingControl or {}
local DC = DopingControl

DC.DEFAULT_EXPECT = {
    TANK = {
        -- consumables (KG tank set: Mongoose, Firewater, Juju Power,
        -- R.O.I.D.S., Zanza, Superior Defense, Fortitude, Titans, food,
        -- Merlot + Rumsey, sharpening stone; Gift of Arthas has no column)
        FLASK = true, FOOD = true, AP = true, STR = true, AGI = true,
        BL = true, ZANZA = true, ARM = true, HPELX = true, ALC = true,
        FR = true, WPN = true,
        -- class buffs
        MOTW = true, PWF = true, SPROT = true,
        -- equipment (RNGD default only for RANGED:
        -- scopes only matter for hunters; flip in the options
        -- expectation matrix anytime)
        HEAD = true, SHLD = true, BACK = true, CHST = true, WRST = true,
        HAND = true, LEGS = true, FEET = true, MAIN = true, OFFH = true,
        WAIST = true,
    },
    MELEE = {
        -- consumables (KG melee set: Mongoose, Firewater/Juju Might,
        -- Juju Power/Giants, R.O.I.D.S./Scorpok, Zanza, Titans, food,
        -- sharpening stone; Juju Flurry has no column)
        FLASK = true, FOOD = true, AP = true, STR = true, AGI = true,
        BL = true, ZANZA = true,
        FR = true, WPN = true,
        -- class buffs
        MOTW = true, PWF = true, SPROT = true,
        -- equipment
        HEAD = true, SHLD = true, BACK = true, CHST = true, WRST = true,
        HAND = true, LEGS = true, FEET = true, MAIN = true, OFFH = true,
        WAIST = true,
    },
    RANGED = {
        -- consumables (derived from the melee line -- no KG set; no STR,
        -- no FLASK, see "Known debatable rows")
        FOOD = true, AP = true, AGI = true, BL = true, ZANZA = true,
        FR = true, WPN = true,
        -- class buffs
        MOTW = true, PWF = true, SPROT = true,
        -- equipment
        HEAD = true, SHLD = true, BACK = true, CHST = true, WRST = true,
        HAND = true, LEGS = true, FEET = true, MAIN = true, OFFH = true,
        WAIST = true,
        RNGD = true,
    },
    -- CASTER/HEALER: RNGD also dropped by role default (their classes are
    -- additionally exempt via ENCH_CLASS_EXEMPT - belt and suspenders)
    CASTER = {
        -- consumables (KG caster set: Dreamshard, GAE, school elixir,
        -- Dreamtonic, Mageblood, wizard oil, Zanza, Supreme Power, food)
        FLASK = true, FOOD = true, GAE = true, SCHOOL = true,
        DREAMT = true, SHARD = true, MP5 = true, ZANZA = true,
        FR = true, WPN = true,
        -- class buffs
        AI = true, MOTW = true, PWF = true, SPROT = true,
        -- equipment
        HEAD = true, SHLD = true, BACK = true, CHST = true, WRST = true,
        HAND = true, LEGS = true, FEET = true, MAIN = true, OFFH = true,
        WAIST = true,
    },
    HEALER = {
        -- consumables (KG healer set: Dreamshard, Mageblood, mana oil,
        -- Zanza, Distilled Wisdom, food, Kreeg's + Merlot Blue)
        FLASK = true, FOOD = true, MP5 = true, SHARD = true, ZANZA = true,
        ALC = true,
        FR = true, WPN = true,
        -- class buffs (SOUL: expected ONLY here)
        AI = true, MOTW = true, PWF = true, SPROT = true, SOUL = true,
        -- equipment
        HEAD = true, SHLD = true, BACK = true, CHST = true, WRST = true,
        HAND = true, LEGS = true, FEET = true, MAIN = true, OFFH = true,
        WAIST = true,
    },
}
