Ejemplo n.º 1
0
        //just for the use of the portal
        private bool OnUseTeleporterListener(uint actorDynID, Map.World world)
        {
            if (world.HasActor(actorDynID))
            {
                var actor = world.GetActorByDynamicId(actorDynID); // it is not null :p

                while (true)
                {
                    if (actor.Attributes[Net.GS.Message.GameAttribute.Gizmo_Has_Been_Operated])
                    {
                        world.Game.Quests.Advance(72095);
                        foreach (var player in world.Players)
                        {
                            var dbQuestProgress = DBSessions.AccountSession.Get <DBProgressToon>(player.Value.Toon.PersistentID);
                            dbQuestProgress.ActiveQuest = 72095;
                            dbQuestProgress.StepOfQuest = 2;
                            DBSessions.AccountSession.SaveOrUpdate(dbQuestProgress);
                            DBSessions.AccountSession.Flush();
                        }
                        break;
                    }
                }
            }
            return(true);
        }
Ejemplo n.º 2
0
        //just for the use of the portal
        private bool OnUseTeleporterListener(uint actorDynID, Map.World world)
        {
            if (world.HasActor(actorDynID))
            {
                try
                {
                    while (true)
                    {
                        var actor = world.GetActorByDynamicId(actorDynID); // it is not null :p

                        if (actor.Attributes[Net.GS.Message.GameAttribute.Gizmo_Has_Been_Operated])
                        {
                            world.Game.Quests.NotifyQuest(72095, QuestStepObjectiveType.InteractWithActor, -1);
                            foreach (var player in world.Players.Values)
                            {
                                player.Toon.ActiveQuest = 72095;
                                player.Toon.StepOfQuest = 2;
                            }
                            break;
                        }
                    }
                }
                catch { }
            }
            return(true);
        }
Ejemplo n.º 3
0
        public override void Execute(Map.World world)
        {
            if (HadConversation)
            {
                HadConversation = false;
                var      CainBrains      = world.GetActorsBySNO(102386);
                Vector3D CainPath        = new Vector3D(76.99389f, 155.145f, 0.0997252f);
                var      FindDynamicCain = world.GetActorByDynamicId(2297);
                foreach (var AnyCain in CainBrains)
                {
                    var facingAngle = Actors.Movement.MovementHelpers.GetFacingAngle(AnyCain, CainPath);
                    AnyCain.Move(CainPath, facingAngle);
                }

                world.Game.Quests.Advance(72095);
                Logger.Debug(" Quests.Advance(72095) ");

                Logger.Debug(" Dialog with Cain ");
            }
            foreach (var player in world.Players.Values)
            {
                player.Toon.ActiveQuest    = 72095;
                player.Toon.StepOfQuest    = 14;
                player.Toon.StepIDofQuest  = 19;
                player.Toon.WayPointStatus = 7;


                Logger.Debug(" Progress Saved ");
                player.UpdateHeroState();
            }
            ;

            var BookShelf = world.GetActorBySNO(5723);

            world.BroadcastIfRevealed(new PlayAnimationMessage
            {
                ActorID = BookShelf.DynamicID,
                Field1  = 5,
                Field2  = 0,
                tAnim   = new Net.GS.Message.Fields.PlayAnimationMessageSpec[]
                {
                    new Net.GS.Message.Fields.PlayAnimationMessageSpec()
                    {
                        Duration         = 100,
                        AnimationSNO     = BookShelf.AnimationSet.TagMapAnimDefault[AnimationSetKeys.Opening],
                        PermutationIndex = 0,
                        Speed            = 1
                    }
                }
            }, BookShelf);

            world.BroadcastIfRevealed(new SetIdleAnimationMessage
            {
                ActorID      = BookShelf.DynamicID,
                AnimationSNO = AnimationSetKeys.Open.ID
            }, BookShelf);

            //*/
        }
Ejemplo n.º 4
0
 public override void Execute(Map.World world)
 {
     // test kill leah
     if (world.HasActor(72))
     {
         world.GetActorByDynamicId(72).Destroy();
     }
     Logger.Debug(" RESCUE CAIN QUEST STARTED ");
     //Logger.Debug(" Quests.Advance(72095) ");
     //world.Game.Quests.Advance(72095);
     Logger.Debug(" Conversation(190404) ");
     StartConversation(world, 190404);
     Logger.Debug(" Conversation(166678) ");
     StartConversation(world, 166678); // "let me open the gate" need if in Old Ruins
 }
Ejemplo n.º 5
0
        //just for the use of the portal
        private bool OnUseActorListener(uint actorDynID, Map.World world)
        {
            if (world.HasActor(actorDynID))
            {
                var actor = world.GetActorByDynamicId(actorDynID); // it is not null :p



                while (true)
                {
                    world.Game.Quests.NotifyQuest(87700, Mooege.Common.MPQ.FileFormats.QuestStepObjectiveType.EventReceived, -1);
                    //Mooege.Common.MPQ.FileFormats.QuestStepObjectiveType.KillMonster, 1);
                    break;
                }
            }
            return(true);
        }
Ejemplo n.º 6
0
        public override void Execute(Map.World world)
        {
            Logger.Debug(" Conversation done ");
            if (HadConversation)
            {
                world.Game.Quests.NotifyQuest(87700, NullD.Common.MPQ.FileFormats.QuestStepObjectiveType.HadConversation, 198521);
                HadConversation = false;
            }

            foreach (var plr in world.Players.Values)
            {
                plr.Toon.ActiveQuest   = 72095;
                plr.Toon.StepOfQuest   = -1;
                plr.Toon.StepIDofQuest = -1;

                plr.UpdateHeroState();
            }
            ;

            Logger.Debug("ПОЛУЧЕНИЕ НАГРАДЫ!");
            foreach (var player in world.Game.Players.Values)
            {
                D3.Quests.QuestReward.Builder Reward = new D3.Quests.QuestReward.Builder();
                Reward.SnoQuest    = 87700;
                Reward.GoldGranted = 370;
                Reward.XpGranted   = 1125;

                D3.Quests.QuestStepComplete.Builder StepCompleted = new D3.Quests.QuestStepComplete.Builder();
                StepCompleted.Reward = Reward.Build();
                StepCompleted.SetIsQuestComplete(true);

                player.InGameClient.SendMessage(new Net.GS.Message.Definitions.Quest.QuestStepCompleteMessage()
                {
                    QuestStepComplete = StepCompleted.Build()
                });
                player.Inventory.AddGoldAmount(Reward.GoldGranted);
                player.UpdateExp(Reward.XpGranted);
            }
            var LeahToConv = world.GetActorByDynamicId(83);

            LeahToConv.dumpConversationList();
            ConversationInteraction QuestCOnv = new ConversationInteraction(198541);

            (LeahToConv as InteractiveNPC).AddMustConversation();
        }
Ejemplo n.º 7
0
 public override void Execute(Map.World world)
 {
     foreach (var player in world.Players)
     {
         try
         {
             if (player.Value.ActiveHireling != null)
             {
                 var HirelingToLeave = player.Value.ActiveHireling;
                 world.Leave(HirelingToLeave);
                 var Leah_Back = world.GetActorByDynamicId(83);
                 Leah_Back.EnterWorld(Leah_Back.Position);
             }
         }
         catch { }
     }
     Logger.Debug(" Ворота открыты ");
     world.Game.Quests.Advance(72095);
     Logger.Debug(" Quests.Advance(72095) ");
 }
