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:
Docker Build
2026-05-09 22:38:32 -04:00
parent 8abd40f217
commit f2952c905a
3 changed files with 77 additions and 3 deletions
+31
View File
@@ -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;
}