656cf2d07d
- PanelLearnSpellChain: record every non-chain passive as panel_spell_child; only revoke non-passive (Blood Presence, Death Coil, Death Grip, etc.). - RevokeUnwantedCascadeSpellsForPlayer: skip passive rewards on login sweep. - RevokeBlockedSpellsForPlayer: migrate legacy passive revoke rows to children; walk (parent, revoked) pairs from DB. - PruneSkillLineCascadeChildrenFromDb: only strip actives wrongly stored as children; never strip passives. - SpellInfoCorrections: set SPELL_ATTR0_PASSIVE on Forceful Deflection (49410) and Runic Focus (61455) so IsPassive() matches spellbook behavior. - PanelUnlearnTalentPurchase: mirror resetTalents (_removeTalentAurasAndSpells, _removeTalent, SendTalentsInfoData) so Beast Mastery loss triggers pet reset. - OnPlayerLogin: run legacy passive attach before scoped cascade sweep. - Add .paragon recalibrate GM command (RBAC modify): full panel reset + AE/TE reconciliation for selected player or self. Co-authored-by: Cursor <cursoragent@cursor.com>