Esempio n. 1
0
        };                                        // Используем для отслеживания убийства


        public override void Execute(Map.World world)
        {
            var boss    = world.GetActorBySNO(CapitanDaltynAID);
            var minions = world.GetActorsBySNO(RiseZombieAID);

            if (boss == null)
            {
                Logger.Debug("Не найдено: Капитан Далтин - {0}", CapitanDaltynAID);
                Vector3D   CapitanDaltyn = new Vector3D(51.12595f, 100.2664f, 0.1000305f);
                Vector3D[] Zombie        = new Vector3D[4];
                Zombie[0] = new Vector3D(50.00065f, 125.4087f, 0.1000305f);
                Zombie[1] = new Vector3D(54.88688f, 62.24541f, 0.1000305f);
                Zombie[2] = new Vector3D(86.45869f, 77.09571f, 0.1000305f);
                Zombie[3] = new Vector3D(102.117f, 97.59058f, 0.1000305f);
                world.SpawnMonster(CapitanDaltynAID, CapitanDaltyn);
                foreach (Vector3D point in Zombie)
                {
                    world.SpawnMonster(RiseZombieAID, point);
                }
                boss = world.GetActorBySNO(CapitanDaltynAID);
                CapitanDaltynKiller.Add(boss.DynamicID);
                minions = world.GetActorsBySNO(RiseZombieAID);

                foreach (var minion in minions)
                {
                    CapitanDaltynKiller.Add(minion.DynamicID);
                }
            }
            else
            {
                CapitanDaltynKiller.Add(boss.DynamicID);
            }
            // Пытаемся привязать статус босса!
            boss = world.GetActorBySNO(CapitanDaltynAID);
            boss.Attributes[Net.GS.Message.GameAttribute.Using_Bossbar]   = true;
            boss.Attributes[Net.GS.Message.GameAttribute.InBossEncounter] = true;
            // DOES NOT WORK it should be champion affixes or shit of this kind ...
            // Увеличиваем здоровье босса!
            boss.Attributes[GameAttribute.Hitpoints_Max] = 200f;
            boss.Attributes[GameAttribute.Hitpoints_Cur] = 200f;
            boss.Attributes[GameAttribute.Movement_Scalar_Reduction_Percent] -= 10f;
            boss.Attributes[GameAttribute.Quest_Monster] = true;
            //Запуск отслеживания убийства
            var ListenerDaltyn = Task <bool> .Factory.StartNew(() => OnKillListener(CapitanDaltynKiller, world));

            //Ждём пока убьют
            ListenerDaltyn.ContinueWith(delegate
            {
                world.Game.Quests.Advance(72095);
            });
        }
Esempio n. 2
0
        public override void Execute(Map.World world)
        {
            Logger.Debug(" Conversation done ");


            // starting second conv
            var wrongNPC = world.GetActorBySNO(180900);

            world.SpawnMonster(117365, wrongNPC.Position);
            var RightNPC = world.GetActorBySNO(117365);

            world.Leave(wrongNPC);
            // Idle - 141437
            // 141674-141541-141795-141675
            world.BroadcastIfRevealed(new Mooege.Net.GS.Message.Definitions.Animation.PlayAnimationMessage
            {
                ActorID = RightNPC.DynamicID,
                Field1  = 5,
                Field2  = 0,
                tAnim   = new Net.GS.Message.Fields.PlayAnimationMessageSpec[]
                {
                    new Net.GS.Message.Fields.PlayAnimationMessageSpec()
                    {
                        Duration         = 100,
                        AnimationSNO     = 141674,
                        PermutationIndex = 0,
                        Speed            = 1f
                    }
                }
            }, RightNPC);
            world.BroadcastIfRevealed(new Mooege.Net.GS.Message.Definitions.Animation.PlayAnimationMessage
            {
                ActorID = RightNPC.DynamicID,
                Field1  = 5,
                Field2  = 0,
                tAnim   = new Net.GS.Message.Fields.PlayAnimationMessageSpec[]
                {
                    new Net.GS.Message.Fields.PlayAnimationMessageSpec()
                    {
                        Duration         = 150,
                        AnimationSNO     = 141541,
                        PermutationIndex = 0,
                        Speed            = 1f
                    }
                }
            }, RightNPC);

            StartConversation(world, 181912);
        }
Esempio n. 3
0
        };                                              //We use this for the killeventlistener.

        public override void Execute(Map.World world)
        {
            //The spawning positions for each monster in its wave. Basically, you add here the "number" of mobs, accoring to each vector LaunchWave() will spawn every mob in its position.
            //Vector3D[] WretchedMotherSpawn = { new Vector3D(2766.513f, 2913.982f, 24.04533f) };

            //Somehow shes already spawned when the Inn event finishes.. so we search for the ID and add it to the kill event listener.
            var actor = world.GetActorBySNO(wretchedMotherAID);

            if (actor == null)
            {
                Logger.Debug("Could not find the Wretched Mother ACTOR ID {0}", wretchedMotherAID);
                Vector3D FirstMother = new Vector3D(2766.513f, 2913.982f, 24.04533f);
                world.SpawnMonster(wretchedMotherAID, FirstMother);
                actor = world.GetActorBySNO(wretchedMotherAID);
                monstersAlive1.Add(actor.DynamicID);
            }
            else
            {
                monstersAlive1.Add(actor.DynamicID);
            }

            //Убираем телегу
            var FactorToShoot = world.GetActorBySNO(81699);

            try
            {
                world.Leave(FactorToShoot);
            }
            catch { }

            //FactorToShoot.Destroy();

            //Запуск отслеживания убийства
            var ListenerWretchedMother = Task <bool> .Factory.StartNew(() => OnKillListener(monstersAlive1, world));

            //Ждём пока убьют
            ListenerWretchedMother.ContinueWith(delegate
            {
                // WMQ + 3 WM (group)
                // portal + rumford (group)
                // WMQ + 3 WM (group)

                // force next quest step
                world.Game.Quests.Advance(87700);
                Logger.Debug("Event finished");
                // launch dialog
                StartConversation(world, 156223);

                // position of the wretched mother
                Vector3D[] WretchedMotherPosSpawn = new Vector3D[3];     // too hard 3 elems..
                WretchedMotherPosSpawn[0]         = new Vector3D(2427.788f, 2852.193f, 27.1f);
                WretchedMotherPosSpawn[1]         = new Vector3D(2356.931f, 2528.715f, 27.1f);
                WretchedMotherPosSpawn[2]         = new Vector3D(2119.563f, 2489.693f, 27.1f);

                // spawn 3 wretched mother
                Logger.Debug(" spawn 1  Wretched Mother ");
                world.SpawnMonster(wretchedMotherAID, WretchedMotherPosSpawn[0]);
                Logger.Debug(" spawn 1  Wretched Mother ");
                world.SpawnMonster(wretchedMotherAID, WretchedMotherPosSpawn[1]);
                Logger.Debug(" spawn 1  Wretched Mother ");
                world.SpawnMonster(wretchedMotherAID, WretchedMotherPosSpawn[2]);

                // ugly hack to get all actors with the same snoID..no idea if it is lmegit or if game will crash and summon diablo on my pc...
                var actorsWM = world.GetActorsBySNO(wretchedMotherAID);     // this is the List of wretched mother ACTOR ID
                var actorWQM = world.GetActorBySNO(wretchedMotherQueenAID); // this is the wretched queen mother ACTOR ID

                Logger.Debug(" world contains {0} WM ", actorsWM.Count);

                if (actorsWM.Count > 0)
                {
                    monstersAliveBonus.Add(actorsWM.ElementAt(0).DynamicID); monstersAliveBonus.Add(actorsWM.ElementAt(0).DynamicID); monstersAliveBonus.Add(actorsWM.ElementAt(0).DynamicID);
                    // run killbonus event listener
                    var ListenerWQTask = Task <bool> .Factory.StartNew(() => OnKillBonusListener(monstersAliveBonus, world, bonusTaskID));
                    //Wait for wretched queen mother to be killed.
                    ListenerWQTask.ContinueWith(delegate     //Once killed:
                    {
                        Logger.Debug("Bonus Event Completed ");
                    });
                }
                else
                {
                    Logger.Debug("Could not get/spawn the Wretched Mother ACTOR ID {0}", wretchedMotherAID);
                }
                if (actorWQM != null)
                {
                    // Пытаемся привязать статус босса!
                    actorWQM.Attributes[Net.GS.Message.GameAttribute.Using_Bossbar]   = true;
                    actorWQM.Attributes[Net.GS.Message.GameAttribute.InBossEncounter] = true;
                    //actorWQM.Attributes[Net.GS.Message.GameAttribute.Si]
                    // DOES NOT WORK it should be champion affixes or shit of this kind ...
                    // Увеличиваем здоровье босса!
                    //actorWQM.Q
                    actorWQM.Attributes[GameAttribute.Hitpoints_Max] = 150f;
                    actorWQM.Attributes[GameAttribute.Hitpoints_Cur] = 150f;

                    //Запуск отслеживания убийства королевы
                    var ListenerWQMTask = Task <bool> .Factory.StartNew(() => OnWMQKillListener(actorWQM.DynamicID, world));
                    //Wait for wretched queen mother to be killed.
                    ListenerWQMTask.ContinueWith(delegate            //Once killed:
                    {
                        Logger.Debug(" Wretch Queen Event done !!"); // WretchedQueenIsDead

                        // portal shit
                        var portalActorId         = world.GetActorBySNO(portalAID);
                        var ListenerUsePortalTask = Task <bool> .Factory.StartNew(() => OnUseTeleporterListener(portalActorId.DynamicID, world));
                        //Wait for portal to be used .
                        ListenerUsePortalTask.ContinueWith(delegate                //Once killed:
                        {
                            Logger.Debug(" Waypoint_OldTristram Objective done "); // Waypoint_OldTristram
                        });
                        //conversation with rumford... delegated to another class... since we have a nice conversation system :p
                    });
                }
                else
                {
                    Logger.Debug("Could not find the Wretched Mother QUEEN ACTOR ID {0}", wretchedMotherQueenAID);
                }
            });
        }
