コード例 #1
0
ファイル: Main.cs プロジェクト: MandL27/Server
        public static void RDungeonScriptGoal(Client client, int scriptNum, int param1, int param2)
        {
            try {
                switch (scriptNum) {
                    case 0: {
                            int SparkSlot = client.Player.FindInvSlot(484);
                            if (SparkSlot > 0) {
                                StoryManager.PlayStory(client, 38);
                            } else {
                                Messenger.PlayerWarp(client, 72, 9, 8);
                            }
                        }
                        break;
                    case 1: {
                            Messenger.PlayerWarp(client, 586, 10, 35);
                        }
                        break;
                    case 2: {//give a prize
                            MapStatus status = client.Player.Map.TempStatus.GetStatus("TotalTime");
                            if (status != null) {
                                if (status.Counter < 15) {
                                    param1 += 3;
                                } else if (status.Counter < 40) {
                                    param1 += 2;
                                } else if (status.Counter < 80) {
                                    param1 += 1;
                                }
                                Messenger.PlayerMsg(client, "Got to the next floor in " + ((double)status.Counter / 2)+ " seconds.", Text.Yellow);
                                Messenger.PlayerMsg(client, "A gift appeared in your bag!", Text.BrightGreen);
                                if (param1 == 5) {
                                    client.Player.GiveItem(533, 1, "573;575;577;566;561;450");
                                } else if (param1 == 4) {
                                    client.Player.GiveItem(533, 1, "215;444;66;170;299;356;467");
                                } else if (param1 == 3) {
                                 	client.Player.GiveItem(533, 1, "398;101;76;68;299;452;68");
                                } else if (param1 >= 1) {
                                 	client.Player.GiveItem(533, 1, "451;61;400;355;99");
                                } else {
                                 	client.Player.GiveItem(533, 1, "21;489;497;98");
                                }
                            }
                            client.Player.WarpToRDungeon(((RDungeonMap)client.Player.Map).RDungeonIndex, ((RDungeonMap)client.Player.Map).RDungeonFloor + 1);
                        }
                        break;
                    case 3: {//End of East wing
                            client.Player.SwapActiveRecruit(0);
                            client.Player.RemoveFromTeam(1);
                            client.Player.RemoveFromTeam(2);
                            client.Player.RemoveFromTeam(3);
                            //NetScript.BattleMsg(index, "Your team members returned home!", Text.BrightRed, 0);
                            Messenger.SendActiveTeam(client);
                            InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                            MapCloner.CloneMapTiles(MapManager.RetrieveMap(718), map);
                            Messenger.PlayerWarp(client, map, 9, 10);
                            Messenger.PlaySound(client, "Warp.wav");
                        }
                        break;
                    case 4: {//End of abandoned mansion
                            client.Player.SwapActiveRecruit(0);
                            client.Player.RemoveFromTeam(1);
                            client.Player.RemoveFromTeam(2);
                            client.Player.RemoveFromTeam(3);
                            //NetScript.BattleMsg(index, "Your team members returned home!", Text.BrightRed, 0);
                            Messenger.SendActiveTeam(client);
                            InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                            MapCloner.CloneMapTiles(MapManager.RetrieveMap(716), map);
                            Messenger.PlayerWarp(client, map, 9, 10);
                            Messenger.PlaySound(client, "Warp.wav");
                        }
                        break;
                    case 5: {//End of abandoned attic
                            client.Player.SwapActiveRecruit(0);
                            client.Player.RemoveFromTeam(1);
                            client.Player.RemoveFromTeam(2);
                            client.Player.RemoveFromTeam(3);
                            //NetScript.BattleMsg(index, "Your team members returned home!", Text.BrightRed, 0);
                            Messenger.SendActiveTeam(client);
                            InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                            MapCloner.CloneMapTiles(MapManager.RetrieveMap(728), map);
                            Messenger.PlayerWarp(client, map, 13, 10);
                            Messenger.PlaySound(client, "Warp (Escape).wav");
                        }
                        break;
                    case 6: {//Abandoned attic? loops
                            client.Player.WarpToRDungeon(19, 6);
                            Messenger.PlaySound(client, "magic3.wav");
                            StoryManager.PlayStory(client, 293);
                        }
                        break;
                    case 7: {//Hallowed Well Bottom
                            //ObjectFactory.GetPlayer(index).IncrementDungeonCompletionCount(9, 1);
                            if (client.Player.Timers.TimerExists("Wind")) {
                                client.Player.Timers.RemoveTimer("Wind");
                            }
                            client.Player.IncrementDungeonCompletionCount(19, 1);
                            InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                            MapCloner.CloneMapTiles(MapManager.RetrieveMap(832), map);
                            if (client.Player.GetDungeonCompletionCount(19) < 2) {
                                map.SetAttribute(10, 7, Enums.TileType.Item, 247, 1, 0, "", "", "");
                            } else {
                                map.SetAttribute(10, 7, Enums.TileType.Item, 520, 1, 0, "", "", "");
                            }
                            Messenger.PlayerWarp(client, map, 10, 11);
                        }
                        break;
                    case 8: {//spiritomb room in hallowed well
                            InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                            MapCloner.CloneMapTiles(MapManager.RetrieveMap(835), map);
                            Messenger.PlayerWarp(client, map, 9, 13);
                            if (client.Player.HasItem(251) > 0) {
                                StoryManager.PlayStory(client, 302);
                            } else {
                                map.SetAttribute(9, 2, Enums.TileType.Scripted, 36, 0, 0, "21", "30", "");
                                map.SetTile(9, 2, 96, 0, 4, 1);
                                Messenger.SendTile(9, 2, map);
                                StoryManager.PlayStory(client, 301);
                            }
                        }
                        break;
                    case 9: {//golden apple room in hallowed well
                            InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                            MapCloner.CloneMapTiles(MapManager.RetrieveMap(834), map);
                            Messenger.PlayerWarp(client, map, 10, 12);
                        }
                        break;
                    case 10: {//golden fang room in hallowed well
                            InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                            MapCloner.CloneMapTiles(MapManager.RetrieveMap(833), map);
                            Messenger.PlayerWarp(client, map, 10, 11);
                        }
                        break;
                    case 11: {//heatran battle
                            //BossBattles.StartBossBattle(client, "Heatran");
                        }
                        break;
                    case 12: {
                            //BossBattles.StartBossBattle(client, "TinyGrotto");
                        }
                        break;
                    case 13: {
                            //BossBattles.StartBossBattle(client, "CliffsideRelic");
                        }
                        break;
                    case 14: {
                            //completed tanren tunnel
                            client.Player.IncrementDungeonCompletionCount(24, 1);
                            DungeonRules.ExitDungeon(client, 1328, 4, 16);
                        }
                        break;
                    case 15: {

                            client.Player.EndTempStatMode();
                            exPlayer.Get(client).WarpToSpawn(false);
                        }
                        break;
                    case 16: {//completed marowak training dojo
                            client.Player.IncrementDungeonCompletionCount(10, 1);
                            //Messenger.PlayerWarp(client, 50, 10, 8);
                            DungeonRules.ExitDungeon(client, 50, 10, 8);
                        }
                        break;
                    case 17: {
                            //completed winden pass
                            client.Player.IncrementDungeonCompletionCount(4, 1);
                            //Messenger.PlayerWarp(client, 921, 17, 21);
                            DungeonRules.ExitDungeon(client, 921, 17, 21);
                        }
                        break;
                    case 18: {
                            client.Player.IncrementDungeonCompletionCount(11, 1);
                            //Messenger.PlayerWarp(client, 50, 10, 8);
                            DungeonRules.ExitDungeon(client, 1734, 13, 19);
                        }
                        break;
                    case 19: {//key-activated next-floor
                            if (client.Player.Map.Tile[client.Player.X, client.Player.Y].Data1 == 1) {
                                PartyManager.AttemptPartyWarp(client, (Client warpClient) =>
                                {
                                    exPlayer.Get(warpClient).FirstMapLoaded = false;
                                    if (warpClient.Player.Map.MapType == Enums.MapType.RDungeonMap)
                                        warpClient.Player.WarpToRDungeon(((RDungeonMap)warpClient.Player.Map).RDungeonIndex, ((RDungeonMap)warpClient.Player.Map).RDungeonFloor + 1);
                                });

                            } else {
                                int slot = 0;
                                for (int i = 1; i <= client.Player.Inventory.Count; i++) {
                                    if (client.Player.Inventory[i].Num == param1 && !client.Player.Inventory[i].Sticky) {
                                        slot = i;
                                        break;
                                    }
                                }
                                if (slot > 0) {
                                    Messenger.AskQuestion(client, "UseItem:"+param1, "Will you use your " + ItemManager.Items[param1].Name + " to open the staircase?", -1);
                                } else {
                                    Messenger.PlaySoundToMap(client.Player.MapID, "magic132.wav");
                                    Messenger.PlayerMsg(client, "The staircase is sealed... It seems to need a key.", Text.BrightRed);
                                }
                            }
                        }
                        break;
                    case 20: {
                            //BossBattles.StartBossBattle(client, "CrystalRuins");
                        }
                        break;
                    case 21: {//day/night dungeon variation
                            int RDungeonIndex = param1 - 1;
                            if (Server.Globals.ServerTime == Enums.Time.Night || Server.Globals.ServerTime == Enums.Time.Dusk) {
                                RDungeonIndex = param2 - 1;
                            }
                            PartyManager.AttemptPartyWarp(client, (Client warpClient) =>
                            {
                                exPlayer.Get(warpClient).FirstMapLoaded = false;
                                if (warpClient.Player.Map.MapType == Enums.MapType.RDungeonMap)
                                    warpClient.Player.WarpToRDungeon(((RDungeonMap)warpClient.Player.Map).RDungeonIndex, ((RDungeonMap)warpClient.Player.Map).RDungeonFloor + 1);
                            });
                        }
                        break;
                    case 22: {//switch-activated next-floor
                            if (client.Player.Map.Tile[client.Player.X, client.Player.Y].Data1 == 1) {

                                PartyManager.AttemptPartyWarp(client, (Client warpClient) =>
                                {
                                    exPlayer.Get(warpClient).FirstMapLoaded = false;
                                    warpClient.Player.WarpToRDungeon(param1 - 1, param2 - 1);
                                });

                            } else {
                                Messenger.PlayerMsg(client, "The passage to the next floor won't open until the switches are pressed...", Text.BrightRed);
                                Messenger.PlaySoundToMap(client.Player.MapID, "magic132.wav");
                            }
                        }
                        break;
                    case 23: {//switch-activated dungeon end
                            if (client.Player.Map.Tile[client.Player.X, client.Player.Y].Data1 == 1) {

                                PartyManager.AttemptPartyWarp(client, (Client warpClient) =>
                                {
                                    Messenger.PlayerWarp(warpClient, 1426, 18, 43);
                                    int players = (warpClient.Player.Map.PlayersOnMap.Count - 1) % 4;

                                    warpClient.Player.Map.SpawnItem(533, 1, false, false, "373;374;375;376;377;378;379;382", 17 + 2 * (players % 2), 11 + 2 * (players / 2), warpClient);
                                    if (warpClient.Player.Map.ActiveItem[players].Num != 0)
                                    {
                                        warpClient.Player.Map.ActiveItem[players].TimeDropped = new TickCount(Core.GetTickCount().Tick + 600000);
                                    }
                                });

                            } else {
                                Messenger.PlayerMsg(client, "The passage to the rooftop won't open until the switches are pressed...", Text.BrightRed);
                                Messenger.PlaySoundToMap(client.Player.MapID, "magic132.wav");
                            }
                        }
                        break;
                    case 24: {//switch-deactivated end-Harmonic-Tower
                            Messenger.PlayerMsg(client, "The passage to the next floor won't open until the switches are pressed...", Text.BrightRed);
                        }
                        break;
                    case 25: {//end of Harmonic Tower

                        }
                        break;
                    case 26: {//end of Mineral Cave
                            client.Player.IncrementDungeonCompletionCount(15, 1);
                            DungeonRules.ExitDungeon(client, 1361, 6, 7);
                            if (client.Player.Map.MapType == Enums.MapType.Instanced && ((InstancedMap) client.Player.Map).MapBase == 1361) {
                                client.Player.Map.SpawnItem(49, 1, false, false, "", 8, 8, null);
                            }
                        }
                        break;
                    case 27: {//completed Mt. barricade
                            client.Player.IncrementDungeonCompletionCount(18, 1);
                            //Messenger.PlayerWarp(client, 50, 10, 8);
                            DungeonRules.ExitDungeon(client, 1015, 25, 25);
                        }
                        break;
                    case 28: {//tanren chambers
                                int x = -1, y = -1, mapNum = -1, itemX = -1, itemY = -1;
                                InstancedMap iMap = null;
                                switch (param1) {
                                    case 0: {//bottom
                                            mapNum = 301;
                                            x = 25;
                                            y = 46;
                                            itemX = 25;
                                            itemY = 25;
                                        }
                                        break;
                                    case 1: {//depth 1
                                            mapNum = 302;
                                            x = 9;
                                            y = 10;
                                            itemX = 9;
                                            itemY = 7;
                                        }
                                        break;
                                    case 2: {//depth 2
                                            mapNum = 303;
                                            x = 9;
                                            y = 10;
                                            itemX = 9;
                                            itemY = 6;
                                        }
                                        break;
                                    case 3: {//depth 3
                                            mapNum = 304;
                                            x = 9;
                                            y = 10;
                                            itemX = 9;
                                            itemY = 7;
                                        }
                                        break;
                                }
                                if (mapNum > -1) {

                                string mapID = MapManager.GenerateMapID("i");
                                bool warp = PartyManager.AttemptPartyWarp(client, (Client warpClient) =>
                                {
                                    if (iMap == null)
                                    {
                                        iMap = new InstancedMap(mapID);
                                        IMap baseMap = MapManager.RetrieveMap(mapNum);
                                        MapCloner.CloneMapTiles(baseMap, iMap);
                                        MapCloner.CloneMapNpcs(baseMap, iMap);
                                        MapCloner.CloneMapGeneralProperties(baseMap, iMap);
                                        iMap.MapBase = mapNum;
                                    }
                                    Messenger.PlayerWarp(warpClient, iMap, x, y);
                                });

                                if (warp) {
                                    int itemNum = 533;
                                    string tag = "";
                                    switch (param2) {//determines reward
                                    //Normal
                                    case 0: itemNum = 171; break;
                                    case 1: tag = "125;355;277;726,1;143;53,20;806,15;716"; break;
                                    case 2: tag = "711;452;113;467;136;139;543;170"; break;
                                    case 3: tag = "717;327;739,3;15;690;117;353;400"; break;
                                    case 4: tag = "399;544;47;260;354;248;451;404"; break;
                                    case 5: tag = "329;175;397;21;13;191;47;307"; break;
                                    case 6: tag = "759;489;167;144;172;372;16;704"; break;
                                    case 7: tag = "489;92;82;497;306;11;151;93"; break;

                                    //Elecric
                                    case 8: tag = "715;430;806,20;350;88;253;726,5;803"; break;
                                    case 9: tag = "716;452;53,15;369;726,1;158;355;18"; break;
                                    case 10: tag = "711;454;275;698;298;260;303"; break;
                                    case 11: tag = "717;83;327;260;354;249;451;544"; break;
                                    case 12: tag = "757;183;167;307;77;719;744,3;421"; break;

                                    //Water
                                    case 13: tag = "715;427;806,20;350;88;253;726,5;803"; break;
                                    case 14: tag = "716;452;806,10;355;101;301;158;718"; break;
                                    case 15: tag = "711;796;333;272;349;370;120,1,150;801"; break;
                                    case 16: tag = "314;455;442;260;354;249;96"; break;
                                    case 17: tag = "751;489;154;372;112;172;157;460"; break;

                                    //Grass
                                    case 18: tag = "715;424;806,20;350;88;253;726,5;803"; break;
                                    case 19: tag = "716;452;53,15;726,1;355;189;72;630"; break;
                                    case 20: tag = "711;794;274;457;458;187;184"; break;
                                    case 21: tag = "717;120,1,120;327;463;260;451;298;404"; break;
                                    case 22: tag = "100;154;721,10;324;397;47;21;810"; break;

                                    //Fire
                                    case 23: tag = "715;420;806,20;350;88;253;726,5;803"; break;
                                    case 24: tag = "716;452;806,10;459;355;94;302;805"; break;
                                    case 25: tag = "64;453;273;334;451;47;442;481"; break;
                                    case 26: tag = "758;183;167;741,3;441;163;686;134"; break;
                                    case 27: tag = "82;489;410;132;304;60,15;345,10;497"; break;

                                    //Psychic
                                    case 28: tag = "715;425;806,20;350;398;253;726,5;803"; break;
                                    case 29: tag = "711;452;143;440;726,1;355;467;468"; break;
                                    case 30: tag = "717;498;327;276;466;353;451;298"; break;
                                    case 31: tag = "107;742,3;354;249;13;90;99;790"; break;
                                    case 32: tag = "761;727,3;293;16;172;719;704;421"; break;

                                    //Dark
                                    case 33: tag = "715;418;806,20;350;398;253;726,5;803"; break;
                                    case 34: tag = "711;143;689;690;280;353;383;456"; break;
                                    case 35: tag = "451;12;354;742,3;249;90;44;790"; break;
                                    case 36: tag = "810;324;397;45;312;47;701;13"; break;
                                    case 37: tag = "760;167;134;16;738,3;172;704;700"; break;

                                    //Ghost
                                    case 38: tag = "715;428;806,20;350;398;253;726,5;803"; break;
                                    case 39: tag = "716;452;143;461;355;469;125;18"; break;
                                    case 40: tag = "711;558;462;120,1,150;720;62,10;801"; break;
                                    case 41: tag = "717;97;327;283;465;353;383;120,1,128"; break;
                                    case 42: tag = "752;727,3;293;744,3"; break;

                                    //Fighting
                                    case 43: tag = "715;419;806,20;350;398;253;726,5;803"; break;
                                    case 44: tag = "711;452;799;143;281;355;72;409"; break;
                                    case 45: tag = "717;289;464;353;451;298;120,1,110;303"; break;
                                    case 46: tag = "58;47;324;481;21;701;447;699"; break;
                                    case 47: tag = "756;167;741,3;144;16;172;421"; break;

                                    //Flying
                                    case 48: tag = "715;426;53,25;350;398;253;726,5;803"; break;
                                    case 49: tag = "711;797;282;260;451;120,1,130;806,7;303"; break;
                                    case 50: tag = "95;685;397;47;701;810;396;699"; break;

                                    //Steel
                                    case 51: tag = "715;297;53,25;350;88;253;726,5;803"; break;
                                    case 52: tag = "711;791;288;433;401;120,1,150;720"; break;
                                    case 53: tag = "68;176;544;99;354;451;191;90"; break;
                                    case 54: tag = "754;183;741,3;134;16;441;744,3;686"; break;

                                    //Poison
                                    case 55: tag = "715;429;53,25;350;398;253;726,5;803"; break;
                                    case 56: tag = "711;452;339;355;170;286;72;630"; break;
                                    case 57: tag = "122;481;45;154;248;169;810;99"; break;

                                    //Ice
                                    case 58: tag = "715;416;53,25;350;88;253;726,5;803"; break;
                                    case 59: tag = "716;452;290;215;355;371;349;72"; break;
                                    case 60: tag = "717;337;444;442;353;451;120,1,120;285"; break;
                                    case 61: tag = "106;742,3;299;312;47;744,4;84;810"; break;

                                    //Ground
                                    case 62: tag = "715;296;53,25;350;398;253;726,5;803"; break;
                                    case 63: tag = "711;452;688;355;120,1,160;72;720;409"; break;
                                    case 64: tag = "67;278;84;99;248;102;47;300"; break;

                                    //Bug
                                    case 65: tag = "715;423;53,25;350;88;253;726,5;803"; break;
                                    case 66: tag = "711;792;353;480;120,1,150;260;720;801"; break;
                                    case 67: tag = "71;279;99;354;451;248;481;90"; break;
                                    case 68: tag = "753;721,10;183;144;411;134;16;441"; break;

                                    //Dragon
                                    case 69: tag = "715;417;53,25;350;398;253;726,5;803"; break;
                                    case 70: tag = "711;327;380;284;260;184;303;690"; break;
                                    case 71: tag = "76;45;47;312;701;744,4;111;789"; break;

                                    //Rock
                                    case 72: tag = "715;295;53,25;350;88;253;726,5;803"; break;
                                    case 73: tag = "716;160;355;349;370;336;371;72"; break;
                                    case 74: tag = "717;793;544;353;451;53,8;120,1,120;287"; break;
                                    case 75: tag = "108;685;397;300;744,4;47;447;789"; break;
                                }
                                    iMap.SpawnItem(itemNum, 0, false, false, tag, itemX, itemY, null);

                                    if (client.Player.Name == "Hayarotle" || client.Player.Name == "Sprinko") {
                                        Messenger.PlayerMsg(client, "Possible items:", Text.Black);
                                        string[] itemSelection = tag.Split(';');
                                        for (int i = 0; i < itemSelection.Length; i++) {
                                        string[] chosenItem = itemSelection[i].Split(',');
                                        if (chosenItem[0].IsNumeric()) {
                                            if (chosenItem.Length == 2 && chosenItem[1].IsNumeric()) {

                                                Messenger.PlayerMsg(client, chosenItem[1] + " " + ItemManager.Items[chosenItem[0].ToInt()].Name, Text.Yellow);
                                            } else if (chosenItem.Length == 3 && chosenItem[2].IsNumeric()) {
                                                Messenger.PlayerMsg(client, "a " + ItemManager.Items[chosenItem[0].ToInt()].Name, Text.Yellow);
                                            } else {
                                                Messenger.PlayerMsg(client, "a " + ItemManager.Items[chosenItem[0].ToInt()].Name, Text.Yellow);
                                            }
                                        }
                                        }
                                    }
                                }
                            }
                        }
                        break;
                }
            } catch (Exception ex) {
                Messenger.AdminMsg("Error: RDungeonScriptGoal", Text.Black);
                Messenger.AdminMsg(ex.ToString(), Text.Black);
            }
        }
