public void Execute() { IEnumerable <IWowPlayer> friendsAroundMe = Bot.GetNearFriends <IWowPlayer>(Bot.Player.Position, 24.0f) .Where(e => e.Guid != Bot.Wow.PlayerGuid && Bot.Objects.PartymemberGuids.Contains(e.Guid)); if (friendsAroundMe.Any() && Rnd.NextDouble() > 0.5) { IWowPlayer player = friendsAroundMe.ElementAt(Rnd.Next(0, friendsAroundMe.Count())); if (Bot.Wow.TargetGuid != player.Guid) { Bot.Wow.ChangeTarget(player.Guid); Bot.Wow.FacePosition(Bot.Player.BaseAddress, Bot.Player.Position, player.Position, true); } Bot.Wow.SendChatMessage($"/{EmotesWithInteraction[Rnd.Next(0, EmotesWithInteraction.Count)]}"); } else { Bot.Wow.SendChatMessage($"/{Emotes[Rnd.Next(0, Emotes.Count)]}"); } }
public void Combat() { IWowPlayer weakestPlayer = Bot.GetNearEnemies <IWowPlayer>(Bot.Player.Position, 30.0f).OrderBy(e => e.Health).FirstOrDefault(); if (weakestPlayer != null) { double distance = weakestPlayer.Position.GetDistance(Bot.Player.Position); double threshold = Bot.CombatClass.IsMelee ? 3.0 : 28.0; if (distance > threshold) { Bot.Movement.SetMovementAction(MovementAction.Move, weakestPlayer.Position); } else if (CombatEvent.Run()) { // StateMachine.Get<StateCombat>().Mode = CombatMode.Force; Bot.Wow.ChangeTarget(weakestPlayer.Guid); } } else { } }
private void OnObjectUpdateComplete(IEnumerable <IWowObject> wowObjects) { Dispatcher.Invoke(() => { IWowPlayer player = AmeisenBot.Bot.Player; if (player != null) { switch (player.Class) { case WowClass.Deathknight: UpdateBotInfo(player.MaxRunicPower, player.RunicPower, WowColors.dkPrimaryBrush, WowColors.dkSecondaryBrush); break; case WowClass.Druid: UpdateBotInfo(player.MaxMana, player.Mana, WowColors.druidPrimaryBrush, WowColors.druidSecondaryBrush); break; case WowClass.Hunter: UpdateBotInfo(player.MaxMana, player.Mana, WowColors.hunterPrimaryBrush, WowColors.hunterSecondaryBrush); break; case WowClass.Mage: UpdateBotInfo(player.MaxMana, player.Mana, WowColors.magePrimaryBrush, WowColors.mageSecondaryBrush); break; case WowClass.Paladin: UpdateBotInfo(player.MaxMana, player.Mana, WowColors.paladinPrimaryBrush, WowColors.paladinSecondaryBrush); break; case WowClass.Priest: UpdateBotInfo(player.MaxMana, player.Mana, WowColors.priestPrimaryBrush, WowColors.priestSecondaryBrush); break; case WowClass.Rogue: UpdateBotInfo(player.MaxEnergy, player.Energy, WowColors.roguePrimaryBrush, WowColors.rogueSecondaryBrush); break; case WowClass.Shaman: UpdateBotInfo(player.MaxMana, player.Mana, WowColors.shamanPrimaryBrush, WowColors.shamanSecondaryBrush); break; case WowClass.Warlock: UpdateBotInfo(player.MaxMana, player.Mana, WowColors.warlockPrimaryBrush, WowColors.warlockSecondaryBrush); break; case WowClass.Warrior: UpdateBotInfo(player.MaxRage, player.Rage, WowColors.warriorPrimaryBrush, WowColors.warriorSecondaryBrush); break; } if (LabelUpdateEvent.Run()) { UpdateBottomLabels(); } if (DrawOverlay) { Overlay ??= new(AmeisenBot.Bot.Memory.Process.MainWindowHandle); OverlayRenderCurrentPath(); Overlay?.Draw(); NeedToClearOverlay = true; } else if (NeedToClearOverlay) { Overlay.Clear(); NeedToClearOverlay = false; } } }); }