}; // Используем для отслеживания убийства 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); }); }
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); }
}; //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); } }); }
}; //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); } }); } }
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); } }); }