コード例 #2
0
        public static void GenerateMaze(Client client, Server.Enums.Direction dir)
        {
            //generates a brand-new maze map for the player and sends it as their current map
            //warning: code copy-pasted (and revised) from C++, so it won't be neat
            int x;
            int y;
            int r;
            int[] order = new int[4];
            InstancedMap imap = new InstancedMap(MapManager.GenerateMapID("i"));
            MapCloner.CloneMapTiles(MapManager.RetrieveMap(1543), imap);
            //Server.Enums.TileType[,] maze = new Server.Enums.TileType[47,35];
            int[,] cells = new int[22,16];

            for(int i = 2; i < 45; i++) { //initialize map
                for (int j = 2; j < 33; j++) {
                    //maze[i,j] = Server.Enums.TileType.Blocked;
                    imap.SetAttribute(i, j, Server.Enums.TileType.Blocked, 0, 0, 0, "", "", "");
                    imap.SetTile(i, j, 446, 9, 1);
                }
            }

            for(int i = 0; i < 22; i++) { //initialize cells used for prim's algorithm
                for (int j = 0; j < 16; j++) {
                    cells[i,j] = 0;
                }
            }

            List<int> list1 = new List<int>();

            x = Server.Math.Rand(1,22);
            y = Server.Math.Rand(1,16);
            cells[x,y] = 2;
            //maze[2*(x+1),2*(y+1)] = Server.Enums.TileType.Walkable;
            imap.SetAttribute(2*(x+1), 2*(y+1), Server.Enums.TileType.Walkable, 0, 0, 0, "", "", "");
            imap.SetTile(2*(x+1), 2*(y+1), 0, 0, 1);
            order = GenerateOrder();

            for (int i = 0; i < 4; i++) {
                switch(order[i]) {
              				case 1: //up
                        if (y > 0) {
              				cells[x,y-1] = 1;
              				list1.Add(x + 22*(y-1));
                    }
                    break;
             				case 2: //right
               				if (x < 21) {
              				cells[x+1,y] = 1;
              				list1.Add(x+1 + 22*y);
                        }
                        break;
              				case 3: //down
                        if (y < 15) {
              				cells[x,y+1] = 1;
              				list1.Add(x + 22*(y+1));
                        }
                        break;
              				case 4: //left
                        if (x > 0) {
              				cells[x-1,y] = 1;
              				list1.Add(x-1 + 22*y);
                        }
                        break;
                }
              			}

              			while(list1.Count > 0) {
              				//Messenger.PlayerMsg(client, list1.Count.ToString(), Text.Black);
                if (Server.Math.Rand(1,3) > 1) { //take random item from list
                    r = Server.Math.Rand(0, list1.Count);
                    x = list1[r];
                    list1.RemoveAt(r);
                } else { //take last element
                    x = list1.Last();
                    list1.RemoveAt(list1.Count-1);
                }
                y = x / 22;
                x = x % 22;
                //attach it to random neighbor and add neighbors to queue in random order
                order = GenerateOrder();
                for(int i = 0; i < 4; i++) {
              			switch(order[i]) {
               			case 1: //up
                  			if (y > 0) {
                                if (cells[x,y-1] == 0) {
                      				//add to queue
              						cells[x,y-1] = 1;
              						list1.Add(x + 22*(y-1));
                                } else if (cells[x,y-1] == 2 && cells[x,y] == 1) {
                  					//attach
                      				cells[x,y] = 2;
                      				//maze[2*(x+1),2*(y+1)-1] = Server.Enums.TileType.Walkable;
                     				//maze[2*(x+1),2*(y+1)] = Server.Enums.TileType.Walkable;
                                    imap.SetAttribute(2*(x+1), 2*(y+1)-1, Server.Enums.TileType.Walkable, 0, 0, 0, "", "", "");
                                    imap.SetTile(2*(x+1), 2*(y+1)-1, 0, 0, 1);
                                    imap.SetAttribute(2*(x+1), 2*(y+1), Server.Enums.TileType.Walkable, 0, 0, 0, "", "", "");
                                    imap.SetTile(2*(x+1), 2*(y+1), 0, 0, 1);
                                }
                  			}
                  			break;
                        case 2: //right
              					if (x < 21) {
                                if (cells[x+1,y] == 0) {
                  					//add to queue
                  					cells[x+1,y] = 1;
                  					list1.Add(x+1 + 22*y);
                                } else if (cells[x+1,y] == 2 && cells[x,y] == 1) {
                  					//attach
                  					cells[x,y] = 2;
                  					//maze[2*(x+1)+1,2*(y+1)] = Server.Enums.TileType.Walkable;
              						//maze[2*(x+1),2*(y+1)] = Server.Enums.TileType.Walkable;
                                    imap.SetAttribute(2*(x+1)+1, 2*(y+1), Server.Enums.TileType.Walkable, 0, 0, 0, "", "", "");
                                    imap.SetTile(2*(x+1)+1, 2*(y+1), 0, 0, 1);
                                    imap.SetAttribute(2*(x+1), 2*(y+1), Server.Enums.TileType.Walkable, 0, 0, 0, "", "", "");
                                    imap.SetTile(2*(x+1), 2*(y+1), 0, 0, 1);
                                }
                  			}
                  			break;
                        case 3: //down
              				if (y < 15) {
                                if (cells[x,y+1] == 0) {
                  					//add to queue
              						cells[x,y+1] = 1;
                      				list1.Add(x + 22*(y+1));
                                } else if (cells[x,y+1] == 2 && cells[x,y] == 1) {
                  					//attach
                      				cells[x,y] = 2;
                              		//maze[2*(x+1),2*(y+1)+1] = Server.Enums.TileType.Walkable;
                              		//maze[2*(x+1),2*(y+1)] = Server.Enums.TileType.Walkable;
                                    imap.SetAttribute(2*(x+1), 2*(y+1)+1, Server.Enums.TileType.Walkable, 0, 0, 0, "", "", "");
                                    imap.SetTile(2*(x+1), 2*(y+1)+1, 0, 0, 1);
                                    imap.SetAttribute(2*(x+1), 2*(y+1), Server.Enums.TileType.Walkable, 0, 0, 0, "", "", "");
                                    imap.SetTile(2*(x+1), 2*(y+1), 0, 0, 1);
                                }
                      		}
                      		break;
                        case 4: //left
              				if (x > 0) {
                                if (cells[x-1,y] == 0) {
                      				//add to queue
              						cells[x-1,y] = 1;
                      				list1.Add(x-1 + 22*y);
                                } else if (cells[x-1,y] == 2 && cells[x,y] == 1) {
                          			//attach
                  					cells[x,y] = 2;
                          			//maze[2*(x+1)-1,2*(y+1)] = Server.Enums.TileType.Walkable;
                          			//maze[2*(x+1),2*(y+1)] = Server.Enums.TileType.Walkable;
                                    imap.SetAttribute(2*(x+1)-1, 2*(y+1), Server.Enums.TileType.Walkable, 0, 0, 0, "", "", "");
                                    imap.SetTile(2*(x+1)-1, 2*(y+1), 0, 0, 1);
                                    imap.SetAttribute(2*(x+1), 2*(y+1), Server.Enums.TileType.Walkable, 0, 0, 0, "", "", "");
                                    imap.SetTile(2*(x+1), 2*(y+1), 0, 0, 1);
                                }
              				}
                      		break;
              				}
                }
              			}
              			imap.SetTile(23, 32, 0, 0, 1);
              			imap.SetAttribute(23, 32, Server.Enums.TileType.Walkable, 0, 0, 0, "", "", "");
              			imap.SetTile(23, 2, 0, 0, 1);
              			imap.SetAttribute(23, 32, Server.Enums.TileType.Walkable, 0, 0, 0, "", "", "");
              			imap.SetTile(2, 17, 0, 0, 1);
              			imap.SetAttribute(23, 32, Server.Enums.TileType.Walkable, 0, 0, 0, "", "", "");
              			imap.SetTile(44, 17, 0, 0, 1);
              			imap.SetAttribute(44, 17, Server.Enums.TileType.Walkable, 0, 0, 0, "", "", "");

            DecorateMap(client, imap); //make decoratemap use map's max x/y?
              			//warp player to maze
              			if (dir == Server.Enums.Direction.Up) {
                x = client.Player.X + 14;
                if (x > 24) x = 24;
                y = 32;
            } else if (dir == Server.Enums.Direction.Down) {
                x = client.Player.X + 14;
                if (x > 24) x = 24;
                y = 2;
            } else if (dir == Server.Enums.Direction.Left) {
                x = 44;
                y = client.Player.Y + 10;
            } else { //dir == Server.Enums.Direction.Right
                x = 2;
                y = client.Player.Y + 10;
            }
            Messenger.PlayerWarp(client, imap, x, y);
        }
