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); }
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); }