using System; using System.ComponentModel; using System.Configuration; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading; using System.Windows.Forms; using robotManager.Helpful; using wManager.Wow.Helpers; using wManager.Wow.ObjectManager; using wManager.Wow.Class; public class Main : wManager.Plugin.IPlugin { private bool _isRunning; public void Start() { uint instantPoisonIDUsed = 0; uint woundPoisonIDUsed = 0; uint deadlyPoisonIDUsed = 0; uint cripplingPoisonIDUsed = 0; uint mindnumbingPoisonIDUsed = 0; uint MainPoisonToBeUsed = 0; uint OffPoisonToBeUsed = 0; if(PoisonSettings.CurrentSetting.MainPoisonGUI != "Instant" && PoisonSettings.CurrentSetting.MainPoisonGUI != "Deadly" && PoisonSettings.CurrentSetting.MainPoisonGUI != "Wound" && PoisonSettings.CurrentSetting.MainPoisonGUI != "Crippling" && PoisonSettings.CurrentSetting.MainPoisonGUI != "Mind-numbing" && PoisonSettings.CurrentSetting.OffPoisonGUI != "Instant" && PoisonSettings.CurrentSetting.OffPoisonGUI != "Deadly" && PoisonSettings.CurrentSetting.OffPoisonGUI != "Wound" && PoisonSettings.CurrentSetting.OffPoisonGUI != "Crippling" && PoisonSettings.CurrentSetting.OffPoisonGUI != "Mind-numbing") { MessageBox.Show("Incorrect Poison name used for both weapons." + "\n" + "Don't use the word poison. Just put in the name, ie Instant." + "\n" + "Check that you used capital letters appropriatelly." + "\n" + "If you're using Mind-numbing poison, make sure it's written with dash." + "\n" + "\n" + "Update the settings and try again!"); Logging.WriteDebug("[PoisonManager] Error as described in the message box. Settings need to be updated."); } else if(PoisonSettings.CurrentSetting.MainPoisonGUI != "Instant" && PoisonSettings.CurrentSetting.MainPoisonGUI != "Deadly" && PoisonSettings.CurrentSetting.MainPoisonGUI != "Wound" && PoisonSettings.CurrentSetting.MainPoisonGUI != "Crippling" && PoisonSettings.CurrentSetting.MainPoisonGUI != "Mind-numbing") { MessageBox.Show("Incorrect Poison name used for Mainhand." + "\n" + "Don't use the word poison. Just put in the name, ie Instant." + "\n" + "Check that you used capital letters appropriatelly." + "\n" + "If you're using Mind-numbing poison, make sure it's written with dash." + "\n" + "\n" + "Update the settings and try again!"); Logging.WriteDebug("[PoisonManager] Error as described in the message box. Settings need to be updated."); } else if(PoisonSettings.CurrentSetting.OffPoisonGUI != "Instant" && PoisonSettings.CurrentSetting.OffPoisonGUI != "Deadly" && PoisonSettings.CurrentSetting.OffPoisonGUI != "Wound" && PoisonSettings.CurrentSetting.OffPoisonGUI != "Crippling" && PoisonSettings.CurrentSetting.OffPoisonGUI != "Mind-numbing") { MessageBox.Show("Incorrect Poison name used for Offhand." + "\n" + "Don't use the word poison. Just put in the name, ie Instant." + "\n" + "Check that you used capital letters appropriatelly." + "\n" + "If you're using Mind-numbing poison, make sure it's written with dash." + "\n" + "\n" + "Update the settings and try again!"); Logging.WriteDebug("[PoisonManager] Error as described in the message box. Settings need to be updated."); } else { foreach (WoWItem item in Bag.GetBagItem()) { if(item.GetItemInfo.ItemName == "Instant Poison" || item.GetItemInfo.ItemName == "Instant Poison II" || item.GetItemInfo.ItemName == "Instant Poison III" || item.GetItemInfo.ItemName == "Instant Poison IV" || item.GetItemInfo.ItemName == "Instant Poison V" || item.GetItemInfo.ItemName == "Instant Poison VI") { uint instantPoisonIDUsedTemp = wManager.Wow.Helpers.ItemsManager.GetIdByName(item.GetItemInfo.ItemName); if (instantPoisonIDUsedTemp > instantPoisonIDUsed) { instantPoisonIDUsed = instantPoisonIDUsedTemp; } string myString = instantPoisonIDUsed.ToString(); string PoisonName = ItemsManager.GetNameById(instantPoisonIDUsed); Logging.Write("[PoisonManager] Highest Instant Posion: " + PoisonName + " / ID: " + myString); if (PoisonSettings.CurrentSetting.MainPoisonGUI == "Instant") { MainPoisonToBeUsed = instantPoisonIDUsed; } if (PoisonSettings.CurrentSetting.OffPoisonGUI == "Instant") { OffPoisonToBeUsed = instantPoisonIDUsed; } } if(item.GetItemInfo.ItemName == "Wound Poison" || item.GetItemInfo.ItemName == "Wound Poison II" || item.GetItemInfo.ItemName == "Wound Poison III" || item.GetItemInfo.ItemName == "Wound Poison IV") { uint woundPoisonIDUsedTemp = wManager.Wow.Helpers.ItemsManager.GetIdByName(item.GetItemInfo.ItemName); if (woundPoisonIDUsedTemp > woundPoisonIDUsed) { woundPoisonIDUsed = woundPoisonIDUsedTemp; } string myString = woundPoisonIDUsed.ToString(); string PoisonName = ItemsManager.GetNameById(woundPoisonIDUsed); Logging.Write("[PoisonManager] Highest Wound Posion: " + PoisonName + " / ID: " + myString); if (PoisonSettings.CurrentSetting.MainPoisonGUI == "Wound") { MainPoisonToBeUsed = woundPoisonIDUsed; } if (PoisonSettings.CurrentSetting.OffPoisonGUI == "Wound") { OffPoisonToBeUsed = woundPoisonIDUsed; } } if(item.GetItemInfo.ItemName == "Deadly Poison" || item.GetItemInfo.ItemName == "Deadly Poison II" || item.GetItemInfo.ItemName == "Deadly Poison III" || item.GetItemInfo.ItemName == "Deadly Poison IV" || item.GetItemInfo.ItemName == "Deadly Poison V") { uint deadlyPoisonIDUsedTemp = wManager.Wow.Helpers.ItemsManager.GetIdByName(item.GetItemInfo.ItemName); if (deadlyPoisonIDUsedTemp > deadlyPoisonIDUsed) { deadlyPoisonIDUsed = deadlyPoisonIDUsedTemp; } string myString = deadlyPoisonIDUsed.ToString(); string PoisonName = ItemsManager.GetNameById(deadlyPoisonIDUsed); Logging.Write("[PoisonManager] Highest Deadly Posion: " + PoisonName + " / ID: " + myString); if (PoisonSettings.CurrentSetting.MainPoisonGUI == "Deadly") { MainPoisonToBeUsed = deadlyPoisonIDUsed; } if (PoisonSettings.CurrentSetting.OffPoisonGUI == "Deadly") { OffPoisonToBeUsed = deadlyPoisonIDUsed; } } if(item.GetItemInfo.ItemName == "Crippling Poison" || item.GetItemInfo.ItemName == "Crippling Poison II") { uint cripplingPoisonIDUsedTemp = wManager.Wow.Helpers.ItemsManager.GetIdByName(item.GetItemInfo.ItemName); if (cripplingPoisonIDUsedTemp > cripplingPoisonIDUsed) { cripplingPoisonIDUsed = cripplingPoisonIDUsedTemp; } string myString = cripplingPoisonIDUsed.ToString(); string PoisonName = ItemsManager.GetNameById(cripplingPoisonIDUsed); Logging.Write("[PoisonManager] Highest Crippling Posion: " + PoisonName + " / ID: " + myString); if (PoisonSettings.CurrentSetting.MainPoisonGUI == "Crippling") { MainPoisonToBeUsed = cripplingPoisonIDUsed; } if (PoisonSettings.CurrentSetting.OffPoisonGUI == "Crippling") { OffPoisonToBeUsed = cripplingPoisonIDUsed; } } if(item.GetItemInfo.ItemName == "Mind-numbing Poison" || item.GetItemInfo.ItemName == "Mind-numbing Poison II" || item.GetItemInfo.ItemName == "Mind-numbing Poison III") { uint mnPoisonIDUsedTemp = wManager.Wow.Helpers.ItemsManager.GetIdByName(item.GetItemInfo.ItemName); if (mnPoisonIDUsedTemp > mindnumbingPoisonIDUsed) { mindnumbingPoisonIDUsed = mnPoisonIDUsedTemp; } string myString = mindnumbingPoisonIDUsed.ToString(); string PoisonName = ItemsManager.GetNameById(mindnumbingPoisonIDUsed); Logging.Write("[PoisonManager] Highest Mind-numbing Posion: " + PoisonName + " / ID: " + myString); if (PoisonSettings.CurrentSetting.MainPoisonGUI == "Mind-numbing") { MainPoisonToBeUsed = mindnumbingPoisonIDUsed; } if (PoisonSettings.CurrentSetting.OffPoisonGUI == "Mind-numbing") { OffPoisonToBeUsed = mindnumbingPoisonIDUsed; } } } try { while (_isRunning) { string mainHand = Lua.LuaDoString("local mh,mht,mhc=GetWeaponEnchantInfo(); return mh;"); string offHand = Lua.LuaDoString("local _,_,_,oh,oht,ohc=GetWeaponEnchantInfo(); return oh;"); if (mainHand=="" && !ObjectManager.Me.IsDeadMe) { if (ItemsManager.HasItemById(MainPoisonToBeUsed) && !Fight.InFight && !ObjectManager.Me.InCombat && !ObjectManager.Me.IsMounted && !ObjectManager.Me.HaveBuff("Food")) { if (ObjectManager.Me.GetMove) { MovementManager.StopMove(); } ItemsManager.UseItem(MainPoisonToBeUsed); Thread.Sleep(50 + Usefuls.Latency); Lua.LuaDoString("PickupInventoryItem(16);"); Thread.Sleep(3150 + Usefuls.Latency); Logging.Write("[PoisonManager] using " + ItemsManager.GetNameById(MainPoisonToBeUsed) + " for Mainhand."); } } if (offHand=="" && !ObjectManager.Me.IsDeadMe) { if (ItemsManager.HasItemById(OffPoisonToBeUsed) && !Fight.InFight && !ObjectManager.Me.InCombat && !ObjectManager.Me.IsMounted && !ObjectManager.Me.HaveBuff("Food")) { if (ObjectManager.Me.GetMove) { MovementManager.StopMove(); } ItemsManager.UseItem(OffPoisonToBeUsed); Thread.Sleep(50 + Usefuls.Latency); Lua.LuaDoString("PickupInventoryItem(17);"); Thread.Sleep(3150 + Usefuls.Latency); Logging.Write("[PoisonManager] using " + ItemsManager.GetNameById(OffPoisonToBeUsed) + " for Offhand."); } } Thread.Sleep(250); } } catch (Exception e) { Logging.WriteError("[PoisonManager] > Load(): " + e); } } } public void Dispose() { _isRunning = false; Logging.Write("[PoisonManager] Stopped."); } public void Initialize() { _isRunning = true; PoisonSettings.Load(); Logging.Write("[PoisonManager] Started."); Start(); } public void Settings() { PoisonSettings.Load(); PoisonSettings.CurrentSetting.ToForm(); PoisonSettings.CurrentSetting.Save(); Logging.Write("[PoisonManager] Settings saved."); } } public class PoisonSettings : Settings { public PoisonSettings() { MainPoisonGUI = "Instant"; OffPoisonGUI = "Instant"; } public static PoisonSettings CurrentSetting { get; set; } public bool Save() { try { return Save(AdviserFilePathAndName("PoisonManager", ObjectManager.Me.Name + "." + Usefuls.RealmName)); } catch (Exception e) { Logging.WriteError("PoisonSettings > Save(): " + e); return false; } } public static bool Load() { try { if (File.Exists(AdviserFilePathAndName("PoisonManager", ObjectManager.Me.Name + "." + Usefuls.RealmName))) { CurrentSetting = Load(AdviserFilePathAndName("PoisonManager", ObjectManager.Me.Name + "." + Usefuls.RealmName)); return true; } CurrentSetting = new PoisonSettings(); } catch (Exception e) { Logging.WriteError("PoisonSettings > Load(): " + e); } return false; } [Setting] [Category("Settings")] [DisplayName("Poison for Mainhand")] [Description("Bot will use the highest version of this poison on the mainhand.")] public string MainPoisonGUI { get; set; } [Setting] [Category("Settings")] [DisplayName("Poison for Offhand")] [Description("Bot will use the highest version of this poison on the offhand.")] public string OffPoisonGUI { get; set; } }