/// <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); }