Ejemplo n.º 1
0
    internal static void Under10Rotation()
    {
        if (lowlevel != true)
        {
            lowlevel = true;
        }

        if (MyTarget.GetDistance < 20)
        {
            TotemManager.CastTotems();
        }
        if (Me.Level < 4)
        {
            Extension.FightSpell(LightningBolt);
        }
        if (MyTarget.GetDistance > 7)
        {
            Extension.FightSpell(LightningBolt);
        }
        Extension.FightSpell(EarthShock);
        if (Me.ManaPercentage > 40)
        {
            Extension.BuffSpell(LightningShield);
        }
    }
Ejemplo n.º 2
0
    public void Awake()
    {
        totem       = TotemManager.Instance;
        spawnManger = EnemySpawnManager.Instance;

        impossible = false;
        dragCheck  = false;
    }
Ejemplo n.º 3
0
        public Composite CreateShamanRest()
        {
            return(new PrioritySelector(

                       new Decorator(
                           ret => TotemManager.NeedToRecallTotems,
                           new Action(ret => TotemManager.RecallTotems())),

                       CreateRestoShamanHealOnlyBehavior(true),
                       CreateDefaultRestComposite(SingularSettings.Instance.DefaultRestHealth, SingularSettings.Instance.DefaultRestMana)

                       ));
        }
Ejemplo n.º 4
0
 public Composite CreateElementalShamanPull()
 {
     return(new PrioritySelector(
                CreateEnsureTarget(),
                CreateMoveToAndFace(40, ret => Me.CurrentTarget),
                CreateWaitForCast(true),
                //Totems
                new Decorator(
                    ret => TotemManager.TotemsInRange == 0 && SpellManager.HasSpell("Call of the Elements"),
                    new Sequence(
                        new Action(ret => TotemManager.SetupTotemBar()),
                        new Action(ret => TotemManager.CallTotems()))),
                CreateSpellCast("Lightning Bolt")
                ));
 }
Ejemplo n.º 5
0
    // Use this for initialization
    void Awake()
    {
        // ensure singleton
        if (instance == null)
        {
            instance = this;
        }
        else if (instance != this)
        {
            Destroy(gameObject);
        }

        DontDestroyOnLoad(gameObject);


        CreateDevices();
    }
Ejemplo n.º 6
0
        public Composite CreateElementalShamanCombat()
        {
            return(new PrioritySelector(
                       CreateEnsureTarget(),
                       CreateMoveToAndFace(39, ret => Me.CurrentTarget),
                       CreateWaitForCast(true),

                       //Healing Basic
                       CreateSpellCast("Healing Surge", ret => (Me.HealthPercent <= SingularSettings.Instance.Shaman.Elemental_HealingSurge_Health)),
                       //Interupt spell casters
                       CreateSpellCast("Wind Shear", ret => Me.CurrentTarget.IsCasting),

                       //For low levels we are avoiding this.
                       new Decorator(
                           ret => TotemManager.TotemsInRange == 0 && SpellManager.HasSpell("Call of the Elements"),
                           new Sequence(
                               new Action(ret => TotemManager.SetupTotemBar()),
                               new Action(ret => TotemManager.CallTotems()))),

                       // add check for reinforcements ( elem totems )

                       // clip the debuff if less than 2 secs remaining (don't chance a LvB with no FS dot)
                       //  .. note:  flame shock doesn't stack, so be sure to pass 0 for stack test
                       CreateSpellBuff("Flame Shock", ret => !HasMyAura("Flame Shock", Me.CurrentTarget, TimeSpan.FromSeconds(2), 0)),

                       // unleash elements buff is lower dps than additional procs by lightning bolt
                       // .. it is best used in movement fights as an additional instant
                       // CreateSpellCast("Unleash Elements"),    // if we have this, make sure its before Flame Shock

                       CreateSpellCast("Elemental Mastery"),
                       CreateSpellCast("Lava Burst"),

                       // atleast (6 lightning shield stacks or no Fulmination talent) and FS has > 5 secs left before casting
                       //  .. note:  flame shock doesn't stack, so be sure to pass 0 for stack test
                       CreateSpellCast("Earth Shock", ret =>
                                       (HasAuraStacks("Lightning Shield", 7) || !HaveTalentFulmination) && HasMyAura("Flame Shock", Me.CurrentTarget, TimeSpan.FromSeconds(5), 0)),

                       CreateSpellCast("Chain Lightning", ret => WillChainLightningHop()),

                       CreateSpellCast("Lightning Bolt")
                       ));
        }