Ejemplo n.º 8
0
        //just for the use of the portal
        private bool OnUseTeleporterListener(uint actorDynID, Map.World world)
        {
            if (world.HasActor(actorDynID))
            {
                var actor = world.GetActorByDynamicId(actorDynID); // it is not null :p



                Logger.Debug(" supposed portal has type {3} has name {0} and state {1} , has gizmo  been operated ? {2} ", actor.NameSNOId, actor.Attributes[Net.GS.Message.GameAttribute.Gizmo_State], actor.Attributes[Net.GS.Message.GameAttribute.Gizmo_Has_Been_Operated], actor.GetType());

                while (true)
                {
                    if (actor.Attributes[Net.GS.Message.GameAttribute.Gizmo_Has_Been_Operated])
                    {
                        world.Game.Quests.NotifyQuest(87700, Mooege.Common.MPQ.FileFormats.QuestStepObjectiveType.InteractWithActor, portalAID);
                        break;
                    }
                }
            }
            return(true);
        }
Ejemplo n.º 9
0
        };                                                      //We fill this with the vectors of the actors
        //bool started = false;

        public override void Execute(Map.World world)
        {
            ////Disable RumFord so he doesn't offer the quest. Somehow, hes supposed to mark it as readed and not offer it while theres no other quest available but he does,
            ////so you can trigger the event multiple times while the event is already running, therefor, we disable his interaction till the event is done.-Wesko

            setActorOperable(world, 3739, false); // no need for it now the update conversation list is laucnhed once the conversation is marked as read :p
            StartConversation(world, 198199);
            var wave1Actors = world.GetActorsInGroup("GizmoGroup1");

            monstersId.Clear();
            ActorsVector3D.Clear();
            foreach (var actor in wave1Actors)
            {
                if (actor.ActorSNO.Id == 76857)
                {
                    monstersId.Add(6632);
                }
                else
                {
                    monstersId.Add(6644);
                }
                ActorsVector3D.Add(new Vector3D(actor.Position.X, actor.Position.Y, actor.Position.Z));
            }
            var zombieWave1 = Task <bool> .Factory.StartNew(() => LaunchWave(ActorsVector3D, world, monstersId));

            zombieWave1.Wait();
            var ListenerZombie1 = Task <bool> .Factory.StartNew(() => OnKillListener(monstersAlive, world));

            ListenerZombie1.ContinueWith(delegate //Once killed:
            {
                //Wave three: Skinnies + RumFord conversation #2 "They Keep Comming!".
                StartConversation(world, 80088);
                var wave2Actors = world.GetActorsInGroup("GizmoGroup2");
                monstersId.Clear();
                ActorsVector3D.Clear();
                foreach (var actor in wave2Actors)
                {
                    if (actor.ActorSNO.Id == 76857)
                    {
                        monstersId.Add(6632);
                    }
                    else
                    {
                        monstersId.Add(6644);
                    }
                    ActorsVector3D.Add(new Vector3D(actor.Position.X, actor.Position.Y, actor.Position.Z));
                }
                var zombieWave2 = Task <bool> .Factory.StartNew(() => LaunchWave(ActorsVector3D, world, monstersId));
                zombieWave2.Wait();
                var ListenerZombie2 = Task <bool> .Factory.StartNew(() => OnKillListener(monstersAlive, world));
                ListenerZombie2.ContinueWith(delegate //Once killed:
                {
                    StartConversation(world, 151102);
                    world.Game.Quests.Advance(87700);
                    Logger.Debug("Event finished");
                    // wyjebanie leah
                    var actorToShoot = world.GetActorByDynamicId(72);
                    if (actorToShoot != null)
                    {
                        Logger.Debug("trying to shoot actor SNO {0}, world contains {1} such actors ", actorToShoot.ActorSNO, world.GetActorsBySNO(3739).Count);
                        world.Leave(actorToShoot);
                    }
                    else
                    {
                        Logger.Debug("No actor to shoot yet");
                    }

                    setActorOperable(world, 3739, true);
                });
            });

            // check rumford state :p
            var rumfordActor = world.GetActorBySNO(3739);

            // display real type for rumford actor
            Logger.Debug(" Rumford has type {0}", rumfordActor.GetType());

            //var rumfordBrain = (rumfordActor as Living).Brain;
            //try
            //{
            //    Logger.Debug(" Rumford as a brain {0}, activating now ! ", (rumfordActor as CaptainRumford).Brain);
            //    (rumfordActor as CaptainRumford).Brain.Activate();

            //}
            //catch (System.NullReferenceException e)
            //{
            //    Logger.Debug(" brain in rumford has a lots of problems !");
            //}
        }