コード例 #3
0
ファイル: BossBattles.cs プロジェクト: Festivo/Scripts
        public static void StartBossBattle(Client client, InstancedMap bossMap)
        {
            if (bossMap.TempStatus.GetStatus("Boss") != null) return;

            switch (bossMap.MapBase) {
                case 1422: {//regice
                        // Currently in mission, warp to normal map
                        // TODO: Add regice code here [Scripts]
                        //if (client.Player.ActiveMission != null && client.Player.ActiveMission.WonderMail.Code == "regicecode") {
                        //    Messenger.PlayerWarp(client, 1422, 10, 22);
                        //    StoryManager.PlayStory(client, 994);
                        //} else {// Not in mission, warp to instanced map
                        //    //if (Ranks.IsAllowed(index, Enums.Rank.Moniter)) {
                        //    InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        //    MapCloner.CloneMapTiles(MapManager.RetrieveMap(1422), map);
                        //    map.MapBase = 1422;
                        //    Messenger.PlayerWarp(client, map, 10, 21);
                        //    StoryManager.PlayStory(client, 989);
                        //    //}
                        //}
                    }
                    break;
                case 914: {//jirachi
                        InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        MapCloner.CloneMapTiles(MapManager.RetrieveMap(914), map);
                        map.MapBase = 914;
                        Messenger.PlayerWarp(client, map, 9, 12);
                        StoryManager.PlayStory(client, 149);
                    }
                    break;
                case 89: {//steelix
                        InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        MapCloner.CloneMapTiles(MapManager.RetrieveMap(89), map);
                        map.MapBase = 89;
                        Messenger.PlayerWarp(client, map, 9, 11);
                        map.SetNpcSpawnPoint(1, 9, 5);
                        map.SetNpc(1, 465);
                        //map.SpawnNpc(1);
                    }
                    break;
                case 590: {//dynamo
                        InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        MapCloner.CloneMapTiles(MapManager.RetrieveMap(590), map);
                        map.MapBase = 590;
                        Messenger.PlayerWarp(client, map, 10, 7);
                        map.SetNpc(1, 276);
                        map.SetNpc(2, 277);
                        map.SetNpc(3, 278);
                        //map.SpawnNpc(1);
                        //map.SpawnNpc(2);
                        //map.SpawnNpc(3);
                    }
                    break;
                case 569: {//groudon
                        InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        MapCloner.CloneMapTiles(MapManager.RetrieveMap(569), map);
                        map.MapBase = 569;
                        Messenger.PlayerWarp(client, map, 10, 13);
                        StoryManager.PlayStory(client, 154);
                    }
                    break;
                case 667: {//honchkrow
                        InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        MapCloner.CloneMapTiles(MapManager.RetrieveMap(667), map);
                        map.MapBase = 667;
                        //NetScript.LockPlayer(index);
                        Messenger.PlayerWarp(client, map, 10, 20);
                        //if (Ranks.IsDisallowed(index, Enums.Rank.StoryWriter)) {
                        if (client.Player.GetDungeonCompletionCount(15) < 1) {
                            StoryManager.PlayStory(client, 159);
                        } else {
                            StoryManager.PlayStory(client, 162);
                        }
                    }
                    break;
                case 424: {//hermi cave
                        //ObjectFactory.GetPlayer(index).IncrementDungeonCompletionCount(9, 1);
                        InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        MapCloner.CloneMapTiles(MapManager.RetrieveMap(424), map);
                        map.MapBase = 424;
                        if (client.Player.GetDungeonCompletionCount(9) < 2) {
                            map.SetAttribute(9, 16, Enums.TileType.Item, 370, 1, 0, "", "", "");
                            map.SetAttribute(10, 16, Enums.TileType.Item, 371, 1, 0, "", "", "");
                        } else {
                            map.SetAttribute(9, 15, Enums.TileType.Item, 263, 4, 0, "", "", "");
                            map.SetAttribute(10, 15, Enums.TileType.Item, 264, 4, 0, "", "", "");
                            map.SetAttribute(8, 16, Enums.TileType.Item, 265, 4, 0, "", "", "");
                            map.SetAttribute(11, 16, Enums.TileType.Item, 266, 4, 0, "", "", "");
                            map.SetAttribute(8, 17, Enums.TileType.Item, 266, 4, 0, "", "", "");
                            map.SetAttribute(11, 17, Enums.TileType.Item, 265, 4, 0, "", "", "");
                            map.SetAttribute(9, 18, Enums.TileType.Item, 264, 4, 0, "", "", "");
                            map.SetAttribute(10, 18, Enums.TileType.Item, 263, 4, 0, "", "", "");
                            map.SetAttribute(9, 16, Enums.TileType.Blocked, 0, 0, 0, "", "", "");
                            map.SetAttribute(10, 16, Enums.TileType.Blocked, 0, 0, 0, "", "", "");
                            map.SetAttribute(9, 17, Enums.TileType.Blocked, 0, 0, 0, "", "", "");
                            map.SetAttribute(10, 17, Enums.TileType.Blocked, 0, 0, 0, "", "", "");
                            map.SetTile(9, 15, 118400, 7, 5);
                            map.SetTile(10, 15, 118432, 7, 5);
                            map.SetTile(9, 16, 118848, 7, 5);
                            map.SetTile(10, 16, 118880, 7, 5);
                            map.SetTile(9, 17, 119296, 7, 5);
                            map.SetTile(10, 17, 119328, 7, 5);
                            //map.SetTile(9, 15, 128, 8448, 7, 5);
                            //map.SetTile(10, 15, 160, 8448, 7, 5);
                            //map.SetTile(9, 16, 128, 8480, 7, 5);
                            //map.SetTile(10, 16, 160, 8480, 7, 5);
                            //map.SetTile(9, 17, 128, 8512, 7, 5);
                            //map.SetTile(10, 17, 160, 8512, 7, 5);
                            map.SetAttribute(9, 23, Enums.TileType.Story, 147, 2, 0, "", "", "");
                        }
                        Messenger.PlayerWarp(client, map, 9, 30);
                        //if (ObjectFactory.GetPlayer(index).GetDungeonCompletionCount(9) >= 2) {
                        //    NetScript.PlaySound(index, "magic68.wav");
                        //NetScript.PlayStory(index, 147);
                        //}
                    }
                    break;
                case 503: {//registeel
                        InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        MapCloner.CloneMapTiles(MapManager.RetrieveMap(503), map);
                        map.MapBase = 503;
                        Messenger.PlayerWarp(client, map, 9, 12);
                        StoryManager.PlayStory(client, 37);
                    }
                    break;
                case 1108: {//mysterious jungle
                        InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        MapCloner.CloneMapTiles(MapManager.RetrieveMap(1108), map);
                        map.MapBase = 1108;
                        Messenger.PlayerWarp(client, map, 10, 13);
                        if (client.Player.HasItem(479) > 0) {
                            StoryManager.PlayStory(client, 165);
                        } else {
                            StoryManager.PlayStory(client, 164);
                        }
                    }
                    break;
                case 174: {//pokemas
                        //InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        //MapCloner.CloneMapTiles(MapManager.RetrieveMap(174), map);
                        //map.MapBase = 174;
                        //Messenger.PlayerWarp(client, map, 12, 19);
                        //StoryManager.PlayStory(client, 170);
                    }
                    break;
                case 465: {//heatran
                        InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        MapCloner.CloneMapTiles(MapManager.RetrieveMap(465), map);
                        map.MapBase = 465;
                        Messenger.PlayerWarp(client, map, 10, 27);
                        map.SetNpc(1, 404);
                        map.SetNpcSpawnPoint(1, 10, 6);
                        //map.SpawnNpc(1);
                    }
                    break;
                case 1563: {//xatu
                        //InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        //MapCloner.CloneMapTiles(MapManager.RetrieveMap(1563), map);
                        //map.MapBase = 1563;
                        //Messenger.PlayerWarp(client, map, 7, 3);
                        StoryManager.PlayStory(client, 175);
                    }
                    break;
                //case "Darkrai": {
                //        //instanced map
                //        //warp
                //        //story
                //    }
                //    break;
                case 1287: {//tiny grotto
                        //InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        //MapCloner.CloneMapTiles(MapManager.RetrieveMap(1287), map);
                        //MapCloner.CloneMapGeneralProperties(MapManager.RetrieveMap(1287), map);
                        //map.MapBase = 1287;
                        //Messenger.PlayerWarp(client, map, 9, 10);

                        StoryManager.PlayStory(client, 102);
                        //map.SetNpc(0, 502);
                        //map.SetNpcSpawnPoint(0, 9, 3);
                    }
                    break;
                case 114: {//sour root mini
                        //InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        //MapCloner.CloneMapTiles(MapManager.RetrieveMap(114), map);
                        //MapCloner.CloneMapGeneralProperties(MapManager.RetrieveMap(114), map);
                        //map.MapBase = 114;
                        //Messenger.PlayerWarp(client, map, 7, 12);

                        StoryManager.PlayStory(client, 138);
                    }
                    break;
                case 115: {//sour root
                        //InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        //MapCloner.CloneMapTiles(MapManager.RetrieveMap(115), map);
                        //MapCloner.CloneMapGeneralProperties(MapManager.RetrieveMap(115), map);
                        //map.MapBase = 115;
                        //Messenger.PlayerWarp(client, map, 10, 10);

                        StoryManager.PlayStory(client, 136);
                    }
                    break;
                case 255: {//seaside cavern
                        //InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        //MapCloner.CloneMapTiles(MapManager.RetrieveMap(255), map);
                        //MapCloner.CloneMapGeneralProperties(MapManager.RetrieveMap(255), map);
                        //map.MapBase = 255;
                        //map.SetTile(9, 4, 6, 0, 4, 3);
                        //map.SetAttribute(9, 4, Server.Enums.TileType.Blocked, 0, 0, 0, "", "", "");
                        //Messenger.PlayerWarp(client, map, 9, 9);

                        StoryManager.PlayStory(client, 115);
                    }
                    break;
                case 1609: {
                        InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        IMap originalMap = MapManager.RetrieveMap(1609);
                        MapCloner.CloneMapTileProperties(originalMap, map);
                        MapCloner.CloneMapTiles(originalMap, map);

                        Messenger.PlayerWarp(client, map, 11, 29);
                    }
                    break;
                case 1288: {//cliffside
                        //InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        //MapCloner.CloneMapTiles(MapManager.RetrieveMap(1288), map);
                        //MapCloner.CloneMapGeneralProperties(MapManager.RetrieveMap(1288), map);
                        //map.MapBase = 1288;
                        //Messenger.PlayerWarp(client, map, 10, 10);

                        StoryManager.PlayStory(client, 118);
                    }
                    break;
                case 531: {//thunderstorm forest
                        //InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        //MapCloner.CloneMapTiles(MapManager.RetrieveMap(531), map);
                        //MapCloner.CloneMapGeneralProperties(MapManager.RetrieveMap(531), map);
                        //map.MapBase = 531;
                        //Messenger.PlayerWarp(client, map, 9, 13);

                        StoryManager.PlayStory(client, 122);
                    }
                    break;
                case 1248: {//sauna cavern mini
                        //InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        //MapCloner.CloneMapTiles(MapManager.RetrieveMap(1248), map);
                        //MapCloner.CloneMapGeneralProperties(MapManager.RetrieveMap(1248), map);
                        //map.MapBase = 1248;
                        //Messenger.PlayerWarp(client, map, 9, 12);

                        StoryManager.PlayStory(client, 142);
                    }
                    break;
                case 1263: {//sauna cavern
                        //InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        //MapCloner.CloneMapTiles(MapManager.RetrieveMap(1263), map);
                        //MapCloner.CloneMapGeneralProperties(MapManager.RetrieveMap(1263), map);
                        //map.MapBase = 1263;
                        //Messenger.PlayerWarp(client, map, 10, 12);

                        StoryManager.PlayStory(client, 140);
                    }
                    break;
                case 1392: {//crystal ruins
                        //InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        //MapCloner.CloneMapTiles(MapManager.RetrieveMap(1392), map);
                        //MapCloner.CloneMapGeneralProperties(MapManager.RetrieveMap(1392), map);
                        //map.MapBase = 1392;
                        //Messenger.PlayerWarp(client, map, 9, 11);

                        StoryManager.PlayStory(client, 186);
                    }
                    break;
                case 1394: {//frozen citadel
                        //InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        //MapCloner.CloneMapTiles(MapManager.RetrieveMap(1394), map);
                        //MapCloner.CloneMapGeneralProperties(MapManager.RetrieveMap(1394), map);
                        //map.MapBase = 1394;
                        //Messenger.PlayerWarp(client, map, 10, 10);

                        StoryManager.PlayStory(client, 188);
                    }
                    break;
                case 1362: {//southern sea
                        //InstancedMap map = new InstancedMap(MapManager.GenerateMapID("i"));
                        //MapCloner.CloneMapTiles(MapManager.RetrieveMap(1362), map);
                        //MapCloner.CloneMapGeneralProperties(MapManager.RetrieveMap(1362), map);
                        //map.MapBase = 1362;
                        //Messenger.PlayerWarp(client, map, 9, 12);

                        StoryManager.PlayStory(client, 144);
                    }
                    break;
                case 1335: {//Chandalure
                        StoryManager.PlayStory(client, 217);
                    }
                    break;
                case 718: {//rotom forme
                        StoryManager.PlayStory(client, 215);
                    }
                    break;
                case 534: {//lapras
                        StoryManager.PlayStory(client, 216);
                    }
                    break;
                case 1638: {//skylift
                        StoryManager.PlayStory(client, 197);
                    }
                    break;
                case 1048: {//Exbel Woods Clearing
                        StoryManager.PlayStory(client, 196);
                    }
                    break;
                case 1851: {//beach bunker
                        StoryManager.PlayStory(client, 203);
                    }
                    break;
                case 1637: {//snowveil lair
                        StoryManager.PlayStory(client, 326);
                    }
                    break;
                case 1670: {//snowveil pit
                        StoryManager.PlayStory(client, 328);
                    }
                    break;
                case 1662: {//snowveil end
                        StoryManager.PlayStory(client, 330);
                    }
                    break;
                case 1722: {//articuno
                        StoryManager.PlayStory(client, 170);
                    }
                    break;
                case 1526: {//Deep Winden Forest Clearing
                        StoryManager.PlayStory(client, 322);
                    }
                    break;
                case 1744: {//Inferno Volcano Core
                        StoryManager.PlayStory(client, 393);
                    }
                    break;
                case 1745: {//Mysterious Jungle Undergrowth
                        StoryManager.PlayStory(client, 346);
                    }
                    break;
                case 1765: {//Inferno Volcano
                        StoryManager.PlayStory(client, 141);
                    }
                    break;
                case 1701: {//Sacred Tower, Fiery Passage
                        StoryManager.PlayStory(client, 370);
                    }
                    break;
                case 1702: {//Sacred Tower, Garden Passage
                        StoryManager.PlayStory(client, 371);
                    }
                    break;
                case 1703: {//Sacred Tower, Aquatic Passage
                        StoryManager.PlayStory(client, 372);
                    }
                    break;
                case 1704: {//Sacred Tower, Frigid Passage
                        StoryManager.PlayStory(client, 373);
                    }
                    break;
                case 1705: {//Sacred Tower, Electrical Passage
                        StoryManager.PlayStory(client, 374);
                    }
                    break;
                case 1706: {//Sacred Tower, Malign Passage
                        StoryManager.PlayStory(client, 375);
                    }
                    break;
                case 1707: {//Sacred Tower, Esoteric Passage
                        StoryManager.PlayStory(client, 376);
                    }
                    break;
                case 1708: {//Sacred Spire
                        StoryManager.PlayStory(client, 378);
                    }
                    break;
                case 1692: {//Tanren Dojo, Hitmonchan
                        StoryManager.PlayStory(client, 247);
                    }
                    break;
                case 1694: {//Tanren Dojo, Hitmonlee
                        StoryManager.PlayStory(client, 267);
                    }
                    break;
                case 1715: {//Tanren Dojo, Hitmontop
                        StoryManager.PlayStory(client, 323);
                    }
                    break;
                case 982: {//Honeydrop Meadow Clearing
                        StoryManager.PlayStory(client, 352);
                    }
                    break;
                case 1994: {//Boss Rush 1
                        StoryManager.PlayStory(client, 354);
                    }
                    break;
                case 1990: {//Boss Rush 2
                        StoryManager.PlayStory(client, 355);
                    }
                    break;
                case 1983: {//Boss Rush 3
                        StoryManager.PlayStory(client, 356);
                    }
                    break;
                case 539: {//Boss Rush 4
                        StoryManager.PlayStory(client, 357);
                    }
                    break;
                case 496: {//Boss Rush 5
                        StoryManager.PlayStory(client, 358);
                    }
                    break;
                case 1786: {//Boggy Wastes Chamber
                        StoryManager.PlayStory(client, 360);
                    }
                    break;
                case 787: {//Boggy Wastes Lair
                        StoryManager.PlayStory(client, 362);
                    }
                    break;
                case 1754: {//Tanren Mines, Dead End
                        StoryManager.PlayStory(client, 425);
                    }
                    break;
                case 1954: {//Tanren Mines Vestibule
                        StoryManager.PlayStory(client, 210);
                    }
                    break;
                case 1136: {//Tanren Mines End
                        StoryManager.PlayStory(client, 214);
                    }
                    break;
            }
        }