Ejemplo n.º 7
0
    internal static void EnhancementRotation()
    {
        bool Poison  = Extension.HasPoisonDebuff();
        bool Disease = Extension.HasDiseaseDebuff();

        if (Extension.InterruptableUnit(10f) != null && WindShear.KnownSpell && WindShear.IsSpellUsable)
        {
            Logging.Write("Interrupt Target found");
            ObjectManager.Me.FocusGuid = Extension.InterruptableUnit(10f).Guid;
            Logging.Write("Interrupt Target Set" + Extension.InterruptableUnit(10f).Guid);
            Extension.FightSpell(WindShear, true);
        }

        if (Me.HealthPercent < 30 && MyTarget.HealthPercent > ShamanLevelSettings.CurrentSetting.Enemylife)
        {
            Extension.HealSpell(HealingWave);
        }
        if (Poison)
        {
            Extension.BuffSpell(CurePoison);
        }
        if (Disease)
        {
            Extension.BuffSpell(CurePoison);
        }
        if (Extension.GetAttackingUnits(20).Count() > 1)
        {
            Extension.FightSpell(FeralSpirit);
        }

        if (Me.Level < 10)
        {
            if (lowlevel != true)
            {
                lowlevel = true;
            }

            if (MyTarget.GetDistance < 20)
            {
                TotemManager.CastTotems();
            }
            if (Me.Level < 4)
            {
                Extension.FightSpell(LightningBolt);
            }
            if (MyTarget.GetDistance > 7)
            {
                Extension.FightSpell(LightningBolt);
            }
            Extension.FightSpell(EarthShock);
            if (Me.ManaPercentage > 40)
            {
                Extension.BuffSpell(LightningShield);
            }
        }
        if (Me.Level > 9 && Me.Level < 20)
        {
            if (lowlevel != true)
            {
                lowlevel = true;
            }
            if (MyTarget.GetDistance < 20)
            {
                TotemManager.CastTotems();
            }
            //_lastTotemPosition.DistanceTo(ObjectManager.Me.Position)

            //if (_fireTotemPosition.DistanceTo(Me.Position) < 10 && Extension.GetAttackingUnits(5).Count() > 1 && ShamanLevelSettings.CurrentSetting.UseFireNova)
            //{
            //    Extension.FightSpell(FireNova);
            //}
            if (MyTarget.GetDistance > 7)
            {
                Extension.FightSpell(LightningBolt);
            }
            if (!FlameShock.KnownSpell)
            {
                Extension.FightSpell(EarthShock);
            }
            Extension.FightSpell(FlameShock);
            if (Me.ManaPercentage > 40)
            {
                Extension.BuffSpell(LightningShield);
            }
        }
        if (Me.Level > 19 && Me.Level < 40)
        {
            if (lowlevel == true)
            {
                lowlevel = false;
            }
            if (MyTarget.GetDistance < 20)
            {
                TotemManager.CotE();
                TotemManager.CastTotems();
            }
            if (MyTarget.GetDistance > 20)
            {
                Extension.FightSpell(LightningBolt);
            }
            Extension.FightSpell(EarthShock);
            if (Me.ManaPercentage < 20)
            {
                Extension.BuffSpell(WaterShield);
            }
            if (Me.ManaPercentage > 20 && !Me.HaveBuff(WaterShield.Id))
            {
                Extension.BuffSpell(LightningShield);
            }
        }
        if (Me.Level > 39 && Me.Level < 50)
        {
            if (MyTarget.GetDistance < 20)
            {
                TotemManager.CotE();
                TotemManager.CastTotems();
            }
            if (lowlevel == true)
            {
                lowlevel = false;
            }
            if (MyTarget.GetDistance > 20)
            {
                Extension.FightSpell(LightningBolt);
            }
            Extension.FightSpell(Stormstrike);
            Extension.FightSpell(EarthShock);
            Extension.FightSpell(LavaLash);
            if (Me.ManaPercentage < 20)
            {
                Extension.BuffSpell(WaterShield);
            }
            if (Me.ManaPercentage > 20 && !Me.HaveBuff(WaterShield.Id))

            {
                Extension.BuffSpell(LightningShield);
            }
        }
        if (Me.Level > 49 && Me.Level <= 80)
        {
            if (lowlevel == true)
            {
                lowlevel = false;
            }
            if (MyTarget.GetDistance < 20)
            {
                TotemManager.CotE();
                TotemManager.CastTotems();
            }
            if (MyTarget.GetDistance > 20 && ShamanLevelSettings.CurrentSetting.LNB)
            {
                Extension.FightSpell(LightningBolt);
            }
            if (Me.BuffStack(53817) >= 4)
            {
                if (Extension.GetAttackingUnits(5).Count() == 1)
                {
                    Extension.FightSpell(LightningBolt);
                }
                if (Extension.GetAttackingUnits(5).Count() > 1)
                {
                    Extension.FightSpell(ChainLightning);
                }
            }
            if (MyTarget.GetDistance < 7)
            {
                Extension.BuffSpell(ShamanisticRage);
            }
            Extension.FightSpell(Stormstrike);
            Extension.FightSpell(EarthShock);
            Extension.FightSpell(LavaLash);
            if (Me.ManaPercentage < 30)
            {
                Extension.BuffSpell(WaterShield);
            }
            if (Me.ManaPercentage > 30 && !Me.HaveBuff(WaterShield.Id))

            {
                Extension.BuffSpell(LightningShield);
            }
        }
    }