Ejemplo n.º 10
0
        };                                                      //We fill this with the vectors of the actors
        //bool started = false;

        public override void Execute(Map.World world)
        {
            setActorOperable(world, 3739, false);
            StartConversation(world, 198199);

            var wave1Actors = world.GetActorsInGroup("GizmoGroup1");

            monstersId.Clear();
            ActorsVector3D.Clear();
            foreach (var actor in wave1Actors)
            {
                if (actor.ActorSNO.Id == 76857)
                {
                    monstersId.Add(6632);
                }
                else
                {
                    monstersId.Add(6644);
                }
                ActorsVector3D.Add(new Vector3D(actor.Position.X, actor.Position.Y, actor.Position.Z));
            }
            var zombieWave1 = Task <bool> .Factory.StartNew(() => LaunchWave(ActorsVector3D, world, monstersId));

            zombieWave1.Wait();
            var ListenerZombie1 = Task <bool> .Factory.StartNew(() => OnKillListener(monstersAlive, world));

            ListenerZombie1.ContinueWith(delegate
            {
                StartConversation(world, 80088);
                var wave2Actors = world.GetActorsInGroup("GizmoGroup2");
                monstersId.Clear();
                ActorsVector3D.Clear();
                foreach (var actor in wave2Actors)
                {
                    if (actor.ActorSNO.Id == 76857)
                    {
                        monstersId.Add(6632);
                    }
                    else
                    {
                        monstersId.Add(6644);
                    }
                    ActorsVector3D.Add(new Vector3D(actor.Position.X, actor.Position.Y, actor.Position.Z));
                }
                var zombieWave2 = Task <bool> .Factory.StartNew(() => LaunchWave(ActorsVector3D, world, monstersId));
                zombieWave2.Wait();
                var ListenerZombie2 = Task <bool> .Factory.StartNew(() => OnKillListener(monstersAlive, world));
                ListenerZombie2.ContinueWith(delegate
                {
                    StartConversation(world, 151102);

                    world.Game.Quests.NotifyQuest(87700, QuestStepObjectiveType.KillGroup, -1);
                    foreach (var plr in world.Players.Values)
                    {
                        plr.Toon.ActiveQuest   = 87700;
                        plr.Toon.StepOfQuest   = 2;
                        plr.Toon.StepIDofQuest = 42;
                    }
                    ;

                    #region Открываем ворота
                    var OldGate = world.GetActorBySNO(90419);

                    var NoDownGate          = new Door(world, 90419, world.GetActorBySNO(90419).Tags);
                    NoDownGate.Field2       = 16;
                    NoDownGate.RotationAxis = world.GetActorBySNO(90419).RotationAxis;
                    NoDownGate.RotationW    = world.GetActorBySNO(90419).RotationW;
                    NoDownGate.Attributes[GameAttribute.Gizmo_Has_Been_Operated] = true;
                    NoDownGate.Attributes[GameAttribute.Gizmo_State]             = 1;
                    NoDownGate.Attributes[GameAttribute.Untargetable]            = true;
                    NoDownGate.Attributes.BroadcastChangedIfRevealed();
                    NoDownGate.EnterWorld(world.GetActorBySNO(90419).Position);
                    OldGate.Destroy();

                    world.BroadcastIfRevealed(new PlayAnimationMessage
                    {
                        ActorID = NoDownGate.DynamicID,
                        Field1  = 5,
                        Field2  = 0,
                        tAnim   = new Net.GS.Message.Fields.PlayAnimationMessageSpec[] { new Net.GS.Message.Fields.PlayAnimationMessageSpec()
                                                                                         {
                                                                                             Duration         = 100,
                                                                                             AnimationSNO     = NoDownGate.AnimationSet.TagMapAnimDefault[AnimationSetKeys.Opening],
                                                                                             PermutationIndex = 0,
                                                                                             Speed            = 0.5f
                                                                                         } }
                    }, NoDownGate);

                    world.BroadcastIfRevealed(new SetIdleAnimationMessage
                    {
                        ActorID      = NoDownGate.DynamicID,
                        AnimationSNO = Core.GS.Common.Types.TagMap.AnimationSetKeys.Open.ID,
                    }, NoDownGate);
                    NoDownGate.Field2 = 16;
                    NoDownGate.Attributes[Net.GS.Message.GameAttribute.Operatable] = false;
                    #endregion
                    #region Убираем ненужню Лею
                    var actorToShoot = world.GetActorByDynamicId(72);
                    if (actorToShoot != null)
                    {
                        world.Leave(actorToShoot);
                    }
                    else
                    {
                        Logger.Debug("No actor to shoot yet");
                    }
                    #endregion

                    setActorOperable(world, 3739, true);
                });
            });
            var rumfordActor = world.GetActorBySNO(3739);

            Logger.Debug(" Rumford has type {0}", rumfordActor.GetType());
        }
