void SpawnCollidingPlatform()
    {
        int RandomChanceSpawn = Random.Range(0, 100);

        if (RandomChanceSpawn > 80)
        {
            SpawnHere = SpawnTypes.Big;
        }
        else if (RandomChanceSpawn <= 80 && RandomChanceSpawn > 60)
        {
            SpawnHere = SpawnTypes.LowSmall;
        }
        else if (RandomChanceSpawn <= 60 && RandomChanceSpawn > 40)
        {
            SpawnHere = SpawnTypes.TwoSmall;
        }
        else if (RandomChanceSpawn <= 40 && RandomChanceSpawn > 20)
        {
            SpawnHere = SpawnTypes.TopSmall;
        }
        else if (RandomChanceSpawn <= 20)
        {
            SpawnHere = SpawnTypes.Big;
        }
        SpawnGo();
    }
        protected float GenericSpawnCondition(SpawnTypes genericSpawnType, NPCSpawnInfo spawnInfo)
        {
            float finalRate = 0f;

            switch (genericSpawnType)
            {
            case SpawnTypes.Surface:
                if (UsualSpawnConditions(spawnInfo) && spawnInfo.spawnTileY < Main.worldSurface)
                {
                    finalRate = ActualSpawnRate(.05f);
                }
                break;

            case SpawnTypes.Underground:
                if (UsualSpawnConditions(spawnInfo) && AboveUnderworldCondition(spawnInfo) &&
                    spawnInfo.spawnTileY > (Main.worldSurface - Main.worldSurface * .1f))
                {
                    finalRate = ActualSpawnRate(.075f);
                }
                break;

            case SpawnTypes.Everywhere:
                if (UsualSpawnConditions(spawnInfo))
                {
                    return(ActualSpawnRate(.02f));
                }
                break;
            }

            return(finalRate);
        }
Ejemplo n.º 3
0
        public void Spawn()
        {
            if (_initialSpawn)
            {
                for (var i = 0; i < InitialSpawnAmount; i++)
                {
                    SpawnEntity();
                }

                _initialSpawn = false;

                _lastSpawnTick = Game.TickCount;
                return;
            }

            if (Game.Blobs.Count(blob => SpawnTypes.Any(type => type == blob.GetType())) >= MaxSpawnAmount)
            {
                return;
            }

            if (Game.TickCount < _lastSpawnTick + SpawnTicksInterval)
            {
                return;
            }

            for (var i = 0; i < SpawnAmount; i++)
            {
                SpawnEntity();
            }

            _lastSpawnTick = Game.TickCount;
        }
Ejemplo n.º 4
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            m_NoPD             = reader.ReadBool();
            m_SpawnLevel       = reader.ReadInt();
            m_SpawnType        = (SpawnTypes)reader.ReadInt();
            m_MaxResourceLevel = reader.ReadInt();
        }
Ejemplo n.º 5
0
    void Spawn(int enemyNumber, Vector3 spawn, SpawnTypes mode, EnemyAttributes attributes)
    {
        switch (mode)
        {
        case SpawnTypes.DelayedIndianLine:
            _gameManager.StartCoroutine(SpawnDelayedSingleEnemy(spawn, 1, enemyNumber, attributes));
            break;

        case SpawnTypes.LineGroup:
            SpawnEnemyLineGroup(spawn, enemyNumber, attributes);
            break;
        }
    }
Ejemplo n.º 6
0
 public void ChangeEnemyLevel()
 {
     if (enemyLevel != EnemyLevels.Boss)
     {
         enemyLevel++;
     }
     else
     {
         //GameObject Enemy = (GameObject)Instantiate(Enemies[enemyLevel], gameObject.transform.position, Quaternion.identity);
         spawnType  = SpawnTypes.Once;
         totalEnemy = 1;
         disableSpawner(SpawnID);
     }
 }
Ejemplo n.º 7
0
    IEnumerator BeginSpawns()
    {
        while (_currentWave < _waves.Length)
        {
            WaveData wave = _waves[_currentWave];

            float totalTime = 0;

            foreach (EnemyWave subWave in wave.enemySubWaves)
            {
                totalTime += subWave.timeUntilNextSubWave;
            }

            Debug.Log(string.Format("INFO - Beggining wave {0} for {1} seconds", _currentWave + 1, totalTime));

            _gameManager.Input.SetWaveTimer(totalTime);

            foreach (EnemyWave subWave in wave.enemySubWaves)
            {
                EnemyWave.Type expectedType = subWave.enemyType;

                EnemyAttributes value;
                enemyTypesDict.TryGetValue(expectedType, out value);

                int        quantity  = subWave.quantity;
                SpawnTypes formation = subWave.formation;
                float      timeLimit = subWave.timeUntilNextSubWave;

                Debug.Log(string.Format("INFO - SubWave {0} type {1} in {2} formation for {3} seconds", quantity, expectedType, formation, timeLimit));

                Spawn(quantity, _spawnPointList[Random.Range(0, _spawnPointList.Count)], formation, value);
                yield return(new WaitForSeconds(timeLimit));
            }
            Wave++;
        }

        Debug.Log(string.Format("INFO - No more waves, but there are {0} enemies alive", _enemySystem.GetActiveNumber()));

        while (_enemySystem.GetActiveNumber() > 0)
        {
            Debug.Log(string.Format("INFO - {0} enemies alive", _enemySystem.GetActiveNumber()));
            yield return(new WaitForSeconds(2f));
        }

        Debug.Log("INFO - Victory");

        _gameManager.EndGameProcedure("Victory!", "Play again?");
    }