Ejemplo n.º 8
0
    internal static void Rotation()
    {
        while (_isLaunched)
        {
            try
            {
                if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause)
                {
                    if (lowlevel)
                    {
                        Main.settingRange = 25f;
                    }
                    if (!lowlevel)
                    {
                        Main.settingRange = 5f;
                    }
                    if (!Fight.InFight)
                    {
                        if (Spec == "Under10")
                        {
                            Under10Rotation();
                            Under10HealRotation();
                        }
                        if (Spec == "Elemental")
                        {
                            ElementalRotation();
                            ElementalHealRotation();
                        }
                        if (Spec == "Enhancement")
                        {
                            EnhancementRotation();
                            EnhancementHealRotation();
                        }
                        if (Spec == "Restoration")
                        {
                            RestorationRotation();
                            RestorationHealRotation();
                        }
                        TotemManager.CheckForTotemicCall();
                        BuffRotation();
                        EnchantWeapon();
                    }

                    if (Fight.InFight && ObjectManager.Me.HasTarget)
                    {
                        if (Spec == "Under10")
                        {
                            Under10Rotation();
                            Under10HealRotation();
                        }
                        if (Spec == "Elemental")
                        {
                            ElementalRotation();
                            ElementalHealRotation();
                        }
                        if (Spec == "Enhancement")
                        {
                            EnhancementRotation();
                            EnhancementHealRotation();
                        }
                        if (Spec == "Restoration")
                        {
                            RestorationRotation();
                            RestorationHealRotation();
                        }
                        EnchantWeapon();
                    }
                }
            }
            catch (Exception e)
            {
                Logging.Write("error" + e);
            }
            Thread.Sleep(ShamanLevelSettings.CurrentSetting.Delay);
        }
    }
Ejemplo n.º 9
0
        private Composite CreateRestoShamanHealOnlyBehavior(bool selfOnly)
        {
            NeedHealTargeting = true;

            return(new
                   PrioritySelector(
                       CreateWaitForCastWithCancel(SingularSettings.Instance.IgnoreHealTargetsAboveHealth),

                       new Decorator(
                           ret => SpellManager.HasSpell("Call of the Elements") &&
                           RaFHelper.Leader != null &&
                           TotemManager.TotemsInRangeOf(RaFHelper.Leader) == 0 &&
                           (Me.Combat || RaFHelper.Leader.Combat),
                           new Sequence(
                               new DecoratorContinue(ret => (Me.Totems.Count(t => t.Unit != null) != 0),
                                                     new Action(ret => TotemManager.RecallTotems())),
                               new Action(ret => TotemManager.SetupTotemBar()),
                               new Action(ret => TotemManager.CallTotems()))),

                       new Decorator(
                           ret => HealTargeting.Instance.FirstUnit != null,
                           new PrioritySelector(
                               ctx => selfOnly ? Me : HealTargeting.Instance.FirstUnit,

                               CreateSpellCast(
                                   "Earth Shield",
                                   ret => RaFHelper.Leader != null && (WoWUnit)ret == RaFHelper.Leader &&
                                   (!RaFHelper.Leader.HasAura("Earth Shield") || RaFHelper.Leader.Auras["Earth Shield"].StackCount < (Me.Combat ? 1 : 4)),
                                   ret => RaFHelper.Leader),

                               CreateSpellCast(
                                   "Healing Surge",
                                   ret => ((WoWUnit)ret).HealthPercent <= SingularSettings.Instance.Shaman.RAF_HealingSurge_Health,
                                   ret => (WoWUnit)ret),

                               CreateSpellCast(
                                   "Riptide",
                                   ret => !HasAuraStacks("Tidal Waves", 1, Me),
                                   ret => (WoWUnit)ret),

                               new Decorator(ret => ((WoWUnit)ret).HealthPercent <= SingularSettings.Instance.Shaman.RAF_GreaterHealingWave_Health,
                                             new Sequence(
                                                 CreateSpellCast(
                                                     "Unleash Elements",
                                                     ret => true,
                                                     ret => (WoWUnit)ret),
                                                 CreateSpellCast(
                                                     "Greater Healing Wave",
                                                     ret => true,
                                                     ret => (WoWUnit)ret)
                                                 )
                                             ),

                               CreateSpellCast(
                                   "Chain Heal",
                                   ret => ((WoWUnit)ret).HealthPercent <= SingularSettings.Instance.Shaman.RAF_ChainHeal_Health && WillChainHealHop((WoWUnit)ret),
                                   ret => (WoWUnit)ret),

                               CreateSpellCast(
                                   "Riptide",
                                   ret => ((WoWUnit)ret).HealthPercent <= SingularSettings.Instance.Shaman.RAF_Riptide_Health,
                                   ret => (WoWUnit)ret),

                               CreateSpellCast(
                                   "Healing Wave",
                                   ret => ((WoWUnit)ret).HealthPercent <= SingularSettings.Instance.Shaman.RAF_HealingWave_Health,
                                   ret => (WoWUnit)ret)
                               )
                           )
                       ));
        }
Ejemplo n.º 10
0
 void Start()
 {
     audioSource = GetComponent <AudioSource>();
     fire        = GetComponentInChildren <ParticleSystem>();
     _fireTotem  = GameObject.FindGameObjectWithTag("FireTotem").GetComponent <TotemManager>();
 }