Esempio n. 4
0
        };                                              //We use this for the killeventlistener.

        public override void Execute(Map.World world)
        {
            //The spawning positions for each monster in its wave. Basically, you add here the "number" of mobs, accoring to each vector LaunchWave() will spawn every mob in its position.
            //Vector3D[] WretchedMotherSpawn = { new Vector3D(2766.513f, 2913.982f, 24.04533f) };

            //Somehow shes already spawned when the Inn event finishes.. so we search for the ID and add it to the kill event listener.
            var actor = world.GetActorBySNO(wretchedMotherAID);

            if (actor == null)
            {
                Logger.Debug("Could not find the Wretched Mother ACTOR ID {0}", wretchedMotherAID);
            }
            else
            {
                monstersAlive1.Add(actor.DynamicID);

                //Run Kill Event Listener
                var ListenerWretchedMother = Task <bool> .Factory.StartNew(() => OnKillListener(monstersAlive1, world));

                //Wait for wtretchedmother to be killed.
                ListenerWretchedMother.ContinueWith(delegate //Once killed:
                {
                    // WMQ + 3 WM (group)
                    // portal + rumford (group)


                    // WMQ + 3 WM (group)

                    // force next quest step
                    world.Game.Quests.Advance(87700);
                    Logger.Debug("Event finished");
                    // launch dialog
                    StartConversation(world, 156223);

                    // position of the wretched mother
                    Vector3D[] WretchedMotherPosSpawn = new Vector3D[3];  // too hard 3 elems..
                    WretchedMotherPosSpawn[0]         = new Vector3D(2427.788f, 2852.193f, 27.1f);
                    WretchedMotherPosSpawn[1]         = new Vector3D(2356.931f, 2528.715f, 27.1f);
                    WretchedMotherPosSpawn[2]         = new Vector3D(2119.563f, 2489.693f, 27.1f);

                    // spawn 3 wretched mother
                    Logger.Debug(" spawn 1  Wretched Mother ");
                    world.SpawnMonster(wretchedMotherAID, WretchedMotherPosSpawn[0]);
                    Logger.Debug(" spawn 1  Wretched Mother ");
                    world.SpawnMonster(wretchedMotherAID, WretchedMotherPosSpawn[1]);
                    Logger.Debug(" spawn 1  Wretched Mother ");
                    world.SpawnMonster(wretchedMotherAID, WretchedMotherPosSpawn[2]);

                    // ugly hack to get all actors with the same snoID..no idea if it is lmegit or if game will crash and summon diablo on my pc...
                    var actorsWM = world.GetActorsBySNO(wretchedMotherQueenAID); // this is the List of wretched mother ACTOR ID
                    var actorWQM = world.GetActorBySNO(wretchedMotherQueenAID);  // this is the wretched queen mother ACTOR ID

                    Logger.Debug(" world contains {0} WM ", actorsWM.Count);

                    if (actorsWM.Count > 0)
                    {
                        monstersAliveBonus.Add(actorsWM.ElementAt(0).DynamicID); monstersAliveBonus.Add(actorsWM.ElementAt(0).DynamicID); monstersAliveBonus.Add(actorsWM.ElementAt(0).DynamicID);
                        // run killbonus event listener
                        var ListenerWQTask = Task <bool> .Factory.StartNew(() => OnKillBonusListener(monstersAliveBonus, world, bonusTaskID));
                        //Wait for wretched queen mother to be killed.
                        ListenerWQTask.ContinueWith(delegate //Once killed:
                        {
                            Logger.Debug("Bonus Event Completed ");
                        });
                    }
                    else
                    {
                        Logger.Debug("Could not get/spawn the Wretched Mother ACTOR ID {0}", wretchedMotherAID);
                    }
                    if (actorWQM != null)
                    {
                        //Run Kill Event Listener
                        var ListenerWQMTask = Task <bool> .Factory.StartNew(() => OnWMQKillListener(actorWQM.DynamicID, world));
                        //Wait for wretched queen mother to be killed.
                        ListenerWQMTask.ContinueWith(delegate //Once killed:
                        {
                            //world.Game.Quests.Advance(87700);
                            Logger.Debug("Event finished");

                            // portal + rumford (group)

                            // portal shit
                            var portalActorId         = world.GetActorBySNO(portalAID);
                            var ListenerUsePortalTask = Task <bool> .Factory.StartNew(() => OnUseActorListener(portalActorId.DynamicID, world));
                            //Wait for portal to be used .
                            ListenerUsePortalTask.ContinueWith(delegate //Once killed:
                            {
                                Logger.Debug(" Portal used :p");
                            });



                            //conversation with rumford...
                        });
                    }
                    else
                    {
                        Logger.Debug("Could not find the Wretched Mother QUEEN ACTOR ID {0}", wretchedMotherQueenAID);
                    }
                });
            }
        }
