public override void Execute() { if (EquipmentUpdateEvent.Run()) { WowInterface.CharacterManager.Equipment.Update(); } if (!NeedToRepair()) { StateMachine.SetState(BotState.Idle); return; } if (IsRepairNpcNear(out WowUnit selectedUnit)) { if (WowInterface.ObjectManager.Player.Position.GetDistance(selectedUnit.Position) > 3.5) { WowInterface.MovementEngine.SetMovementAction(MovementAction.Moving, selectedUnit.Position); if (WowInterface.MovementEngine.PathfindingStatus == PathfindingStatus.PathIncomplete) { ++BlacklistCounter; if (BlacklistCounter > 2) { WowInterface.MovementEngine.StopMovement(); Blacklist.Add(selectedUnit.Guid); BlacklistCounter = 0; return; } } } else if (InteractionEvent.Run() && SpeakToMerchantRoutine.Run(WowInterface, selectedUnit)) { WowInterface.I.MovementEngine.StopMovement(); if (Config.AutoRepair && WowInterface.ObjectManager.Target.IsRepairVendor) { WowInterface.HookManager.LuaRepairAllItems(); } if (Config.AutoSell) { SellItemsRoutine.Run(WowInterface, Config); } } } else { WowInterface.HookManager.LuaClickUiElement("MerchantFrameCloseButton"); StateMachine.SetState(BotState.Idle); } }
public override void Execute() { if (EquipmentUpdateEvent.Run()) { WowInterface.CharacterManager.Equipment.Update(); } if (!NeedToRepair()) { if (DateTime.UtcNow - SellingFinished > TimeSpan.FromSeconds(8)) { StateMachine.SetState(BotState.Idle); } return; } if (IsRepairNpcNear(out WowUnit selectedUnit)) { float distance = WowInterface.Player.Position.GetDistance(selectedUnit.Position); if (distance > 3.0f) { WowInterface.MovementEngine.SetMovementAction(MovementAction.Move, selectedUnit.Position); } else if (distance < 2.25f) { WowInterface.MovementEngine.StopMovement(); if (InteractionEvent.Run()) { SpeakToMerchantRoutine.Run(WowInterface, selectedUnit); } } } }
public override void Execute() { if (EquipmentUpdateEvent.Run()) { WowInterface.CharacterManager.Equipment.Update(); } if (!NeedToRepair()) { StateMachine.SetState(BotState.Idle); return; } if (IsRepairNpcNear(out WowUnit selectedUnit)) { if (WowInterface.ObjectManager.Player.Position.GetDistance(selectedUnit.Position) > 1.5) { WowInterface.MovementEngine.SetMovementAction(MovementAction.Moving, selectedUnit.Position); if (WowInterface.MovementEngine.PathfindingStatus == PathfindingStatus.PathIncomplete) { ++BlacklistCounter; if (BlacklistCounter > 2) { WowInterface.MovementEngine.StopMovement(); Blacklist.Add(selectedUnit.Guid); BlacklistCounter = 0; return; } } } else if (InteractionEvent.Run()) { if (WowInterface.ObjectManager.TargetGuid != selectedUnit.Guid) { WowInterface.HookManager.TargetGuid(selectedUnit.Guid); return; } WowInterface.MovementEngine.StopMovement(); if (!BotMath.IsFacing(WowInterface.ObjectManager.Player.Position, WowInterface.ObjectManager.Player.Rotation, selectedUnit.Position)) { WowInterface.HookManager.FacePosition(WowInterface.ObjectManager.Player, selectedUnit.Position); return; } // WowInterface.HookManager.UnitOnRightClick(selectedUnit); WowInterface.CharacterManager.ClickToMove(selectedUnit.Position, selectedUnit.Guid, Character.Enums.ClickToMoveType.Interact, 20.9f, 1.5f); if (Config.AutoRepair && WowInterface.ObjectManager.Target.IsRepairVendor) { WowInterface.HookManager.RepairAllItems(); } if (Config.AutoSell) { foreach (IWowItem item in WowInterface.CharacterManager.Inventory.Items.Where(e => e.Price > 0)) { IWowItem itemToSell = item; if (Config.ItemSellBlacklist.Any(e => e.Equals(item.Name, StringComparison.OrdinalIgnoreCase)) || (!Config.SellGrayItems && item.ItemQuality == ItemQuality.Poor) || (!Config.SellWhiteItems && item.ItemQuality == ItemQuality.Common) || (!Config.SellGreenItems && item.ItemQuality == ItemQuality.Uncommon) || (!Config.SellBlueItems && item.ItemQuality == ItemQuality.Rare) || (!Config.SellPurpleItems && item.ItemQuality == ItemQuality.Epic)) { continue; } if (WowInterface.CharacterManager.IsItemAnImprovement(item, out IWowItem itemToReplace)) { // equip item and sell the other after itemToSell = itemToReplace; WowInterface.HookManager.ReplaceItem(null, item); } if (itemToSell != null && (WowInterface.ObjectManager.Player.Class != WowClass.Hunter || itemToSell.GetType() != typeof(WowProjectile))) { WowInterface.HookManager.UseItemByBagAndSlot(itemToSell.BagId, itemToSell.BagSlot); WowInterface.HookManager.CofirmBop(); Task.Delay(50).Wait(); } } } } } else { StateMachine.SetState(BotState.Idle); } }