Example #1
0
        public IEnumerable States()
        {
            List <Sprite> targets = (This.Game.CurrentLevel as FrostbyteLevel).allies;
            Random        rng     = new Random();

            while (master.Crystals == null || master.Crystals.Count == 0)
            {
                yield return(null);
            }
            master.currentCrystal = master.Crystals[0];

            int initialWaitDistance = 300;

            while (!master.camp(targets, initialWaitDistance, float.PositiveInfinity) && !master.AtArms)
            {
                foreach (Enemies.Crystal crystal in master.Crystals)
                {
                    master.currentCrystal.Rewind();
                    crystal.SetAnimation(EMPTY_CRYSTAL);
                }
                yield return(null);
            }
            master.setAtArms();
            This.Game.AudioManager.PlayBackgroundMusic("Music/CrystalBossBG");
            This.Game.AudioManager.BackgroundMusicVolume = 0.05f;

            while (true)
            {
                foreach (Object o in TeleportIn())
                {
                    if (master.currentCrystal.State == SpriteState.Dead)
                    {
                        break;
                    }
                    yield return(null);
                }

                while (!master.freeze(new TimeSpan(0, 0, 5)))
                {
                    if (master.currentCrystal.State == SpriteState.Dead)
                    {
                        break;
                    }
                    yield return(null);
                }

                foreach (Object o in TeleportOut())
                {
                    if (master.currentCrystal.State == SpriteState.Dead)
                    {
                        break;
                    }
                    yield return(null);
                }

                if (master.currentCrystal.State == SpriteState.Dead)
                {
                    master.Crystals.Remove(master.currentCrystal);
                    master.OuterCrystals.Remove(master.currentCrystal);
                }

                if (master.Crystals.Count == 0)
                {
                    break;
                }

                master.currentCrystal = master.Crystals.GetRandomElement();

                yield return(null);
            }

            master.Health = 0;
        }