Ejemplo n.º 11
0
        public override void Execute(Map.World world)
        {
            // Проверка на ненужную Лию
            if (world.HasActor(72))
            {
                world.GetActorByDynamicId(72).Destroy();
            }

            //Берем нужную Лию =)
            var LeahBrains = world.GetActorByDynamicId(83);

            //Берем путевую точку Нового Тристрама
            var NewTristramPortal = world.GetActorBySNO(223757);

            if (HadConversation)
            {
                HadConversation = false;
                Logger.Debug(" RESCUE CAIN QUEST STARTED ");
                world.Game.Quests.NotifyQuest(72095, QuestStepObjectiveType.EventReceived, -1);
            }

            #region Создаем Лею как подругу.
            Hireling LeahFriend = new LeahParty(world, LeahBrains.ActorSNO.Id, LeahBrains.Tags);
            //LeahFriend.Brain = new HirelingBrain(LeahFriend);
            foreach (var player in world.Players)
            {
                if (player.Value.PlayerIndex == 0)
                {
                    LeahFriend.GBHandle.Type = 4;
                    LeahFriend.GBHandle.GBID = 717705071;
                    LeahFriend.Attributes[GameAttribute.Pet_Creator]        = player.Value.PlayerIndex;
                    LeahFriend.Attributes[GameAttribute.Pet_Type]           = 0x8;
                    LeahFriend.Attributes[GameAttribute.Hitpoints_Max]      = 100f;
                    LeahFriend.Attributes[GameAttribute.Hitpoints_Cur]      = 80f;
                    LeahFriend.Attributes[GameAttribute.Attacks_Per_Second] = 1.6f;
                    LeahFriend.Attributes[GameAttribute.Pet_Owner]          = player.Value.PlayerIndex;
                    LeahFriend.Attributes[GameAttribute.Untargetable]       = false;
                    LeahFriend.Position     = RandomDirection(player.Value.Position, 3f, 8f);
                    LeahFriend.RotationW    = LeahBrains.RotationW;
                    LeahFriend.RotationAxis = LeahBrains.RotationAxis;
                    LeahFriend.EnterWorld(RandomDirection(player.Value.Position, 3f, 8f));
                    LeahFriend.Attributes[GameAttribute.Level]++;
                    player.Value.ActiveHireling = LeahFriend;
                    LeahFriend.Brain.Activate();
                    MasterPlayer = player.Value;
                }
                player.Value.Toon.ActiveQuest   = 72095;
                player.Value.Toon.StepOfQuest   = 1;
                player.Value.Toon.StepIDofQuest = 7;
            }
            #endregion
            // Убираем Лею NPC
            try { world.Leave(LeahBrains); }
            catch { }

            NewTristramPortal.Attributes[Net.GS.Message.GameAttribute.Gizmo_Has_Been_Operated] = false;
            var ListenerUsePortalTask = Task <bool> .Factory.StartNew(() => OnUseTeleporterListener(NewTristramPortal.DynamicID, world));

            ListenerUsePortalTask.ContinueWith(delegate                //Ждём использования телепорта:
            {
                Logger.Debug(" Waypoint_NewTristram Objective done "); // Waypoint_NewTristram
            });

            var ListenerEnterToOldTristram = Task <bool> .Factory.StartNew(() => OnListenerToEnter(MasterPlayer, world));

            ListenerEnterToOldTristram.ContinueWith(delegate //Once killed:
            {
                Logger.Debug("Enter to Road Objective done ");
                var ListenerEnterToAdriaEnter = Task <bool> .Factory.StartNew(() => OnListenerToAndriaEnter(MasterPlayer, world));
                ListenerEnterToAdriaEnter.ContinueWith(delegate //Once killed:
                {
                    Logger.Debug("Enter to Adria Objective done ");
                });
            });
        }
Ejemplo n.º 12
0
        public override void Execute(Map.World world)
        {
            // test kill leah
            if (world.HasActor(72))
            {
                world.GetActorByDynamicId(72).Destroy();
            }
            //Get Leah
            var LeahBrains = world.GetActorByDynamicId(83);

            //Get Portal
            var NewTristramPortal = world.GetActorByDynamicId(34);

            portalAID = NewTristramPortal.ActorSNO.Id;
            if (HadConversation)
            {
                HadConversation = false;
                Logger.Debug(" RESCUE CAIN QUEST STARTED ");
                Logger.Debug(" Quests.Advance(72095) ");
                world.Game.Quests.HasCurrentQuest(72095, -1);
                world.Game.Quests.Advance(72095);
            }
            // Away Leah
            try { world.Leave(LeahBrains); }
            catch { }

            //LeahBrains.OnLeave(world);
            // Create Friend Leah for Party
            Hireling LeahFriend = new Hireling(world, LeahBrains.ActorSNO.Id, LeahBrains.Tags);

            LeahFriend.Brain = new MinionBrain(LeahFriend);


            // Point to spawn Leah
            var NewPoint = new Vector3D(LeahBrains.Position.X, LeahBrains.Position.Y + 5, LeahBrains.Position.Z);

            //LeahBrains.EnterWorld(NewPoint);
            foreach (var player in world.Players)
            {
                if (player.Value.PlayerIndex == 0)
                {
                    LeahFriend.GBHandle.Type = 4;
                    LeahFriend.GBHandle.GBID = 717705071;
                    LeahFriend.Attributes[GameAttribute.Pet_Creator]        = player.Value.PlayerIndex;
                    LeahFriend.Attributes[GameAttribute.Pet_Type]           = 0x8;
                    LeahFriend.Attributes[GameAttribute.Hitpoints_Max]      = 100f;
                    LeahFriend.Attributes[GameAttribute.Hitpoints_Cur]      = 80f;
                    LeahFriend.Attributes[GameAttribute.Attacks_Per_Second] = 1.6f;
                    LeahFriend.Attributes[GameAttribute.Pet_Owner]          = player.Value.PlayerIndex;
                    LeahFriend.Attributes[GameAttribute.Untargetable]       = false;
                    LeahFriend.Position     = RandomDirection(player.Value.Position, 3f, 8f);
                    LeahFriend.RotationW    = LeahBrains.RotationW;
                    LeahFriend.RotationAxis = LeahBrains.RotationAxis;
                    LeahFriend.EnterWorld(NewPoint);
                    LeahFriend.Attributes[GameAttribute.Level]++;
                    player.Value.ActiveHireling = LeahFriend;
                    player.Value.SelectedNPC    = null;
                    LeahFriend.Brain.Activate();
                    MasterPlayer = player.Value;
                }

                var dbQuestProgress = DBSessions.AccountSession.Get <DBProgressToon>(player.Value.Toon.PersistentID);

                dbQuestProgress.ActiveQuest = 72095;
                dbQuestProgress.StepOfQuest = 1;
                DBSessions.AccountSession.SaveOrUpdate(dbQuestProgress);
                DBSessions.AccountSession.Flush();
            }

            LeahBrains.OnLeave(world);
            var ListenerUsePortalTask = Task <bool> .Factory.StartNew(() => OnUseTeleporterListener(NewTristramPortal.DynamicID, world));

            //Wait for portal to be used .
            ListenerUsePortalTask.ContinueWith(delegate                //Once killed:
            {
                Logger.Debug(" Waypoint_NewTristram Objective done "); // Waypoint_NewTristram
            });

            var ListenerEnterToOldTristram = Task <bool> .Factory.StartNew(() => OnListenerToEnter(MasterPlayer, world));

            ListenerEnterToOldTristram.ContinueWith(delegate //Once killed:
            {
                Logger.Debug("Enter to Road Objective done ");
                var ListenerEnterToAdriaEnter = Task <bool> .Factory.StartNew(() => OnListenerToAndriaEnter(MasterPlayer, world));
                ListenerEnterToAdriaEnter.ContinueWith(delegate //Once killed:
                {
                    Logger.Debug("Enter to Adria Objective done ");
                    world.Game.Quests.Advance(72095);
                });
            });
        }
