private IEnumerable <Spell> InitializeSpells()
        {
            var fireball = new CombatSpell
            {
                Damage      = 40,
                DamageType  = DamageType.Fire,
                MagickaCost = 133,
            };

            var invisibility = new SupportSpell
            {
                Description = "Makes caster invisible",
                MagickaCost = 334,
            };

            var silentStep = new SupportSpell
            {
                Description = "Makes caster's moves silent",
                MagickaCost = 144,
            };

            var detectLife = new SupportSpell
            {
                Description = "Detects living creatures",
                MagickaCost = 100,
            };

            var healing = new SupportSpell
            {
                Description = "Heals caster",
                MagickaCost = 12,
            };

            var manaSyphon = new SupportSpell
            {
                Description = "Converts health to mana",
                MagickaCost = -25,
            };

            // non symetric relationship
            invisibility.SynergyWith = new[] { silentStep, detectLife };
            silentStep.SynergyWith   = new[] { invisibility };

            healing.SynergyWith    = new[] { manaSyphon };
            manaSyphon.SynergyWith = new[] { healing };

            return(new Spell[] { fireball, invisibility, silentStep, detectLife, healing, manaSyphon });
        }
        private IEnumerable<Spell> InitializeSpells()
        {
            var fireball = new CombatSpell
            {
                Damage = 40,
                DamageType = DamageType.Fire,
                MagickaCost = 133,
            };

            var invisibility = new SupportSpell
            {
                Description = "Makes caster invisible",
                MagickaCost = 334,
            };

            var silentStep = new SupportSpell
            {
                Description = "Makes caster's moves silent",
                MagickaCost = 144,
            };

            var detectLife = new SupportSpell
            {
                Description = "Detects living creatures",
                MagickaCost = 100,
            };

            var healing = new SupportSpell
            {
                Description = "Heals caster",
                MagickaCost = 12,
            };

            var manaSyphon = new SupportSpell
            {
                Description = "Converts health to mana",
                MagickaCost = -25,
            };

            // non symetric relationship
            invisibility.SynergyWith = new[] { silentStep, detectLife };
            silentStep.SynergyWith = new[] { invisibility };

            healing.SynergyWith = new[] { manaSyphon };
            manaSyphon.SynergyWith = new[] { healing };

            return new Spell[] { fireball, invisibility, silentStep, detectLife, healing, manaSyphon };
        }