#region References
using Server.Spells;
using Server.Spells.Necromancy;
#endregion

namespace Server.Mobiles
{
	public class NecroAI : MageAI
	{
		public override SkillName CastSkill { get { return SkillName.Necromancy; } }
		public override bool UsesMagery { get { return false; } }

		public NecroAI(BaseCreature m)
			: base(m)
		{ }

		public override Spell GetRandomDamageSpell()
		{
			var mana = m_Mobile.Mana;
			var select = 1;

			if (mana >= 29)
				select = 4;
			else if (mana >= 23)
				select = 3;
			else if (mana >= 17)
				select = 2;

			switch (Utility.Random(select))
			{
				case 0:
					return new PainSpikeSpell(m_Mobile, null);
				case 1:
					return new PoisonStrikeSpell(m_Mobile, null);
				case 2:
					return new WitherSpell(m_Mobile, null);
				case 3:
					return new StrangleSpell(m_Mobile, null);
			}

			return null;
		}

        public override Spell GetRandomSummonSpell()
        {
            if (!m_Mobile.Controlled && !m_Mobile.Summoned && m_Mobile.Mana >= 23)
            {
                return new AnimateDeadSpell(m_Mobile, null);
            }

            return null;
        }

		public override Spell GetRandomCurseSpell()
		{
			var mana = m_Mobile.Mana;
			var select = 1;

			if (mana >= 17)
				select = 5;
			else if (mana >= 13)
				select = 4;
			else if (mana >= 11)
				select = 3;

			switch (Utility.Random(select))
			{
				case 0:
					return new CurseWeaponSpell(m_Mobile, null);
				case 1:
					Spell spell;

					if (NecroMageAI.CheckCastCorpseSkin(m_Mobile))
						spell = new CorpseSkinSpell(m_Mobile, null);
					else
						spell = new CurseWeaponSpell(m_Mobile, null);

					return spell;
				case 2:
					return new EvilOmenSpell(m_Mobile, null);
				case 3:
					return new BloodOathSpell(m_Mobile, null);
				case 4:
					return new MindRotSpell(m_Mobile, null);
			}

			return null;
		}

        public override Spell GetCureSpell()
        {
            return null;
        }
		
		public override Spell GetRandomBuffSpell()
		{
			return new CurseWeaponSpell(m_Mobile, null);
		}

		public override Spell GetHealSpell()
		{
			m_Mobile.UseSkill(SkillName.SpiritSpeak);

			return null;
		}
	}
}