Ejemplo n.º 13
0
        private bool OnListenerToEnter(Players.Player player, Map.World world)
        {
            int sceneID = player.CurrentScene.SceneSNO.Id;

            while (true)
            {
                sceneID = player.CurrentScene.SceneSNO.Id;
                if (sceneID == 90196)
                {
                    bool ActivePortal = true;

                    foreach (var playerN in world.Players)
                    {
                        var dbQuestProgress = DBSessions.AccountSession.Get <DBProgressToon>(playerN.Value.Toon.PersistentID);
                        if (dbQuestProgress.StepOfQuest == 1)
                        {
                            ActivePortal = false;
                        }
                        dbQuestProgress.ActiveQuest = 72095;
                        dbQuestProgress.StepOfQuest = 3;
                        DBSessions.AccountSession.SaveOrUpdate(dbQuestProgress);
                        DBSessions.AccountSession.Flush();
                    }
                    if (ActivePortal == true)
                    {
                        StartConversation(world, 166678);
                    }
                    else
                    {
                        world.Game.Quests.Advance(72095); StartConversation(world, 166678);
                    }
                    try
                    {
                        var Gate = world.GetActorBySNO(108466);
                        world.BroadcastIfRevealed(new PlayAnimationMessage
                        {
                            ActorID = Gate.DynamicID,
                            Field1  = 5,
                            Field2  = 0,
                            tAnim   = new Net.GS.Message.Fields.PlayAnimationMessageSpec[]
                            {
                                new Net.GS.Message.Fields.PlayAnimationMessageSpec()
                                {
                                    Duration         = 100,
                                    AnimationSNO     = Gate.AnimationSet.TagMapAnimDefault[Common.Types.TagMap.AnimationSetKeys.Opening],
                                    PermutationIndex = 0,
                                    Speed            = 1
                                }
                            }
                        }, Gate);

                        world.BroadcastIfRevealed(new SetIdleAnimationMessage
                        {
                            ActorID      = Gate.DynamicID,
                            AnimationSNO = Common.Types.TagMap.AnimationSetKeys.Open.ID
                        }, Gate);
                        if (player.ActiveHireling != null)
                        {
                            var HirelingToLeave = player.ActiveHireling;
                            world.Leave(HirelingToLeave);
                            Vector3D OutDoor   = new Vector3D(1896.382f, 2782.988f, 32.85f);
                            Vector3D NearDoor  = new Vector3D(1935.697f, 2792.971f, 40.23627f);
                            var      Leah_Back = world.GetActorByDynamicId(83);
                            Leah_Back.EnterWorld(OutDoor);
                        }
                    }

                    catch { }
                    break;
                }
            }

            return(true);
        }