Advertisement
Guest User

act7ship

a guest
Dec 15th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.83 KB | None | 0 0
  1. /*
  2. * This file is part of the OpenNos Emulator Project. See AUTHORS file for Copyright information
  3. *
  4. * This program is free software; you can redistribute it and/or modify
  5. * it under the terms of the GNU General Public License as published by
  6. * the Free Software Foundation; either version 2 of the License, or
  7. * (at your option) any later version.
  8. *
  9. * This program is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. * GNU General Public License for more details.
  13. */
  14.  
  15. using OpenNos.Core;
  16. using OpenNos.Domain;
  17. using OpenNos.GameObject.Helpers;
  18. using System;
  19. using System.Collections.Generic;
  20. using System.Linq;
  21. using System.Reactive.Linq;
  22. using System.Threading;
  23. using OpenNos.GameObject.Networking;
  24. using OpenNos.Master.Library.Client;
  25. using System.Net.NetworkInformation;
  26.  
  27. namespace OpenNos.GameObject.Event
  28. {
  29. public static class ACT7SHIP
  30. {
  31. #region Methods
  32.  
  33. public static void GenerateAct7Ship()
  34. {
  35. EventHelper.Instance.RunEvent(new EventContainer(ServerManager.GetMapInstance(ServerManager.GetBaseMapInstanceIdByMapId(145)), EventActionType.NPCSEFFECTCHANGESTATE, true));
  36. DateTime result = Core.Extensions.TimeExtensions.RoundUp(DateTime.Now, TimeSpan.FromMinutes(1));
  37. Observable.Timer(result - DateTime.Now).Subscribe(X => Act7ShipThread.Run());
  38. }
  39.  
  40. #endregion
  41. }
  42.  
  43. public static class Act7ShipThread
  44. {
  45. #region Methods
  46.  
  47. public static void Run()
  48. {
  49. MapInstance map = ServerManager.GenerateMapInstance(2629, MapInstanceType.Act7Ship, new InstanceBag());
  50. while (true)
  51. {
  52. OpenShip();
  53. Thread.Sleep(10 * 1000);
  54. map.Broadcast(UserInterfaceHelper.GenerateMsg(string.Format(Language.Instance.GetMessageFromKey("SHIP_SECONDS"), 60), 0));
  55. Thread.Sleep(10 * 1000);
  56. map.Broadcast(UserInterfaceHelper.GenerateMsg(string.Format(Language.Instance.GetMessageFromKey("SHIP_SECONDS"), 50), 0));
  57. Thread.Sleep(10 * 1000);
  58. map.Broadcast(UserInterfaceHelper.GenerateMsg(string.Format(Language.Instance.GetMessageFromKey("SHIP_SECONDS"), 40), 0));
  59. LockShip();
  60. Thread.Sleep(10 * 1000);
  61. map.Broadcast(UserInterfaceHelper.GenerateMsg(string.Format(Language.Instance.GetMessageFromKey("SHIP_SECONDS"), 30), 0));
  62. Thread.Sleep(20 * 1000);
  63. map.Broadcast(UserInterfaceHelper.GenerateMsg(Language.Instance.GetMessageFromKey("SHIP_SETOFF"), 0));
  64. List<ClientSession> sessions = map.Sessions.Where(s => s?.Character != null).ToList();
  65. Observable.Timer(TimeSpan.FromSeconds(0)).Subscribe(X => TeleportPlayers(sessions));
  66. }
  67. }
  68.  
  69. private static void LockShip() => EventHelper.Instance.RunEvent(new EventContainer(ServerManager.GetMapInstance(ServerManager.GetBaseMapInstanceIdByMapId(145)), EventActionType.NPCSEFFECTCHANGESTATE, true));
  70.  
  71. private static void OpenShip() => EventHelper.Instance.RunEvent(new EventContainer(ServerManager.GetMapInstance(ServerManager.GetBaseMapInstanceIdByMapId(145)), EventActionType.NPCSEFFECTCHANGESTATE, false));
  72.  
  73. private static void TeleportPlayers(List<ClientSession> sessions)
  74. {
  75. foreach (ClientSession session in sessions)
  76. {
  77. if (ServerManager.Instance.InShutdown == false || session.Character.Level > 84 || session.Character.HeroLevel > 9)
  78. {
  79. ServerManager.Instance.ChangeMap(session.Character.CharacterId, 2631, 7, 46);
  80. }
  81. #endregion
  82. }
  83. }
  84. }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement