Exemplo n.º 1
0
        private void SpawnZakum(int dwBodyID, int dwArmID)
        {
            Mobs.CreateMob(dwBodyID, null, SpawnPoint.X, SpawnPoint.Y, 70,
                           0xFC, 0, 0, MobType.ParentMob, null);


            for (var i = 0; i < 8; i++)
            {
                Mobs.CreateMob(dwArmID + i, null, SpawnPoint.X, SpawnPoint.Y, 70,
                               0, 0, 0, MobType.SubMob, null);
            }
        }
Exemplo n.º 2
0
        public override void Update()
        {
            base.Update();

            if (bStarted || Users.Count <= 0)
            {
                return;
            }

            switch (MapId)
            {
            case 240060200:                     // boss maps
            case 240060201:
                Mobs.CreateMob(bChaos ? 8810026 : 8810130, null, 130, 250, 0, 0xFF, 0, 0, MobType.Normal, null);
                //Mobs.CreateMob(bChaos ? 8810026 : 8810130, -1, 130, 250, 0); // temp haxed for now
                break;
            }
            bStarted = true;
        }
        protected override void InitMobs()
        {
            var mobcount = 30;

            const int npc = 1012119;

            switch (DungeonFieldIndex)
            {
            case 1:
            {
                var mobs = new int[2] {
                    9200009, 9500123
                };
                var y = new int[5] {
                    295, 206, 46, -55, -249
                };
                var x = new int[2][]
                {
                    new int[5] {
                        -20, 275, 290, 310, 310
                    },                                                                          // low range
                    new int[5] {
                        1250, 1100, 980, 740, 730
                    },                                                                            // high range
                };
                execute(mobs, y, x);
                makenpc(-340, 298, 21);
            }
            break;

            case 2:
            {
                var mobs = new int[2] {
                    9500123, 9300387
                };
                var y = new int[5] {
                    300, 105, 11, -80, -260
                };
                var x = new int[2][]
                {
                    new int[5] {
                        -115, 136, 130, 232, 243
                    },                                                                           // low range
                    new int[5] {
                        1166, 830, 735, 670, 662
                    },                                                                           // high range
                };
                execute(mobs, y, x);
                makenpc(-340, 298, 4);
            }
            break;

            case 3:
            {
                var mobs = new int[2] {
                    9300387, 9500149
                };
                var y = new int[5] {
                    178, 84, -94, -187, -367
                };
                var x = new int[2][]
                {
                    new int[5] {
                        97, 623, 659, 766, 859
                    },                                                                         // low range
                    new int[5] {
                        1386, 1656, 1465, 1372, 1290
                    },                                                                               // high range
                };
                execute(mobs, y, x);
                makenpc(-170, -180, 21);
            }
            break;

            case 4:
            {
                var mobs = new int[2] {
                    9500149, 9500150
                };                                                                          // 3k hp * 10
                var y = new int[9] {
                    175, 76, 48, 34, 0, -97, -127, -240, -368
                };
                var x = new int[2][]
                {
                    new int[9] {
                        380, 498, 1202, 93, 930, 125, 1069, 235, 762
                    },                                                                                               // low range
                    new int[9] {
                        1725, 920, 1590, 480, 1360, 930, 1500, 630, 1130
                    },                                                                                                   // high range
                };
                execute(mobs, y, x);
                makenpc(1260, -420, 14);
            }
            break;

            case 5:
            {
                MobHpMultiplier = 60;

                var mobs = new int[3] {
                    8220009, 8220009, 8220009
                };
                var y = new int[3] {
                    1967, 1606, 1373
                };
                var x = new int[2][]
                {
                    new int[3] {
                        0, 113, 210
                    },
                    new int[3] {
                        470, 400, 445
                    },
                };

                for (var i = 0; i < mobs.Length; i++)
                {
                    Mobs.CreateMob(mobs[i], null, Constants.Rand.Next(x[0][i], x[1][i]), y[i], 0, 0, 0, 0, MobType.Normal, null);
                    //var mob = new CMob(mobs[i])
                    //{
                    //	m_nSummonType = 0xFE,
                    //	Position = new CMovePath
                    //	{
                    //		Y = (short)y[i],
                    //		X = (short)Constants.Rand.Next(x[0][i], x[1][i]),
                    //	},
                    //};
                    //Mobs.CreateMob(mob);
                }

                execute(
                    new int[] { 9500106, 9500105, 9400622, 9000002, 9000301 },
                    new int[] { 1967, 1793, 1652, 1619, 1480, 1379 },
                    new int[][] {
                        new int[] { -374, -88, 207, -12, 94, 125 },
                        new int[] { 914, 637, 569, 391, 500, 456, }
                    });
                makenpc(-345, 1800, 36);
            }
            break;
            }

            void execute(int[] mobs, int[] y, int[][] x)
            {
                while (mobcount > 0)
                {
                    var level    = Constants.Rand.Next(0, y.Length);
                    var spawnY   = y[level];
                    var spawnX_L = x[0][level];
                    var spawnX_R = x[1][level];

                    var spawnX = Constants.Rand.Next(spawnX_L, spawnX_R);

                    Mobs.CreateMob(mobs.Random(), null, spawnX, spawnY, 0, 0, 0, 0, MobType.Normal, null);

                    //var mob = new CMob(mobs.Random())
                    //{
                    //	m_nSummonType = 0xFE,
                    //	Position = new CMovePath
                    //	{
                    //		Y = (short)spawnY,
                    //		X = (short)spawnX,
                    //	},
                    //};

                    //Mobs.CreateMob(mob);

                    mobcount -= 1;
                }
            }

            void makenpc(short x, short y, short fh)
            {
                var entry = new CNpc(npc)
                {
                    Rx0      = x,
                    Rx1      = y,
                    X        = x,
                    Y        = y,
                    Cy       = y,
                    F        = true,
                    Foothold = fh
                };

                Npcs.Add(entry);
                Broadcast(entry.MakeEnterFieldPacket());
            }
        }
