using System;

namespace RPG_Spele
{
    public class Magija
    {
        public string Nosaukums { get; set; }
        public int Damage { get; set; }
        public int Radius { get; set; }
        public int ManaCost { get; set; }
        public int Cooldown { get; set; }

        public Magija(string nosaukums, int damage, int radius, int manaCost, int cooldown)
        {
            Nosaukums = nosaukums;
            Damage = damage;
            Radius = radius;
            ManaCost = manaCost;
            Cooldown = cooldown;
        }
    }

    public class Speletajs
    {
        public string Vards { get; set; }
        public int HP { get; set; }
        public int DEF { get; set; }
        public int ATKSPD { get; set; }
        public int Mana { get; set; }
        public int ManaRecovery { get; set; }

        public Speletajs(string vards, int hp, int def, int atkspd, int mana, int manaRec)
        {
            Vards = vards;
            HP = hp;
            DEF = def;
            ATKSPD = atkspd;
            Mana = mana;
            ManaRecovery = manaRec;
        }
    }

    class Program
    {
        public static int CalculateDamage(Speletajs uzbrucejs, Speletajs merkis, Magija magijasTips)
        {
            int dmg = (int)(magijasTips.Damage * ((double)uzbrucejs.ATKSPD / merkis.DEF));

            if (dmg < 1)
                dmg = 1;
            return dmg;
        }

        private static void IzmantoMagiju(Speletajs uzbrucejs, Speletajs merkis, Magija magijasTips)
        {
            if (uzbrucejs.Mana < magijasTips.ManaCost)
            {
                Console.WriteLine("Nepietiek mana!");
                return;
            }

            int damage = CalculateDamage(uzbrucejs, merkis, magijasTips);
            uzbrucejs.Mana -= magijasTips.ManaCost;
            merkis.HP -= damage;
            if (merkis.HP < 0)
                merkis.HP = 0;
            
            Console.WriteLine($"{uzbrucejs.Vards} izmanto {magijasTips.Nosaukums} uz {merkis.Vards}!");
            Console.WriteLine($"{merkis.Vards} saņem {damage} damage! Atlikušais HP: {merkis.HP}");
            Console.WriteLine($"{uzbrucejs.Vards} atlikušā mana: {uzbrucejs.Mana}");
            Console.WriteLine($" ");

            SpecialEffect(uzbrucejs, merkis, magijasTips);

        }

        public static void SpecialEffect(Speletajs uzbrucejs, Speletajs merkis, Magija magijasTips)
        {
            // pagaidam nekas
        }

        public static void Main(string[] args)
        {
            Speletajs speletajs1 = new Speletajs("Burvis Lauva", 50, 20, 10, 100, 24);
            Speletajs speletajs2 = new Speletajs("Fantastiskais Valis", 50, 70, 5, 100, 20);

            Magija magija1 = new Magija("Udens", 20, 50, 20, 10);
            Magija magija2 = new Magija("Uguns", 40, 50, 30, 30);

            Console.WriteLine("Cīņa starp " + speletajs1.Vards + " un " + speletajs2.Vards + " sākas!");

            while (speletajs1.HP > 0 && speletajs2.HP > 0)
            {
                if (speletajs1.Mana >= magija1.ManaCost)
                    IzmantoMagiju(speletajs1, speletajs2, magija1);
                if (speletajs1.Mana >= magija2.ManaCost)
                    IzmantoMagiju(speletajs1, speletajs2, magija2);

                if (speletajs2.HP <= 0 || (speletajs1.Mana < magija1.ManaCost && speletajs1.Mana < magija2.ManaCost))
                {
                    Console.WriteLine(speletajs2.Vards + " ir sakauts! " + speletajs1.Vards + " uzvar!");
                    break;
                }

                if (speletajs2.Mana >= magija1.ManaCost)
                    IzmantoMagiju(speletajs2, speletajs1, magija1);
                if (speletajs2.Mana >= magija2.ManaCost)
                    IzmantoMagiju(speletajs2, speletajs1, magija2);

                if (speletajs1.HP <= 0 || (speletajs2.Mana < magija1.ManaCost && speletajs2.Mana < magija2.ManaCost))
                {
                    Console.WriteLine(speletajs1.Vards + " ir sakauts! " + speletajs2.Vards + " uzvar!");
                    break;
                }

                speletajs1.Mana += speletajs1.ManaRecovery;
                speletajs2.Mana += speletajs2.ManaRecovery;
                Console.WriteLine("Mana atjaunota!");
                Console.WriteLine();
            }
            Console.WriteLine();
            Console.WriteLine("Cīņa beigusies!");
        }
    }
}