diff --git a/src/DiIiS-NA/D3-GameServer/GSSystem/QuestSystem/QuestEvents/Implementations/Act I/SpawnSkeletons.cs b/src/DiIiS-NA/D3-GameServer/GSSystem/QuestSystem/QuestEvents/Implementations/Act I/SpawnSkeletons.cs new file mode 100644 index 0000000..ff7fe82 --- /dev/null +++ b/src/DiIiS-NA/D3-GameServer/GSSystem/QuestSystem/QuestEvents/Implementations/Act I/SpawnSkeletons.cs @@ -0,0 +1,92 @@ +using DiIiS_NA.Core.Logging; +using DiIiS_NA.GameServer.GSSystem.ActorSystem; +using DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings; +using DiIiS_NA.GameServer.GSSystem.GameSystem; +using DiIiS_NA.GameServer.GSSystem.PlayerSystem; +using DiIiS_NA.GameServer.MessageSystem; +using System.Linq; +using System; +using System.Collections.Generic; +using DiIiS_NA.LoginServer.AccountsSystem; +using DiIiS_NA.GameServer.GSSystem.QuestSystem.QuestEvents; +using DiIiS_NA.GameServer.Core.Types.Math; +using DiIiS_NA.Core.Helpers.Math; +using DiIiS_NA.GameServer.Core.Types.TagMap; +using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Animation; +using System.Threading.Tasks; +using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Base; +using DiIiS_NA.D3_GameServer.Core.Types.SNO; + +namespace DiIiS_NA.GameServer.GSSystem.QuestSystem.QuestEvents.Implementations +{ + class SpawnSkeletons : QuestEvent + { + //ActorID: 0x7A3100DD + //ZombieSkinny_A_LeahInn.acr (2050031837) + //ActorSNOId: 0x00031971:ZombieSkinny_A_LeahInn.acr + + private static readonly Logger Logger = LogManager.CreateLogger(); + + public SpawnSkeletons() + : base(151124) + { + } + + public override void Execute(MapSystem.World world) + { + if (world.Game.Empty) return; + //Logger.Debug("SpawnSkeletons event started"); + Task.Delay(1000).ContinueWith(delegate + { + foreach (var plr in world.Game.Players.Values) + plr.InGameClient.SendMessage(new MessageSystem.Message.Definitions.Camera.CameraCriptedSequenceStartMessage() { Activate = true }); + var SkeletonKing_Bridge = world.GetActorBySNO(ActorSno._trdun_skeletonking_bridge_active); + Task.Delay(1000).ContinueWith(delegate + { + foreach (var plr in world.Game.Players.Values) + plr.InGameClient.SendMessage(new MessageSystem.Message.Definitions.Camera.CameraFocusMessage() { ActorID = (int)SkeletonKing_Bridge.DynamicID(plr), Duration = 1f, Snap = false }); + + StartConversation(world, 17923); + + SkeletonKing_Bridge.PlayAnimation(5, (AnimationSno)SkeletonKing_Bridge.AnimationSet.TagMapAnimDefault[AnimationSetKeys.Opening], 1f); + + world.BroadcastIfRevealed(plr => new SetIdleAnimationMessage + { + ActorID = SkeletonKing_Bridge.DynamicID(plr), + AnimationSNO = AnimationSetKeys.Open.ID, + }, SkeletonKing_Bridge); + + Task.Delay(3000).ContinueWith(delegate + { + foreach (var plr in world.Game.Players.Values) + { + plr.InGameClient.SendMessage(new BoolDataMessage(Opcodes.CameraTriggerFadeToBlackMessage) { Field0 = true }); + plr.InGameClient.SendMessage(new SimpleMessage(Opcodes.CameraSriptedSequenceStopMessage) { }); + } + }); + }); + }); + + + + var spawner = world.GetActorBySNO(ActorSno._trdun_rescuecainskelspawner); + while (spawner != null) + { + var monster = ActorSno._skeletonking_shield_skeleton; + world.SpawnMonster(monster, spawner.Position); + spawner.Destroy(); + spawner = world.GetActorBySNO(ActorSno._trdun_rescuecainskelspawner); + } + } + + private bool StartConversation(MapSystem.World world, Int32 conversationId) + { + foreach (var player in world.Players) + { + player.Value.Conversations.StartConversation(conversationId); + } + return true; + } + + } +}