Exemplo n.º 4
0
        private void TrySpawnBoss()
        {
#if RELEASE
            if (_timeSinceCreation.SecondsSinceStart() <= 2 * 60)
            {
                return;                                                               // need to be in map for 2 mins before the boss will spawn
            }
#endif
            if (!Users.Any())
            {
                return;
            }

            if (!ParentInstance.AreaBossManager.CanSpawn(MapId))
            {
                return;
            }

            TagPoint pt;
            int      mobId;

            switch (MapId)
            {
            case 104010200:                     // forest trail 2 - mano
                pt    = new TagPoint(308, 515);
                mobId = 2220000;
                break;

            case 100020101:                     // mushmom forest trail - mushmom
                pt    = new TagPoint(-691, 215);
                mobId = 6130101;
                break;

            case 100020301:                     // blue mushmom forest - blue mushmom
                pt    = new TagPoint(158, -685);
                mobId = 8220007;
                break;

            case 102020500:                     // gusty peak - stumpy
                pt    = new TagPoint(549, 2168);
                mobId = 3220000;
                break;

            case 103030300:                     // unseen danger - dyle
                pt = new TagPoint(99, 119);
                goto case 103030400;

            case 103030400:                     // deep mire - dyle
                pt    = new TagPoint(541, 121);
                mobId = 0;
                break;

            case 211041400:                     // forest of dead trees IV - riche
                pt    = new TagPoint(1278, 94);
                mobId = 6090000;
                break;

            case 211040500:                     // sharp cliff III - Snowman
                pt    = new TagPoint(37, 62);
                mobId = 8220001;
                break;

            case 211050000:                     // icy cold field - snow witch
                pt    = new TagPoint(288, -146);
                mobId = 6090001;
                break;

            case 200010302:                     // garden of darkness II - eliza
                pt    = new TagPoint(236, 83);
                mobId = 8220000;
                break;

            case 105020400:                     // cave exit - snack bar
                pt    = new TagPoint(631, 350);
                mobId = 8220008;
                break;

            case 230020100:                     // seaweed tower - seruf
                pt    = new TagPoint(-36, -80);
                mobId = 4220001;
                break;

            case 221020701:                     // eos tower 4th floor - rombot
                pt    = new TagPoint(-60, 1513);
                mobId = 4130103;
                break;

            case 220050200:                     // lost time 2 - timer
                pt    = new TagPoint(395, 1032);
                mobId = 5220003;
                break;

            //case 551030200: // spooky world - scarga
            //	pt = new TagPoint();
            //	mobId = 0;
            //	break;
            case 240020402:                     // manons forest - manon
                pt    = new TagPoint(-371, 452);
                mobId = 8180000;
                break;

            case 240020102:                     // griffey forest - griffey
                pt    = new TagPoint(422, 452);
                mobId = 8180001;
                break;

            case 240040401:                     // levtiathans canyon - leviathan
                pt    = new TagPoint(-52, 1641);
                mobId = 8220003;
                break;

            case 250020300:                     // advanced practice field - master dummy
                pt    = new TagPoint(1178, 51);
                mobId = 5090001;
                break;

            case 250010304:                     // Territory of Wandering Bear - Tae Roon
                pt    = new TagPoint(-480, 393);
                mobId = 7220000;
                break;

            case 250010504:                     // Goblin Forest 2 - King Sage Cat
                pt    = new TagPoint(76, 543);
                mobId = 7220002;
                break;

            case 251010101:                     // 60-Year-Old Herb Garden - Bamboo Warrior
                pt    = new TagPoint(308, 123);
                mobId = 6090002;
                break;

            case 251010102:                     // 80-Year-Old Herb Garden - Giant Centipede
                pt    = new TagPoint(435, -436);
                mobId = 5220004;
                break;

            case 260010500:                     // Dry Desert - Deo
                pt    = new TagPoint(733, 275);
                mobId = 3220001;
                break;

            case 261010003:                     // Lab - Unit 103 - Rurumo
                pt    = new TagPoint(305, 313);
                mobId = 6090004;
                break;

            case 261020300:                     // Lab - Area C-1 - Security Camera
                pt    = new TagPoint(390, 167);
                mobId = 7090000;
                break;

            case 261030000:                     // Lab - Secret Basement Path - Chimera
                pt    = new TagPoint(-321, 181);
                mobId = 8220002;
                break;

            case 270010500:                     // Memory Lane 5 - Dodo
                pt    = new TagPoint(-264, 181);
                mobId = 8220004;
                break;

            case 270020500:                     // Road of Regrets 5 - Lilynouch
                pt    = new TagPoint(108, -915);
                mobId = 8220005;
                break;

            case 270030500:                     // Road to Oblivion 5 - Lyka
                pt    = new TagPoint(239, -570);
                mobId = 8220006;
                break;
            //case 682000001: // Hollowed Ground - Headless Horseman
            //	pt = new TagPoint(304, 238);
            //	mobId = 9400549;
            //	break;
            //case 610010100: // Twisted Paths - Bigfoot
            //case 610010101:
            //case 610010102:
            //case 610010103:
            //case 610010104:
            //	pt = new TagPoint(526, 208);

            //	// 50/50 to spawn bigfoot or headless horseman
            //	mobId = Constants.Rand.NextDouble() > 0.5 ? 9400549 : 9400575;
            //	break;
            default: return;
            }

            Mobs.CreateMob(mobId, null, pt.X, pt.Y, 0, 0xFE, 0, 1, MobType.Normal, null);

            foreach (var item in Mobs)
            {
                item.SetController(Users.Random(), MobCtrlType.Active_Int);
            }

            Broadcast(CPacket.SystemMessage("The area boss emerges from the depths...."));
        }
Exemplo n.º 5
0
 private void SpawnStageBoss()
 {
     Mobs.CreateMob(_bossMob, null, 146, 7, 0, 15, 0, 1, MobType.Normal, Users.FirstOrDefault());
 }