Ejemplo n.º 8
0
    private void SpawnItem(SpawnTypes spawnType)
    {
        int  randomItemIndex = UnityEngine.Random.Range(0, items.Length);
        int  iterations;
        Item itemToSpawn = spawnType == SpawnTypes.Item ? items[randomItemIndex] : weapon;

        iterations = itemToSpawn.itemType == Item.TypeOfItem.Chicken  ? 2 : 1;


        for (int i = 0; i < iterations; i++)
        {
            float   halfRectWidth  = rectTransform.rect.width / 2;
            float   halfRectHeight = rectTransform.rect.height / 2;
            Vector3 newPos         = new Vector3(UnityEngine.Random.Range(-halfRectWidth, halfRectWidth), UnityEngine.Random.Range(-halfRectHeight, halfRectHeight), 1);
            Vector3 finalPos       = transform.position + newPos;
            Instantiate(itemToSpawn.gameObject, finalPos, Quaternion.identity, transform);
        }
    }
Ejemplo n.º 9
0
    // Use this for initialization
    public void Initialize(bool forceClear, int i, int j)
    {
        mineActive = false;
        isCleared  = false;
        targeted   = false;
        flagged    = false;

        arrayRowPos = i;
        arrayColPos = j;

        //now uses the current difficulty to determine if the tile is a mine
        if (Random.value < MineChance())
        {
            isMine     = true;
            mineActive = true;
        }
        else
        {
            isMine = false;
        }

        if (forceClear)
        {
            isMine     = false;
            isCleared  = true;
            mineActive = false;
            bc.enabled = false;
        }

        int rand = Random.Range(0, 2);

        if (rand == 0)
        {
            type = SpawnTypes.Burster;
        }
        else if (rand == 1)
        {
            type = SpawnTypes.Consistant;
        }

        neighborMineCount = 0;
    }
Ejemplo n.º 10
0
    public void Initialize(bool forceClear, float mineChance, int i, int j)
    {
        mineActive = false;
        isCleared  = false;
        targeted   = false;
        flagged    = false;

        arrayRowPos = i;
        arrayColPos = j;

        if (Random.Range(1f, 100f) < mineChance)   //mineChance must be between >= 1f and <= 100f
        {
            isMine     = true;
            mineActive = true;
        }
        else
        {
            isMine = false;
        }

        if (forceClear)
        {
            isMine     = false;
            isCleared  = true;
            mineActive = false;
            bc.enabled = false;
        }

        int rand = Random.Range(0, 2);

        if (rand == 0)
        {
            type = SpawnTypes.Burster;
        }
        else if (rand == 1)
        {
            type = SpawnTypes.Consistant;
        }

        neighborMineCount = 0;
    }
Ejemplo n.º 11
0
        // Static spawn generation funciton.
        // Create your spawns here!
        public static ArrayList CreateSpawn(SpawnTypes type)
        {
            ArrayList temp = new ArrayList();

            switch (type)
            {
                // Big champs first.
                // To emulate the original big champs exactly, we need 16 levels of spawn.
                // This is because the original champs were actually 16 levels, one for each red skull.
                // The spawns have 4 "big" levels split into 16 sub levels with this distribution:
                // Level 1 : 5 levels
                // Level 2 : 4 levels
                // Level 3 : 4 levels
                // Level 4 : 3 Levels
                #region big champs
            case SpawnTypes.Abyss:
            {
                ///////// Abyss //////////////////////////////		   kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
                ///////////////////////////////////////////////////  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                for (int i = 1; i <= 5; ++i)                                    // Level " 1 "
                {
                    temp.Add(new ChampLevelData(40, 40, 10, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Mongbat", "Imp" }));
                }

                for (int i = 1; i <= 4; ++i)                                    //Level " 2 "
                {
                    temp.Add(new ChampLevelData(38, 38, 9, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Gargoyle", "Harpy" }));
                }

                for (int i = 1; i <= 4; ++i)                                    // Level " 3 "
                {
                    temp.Add(new ChampLevelData(25, 25, 6, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "FireGargoyle", "StoneGargoyle" }));
                }

                for (int i = 1; i <= 3; ++i)                                    // Level " 4 "
                {
                    temp.Add(new ChampLevelData(17, 17, 4, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Daemon", "Succubus" }));
                }

                //Champion!
                temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Semidar" }));
                break;
            }

            case SpawnTypes.Arachnid:
            {
                ///////// Arachnid //////////////////////////			kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
                ///////////////////////////////////////////////////  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                for (int i = 1; i <= 5; ++i)                                    // Level " 1"
                {
                    temp.Add(new ChampLevelData(40, 40, 10, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Scorpion", "GiantSpider" }));
                }

                for (int i = 1; i <= 4; ++i)                                    //Level " 2"
                {
                    temp.Add(new ChampLevelData(38, 38, 9, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "TerathanDrone", "TerathanWarrior" }));
                }

                for (int i = 1; i <= 4; ++i)                                    // Level " 3 "
                {
                    temp.Add(new ChampLevelData(25, 25, 6, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "DreadSpider", "TerathanMatriarch" }));
                }

                for (int i = 1; i <= 3; ++i)                                    // Level " 4 "
                {
                    temp.Add(new ChampLevelData(17, 17, 4, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "PoisonElemental", "TerathanAvenger" }));
                }

                //Champion!
                temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Mephitis" }));
                break;
            }

            case SpawnTypes.ColdBlood:
            {
                ////////// Cold Blood ///////////////////////		kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
                ///////////////////////////////////////////////////  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                for (int i = 1; i <= 5; ++i)                                    // Level " 1"
                {
                    temp.Add(new ChampLevelData(40, 40, 10, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Lizardman", "Snake" }));
                }

                for (int i = 1; i <= 4; ++i)                                    //Level " 2"
                {
                    temp.Add(new ChampLevelData(38, 38, 9, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "LavaLizard", "OphidianWarrior" }));
                }

                for (int i = 1; i <= 4; ++i)                                    // Level " 3 "
                {
                    temp.Add(new ChampLevelData(25, 25, 6, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Drake", "OphidianArchmage" }));
                }

                for (int i = 1; i <= 3; ++i)                                    // Level " 4 "
                {
                    temp.Add(new ChampLevelData(17, 17, 4, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Dragon", "OphidianKnight" }));
                }

                //Champion!
                temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Rikktor" }));
                break;
            }

            case SpawnTypes.ForestLord:
            {
                ///////// Forest Lord //////////////////////     kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
                ///////////////////////////////////////////////////  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                for (int i = 1; i <= 5; ++i)                                    // Level " 1"
                {
                    temp.Add(new ChampLevelData(40, 40, 10, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Pixie", "ShadowWisp" }));
                }

                for (int i = 1; i <= 4; ++i)                                    //Level " 2"
                {
                    temp.Add(new ChampLevelData(38, 38, 9, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Kirin", "Wisp" }));
                }

                for (int i = 1; i <= 4; ++i)                                    // Level " 3 "
                {
                    temp.Add(new ChampLevelData(25, 25, 6, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Centaur", "Unicorn" }));
                }

                for (int i = 1; i <= 3; ++i)                                    // Level " 4 "
                {
                    temp.Add(new ChampLevelData(17, 17, 4, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "EtherealWarrior", "SerpentineDragon" }));
                }

                //Champion!
                temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "LordOaks" }));
                break;
            }

            case SpawnTypes.FrozenHost:
            {
                ///////// Frozen Host /////////////////////       kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
                ///////////////////////////////////////////////////  -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                for (int i = 1; i <= 5; ++i)                                    // Level " 1"
                {
                    temp.Add(new ChampLevelData(40, 40, 10, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "FrostOoze", "FrostSpider" }));
                }

                for (int i = 1; i <= 4; ++i)                                    //Level " 2"
                {
                    temp.Add(new ChampLevelData(38, 38, 9, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "FrostTroll", "IceSerpent" }));
                }

                for (int i = 1; i <= 4; ++i)                                    // Level " 3 "
                {
                    temp.Add(new ChampLevelData(25, 25, 6, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "SnowElemental", "FrostNymph" }));
                }

                for (int i = 1; i <= 3; ++i)                                    // Level " 4 "
                {
                    temp.Add(new ChampLevelData(17, 17, 4, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "IceFiend", "WhiteWyrm" }));
                }

                //Champion!
                temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Azothu" }));
                break;
            }

            case SpawnTypes.UnholyTerror:
            {
                ///////// UnholyTerror ////////////////////    kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
                ///////////////////////////////////////////////////  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                for (int i = 1; i <= 5; ++i)                                    // Level "1"
                {
                    temp.Add(new ChampLevelData(40, 40, 10, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Bogle", "Ghoul", "Shade", "Spectre", "Wraith" }));
                }

                for (int i = 1; i <= 4; ++i)                                    //Level " 2"
                {
                    temp.Add(new ChampLevelData(38, 38, 9, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "BoneMagi", "Mummy", "SkeletalMage" }));
                }

                for (int i = 1; i <= 4; ++i)                                    // Level " 3 "
                {
                    temp.Add(new ChampLevelData(25, 25, 6, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "BoneKnight", "BoneMagiLord", "SkeletalKnight" }));
                }

                for (int i = 1; i <= 3; ++i)                                    // Level " 4 "
                {
                    temp.Add(new ChampLevelData(17, 17, 4, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "BoneKnightLord", "RottingCorpse" }));
                }

                //Champion!
                temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Neira" }));
                break;
            }

            case SpawnTypes.VerminHorde:
            {
                ///////// Vermin Horde ///////////////////    kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
                ///////////////////////////////////////////////////  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                for (int i = 1; i <= 5; ++i)                                    // Level " 1"
                {
                    temp.Add(new ChampLevelData(40, 40, 10, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "GiantRat", "Slime" }));
                }

                for (int i = 1; i <= 4; ++i)                                    //Level " 2"
                {
                    temp.Add(new ChampLevelData(38, 38, 9, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Ratman", "DireWolf" }));
                }

                for (int i = 1; i <= 4; ++i)                                    // Level " 3 "
                {
                    temp.Add(new ChampLevelData(25, 25, 6, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "HellHound", "RatmanMage" }));
                }

                for (int i = 1; i <= 3; ++i)                                    // Level " 4 "
                {
                    temp.Add(new ChampLevelData(17, 17, 4, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "RatmanArcher", "SilverSerpent" }));
                }

                //Champion!
                temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Barracoon" }));

                break;
            }

            /*
             * Increase range to 75
             * Reduce the number of mobs spawned at once by 1/2 when Pirates are involved.
             */
            case SpawnTypes.Pirate:
            {
                ///////// Pirate at sea //////////////////    kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
                ///////////////////////////////////////////////////  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                for (int i = 1; i <= 5; ++i)                                    // Level " 1"
                {
                    temp.Add(new ChampLevelData(40, 40, 10, 75, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.SpawnFar, new string[] { "WaterElemental", "SeaSerpent" }));
                }

                for (int i = 1; i <= 4; ++i)                                    //Level " 2"
                {
                    temp.Add(new ChampLevelData(38, 38, 9, 75, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.SpawnFar, new string[] { "SeaSerpent", "Kraken" }));
                }

                for (int i = 1; i <= 4; ++i)                                    // Level " 3 "
                {
                    temp.Add(new ChampLevelData(25, 25 / 2, 6, 75, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.FactoryMobile, new string[] { "PirateDeckHand", "PirateWench" }));
                }

                for (int i = 1; i <= 3; ++i)                                    // Level " 4 "
                {
                    temp.Add(new ChampLevelData(17, 17 / 2, 4, 75, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.FactoryMobile, new string[] { "PirateWench", "Pirate" }));
                }

                //Champion!
                temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.FactoryMobile, new string[] { "PirateChamp" }));

                break;
            }

            case SpawnTypes.Bob:
            {
                ///////// Bobs in Jhelom /////////
                // kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
                ///////////////////////////////////////////////////  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                for (int i = 1; i <= 5; ++i)                                    // Level " 1"
                {
                    temp.Add(new ChampLevelData(40, 40, 10, 75, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.FactoryMobile, new string[] { "Gypsy" }));
                }

                for (int i = 1; i <= 4; ++i)                                    //Level " 2"
                {
                    temp.Add(new ChampLevelData(38, 38, 9, 75, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.FactoryMobile, new string[] { "Brigand", "NightMare" }));
                }

                for (int i = 1; i <= 4; ++i)                                    // Level " 3 "
                {
                    temp.Add(new ChampLevelData(25, 25 / 2, 6, 75, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.FactoryMobile, new string[] { "Brigand", "EvilMageLord" }));
                }

                for (int i = 1; i <= 3; ++i)                                    // Level " 4 "
                {
                    temp.Add(new ChampLevelData(17, 17 / 2, 4, 75, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.FactoryMobile, new string[] { "GolemController" }));
                }

                //Champion!
                temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.FactoryMobile, new string[] { "TheOneBob" }));

                break;
            }

            case SpawnTypes.Vampire:
            {
                ///////// Vampires in the dead forset of Ilshenar /////////
                // kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
                ///////////////////////////////////////////////////  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                for (int i = 1; i <= 5; ++i)                                    // Level " 1"
                {
                    temp.Add(new ChampLevelData(40, 40, 10, 20, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "VampireBat" }));
                }

                for (int i = 1; i <= 4; ++i)                                    //Level " 2"
                {
                    temp.Add(new ChampLevelData(38, 38, 9, 20, TimeSpan.Zero, TimeSpan.FromMinutes(20), SpawnFlags.None, new string[] { "VampireBat", "WalkingDead" }));
                }

                for (int i = 1; i <= 4; ++i)                                    // Level " 3 "
                {
                    temp.Add(new ChampLevelData(25, 25 / 2, 6, 20, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "WalkingDead", "WalkingDead" }));
                }

                for (int i = 1; i <= 3; ++i)                                    // Level " 4 "
                {
                    temp.Add(new ChampLevelData(17, 17 / 2, 4, 20, TimeSpan.Zero, TimeSpan.FromMinutes(50), SpawnFlags.None, new string[] { "Vampire" }));
                }

                //Champion!
                temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(60), SpawnFlags.None, new string[] { "VladDracula" }));

                break;
            }

                #endregion

                // Now for the mini champs.
                // These are just 3 levels with the fourth spawning a single mob, like a  champ
                #region mini champs
            case SpawnTypes.Mini_Deceit:
            {
                ///////// Decei! ///////////////////////////////    kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
                ///////////////////////////////////////////////////  --------------------------------------------------------------------------------------------------------------------------------------------------------------
                temp.Add(new ChampLevelData(9, 5, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Skeleton" }));
                temp.Add(new ChampLevelData(15, 4, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(15), SpawnFlags.None, new string[] { "SkeletalKnight", "BoneKnight" }));
                temp.Add(new ChampLevelData(16, 2, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "SkeletalMage", "BoneMagi" }));
                temp.Add(new ChampLevelData(1, 1, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(20), SpawnFlags.None, new string[] { "BoneDemon", "SkeletalDragon" }));
                break;
            }

            case SpawnTypes.Mini_Destard:
            {
                ///////// Destard ////////////////////////////    kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
                ///////////////////////////////////////////////////  ----------------------------------------------------------------------------------------------------------------------------------------------------------------
                temp.Add(new ChampLevelData(9, 5, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Lizardman", "OphidianWarrior" }));
                temp.Add(new ChampLevelData(15, 4, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(15), SpawnFlags.None, new string[] { "Drake", "Wyvern" }));
                temp.Add(new ChampLevelData(16, 2, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Dragon", "OphidianKnight" }));
                temp.Add(new ChampLevelData(1, 1, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(20), SpawnFlags.None, new string[] { "AncientWyrm" }));
                break;
            }

            case SpawnTypes.Mini_Hythloth:
            {
                ///////// Hyloth ////////////////////////////      kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
                ///////////////////////////////////////////////////  --------------------------------------------------------------------------------------------------------------------------------------------------------------
                temp.Add(new ChampLevelData(9, 5, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Imp", "HellHound" }));
                temp.Add(new ChampLevelData(15, 4, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(15), SpawnFlags.None, new string[] { "Gargoyle", "ChaosDaemon" }));
                temp.Add(new ChampLevelData(16, 2, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Succubus", "Daemon" }));
                temp.Add(new ChampLevelData(1, 1, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(20), SpawnFlags.None, new string[] { "Balron" }));
                break;
            }

            case SpawnTypes.Mini_Ice:
            {
                ///////// Ice !  /////////////////////////////////      kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
                ///////////////////////////////////////////////////  ---------------------------------------------------------------------------------------------------------------------------------------------------------------
                temp.Add(new ChampLevelData(9, 5, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "FrostOoze", "FrostSpider" }));
                temp.Add(new ChampLevelData(15, 4, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(15), SpawnFlags.None, new string[] { "IceElemental", "FrostSpider" }));
                temp.Add(new ChampLevelData(16, 2, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "IceFiend", "FrostNymph" }));
                temp.Add(new ChampLevelData(1, 1, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(20), SpawnFlags.None, new string[] { "ArcticOgreLord" }));
                break;
            }

            case SpawnTypes.Mini_Wind:                                                  // Wind has a different expire delay for level 4
            {
                ///////// Wind ////////////////////////////////      kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
                ///////////////////////////////////////////////////  ---------------------------------------------------------------------------------------------------------------------------------------------------------------
                temp.Add(new ChampLevelData(9, 5, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "EvilMage" }));
                temp.Add(new ChampLevelData(15, 4, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(15), SpawnFlags.None, new string[] { "Lich", "EvilMageLord" }));
                temp.Add(new ChampLevelData(16, 2, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "LichLord", "CouncilMember" }));
                temp.Add(new ChampLevelData(1, 1, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "AncientLich" }));
                break;
            }

            case SpawnTypes.Mini_Wrong:
            {
                ///////// Wrong ///////////////////////////////      kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
                ///////////////////////////////////////////////////  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                temp.Add(new ChampLevelData(9, 5, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Zombie", "HeadlessOne", "Slime" }));
                temp.Add(new ChampLevelData(15, 4, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(15), SpawnFlags.None, new string[] { "GoreFiend", "FleshGolem" }));
                temp.Add(new ChampLevelData(16, 2, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "BloodElemental", "RottingCorpse" }));
                temp.Add(new ChampLevelData(1, 1, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "FleshRenderer" }));
                break;
            }
                #endregion

                // Angel Island prison system spawns
                // These guys take some of thir spawn level settings
                // from statics in CoreAI
                #region AI Level system
            case SpawnTypes.AI_Escape:
            {                            //															k														m  s  r
                temp.Add(new ChampLevelData(CoreAI.SpiritFirstWaveNumber, 5, 5, 18, TimeSpan.Zero, TimeSpan.FromMinutes(CoreAI.SpiritExpireDelay), SpawnFlags.None, new string[] { "Spirit" }));
                temp.Add(new ChampLevelData(CoreAI.SpiritSecondWaveNumber, 5, 5, 18, TimeSpan.Zero, TimeSpan.FromMinutes(CoreAI.SpiritExpireDelay), SpawnFlags.None, new string[] { "VengefulSpirit" }));
                temp.Add(new ChampLevelData(CoreAI.SpiritThirdWaveNumber, 5, 5, 18, TimeSpan.Zero, TimeSpan.FromMinutes(CoreAI.SpiritExpireDelay), SpawnFlags.None, new string[] { "Soul" }));
                temp.Add(new ChampLevelData(1, 1, 1, 18, TimeSpan.Zero, TimeSpan.FromMinutes(CoreAI.SpiritExpireDelay), SpawnFlags.None, new string[] { "AngelofJustice" }));
                break;
            }

            case SpawnTypes.AI_Guard:
            {                                   //														k  m s  r
                temp.Add(new ChampLevelData(5, 5, 5, 12, TimeSpan.Zero, TimeSpan.FromMinutes(CoreAI.GuardSpawnExpireDelay), SpawnFlags.None, new string[] { "AIPostGuard" }));
                temp.Add(new ChampLevelData(1, 1, 1, 12, TimeSpan.Zero, TimeSpan.FromMinutes(CoreAI.GuardSpawnExpireDelay), SpawnFlags.None, new string[] { "AIGuardCaptain" }));
                break;
            }

                #endregion

                #region Kin

            //Kin city consists purely of golem controllers.
            case SpawnTypes.KinCity:
            {
                temp.Add(new ChampLevelData(40, 40, 5, 40, TimeSpan.Zero, TimeSpan.FromHours(1), SpawnFlags.None, new string[] { "GolemController" }));
                temp.Add(new ChampLevelData(40, 40, 5, 40, TimeSpan.Zero, TimeSpan.FromHours(1), SpawnFlags.None, new string[] { "GolemController" }));
                break;
            }

                #endregion

                #region plamsa's test stuff!
            case SpawnTypes.Test:
            {
                ///////// Test! /////////////////////////////////    kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
                ///////////////////////////////////////////////////  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                for (int i = 0; i < 36; ++i)
                {
                    temp.Add(new ChampLevelData(10, 10, 5, 5, TimeSpan.FromSeconds(1), TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "slime", "rat" }));
                }

                //Champion!
                temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Barracoon", "Semidar", "Rikktor", "Neira", "LordOaks", "Mephitis" }));
                break;
            }

            case SpawnTypes.Test2:
            {
                ///////// Test! /////////////////////////////////    kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
                ///////////////////////////////////////////////////  --------------------------------------------------------------------------------------------------------------------------------------------------------------------
                temp.Add(new ChampLevelData(5, 3, 1, 1, TimeSpan.FromSeconds(5), TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Dragon", "WhiteWyrm" }));
                temp.Add(new ChampLevelData(300, 150, 1, 15, TimeSpan.FromSeconds(1), TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "GiantRat", "Slime" }));
                temp.Add(new ChampLevelData(100, 30, 5, 12, TimeSpan.FromSeconds(5), TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Orc", "OrcishMage" }));
                temp.Add(new ChampLevelData(4, 3, 1, 5, TimeSpan.FromSeconds(12), TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "GolemController" }));

                //Champion!
                temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Barracoon", "Semidar", "Rikktor", "Neira", "LordOaks", "Mephitis" }));
                break;
            }
            }
            #endregion

            return(temp);
        }
Ejemplo n.º 12
0
		// Static spawn generation funciton.
		// Create your spawns here!
		public static ArrayList CreateSpawn(SpawnTypes type)
		{
			ArrayList temp = new ArrayList();
			switch (type)
			{
				// Big champs first.
				// To emulate the original big champs exactly, we need 16 levels of spawn.
				// This is because the original champs were actually 16 levels, one for each red skull.
				// The spawns have 4 "big" levels split into 16 sub levels with this distribution:
				// Level 1 : 5 levels
				// Level 2 : 4 levels
				// Level 3 : 4 levels
				// Level 4 : 3 Levels					
				#region big champs
				case SpawnTypes.Abyss:
					{
						///////// Abyss //////////////////////////////		   kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
						///////////////////////////////////////////////////  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------					
						for (int i = 1; i <= 5; ++i)	// Level " 1 "
							temp.Add(new ChampLevelData(40, 40, 10, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Mongbat", "Imp" }));

						for (int i = 1; i <= 4; ++i)	//Level " 2 "
							temp.Add(new ChampLevelData(38, 38, 9, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Gargoyle", "Harpy" }));

						for (int i = 1; i <= 4; ++i)	// Level " 3 "
							temp.Add(new ChampLevelData(25, 25, 6, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "FireGargoyle", "StoneGargoyle" }));

						for (int i = 1; i <= 3; ++i)	// Level " 4 "
							temp.Add(new ChampLevelData(17, 17, 4, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Daemon", "Succubus" }));

						//Champion!
						temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Semidar" }));
						break;
					}
				case SpawnTypes.Arachnid:
					{
						///////// Arachnid //////////////////////////			kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
						///////////////////////////////////////////////////  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
						for (int i = 1; i <= 5; ++i)	// Level " 1" 
							temp.Add(new ChampLevelData(40, 40, 10, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Scorpion", "GiantSpider" }));

						for (int i = 1; i <= 4; ++i)	//Level " 2" 
							temp.Add(new ChampLevelData(38, 38, 9, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "TerathanDrone", "TerathanWarrior" }));

						for (int i = 1; i <= 4; ++i)	// Level " 3 "
							temp.Add(new ChampLevelData(25, 25, 6, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "DreadSpider", "TerathanMatriarch" }));

						for (int i = 1; i <= 3; ++i)	// Level " 4 "
							temp.Add(new ChampLevelData(17, 17, 4, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "PoisonElemental", "TerathanAvenger" }));

						//Champion!
						temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Mephitis" }));
						break;
					}
				case SpawnTypes.ColdBlood:
					{
						////////// Cold Blood ///////////////////////		kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
						///////////////////////////////////////////////////  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
						for (int i = 1; i <= 5; ++i)	// Level " 1" 
							temp.Add(new ChampLevelData(40, 40, 10, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Lizardman", "Snake" }));

						for (int i = 1; i <= 4; ++i)	//Level " 2" 
							temp.Add(new ChampLevelData(38, 38, 9, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "LavaLizard", "OphidianWarrior" }));

						for (int i = 1; i <= 4; ++i)	// Level " 3 "
							temp.Add(new ChampLevelData(25, 25, 6, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Drake", "OphidianArchmage" }));

						for (int i = 1; i <= 3; ++i)	// Level " 4 "
							temp.Add(new ChampLevelData(17, 17, 4, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Dragon", "OphidianKnight" }));

						//Champion!
						temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Rikktor" }));
						break;
					}
				case SpawnTypes.ForestLord:
					{
						///////// Forest Lord //////////////////////     kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
						///////////////////////////////////////////////////  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
						for (int i = 1; i <= 5; ++i)	// Level " 1" 
							temp.Add(new ChampLevelData(40, 40, 10, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Pixie", "ShadowWisp" }));

						for (int i = 1; i <= 4; ++i)	//Level " 2" 
							temp.Add(new ChampLevelData(38, 38, 9, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Kirin", "Wisp" }));

						for (int i = 1; i <= 4; ++i)	// Level " 3 "
							temp.Add(new ChampLevelData(25, 25, 6, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Centaur", "Unicorn" }));

						for (int i = 1; i <= 3; ++i)	// Level " 4 "
							temp.Add(new ChampLevelData(17, 17, 4, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "EtherealWarrior", "SerpentineDragon" }));

						//Champion!
						temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "LordOaks" }));
						break;
					}
				case SpawnTypes.FrozenHost:
					{
						///////// Frozen Host /////////////////////       kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
						///////////////////////////////////////////////////  -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
						for (int i = 1; i <= 5; ++i)	// Level " 1" 
							temp.Add(new ChampLevelData(40, 40, 10, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "FrostOoze", "FrostSpider" }));

						for (int i = 1; i <= 4; ++i)	//Level " 2" 
							temp.Add(new ChampLevelData(38, 38, 9, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "FrostTroll", "IceSerpent" }));

						for (int i = 1; i <= 4; ++i)	// Level " 3 "
							temp.Add(new ChampLevelData(25, 25, 6, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "SnowElemental", "FrostNymph" }));

						for (int i = 1; i <= 3; ++i)	// Level " 4 "
							temp.Add(new ChampLevelData(17, 17, 4, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "IceFiend", "WhiteWyrm" }));

						//Champion!
						temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Azothu" }));
						break;
					}
				case SpawnTypes.UnholyTerror:
					{
						///////// UnholyTerror ////////////////////    kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
						///////////////////////////////////////////////////  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
						for (int i = 1; i <= 5; ++i)	// Level "1" 
							temp.Add(new ChampLevelData(40, 40, 10, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Bogle", "Ghoul", "Shade", "Spectre", "Wraith" }));

						for (int i = 1; i <= 4; ++i)	//Level " 2" 
							temp.Add(new ChampLevelData(38, 38, 9, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "BoneMagi", "Mummy", "SkeletalMage" }));

						for (int i = 1; i <= 4; ++i)	// Level " 3 "
							temp.Add(new ChampLevelData(25, 25, 6, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "BoneKnight", "BoneMagiLord", "SkeletalKnight" }));

						for (int i = 1; i <= 3; ++i)	// Level " 4 "
							temp.Add(new ChampLevelData(17, 17, 4, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "BoneKnightLord", "RottingCorpse" }));

						//Champion!
						temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Neira" }));
						break;
					}
				case SpawnTypes.VerminHorde:
					{
						///////// Vermin Horde ///////////////////    kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
						///////////////////////////////////////////////////  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
						for (int i = 1; i <= 5; ++i)	// Level " 1" 
							temp.Add(new ChampLevelData(40, 40, 10, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "GiantRat", "Slime" }));

						for (int i = 1; i <= 4; ++i)	//Level " 2" 
							temp.Add(new ChampLevelData(38, 38, 9, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Ratman", "DireWolf" }));

						for (int i = 1; i <= 4; ++i)	// Level " 3 "
							temp.Add(new ChampLevelData(25, 25, 6, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "HellHound", "RatmanMage" }));

						for (int i = 1; i <= 3; ++i)	// Level " 4 "
							temp.Add(new ChampLevelData(17, 17, 4, 24, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "RatmanArcher", "SilverSerpent" }));

						//Champion!
						temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Barracoon" }));

						break;
					}

				/*
				 * Increase range to 75
				 * Reduce the number of mobs spawned at once by 1/2 when Pirates are involved.
				 */
				case SpawnTypes.Pirate:
					{
						///////// Pirate at sea //////////////////    kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
						///////////////////////////////////////////////////  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
						for (int i = 1; i <= 5; ++i)	// Level " 1" 
							temp.Add(new ChampLevelData(40, 40, 10, 75, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.SpawnFar, new string[] { "WaterElemental", "SeaSerpent" }));

						for (int i = 1; i <= 4; ++i)	//Level " 2" 
							temp.Add(new ChampLevelData(38, 38, 9, 75, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.SpawnFar, new string[] { "SeaSerpent", "Kraken" }));

						for (int i = 1; i <= 4; ++i)	// Level " 3 "
							temp.Add(new ChampLevelData(25, 25 / 2, 6, 75, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.FactoryMobile, new string[] { "PirateDeckHand", "PirateWench" }));

						for (int i = 1; i <= 3; ++i)	// Level " 4 "
							temp.Add(new ChampLevelData(17, 17 / 2, 4, 75, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.FactoryMobile, new string[] { "PirateWench", "Pirate" }));

						//Champion!
						temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.FactoryMobile, new string[] { "PirateChamp" }));

						break;
					}

				case SpawnTypes.Bob:
					{
						///////// Bobs in Jhelom /////////
						// kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
						///////////////////////////////////////////////////  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
						for (int i = 1; i <= 5; ++i)	// Level " 1" 
							temp.Add(new ChampLevelData(40, 40, 10, 75, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.FactoryMobile, new string[] { "Gypsy" }));

						for (int i = 1; i <= 4; ++i)	//Level " 2" 
							temp.Add(new ChampLevelData(38, 38, 9, 75, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.FactoryMobile, new string[] { "Brigand", "NightMare" }));

						for (int i = 1; i <= 4; ++i)	// Level " 3 "
							temp.Add(new ChampLevelData(25, 25 / 2, 6, 75, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.FactoryMobile, new string[] { "Brigand", "EvilMageLord" }));

						for (int i = 1; i <= 3; ++i)	// Level " 4 "
							temp.Add(new ChampLevelData(17, 17 / 2, 4, 75, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.FactoryMobile, new string[] { "GolemController" }));

						//Champion!
						temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.FactoryMobile, new string[] { "TheOneBob" }));

						break;
					}

				case SpawnTypes.Vampire:
					{
						///////// Vampires in the dead forset of Ilshenar /////////
						// kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
						///////////////////////////////////////////////////  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
						for (int i = 1; i <= 5; ++i)	// Level " 1" 
							temp.Add(new ChampLevelData(40, 40, 10, 20, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "VampireBat" }));

						for (int i = 1; i <= 4; ++i)	//Level " 2" 
							temp.Add(new ChampLevelData(38, 38, 9, 20, TimeSpan.Zero, TimeSpan.FromMinutes(20), SpawnFlags.None, new string[] { "VampireBat", "WalkingDead" }));

						for (int i = 1; i <= 4; ++i)	// Level " 3 "
							temp.Add(new ChampLevelData(25, 25 / 2, 6, 20, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "WalkingDead", "WalkingDead" }));

						for (int i = 1; i <= 3; ++i)	// Level " 4 "
							temp.Add(new ChampLevelData(17, 17 / 2, 4, 20, TimeSpan.Zero, TimeSpan.FromMinutes(50), SpawnFlags.None, new string[] { "Vampire" }));

						//Champion!
						temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(60), SpawnFlags.None, new string[] { "VladDracula" }));

						break;
					}

				#endregion

				// Now for the mini champs.
				// These are just 3 levels with the fourth spawning a single mob, like a  champ
				#region mini champs
				case SpawnTypes.Mini_Deceit:
					{
						///////// Decei! ///////////////////////////////    kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
						///////////////////////////////////////////////////  --------------------------------------------------------------------------------------------------------------------------------------------------------------
						temp.Add(new ChampLevelData(9, 5, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Skeleton" }));
						temp.Add(new ChampLevelData(15, 4, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(15), SpawnFlags.None, new string[] { "SkeletalKnight", "BoneKnight" }));
						temp.Add(new ChampLevelData(16, 2, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "SkeletalMage", "BoneMagi" }));
						temp.Add(new ChampLevelData(1, 1, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(20), SpawnFlags.None, new string[] { "BoneDemon", "SkeletalDragon" }));
						break;
					}
				case SpawnTypes.Mini_Destard:
					{
						///////// Destard ////////////////////////////    kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
						///////////////////////////////////////////////////  ----------------------------------------------------------------------------------------------------------------------------------------------------------------
						temp.Add(new ChampLevelData(9, 5, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Lizardman", "OphidianWarrior" }));
						temp.Add(new ChampLevelData(15, 4, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(15), SpawnFlags.None, new string[] { "Drake", "Wyvern" }));
						temp.Add(new ChampLevelData(16, 2, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Dragon", "OphidianKnight" }));
						temp.Add(new ChampLevelData(1, 1, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(20), SpawnFlags.None, new string[] { "AncientWyrm" }));
						break;
					}
				case SpawnTypes.Mini_Hythloth:
					{
						///////// Hyloth ////////////////////////////      kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
						///////////////////////////////////////////////////  --------------------------------------------------------------------------------------------------------------------------------------------------------------
						temp.Add(new ChampLevelData(9, 5, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Imp", "HellHound" }));
						temp.Add(new ChampLevelData(15, 4, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(15), SpawnFlags.None, new string[] { "Gargoyle", "ChaosDaemon" }));
						temp.Add(new ChampLevelData(16, 2, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Succubus", "Daemon" }));
						temp.Add(new ChampLevelData(1, 1, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(20), SpawnFlags.None, new string[] { "Balron" }));
						break;
					}
				case SpawnTypes.Mini_Ice:
					{
						///////// Ice !  /////////////////////////////////      kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
						///////////////////////////////////////////////////  ---------------------------------------------------------------------------------------------------------------------------------------------------------------
						temp.Add(new ChampLevelData(9, 5, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "FrostOoze", "FrostSpider" }));
						temp.Add(new ChampLevelData(15, 4, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(15), SpawnFlags.None, new string[] { "IceElemental", "FrostSpider" }));
						temp.Add(new ChampLevelData(16, 2, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "IceFiend", "FrostNymph" }));
						temp.Add(new ChampLevelData(1, 1, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(20), SpawnFlags.None, new string[] { "ArcticOgreLord" }));
						break;
					}
				case SpawnTypes.Mini_Wind:				// Wind has a different expire delay for level 4
					{
						///////// Wind ////////////////////////////////      kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
						///////////////////////////////////////////////////  ---------------------------------------------------------------------------------------------------------------------------------------------------------------
						temp.Add(new ChampLevelData(9, 5, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "EvilMage" }));
						temp.Add(new ChampLevelData(15, 4, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(15), SpawnFlags.None, new string[] { "Lich", "EvilMageLord" }));
						temp.Add(new ChampLevelData(16, 2, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "LichLord", "CouncilMember" }));
						temp.Add(new ChampLevelData(1, 1, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "AncientLich" }));
						break;
					}
				case SpawnTypes.Mini_Wrong:
					{
						///////// Wrong ///////////////////////////////      kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
						///////////////////////////////////////////////////  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
						temp.Add(new ChampLevelData(9, 5, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(10), SpawnFlags.None, new string[] { "Zombie", "HeadlessOne", "Slime" }));
						temp.Add(new ChampLevelData(15, 4, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(15), SpawnFlags.None, new string[] { "GoreFiend", "FleshGolem" }));
						temp.Add(new ChampLevelData(16, 2, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "BloodElemental", "RottingCorpse" }));
						temp.Add(new ChampLevelData(1, 1, 1, 8, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "FleshRenderer" }));
						break;
					}
				#endregion

				// Angel Island prison system spawns 			
				// These guys take some of thir spawn level settings
				// from statics in CoreAI
				#region AI Level system
				case SpawnTypes.AI_Escape:
					{//															k														m  s  r
						temp.Add(new ChampLevelData(CoreAI.SpiritFirstWaveNumber, 5, 5, 18, TimeSpan.Zero, TimeSpan.FromMinutes(CoreAI.SpiritExpireDelay), SpawnFlags.None, new string[] { "Spirit" }));
						temp.Add(new ChampLevelData(CoreAI.SpiritSecondWaveNumber, 5, 5, 18, TimeSpan.Zero, TimeSpan.FromMinutes(CoreAI.SpiritExpireDelay), SpawnFlags.None, new string[] { "VengefulSpirit" }));
						temp.Add(new ChampLevelData(CoreAI.SpiritThirdWaveNumber, 5, 5, 18, TimeSpan.Zero, TimeSpan.FromMinutes(CoreAI.SpiritExpireDelay), SpawnFlags.None, new string[] { "Soul" }));
						temp.Add(new ChampLevelData(1, 1, 1, 18, TimeSpan.Zero, TimeSpan.FromMinutes(CoreAI.SpiritExpireDelay), SpawnFlags.None, new string[] { "AngelofJustice" }));
						break;
					}
				case SpawnTypes.AI_Guard:
					{	//														k  m s  r
						temp.Add(new ChampLevelData(5, 5, 5, 12, TimeSpan.Zero, TimeSpan.FromMinutes(CoreAI.GuardSpawnExpireDelay), SpawnFlags.None, new string[] { "AIPostGuard" }));
						temp.Add(new ChampLevelData(1, 1, 1, 12, TimeSpan.Zero, TimeSpan.FromMinutes(CoreAI.GuardSpawnExpireDelay), SpawnFlags.None, new string[] { "AIGuardCaptain" }));
						break;
					}

				#endregion

				#region Kin

				//Kin city consists purely of golem controllers.  
				case SpawnTypes.KinCity:
					{
						temp.Add(new ChampLevelData(40, 40, 5, 40, TimeSpan.Zero, TimeSpan.FromHours(1), SpawnFlags.None, new string[] { "GolemController" }));
						temp.Add(new ChampLevelData(40, 40, 5, 40, TimeSpan.Zero, TimeSpan.FromHours(1), SpawnFlags.None, new string[] { "GolemController" }));
						break;
					}

				#endregion

				#region plamsa's test stuff!
				case SpawnTypes.Test:
					{
						///////// Test! /////////////////////////////////    kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
						///////////////////////////////////////////////////  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
						for (int i = 0; i < 36; ++i)
							temp.Add(new ChampLevelData(10, 10, 5, 5, TimeSpan.FromSeconds(1), TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "slime", "rat" }));

						//Champion!
						temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Barracoon", "Semidar", "Rikktor", "Neira", "LordOaks", "Mephitis" }));
						break;
					}
				case SpawnTypes.Test2:
					{
						///////// Test! /////////////////////////////////    kills, Mobs, Spawn, Range, Spawn Delay, Level Expire Delay, Monster Array
						///////////////////////////////////////////////////  --------------------------------------------------------------------------------------------------------------------------------------------------------------------
						temp.Add(new ChampLevelData(5, 3, 1, 1, TimeSpan.FromSeconds(5), TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Dragon", "WhiteWyrm" }));
						temp.Add(new ChampLevelData(300, 150, 1, 15, TimeSpan.FromSeconds(1), TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "GiantRat", "Slime" }));
						temp.Add(new ChampLevelData(100, 30, 5, 12, TimeSpan.FromSeconds(5), TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Orc", "OrcishMage" }));
						temp.Add(new ChampLevelData(4, 3, 1, 5, TimeSpan.FromSeconds(12), TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "GolemController" }));

						//Champion!
						temp.Add(new ChampLevelData(1, 1, 1, 1, TimeSpan.Zero, TimeSpan.FromMinutes(40), SpawnFlags.None, new string[] { "Barracoon", "Semidar", "Rikktor", "Neira", "LordOaks", "Mephitis" }));
						break;
					}
			}
				#endregion

			return temp;
		}