public override void Run() { WoWPlayer TargetPlayer = ObjectManager.GetObjectWoWPlayer(_master.Guid); if (TargetPlayer == null) { if (_positionCheckTimer.IsReady) { _master.Position = MimesisClientCom.GetMasterPosition(); _positionCheckTimer.Reset(); } } else { _master.Position = TargetPlayer.Position; } if (MimesisSettings.CurrentSetting.ActivatePartyMode && _groupInvitCount < 3 && !Party.IsInGroup()) { MimesisClientCom.JoinGroup(); _groupInvitCount++; Thread.Sleep(500 + Usefuls.Latency); } if (!_master.Position.IsValid) { return; } else if (MimesisClientCom.HasTaskToDo()) { MovementManager.Chasing = false; } else { if (_master.Position.DistanceTo(ObjectManager.Me.Position) < 3.0f) { MovementManager.Chasing = false; MovementManager.StopMove(); } else if (_master.Position.Type.ToLower() == "flying" || _master.Position.Type.ToLower() == "swimming") { MovementManager.MoveTo(_master.Position); Logging.Write("Flying or swimming"); } else { MovementManager.Chasing = true; uint baseAddress = MovementManager.FindTarget(ref _master, 3.0f); } } // now we should query for events if (_eventQueryTimer.IsReady) { MimesisClientCom.ProcessEvents(); _eventQueryTimer.Reset(); } MimesisClientCom.DoTasks(); // on event START_LOOT_ROLL lookup if item is an update and roll need/cupidity }
internal static void Dispose() { try { CombatClass.DisposeCombatClass(); Fsm.StopEngine(); Fight.StopFight(); MimesisClientCom.Disconnect(); } catch (Exception e) { Logging.WriteError("Mimesis > Bot > Bot > Dispose(): " + e); } }
internal static bool Pulse() { try { if (!MimesisClientCom.Connect()) { return(false); } // Load CC: CombatClass.LoadCombatClass(); // FSM Fsm.States.Clear(); Fsm.AddState(new Pause { Priority = 200 }); Fsm.AddState(new Resurrect { Priority = 90 }); Fsm.AddState(new IsAttacked { Priority = 80 }); Fsm.AddState(new FightHostileTarget { Priority = 70 }); Fsm.AddState(new Looting { Priority = 60 }); Fsm.AddState(new Travel { Priority = 50 }); Fsm.AddState(new Farming { Priority = 40 }); Fsm.AddState(new SpecializationCheck { Priority = 30 }); Fsm.AddState(new LevelupCheck { Priority = 20 }); Fsm.AddState(new MimesisState { Priority = 10 }); Fsm.AddState(new Idle { Priority = 0 }); foreach (var statePlugin in Plugins.ListLoadedStatePlugins) { Fsm.AddState(statePlugin); } Fsm.States.Sort(); Fsm.StartEngine(7, "FSM Mimesis"); return(true); } catch (Exception e) { try { Dispose(); } catch { } Logging.WriteError("Mimesis > Bot > Bot > Pulse(): " + e); return(false); } }