private void InitializeGatheringSpot(Character user, GatheringWindow uiWindow, Gathering currentSpot) { user.Refresh(); Debug.Print("User Status: " + user.Status.ToString() + " - " + user.Status.ToString("X")); currentSpot.Target(); Thread.Sleep(100); while (uiWindow.RefreshPointers() == false) { user.Refresh(); user.Heading = user.Coordinate.AngleTo(currentSpot.Coordinate); Utilities.Keyboard.KeyBoardHelper.KeyDown(Keys.W); if (user.Coordinate.Distance2D(currentSpot.Coordinate) > DistanceThreshold) { user.Heading = user.Coordinate.AngleTo(currentSpot.Coordinate); Utilities.Keyboard.KeyBoardHelper.KeyDown(Keys.W); continue; } Utilities.Keyboard.KeyBoardHelper.KeyUp(Keys.W); Thread.Sleep(350); user.Refresh(); user.Heading = user.Coordinate.AngleTo(currentSpot.Coordinate); Debug.Print("Waiting for window..."); Utilities.Keyboard.KeyBoardHelper.KeyPress(Keys.NumPad0); Thread.Sleep(750); } }
public override void Fight(Character user, Character monster, Recast recast) { base.Fight(user, monster, recast); //byte distance = monster.Distance; monster.Target(); recast.Refresh(2.0); user.Refresh(); ePosition position = monster.Position(user); Hotkeys hotkeys = new Hotkeys(); Hotkeys.Hotkey highlightedAbility = null; hotkeys.RefreshAbilities(); if (hotkeys.Abilities[92].InRange == 0) return; foreach (KeyValuePair<short, Hotkeys.Hotkey> hk in hotkeys.Abilities) { if (hk.Value.Highlighted && hk.Value.ID != 89) { highlightedAbility = hk.Value; } } if (recast.Abilities.Contains(2) == false && user.TP_Current < 450) { hotkeys.Abilities[80].UseAbility(); // Invigorate } else if (recast.WeaponSpecials.Count == 0 && hotkeys.Abilities[75].InRange == 1) { //if (distance > 7) //{ // hotkeys.Abilities[90].UseAbility(); // Piercing Talon //} else if (highlightedAbility != null) { if (highlightedAbility.ID == 84 && recast.Abilities.Contains(4) == false) { hotkeys.Abilities[83].UseAbility(); // Life Surge for Full Thrust } else { highlightedAbility.UseAbility(); } } else if (user.ContainsStatusEffect(115, 0, false) == false && position == ePosition.Side) //Heavy Thrust Dmg Buff From Side { hotkeys.Abilities[79].UseAbility(); } else if (monster.ContainsStatusEffect(119, user.ID, true) == false) //Phlebotomize DOT { hotkeys.Abilities[91].UseAbility(); } else if (position == ePosition.Back && monster.ContainsStatusEffect(121, user.ID, true) == false) { hotkeys.Abilities[81].UseAbility(); // Start Impulse Drive Combo } else { hotkeys.Abilities[75].UseAbility(); // Start True Thrust Combo } } else { if ((recast.Abilities.Contains(5) == false || recast.SubAbilities.Contains(59) == false) && hotkeys.Abilities[75].InRange == 1) // Blood for Blood or Internal Release { Utilities.Keyboard.KeyBoardHelper.KeyPress(Keys.D0); } if (monster.Name.Contains("Titan") == false) { if (recast.Abilities.Contains(7) == false && recast.Abilities.Contains(10) == false) { hotkeys.Abilities[93].UseAbility(); // Power Surge } else if (recast.Abilities.Contains(10) == false) { hotkeys.Abilities[96].UseAbility(); // Dragonfire Dive } else if (recast.Abilities.Contains(6) == false) { hotkeys.Abilities[92].UseAbility(); // Jump } else if (recast.Abilities.Contains(9) == false) { hotkeys.Abilities[95].UseAbility(); // Spineshatter drive } } } }
private void GatherSpot(Character user, Gathering currentSpot) { currentSpot.Refresh(); user.Refresh(); if (user.Health_Current == 0) { _botstage = BotStage.Nothing; _navigation.Stop(); return; } if (user.Coordinate.Distance(currentSpot.Coordinate) < 0.5) { user.Heading = user.Coordinate.AngleTo(currentSpot.Coordinate); Utilities.Keyboard.KeyBoardHelper.KeyDown(Keys.S); Thread.Sleep(150); Utilities.Keyboard.KeyBoardHelper.KeyUp(Keys.S); } // We are close enough.. stop running //Utilities.Keyboard.KeyBoardHelper.KeyUp(Keys.W); if (currentSpot.IsHidden == false) { Utilities.Keyboard.KeyBoardHelper.KeyPress(Keys.NumPad0); Thread.Sleep(350); } else { //_ignorelist.Clear(); _navigation.Resume(); _botstage = BotStage.Detection; } //// Check if we should ignore the monster because it has not been claimed for a while.. //// This typically happens if monster is out of line of sight. //if (_claimwatch.Elapsed.Seconds > 7 && currentSpot.IsClaimed == false) //{ // _claimwatch.Stop(); // _ignorelist.Add(currentSpot.ID); // _navigation.Resume(); // _botstage = BotStage.Detection; //} }
private static void WaitForAbility(Character user) { Thread.Sleep(700); user.Refresh(); while (user.Status != CharacterStatus.Idle && user.Status != CharacterStatus.Crafting_Idle && user.Status != CharacterStatus.Crafting_Idle && user.IsCrafting == true) { user.Refresh(); } Thread.Sleep(700); }
public override void Fight(Character user, Character monster, Recast recast) { base.Fight(user, monster, recast); bool ignoreDOT = false; Hotkeys hotkeys = new Hotkeys(); hotkeys.RefreshAbilities(); if (hotkeys[STRAIGHTSHOT].InRange == 0) return; UIWindow ui = new UIWindow(); ui.RefreshPointers(); // if (ui.GetActiveWindowName() == "chatlog") // return; monster.Target(); recast.Refresh(2.1); user.Refresh(); if (user.ContainsStatusEffect2(451, (float) 3.5)) { Debug.Print("Cursed Voice"); SoundModule.PlayAsyncSound("cursedVoice.wav"); while (user.ContainsStatusEffect(451, 0, false)) { Thread.Sleep(100); } Thread.Sleep(200); user.Refresh(); } if (monster.Name.ToLower().Contains("renaud")) return; // Stop for turn 6 ability if (monster.UsingAbilityID == 1949) { //Utilities.Keyboard.KeyBoardHelper.Ctrl(Keys.D6); return; } List<Character> nearMobs = monster.MonstersNear(100.0); // Blight Turn 6 if (nearMobs.Any(mob => mob.UsingAbilityID == 1949)) { //Utilities.Keyboard.KeyBoardHelper.Ctrl(Keys.D6); return; } // Turn 7 Petrification if (nearMobs.Any(mob => mob.UsingAbilityID == 1979)) { SoundModule.PlayAsyncSound("petrification.wav"); //Utilities.Keyboard.KeyBoardHelper.Ctrl(Keys.D6); return; } if (nearMobs.Any(mob => mob.UsingAbilityID == 1969)) { SoundModule.PlayAsyncSound("petrification.wav"); //Utilities.Keyboard.KeyBoardHelper.Ctrl(Keys.D6); return; } if (user.ContainsStatusEffect(452, 0, false)) { SoundModule.PlayAsyncSound("Shriek.wav"); } //if (nearMobs.Any(mob => mob.UsingAbilityID == 1967)) //{ // if (user.ContainsStatusEffect(452, 0, false)) // { // SoundModule.PlayAsyncSound("Shriek.wav"); // } // else // { // SoundModule.PlayAsyncSound("Shriek2.wav"); // } //} if (MemoryFunctions.GetGroundCursor() > 0) return; foreach (string mobToIgnore in _ignoreDOTMobs) { if (monster.Name.ToLower().Contains(mobToIgnore.ToLower()) && monster.Name.ToLower().Contains("gaoler") == false) { ignoreDOT = true; } } if (MemoryFunctions.GetMapID() == 364 && monster.Name.Contains("Good King") == false) ignoreDOT = true; if (hotkeys[INTERNALRELEASE].PercentReady >= 99 && user.Level >= 26 && Global.DisableBuffs == false && user.TP_Current >= 40 && hotkeys[HEAVYSHOT].PercentReady <= 78) { //MemoryFunctions.ForceAction(INTERNALRELEASE, 21, MemoryFunctions.ActionType.Ability); hotkeys[INTERNALRELEASE].UseAbility(); } else if (recast.WeaponSpecials.Count == 0) { if ((user.ContainsStatusEffect(130, 0, false, (float) 3.0) == false || user.ContainsStatusEffect(122, 0, false)) && user.Level >= 2 && user.TP_Current >= 70) { //MemoryFunctions.ForceAction(STRAIGHTSHOT, 20, MemoryFunctions.ActionType.WS); hotkeys[STRAIGHTSHOT].UseAbility(); } else if (monster.ContainsStatusEffect(124, user.ID, true, (float) 2.5) == false && user.Level >= 6 && user.TP_Current >= 100 && ignoreDOT == false && monster.StatusEffects().Count < 29) { //MemoryFunctions.ForceAction(VENOMOUSBITE, 20, MemoryFunctions.ActionType.WS); hotkeys[VENOMOUSBITE].UseAbility(); } else if (monster.ContainsStatusEffect(129, user.ID, true, (float) 2.5) == false && user.Level >= 30 && user.TP_Current >= 100 && monster.StatusEffects().Count < 29 && (ignoreDOT == false || monster.Name.ToLower().Contains("infernal nail"))) { //MemoryFunctions.ForceAction(WINDBITE, 20, MemoryFunctions.ActionType.WS); hotkeys[WINDBITE].UseAbility(); } else if (hotkeys[HAYMAKER].Highlighted && user.Level >= 10 && user.TP_Current >= 40) { //MemoryFunctions.ForceAction(HAYMAKER, 20, MemoryFunctions.ActionType.WS); hotkeys[HAYMAKER].UseAbility(); } else if (user.TP_Current >= 60) { //MemoryFunctions.ForceAction(HEAVYSHOT, 20, MemoryFunctions.ActionType.WS); hotkeys[HEAVYSHOT].UseAbility(); } } else if (hotkeys[INVIGORATE].PercentReady >= 100 && user.Level >= 4 && user.TP_Current <= 550 && hotkeys[HEAVYSHOT].PercentReady <= 78) { //MemoryFunctions.ForceAction(INVIGORATE, 20, MemoryFunctions.ActionType.Ability); hotkeys[INVIGORATE].UseAbility(); } else if (hotkeys[RAGINGSTRIKES].PercentReady >= 100 && user.Level >= 4 && Global.DisableBuffs == false && hotkeys[HEAVYSHOT].PercentReady <= 78) { //MemoryFunctions.ForceAction(RAGINGSTRIKES, 19, MemoryFunctions.ActionType.Ability); hotkeys[RAGINGSTRIKES].UseAbility(); } else if (hotkeys[BLOODFORBLOOD].PercentReady >= 100 && user.Level >= 38 && monster.Name.Contains("Twintania") == false && monster.Name.Contains("Conflagration") == false && Global.DisableBuffs == false && hotkeys[HEAVYSHOT].PercentReady <= 78) // && user.ContainsStatusEffect(125, 0, false) == false { //MemoryFunctions.ForceAction(BLOODFORBLOOD, 20, MemoryFunctions.ActionType.Ability); hotkeys[BLOODFORBLOOD].UseAbility(); } else if ( hotkeys[BLOODFORBLOOD].PercentReady >= 100 && user.Level >= 38 && monster.Name.Contains("Twintania") && monster.Health_Percent <= 55 && Global.DisableBuffs == false && hotkeys[HEAVYSHOT].PercentReady <= 78) // && user.ContainsStatusEffect(125, 0, false) == false { //MemoryFunctions.ForceAction(BLOODFORBLOOD, 20, MemoryFunctions.ActionType.Ability); hotkeys[BLOODFORBLOOD].UseAbility(); } else if (hotkeys[HAWKSEYE].PercentReady >= 100 && user.Level >= 26 && Global.DisableBuffs == false && hotkeys[HEAVYSHOT].PercentReady <= 78) { //MemoryFunctions.ForceAction(HAWKSEYE, 15, MemoryFunctions.ActionType.Ability); hotkeys[HAWKSEYE].UseAbility(); } else if (hotkeys[BARRAGE].PercentReady >= 100 && user.Level >= 38 && monster.Name.Contains("Twintania") == false && monster.Name.Contains("Conflagration") == false && Global.DisableBuffs == false && hotkeys[HEAVYSHOT].PercentReady <= 78) { //MemoryFunctions.ForceAction(BARRAGE, 12, MemoryFunctions.ActionType.Ability); hotkeys[BARRAGE].UseAbility(); } else if (hotkeys[BARRAGE].PercentReady >= 100 && user.Level >= 38 && monster.Name.Contains("Twintania") && monster.Health_Percent <= 55 && Global.DisableBuffs == false && hotkeys[HEAVYSHOT].PercentReady <= 78) { //MemoryFunctions.ForceAction(BARRAGE, 12, MemoryFunctions.ActionType.Ability); hotkeys[BARRAGE].UseAbility(); } else if (hotkeys[BLOODLETTER].PercentReady >= 99 && user.Level >= 12 && hotkeys[HEAVYSHOT].PercentReady <= 78) { //MemoryFunctions.ForceAction(BLOODLETTER, 16, MemoryFunctions.ActionType.Ability); hotkeys[BLOODLETTER].UseAbility(); } else if (monster.Health_Percent <= 20 && hotkeys[MISERYSEND].PercentReady >= 99 && user.Level >= 8 && hotkeys[HEAVYSHOT].PercentReady <= 78) { //MemoryFunctions.ForceAction(MISERYSEND, 16, MemoryFunctions.ActionType.Ability); hotkeys[MISERYSEND].UseAbility(); } else if ( hotkeys[BLUNTARROW].PercentReady >= 99 && user.Level >= 42 && Global.StunBotOpen == false && hotkeys[HEAVYSHOT].PercentReady <= 78) { //MemoryFunctions.ForceAction(BLUNTARROW, 16, MemoryFunctions.ActionType.Ability); hotkeys[BLUNTARROW].UseAbility(); } }
private static void WaitForCraft(Character user) { Thread.Sleep(700); user.Refresh(); while (user.IsCrafting == false) { user.Refresh(); } Thread.Sleep(700); }
private static void WaitForAbility(Character user, Keys key, bool controlKey) { user.Refresh(); //Debug.Print("Before: " + user.Status.ToString() + " " + user.IsCrafting.ToString()); Stopwatch timer = new Stopwatch(); timer.Reset(); timer.Start(); while ((user.UsingAbility) && user.IsCrafting && timer.Elapsed.Seconds < 3) { user.Refresh(); } while ((user.UsingAbility == false) && user.IsCrafting && timer.Elapsed.Seconds < 3) { if (controlKey) { Utilities.Keyboard.KeyBoardHelper.Ctrl(key); } else { Utilities.Keyboard.KeyBoardHelper.KeyPress(key); } user.Refresh(); } Debug.Print("Waiting for start: " + timer.Elapsed.Milliseconds.ToString()); //while ((user.Status == CharacterStatus.Idle || user.Status == CharacterStatus.Crafting_Idle) && user.IsCrafting && timer.Elapsed.Seconds < 4) //{ // user.Refresh(); //} // Debug.Print("After: " + user.Status.ToString() + " " + user.IsCrafting.ToString()); timer.Restart(); while ((user.UsingAbility == true) && user.IsCrafting && timer.Elapsed.Seconds < 3) { user.Refresh(); } Debug.Print("Ability Finished: " + timer.Elapsed.Milliseconds.ToString()); //while (user.Status != CharacterStatus.Idle && user.Status != CharacterStatus.Crafting_Idle2 && user.IsCrafting && timer.Elapsed.Seconds < 7) //{ // user.Refresh(); //} //Debug.Print("After2: " + user.Status.ToString() + " " + user.IsCrafting.ToString()); user.Refresh(); //Debug.Print("End: " + user.Status.ToString() + " " + user.IsCrafting.ToString()); Thread.Sleep(300); }