예제 #1
0
        /// <summary>
        /// Replaces or (if newSpell == null) removes oldSpell.
        /// </summary>
        public override bool Replace(Spell oldSpell, Spell newSpell)
        {
            var hasOldSpell = oldSpell != null && m_byId.Remove(oldSpell.SpellId);

            if (hasOldSpell)
            {
                OnRemove(oldSpell);
                if (newSpell == null)
                {
                    if (m_sendPackets)
                    {
                        SpellHandler.SendSpellRemoved(OwnerChar, oldSpell.Id);
                    }
                    return(true);
                }
            }

            if (newSpell != null)
            {
                if (m_sendPackets && hasOldSpell)
                {
                    SpellHandler.SendSpellSuperceded(OwnerChar.Client, oldSpell.Id, newSpell.Id);
                }

                AddSpell(newSpell, !hasOldSpell);
            }
            return(hasOldSpell);
        }