public void Initialize(IClassRotation specialization) { settings = ShamanSettings.Current; if (settings.PartyDrinkName != "") { ToolBox.AddToDoNotSellList(settings.PartyDrinkName); } cast = new Cast(LightningBolt, null, settings); _totemManager = new TotemManager(cast); this.specialization = specialization as Shaman; (RotationType, RotationRole) = ToolBox.GetRotationType(specialization); TalentsManager.InitTalents(settings); ToolBox.AddToDoNotSellList("Air Totem"); ToolBox.AddToDoNotSellList("Earth Totem"); ToolBox.AddToDoNotSellList("Water Totem"); ToolBox.AddToDoNotSellList("Fire Totem"); RangeManager.SetRange(_pullRange); FightEvents.OnFightEnd += FightEndHandler; FightEvents.OnFightStart += FightStartHandler; FightEvents.OnFightLoop += FightLoopHandler; Rotation(); }
private bool CastWaterTotem(IClassRotation spec) { if (Shaman.settings.UseWaterTotems) { string currentWaterTotem = Lua.LuaDoString <string> (@"local _, totemName, _, _ = GetTotemInfo(3); return totemName;"); // Mana Tide Totem if (ManaTideTotem.KnownSpell) { List <AIOPartyMember> alliesNeedingMana = AIOParty.GroupAndRaid .FindAll(a => a.ManaPercentage < 20); if ((alliesNeedingMana.Count > 1 || Me.ManaPercentage < 10) && Cast(ManaTideTotem)) { return(true); } } // Mana Spring Totem if (!currentWaterTotem.Contains("Mana Tide") && !Me.HaveBuff("Mana Spring") && Cast(ManaSpringTotem)) { return(true); } } return(false); }
public void Initialize(IClassRotation specialization) { settings = HunterSettings.Current; if (settings.PartyDrinkName != "") { ToolBox.AddToDoNotSellList(settings.PartyDrinkName); } AIOSpell baseSpell = SerpentSting.KnownSpell ? SerpentSting : RaptorStrike; cast = new Cast(baseSpell, null, settings); this.specialization = specialization as Hunter; (RotationType, RotationRole) = ToolBox.GetRotationType(specialization); TalentsManager.InitTalents(settings); _petPulseThread.DoWork += PetThread; _petPulseThread.RunWorkerAsync(); FightEvents.OnFightStart += FightStartHandler; FightEvents.OnFightEnd += FightEndHandler; FightEvents.OnFightLoop += FightLoopHandler; MovementEvents.OnMovementPulse += MovementEventsOnMovementPulse; Rotation(); }
public void Initialize(IClassRotation specialization) { settings = RogueSettings.Current; if (settings.PartyDrinkName != "") { ToolBox.AddToDoNotSellList(settings.PartyDrinkName); } cast = new Cast(SinisterStrike, null, settings); this.specialization = specialization as Rogue; (RotationType, RotationRole) = ToolBox.GetRotationType(specialization); TalentsManager.InitTalents(settings); RangeManager.SetRangeToMelee(); AddPoisonsToNoSellList(); FightEvents.OnFightEnd += FightEndHandler; FightEvents.OnFightStart += FightStartHandler; MovementEvents.OnMoveToPulse += MoveToPulseHandler; FightEvents.OnFightLoop += FightLoopHandler; OthersEvents.OnAddBlackListGuid += BlackListHandler; EventsLuaWithArgs.OnEventsLuaStringWithArgs += EventsWithArgsHandler; Rotation(); }
public void Initialize(IClassRotation specialization) { settings = WarlockSettings.Current; if (settings.PartyDrinkName != "") { ToolBox.AddToDoNotSellList(settings.PartyDrinkName); } cast = new Cast(ShadowBolt, UseWand, settings); this.specialization = specialization as Warlock; (RotationType, RotationRole) = ToolBox.GetRotationType(specialization); TalentsManager.InitTalents(settings); WarlockPetAndConsumables.Setup(); _petPulseThread.DoWork += PetThread; _petPulseThread.RunWorkerAsync(); RangeManager.SetRange(ShadowBolt.MaxRange); // Set pet mode if (settings.PetInPassiveWhenOOC) { Lua.LuaDoString("PetPassiveMode();"); } else { Lua.LuaDoString("PetDefensiveMode();"); } FightEvents.OnFightEnd += FightEndHandler; FightEvents.OnFightStart += FightStartHandler; Rotation(); }
public void Initialize(IClassRotation specialization) { settings = PaladinSettings.Current; if (settings.PartyDrinkName != "") { ToolBox.AddToDoNotSellList(settings.PartyDrinkName); } cast = new Cast(HolyLight, null, settings); this.specialization = specialization as Paladin; (RotationType, RotationRole) = ToolBox.GetRotationType(specialization); TalentsManager.InitTalents(settings); if (specialization.RotationType == Enums.RotationType.Party && settings.PartyDetectSpecs) { AIOParty.ActivateSpecRecord = true; } _manaSavePercent = System.Math.Max(20, settings.ManaSaveLimitPercent); FightEvents.OnFightEnd += FightEndHandler; FightEvents.OnFightStart += FightStartHandler; FightEvents.OnFightLoop += FightLoopHandler; Rotation(); }
private bool CastEarthTotem(IClassRotation spec) { string currentEarthTotem = Lua.LuaDoString <string> (@"local haveTotem, totemName, startTime, duration = GetTotemInfo(2); return totemName;"); if (spec.RotationType == Enums.RotationType.Solo) { // Earth Elemental Totem on multiaggro if (ObjectManager.GetNumberAttackPlayer() > 1 && EarthElementalTotem.KnownSpell && !currentEarthTotem.Contains("Stoneclaw Totem") && !currentEarthTotem.Contains("Earth Elemental Totem") && Cast(EarthElementalTotem)) { return(true); } // Stoneclaw on multiaggro if (ObjectManager.GetNumberAttackPlayer() > 1 && StoneclawTotem.KnownSpell && !currentEarthTotem.Contains("Stoneclaw Totem") && !currentEarthTotem.Contains("Earth Elemental Totem") && Cast(StoneclawTotem)) { return(true); } } if (Shaman.settings.UseEarthTotems) { // Strenght of Earth totem if ((spec is Enhancement || spec is EnhancementParty || spec is ShamanRestoParty) && (!Shaman.settings.UseStoneSkinTotem || !StoneskinTotem.KnownSpell) && !Me.HaveBuff("Strength of Earth") && !currentEarthTotem.Contains("Stoneclaw Totem") && !currentEarthTotem.Contains("Earth Elemental Totem") && (ObjectManager.GetNumberAttackPlayer() < 2 || spec.RotationType == Enums.RotationType.Party) && Cast(StrengthOfEarthTotem)) { return(true); } // Stoneskin Totem if ((Shaman.settings.UseStoneSkinTotem || !StrengthOfEarthTotem.KnownSpell || spec is Elemental || (spec.RotationType == Enums.RotationType.Solo && ObjectManager.GetNumberAttackPlayer() > 1)) && !Me.HaveBuff("Stoneskin") && !currentEarthTotem.Contains("Stoneclaw Totem") && !currentEarthTotem.Contains("Earth Elemental Totem") && Cast(StoneskinTotem)) { return(true); } } return(false); }
public void Initialize() { AIOTBCSettings.Load(); AutoUpdater.CheckUpdate(version); Logger.Log($"Launching version {version} on client {Lua.LuaDoString<string>("v, b, d, t = GetBuildInfo(); return v")}"); selectedRotation = ChooseRotation(); if (selectedRotation != null) { isLaunched = true; FightEvents.OnFightLoop += FightLoopHandler; FightEvents.OnFightStart += FightStartHandler; FightEvents.OnFightEnd += FightEndHandler; LoggingEvents.OnAddLog += AddLogHandler; EventsLua.AttachEventLua("RESURRECT_REQUEST", e => ResurrectionEventHandler(e)); EventsLua.AttachEventLua("PLAYER_DEAD", e => PlayerDeadHandler(e)); EventsLua.AttachEventLua("READY_CHECK", e => ReadyCheckHandler(e)); EventsLua.AttachEventLua("INSPECT_TALENT_READY", e => AIOParty.InspectTalentReadyHandler()); EventsLua.AttachEventLua("PARTY_MEMBERS_CHANGED", e => AIOParty.GroupRosterChangedHandler()); EventsLua.AttachEventLua("PARTY_MEMBER_DISABLE", e => AIOParty.GroupRosterChangedHandler()); EventsLua.AttachEventLua("PARTY_MEMBER_ENABLE", e => AIOParty.GroupRosterChangedHandler()); EventsLuaWithArgs.OnEventsLuaStringWithArgs += EventsWithArgsHandler; AIOParty.UpdateParty(); if (!TalentsManager._isRunning) { _talentThread.DoWork += TalentsManager.DoTalentPulse; _talentThread.RunWorkerAsync(); } if (!_racials._isRunning && CombatSettings.UseRacialSkills) { _racialsThread.DoWork += _racials.DoRacialsPulse; _racialsThread.RunWorkerAsync(); } if (!AIORadar._isRunning) { _partyThread.DoWork += AIORadar.Pulse; _partyThread.RunWorkerAsync(); } selectedRotation.Initialize(selectedRotation); } else { Logger.LogError("Class not supported."); } }
private bool CastAirTotem(IClassRotation spec) { if (Shaman.settings.UseAirTotems) { string currentAirTotem = Lua.LuaDoString <string> (@"local _, totemName, _, _ = GetTotemInfo(4); return totemName;"); // Mana Spring Totem if (!Me.HaveBuff("Grace of Air") && Cast(GraceOfAirTotem)) { return(true); } } return(false); }
public bool CastTotems(IClassRotation spec) { if (CastWaterTotem(spec)) { return(true); } if (CastEarthTotem(spec)) { return(true); } if (CastFireTotem(spec)) { return(true); } if (CastAirTotem(spec)) { return(true); } return(false); }
public void Initialize(IClassRotation specialization) { settings = WarriorSettings.Current; if (settings.PartyDrinkName != "") { ToolBox.AddToDoNotSellList(settings.PartyDrinkName); } cast = new Cast(BattleShout, null, settings); this.specialization = specialization as Warrior; (RotationType, RotationRole) = ToolBox.GetRotationType(specialization); TalentsManager.InitTalents(settings); FightEvents.OnFightEnd += FightEndHandler; FightEvents.OnFightLoop += FightLoopHandler; cast.OnTarget(BattleStance); Rotation(); }
private bool CastFireTotem(IClassRotation spec) { if (Shaman.settings.UseFireTotems) { string currentFireTotem = Lua.LuaDoString <string> (@"local haveTotem, totemName, startTime, duration = GetTotemInfo(1); return totemName;"); // Magma Totem if (ObjectManager.GetNumberAttackPlayer() > 1 && Me.ManaPercentage > 50 && ObjectManager.Target.GetDistance < 10 && !currentFireTotem.Contains("Magma Totem") && Shaman.settings.UseMagmaTotem && Cast(MagmaTotem)) { return(true); } // Searing Totem if ((!currentFireTotem.Contains("Searing Totem") || _fireTotemPosition == null || Me.Position.DistanceTo(_fireTotemPosition) > 15f) && ObjectManager.Target.GetDistance < 15 && !currentFireTotem.Contains("Magma Totem") && (!Shaman.settings.UseTotemOfWrath || !TotemOfWrath.KnownSpell) && Cast(SearingTotem)) { _fireTotemPosition = Me.Position; return(true); } // Totem of Wrath if (!currentFireTotem.Contains("Totem of Wrath") && !Me.HaveBuff("Totem of Wrath") && Shaman.settings.UseTotemOfWrath && Cast(TotemOfWrath)) { return(true); } } return(false); }
public void Initialize(IClassRotation specialization) { settings = PriestSettings.Current; if (settings.PartyDrinkName != "") { ToolBox.AddToDoNotSellList(settings.PartyDrinkName); } cast = new Cast(Smite, UseWand, settings); this.specialization = specialization as Priest; (RotationType, RotationRole) = ToolBox.GetRotationType(specialization); TalentsManager.InitTalents(settings); _wandThreshold = settings.WandThreshold > 100 ? 50 : settings.WandThreshold; RangeManager.SetRange(28f); FightEvents.OnFightEnd += FightEndHandler; FightEvents.OnFightStart += FightStartHandler; Rotation(); }
public void Initialize(IClassRotation specialization) { settings = MageSettings.Current; if (settings.PartyDrinkName != "") { ToolBox.AddToDoNotSellList(settings.PartyDrinkName); } cast = new Cast(Fireball, UseWand, settings); _foodManager = new MageFoodManager(cast); this.specialization = specialization as Mage; (RotationType, RotationRole) = ToolBox.GetRotationType(specialization); TalentsManager.InitTalents(settings); RangeManager.SetRange(30); FightEvents.OnFightEnd += FightEndHandler; FightEvents.OnFightStart += FightStartHandler; FightEvents.OnFightLoop += FightLoopHandler; Rotation(); }
public void Initialize(IClassRotation specialization) { RangeManager.SetRange(28); settings = DruidSettings.Current; if (settings.PartyDrinkName != "") { ToolBox.AddToDoNotSellList(settings.PartyDrinkName); } cast = new Cast(Wrath, null, settings); this.specialization = specialization as Druid; (RotationType, RotationRole) = ToolBox.GetRotationType(specialization); TalentsManager.InitTalents(settings); FightEvents.OnFightEnd += FightEndHandler; FightEvents.OnFightStart += FightStartHandler; FightEvents.OnFightLoop += FightLoopHandler; MovementEvents.OnMoveToPulse += MoveToPulseHandler; OthersEvents.OnAddBlackListGuid += BlackListHandler; Rotation(); }