public Mage(int NumberOfMages, int CritChance, int HitChance, int SpellPower, TargetDummy Target)
 {
     numberOfMages = NumberOfMages;
     critChance    = CritChance;
     hitChance     = HitChance;
     spellPower    = SpellPower;
     target        = Target;
     rand          = new Random();
 }
        static void Main(string[] args)
        {
            Stopwatch stopWatch = new Stopwatch();

            stopWatch.Start();

            Console.WriteLine("Starting Ignite Simulation");
            TargetDummy target   = new TargetDummy();
            Mage        mages    = new Mage(4, 35, 95, 0, target);
            int         tickSize = mages.TimeBetweenFireballs();

            Console.WriteLine("Time Between Fireballs: " + tickSize);
            long numberOfFireballsVolleys = 30000000;
            long maxTicks = numberOfFireballsVolleys * 300;

            for (long tick = 0; tick < maxTicks; tick += tickSize)
            {
                mages.CastFireBall(tick);
            }

            Random   temp     = new Random();
            FireBall fireball = new FireBall(temp, 35, 95, 0, 0);

            fireball.critStatus = false;
            Console.WriteLine("Single Fireball Dmg (non crit):  " + fireball.damage);
            List <double> report = target.ReportDamage();

            Console.WriteLine("Reports:");
            //Console.WriteLine("Number of spells non-crit: " + report[3]);
            //Console.WriteLine("Number of spells resisted: " + report[4]);
            //Console.WriteLine("Number of spells crit: " + report[5]);
            //Console.WriteLine("Number of total fireballs: " + report[6]);
            Console.WriteLine("Fireball damage taken / 500: " + report[0] / 500);
            Console.WriteLine("Ignite damage taken / 500: " + report[1] / 500);
            Console.WriteLine("Total damage taken / 500: " + report[2] / 500);

            stopWatch.Stop();
            Console.WriteLine("Total Program Timer:       " + stopWatch.ElapsedMilliseconds + " ms");
        }