Exemplo n.º 1
0
        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);
        }
Exemplo n.º 8
0
    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();
        }
Exemplo n.º 14
0
        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();
        }