public override async Task <bool> BehaviorRoutine()
        {
            if (await base.BehaviorRoutine())
            {
                return(true);
            }
            if (IsDone)
            {
                return(false);
            }


            if (_entryId != 0)
            {
                if (StyxWoW.Me.CurrentTarget != null)
                {
                    if (StyxWoW.Me.CurrentTarget.Entry == _entryId)
                    {
                        IsDone = true;
                        return(false);
                    }
                }

                var _units = ObjectCacheManager.GetWoWUnits(_entryId);
                if (_units.Count > 0)
                {
                    TreeRoot.StatusText = String.Format("Behavior Targeting Unit {0}", _units[0].Name);
                    _units[0].RefWoWUnit.Target();
                    await CommonCoroutines.SleepForRandomUiInteractionTime();

                    return(true);
                }
            }
            else
            {
                var _units = ObjectCacheManager.GetUnitsNearPoint(_location, 5f);
                if (_units.Count > 0)
                {
                    if (StyxWoW.Me.CurrentTarget != null)
                    {
                        if (StyxWoW.Me.CurrentTarget.Entry == _units[0].Entry)
                        {
                            IsDone = true;
                            return(false);
                        }
                    }

                    TreeRoot.StatusText = String.Format("Behavior Targeting Unit {0}", _units[0].Name);
                    _units[0].RefWoWUnit.Target();
                    await CommonCoroutines.SleepForRandomUiInteractionTime();

                    return(true);
                }
            }


            return(false);
        }
Beispiel #2
0
        internal static BehaviorArray GetDailyQuestArray(uint questid, bool alliance)
        {
            switch (questid)
            {
            case 38175:
            case 38188:
            {
                var questNpcId    = alliance ? 77377 : 79815;
                var warmillBunker = GarrisonManager.Buildings[BuildingType.WarMillDwarvenBunker];
                var questPickup   = new BehaviorQuestPickup(questid, warmillBunker.SpecialMovementPoints[1], questNpcId);
                var questTurnin   = new BehaviorQuestTurnin(questid, warmillBunker.SpecialMovementPoints[1], questNpcId, BaseSettings.CurrentSettings.DailyWarMillQuestSettings.RewardIndex);
                var barray        = new BehaviorArray(new Behavior[]
                    {
                        questPickup,
                        questTurnin,
                    });
                barray.Criteria += () => BaseSettings.CurrentSettings.BehaviorQuests &&
                                   BaseSettings.CurrentSettings.DailyWarMillQuestSettings.Enabled &&
                                   BaseSettings.CurrentSettings.DailyWarMillQuestSettings.RewardIndex > -1 &&
                                   !LuaCommands.IsQuestFlaggedCompleted(questid.ToString());

                barray.Criteria += () =>
                {
                    var items = Player.Inventory.GetBagItemsById(113681).Where(i => i.StackCount > 24).ToList();
                    return(items.Count > 0);
                };

                return(barray);
            }

            case 37270:
            {
                var alchemyLab = GarrisonManager.Buildings[BuildingType.AlchemyLab];

                var questPickup = new BehaviorQuestPickup(
                    questid,
                    alchemyLab.EntranceMovementPoint,
                    0,
                    true,
                    BaseSettings.CurrentSettings.DailyAlchemyLabQuestSettings.RewardIndex);

                //Use special method of getting the interaction object since it varies on which follower is assigned!
                questPickup.GetInteractionObject = i =>
                {
                    var validObjects =
                        ObjectCacheManager.GetUnitsNearPoint(alchemyLab.EntranceMovementPoint, 30f, false)
                        .Where(u => u.QuestGiverStatus == QuestGiverStatus.AvailableRepeatable && !ObjectCacheManager.QuestNpcIds.Contains(u.Entry))
                        .ToList();

                    return(validObjects.Count > 0 ? validObjects[0] : null);
                };

                var barray = new BehaviorArray(new Behavior[]
                    {
                        questPickup,
                    });
                barray.Criteria += () => BaseSettings.CurrentSettings.BehaviorQuests &&
                                   BaseSettings.CurrentSettings.DailyAlchemyLabQuestSettings.Enabled &&
                                   BaseSettings.CurrentSettings.DailyAlchemyLabQuestSettings.RewardIndex > -1 &&
                                   !LuaCommands.IsQuestFlaggedCompleted(questid.ToString());

                return(barray);
            }
            }

            return(null);
        }