Esempio n. 5
0
        public override void Execute(Map.World world)
        {
            var actor = world.GetActorBySNO(wretchedMotherAID);

            if (actor == null)
            {
                Logger.Debug("Could not find the Wretched Mother ACTOR ID {0}", wretchedMotherAID);
                Vector3D FirstMother = new Vector3D(2766.513f, 2913.982f, 24.04533f);
                world.SpawnMonster(wretchedMotherAID, FirstMother);
                actor = world.GetActorBySNO(wretchedMotherAID);
                monstersAlive1.Add(actor.DynamicID);
            }
            else
            {
                monstersAlive1.Add(actor.DynamicID);
            }

            //Убираем телегу
            var FactorToShoot = world.GetActorBySNO(81699);

            try
            {
                world.BroadcastIfRevealed(new PlayAnimationMessage
                {
                    ActorID = FactorToShoot.DynamicID,
                    Field1  = 11,
                    Field2  = 0,
                    tAnim   = new Net.GS.Message.Fields.PlayAnimationMessageSpec[]
                    {
                        new Net.GS.Message.Fields.PlayAnimationMessageSpec()
                        {
                            Duration         = 10,
                            AnimationSNO     = 81701,
                            PermutationIndex = 0,
                            Speed            = 1
                        }
                    }
                }, FactorToShoot);

                FactorToShoot.Attributes[GameAttribute.Deleted_On_Server]    = true;
                FactorToShoot.Attributes[GameAttribute.Could_Have_Ragdolled] = true;
                FactorToShoot.Attributes.BroadcastChangedIfRevealed();
                FactorToShoot.Destroy();
            }
            catch { }

            //Запуск отслеживания убийства
            var ListenerWretchedMother = Task <bool> .Factory.StartNew(() => OnKillListener(monstersAlive1, world));

            //Ждём пока убьют
            ListenerWretchedMother.ContinueWith(delegate
            {
                world.Game.Quests.NotifyQuest(87700, QuestStepObjectiveType.EventReceived, -1);
                world.Game.Quests.NotifyQuest(87700, QuestStepObjectiveType.KillMonster, 108444);
                Logger.Debug("Event finished");

                StartConversation(world, 156223);

                // position of the wretched mother
                Vector3D[] WretchedMotherPosSpawn = new Vector3D[3]; // too hard 3 elems..
                WretchedMotherPosSpawn[0]         = new Vector3D(2427.788f, 2852.193f, 27.1f);
                WretchedMotherPosSpawn[1]         = new Vector3D(2356.931f, 2528.715f, 27.1f);
                WretchedMotherPosSpawn[2]         = new Vector3D(2119.563f, 2489.693f, 27.1f);

                // spawn 3 wretched mother
                Logger.Debug(" spawn 1  Wretched Mother ");
                world.SpawnMonster(wretchedMotherAID, WretchedMotherPosSpawn[0]);
                Logger.Debug(" spawn 1  Wretched Mother ");
                world.SpawnMonster(wretchedMotherAID, WretchedMotherPosSpawn[1]);
                Logger.Debug(" spawn 1  Wretched Mother ");
                world.SpawnMonster(wretchedMotherAID, WretchedMotherPosSpawn[2]);

                // ugly hack to get all actors with the same snoID..no idea if it is lmegit or if game will crash and summon diablo on my pc...
                var actorsWM = world.GetActorsBySNO(wretchedMotherAID);     // this is the List of wretched mother ACTOR ID
                var actorWQM = world.GetActorBySNO(wretchedMotherQueenAID); // this is the wretched queen mother ACTOR ID
                if (actorWQM == null)
                {
                    actorWQM = world.SpawnMonsterWithGet(wretchedMotherQueenAID, new Vector3D(2032.949f, 2771.926f, 40.15685f));
                }

                Logger.Debug(" world contains {0} WM ", actorsWM.Count);

                if (actorsWM.Count > 0)
                {
                    monstersAliveBonus.Add(actorsWM.ElementAt(0).DynamicID); monstersAliveBonus.Add(actorsWM.ElementAt(0).DynamicID); monstersAliveBonus.Add(actorsWM.ElementAt(0).DynamicID);
                    // run killbonus event listener
                    var ListenerWQTask = Task <bool> .Factory.StartNew(() => OnKillBonusListener(monstersAliveBonus, world, bonusTaskID));
                    //Wait for wretched queen mother to be killed.
                    ListenerWQTask.ContinueWith(delegate //Once killed:
                    {
                        Logger.Debug("Bonus Event Completed ");
                    });
                }
                else
                {
                    Logger.Debug("Could not get/spawn the Wretched Mother ACTOR ID {0}", wretchedMotherAID);
                }
                if (actorWQM != null)
                {
                    // Пытаемся привязать статус босса!
                    actorWQM.Attributes[Net.GS.Message.GameAttribute.Using_Bossbar]   = true;
                    actorWQM.Attributes[Net.GS.Message.GameAttribute.InBossEncounter] = true;
                    // Увеличиваем здоровье босса!
                    //actorWQM.Q
                    actorWQM.Attributes[GameAttribute.Hitpoints_Max] = 150f;
                    actorWQM.Attributes[GameAttribute.Hitpoints_Cur] = 150f;

                    //Запуск отслеживания убийства королевы
                    var ListenerWQMTask = Task <bool> .Factory.StartNew(() => OnWMQKillListener(actorWQM.DynamicID, world));
                    //Wait for wretched queen mother to be killed.
                    ListenerWQMTask.ContinueWith(delegate
                    {
                        Logger.Debug(" Wretch Queen Event done !!");

                        // portal shit
                        var portalActorId = world.GetActorBySNO(portalAID);
                        portalActorId.Attributes[Net.GS.Message.GameAttribute.Gizmo_Has_Been_Operated] = false;
                        var ListenerUsePortalTask = Task <bool> .Factory.StartNew(() => OnUseTeleporterListener(portalActorId.DynamicID, world));
                        //Wait for portal to be used .
                        ListenerUsePortalTask.ContinueWith(delegate                //Once killed:
                        {
                            Logger.Debug(" Waypoint_OldTristram Objective done "); // Waypoint_OldTristram
                        });
                    });
                }
                else
                {
                    Logger.Debug("Could not find the Wretched Mother QUEEN ACTOR ID {0}", wretchedMotherQueenAID);
                }
            });
        }