Fractured: strip class-spell reagents at load; Paragon relic ranged slot
- SpellInfoCorrections: zero Reagent/ReagentCount on spells with non-zero SpellFamilyName so class abilities no longer require shards, candles, etc., while profession crafts (SpellFamilyName 0) keep mats. Matches the client Spell.dbc bake in patch-enUS-4.MPQ. - Paragon_SC: OnPlayerIsClass returns true for CLASS_CONTEXT_EQUIP_RELIC for paladin/druid/shaman/warlock/dk so Paragon can equip all relic types in the ranged slot. - CLIENT-PATCHES: document Spell.dbc reagent pass, rune script order, and stock ammo slot behavior in patch-enUS-5. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -65,6 +65,37 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
// Unified relic / ranged slot for class 12.
|
||||
// ----------------------------------------------------------------
|
||||
// CLASS_CONTEXT_EQUIP_RELIC is read in exactly two places in core
|
||||
// (PlayerStorage.cpp): FindEquipSlot's INVTYPE_RELIC switch, which
|
||||
// routes Librams/Idols/Totems/Misc/Sigils into EQUIPMENT_SLOT_RANGED
|
||||
// for the matching class only, and CanEquipUniqueItem's per-subclass
|
||||
// proficiency gate. By claiming this context for paladin/druid/
|
||||
// shaman/warlock/dk we let Paragon drop any of those relics into the
|
||||
// ranged slot exactly the same way each native class does, with no
|
||||
// core patch and no other side effects (the constant is not read
|
||||
// anywhere else in the codebase).
|
||||
//
|
||||
// Bows/guns/crossbows already equip via the regular
|
||||
// INVTYPE_RANGED/RANGEDRIGHT routing -- weapon proficiencies for
|
||||
// class 12 are seeded by the Paragon proficiency SQL migrations, so
|
||||
// they pass the GetSkillValue check in CanEquipUniqueItem.
|
||||
if (context == CLASS_CONTEXT_EQUIP_RELIC)
|
||||
{
|
||||
switch (unitClass)
|
||||
{
|
||||
case CLASS_PALADIN:
|
||||
case CLASS_DRUID:
|
||||
case CLASS_SHAMAN:
|
||||
case CLASS_WARLOCK:
|
||||
case CLASS_DEATH_KNIGHT:
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user