namespace AcDream.Core.Spells; /// /// Per-spell static metadata loaded once at startup from /// docs/research/data/spells.csv via . /// One record per known spell id (3,956 entries in the retail dump). /// /// /// Used for: /// /// /// Buff / debuff bar labels (, /// , ). /// Stacking aggregation ( — only one /// enchantment per family-bucket is active; this is what /// EnchantmentMath uses to filter out superseded /// buffs in LocalPlayerState.GetMaxApprox). /// Spell tooltips (, /// , , /// ). /// Cast-bar audio + animation cues /// ( drives the chant). /// /// /// /// Fields not exposed (yet) from the 35-column source CSV: SortKey, /// Difficulty, Flags, Generation, IsFastWindup, IsIrresistible, /// IsOffensive, IsUntargetted, Speed, CasterEffect, TargetEffect, /// TargetMask, Type, plus 10 anonymous Unknown1..10. Add them on /// demand as panels grow. /// /// public sealed record SpellMetadata( uint SpellId, string Name, string School, uint Family, uint IconId, string SpellWords, float Duration, int ManaCost, bool IsDebuff, bool IsFellowship, string Description);