/// <summary>
 /// Effect must be canceled
 /// </summary>
 /// <param name="playerCanceled">true if player decided to cancel that effect by shift + rightclick</param>
 public void Cancel(bool playerCanceled)
 {
     lock (m_LockObject)
     {
         if (m_spellPulseAction != null)
         {
             m_spellPulseAction.Stop();
             m_spellPulseAction = null;
         }
         m_spellHandler.Caster.ConcentrationEffects.Remove(this);
     }
 }
		/// <summary>
		/// Starts the effect
		/// </summary>
		public void Start()
		{
			lock (m_LockObject)
			{
				if (m_spellPulseAction != null)
					m_spellPulseAction.Stop();
				m_spellPulseAction = new SpellPulseAction(m_spellHandler.Caster, this);
				m_spellPulseAction.Interval = m_spellHandler.Spell.Frequency;
				m_spellPulseAction.Start(m_spellHandler.Spell.Frequency);
				m_spellHandler.Caster.ConcentrationEffects.Add(this);
			}
		}
 /// <summary>
 /// Starts the effect
 /// </summary>
 public void Start()
 {
     lock (m_LockObject)
     {
         if (m_spellPulseAction != null)
         {
             m_spellPulseAction.Stop();
         }
         m_spellPulseAction          = new SpellPulseAction(m_spellHandler.Caster, this);
         m_spellPulseAction.Interval = m_spellHandler.Spell.Frequency;
         m_spellPulseAction.Start(m_spellHandler.Spell.Frequency);
         m_spellHandler.Caster.ConcentrationEffects.Add(this);
     }
 }
		/// <summary>
		/// Effect must be canceled
		/// </summary>
		/// <param name="playerCanceled">true if player decided to cancel that effect by shift + rightclick</param>
		public void Cancel(bool playerCanceled)
		{
			lock (m_LockObject)
			{
				if (m_spellPulseAction != null)
				{
					m_spellPulseAction.Stop();
					m_spellPulseAction = null;
				}
				m_spellHandler.Caster.ConcentrationEffects.Remove(this);
			}
		}