Ejemplo n.º 1
0
        internal static BehaviorArray GetGarrisonBuildingFirstQuestArray(Building b, bool alliance)
        {
            if (b.Type == BuildingType.SalvageYard)
            {
                //var abandon = new Behaviors.BehaviorQuestAbandon(b.FirstQuestID);
                var pickup          = new BehaviorQuestPickup(b.FirstQuestId, b.SafeMovementPoint, b.WorkOrderNpcEntryId);
                var itemInteraction = new BehaviorItemInteraction(118473);
                var turnin          = new BehaviorQuestTurnin(b.FirstQuestId, b.SafeMovementPoint, b.WorkOrderNpcEntryId);
                var behaviorArray   = new BehaviorArray(new Behavior[] { pickup, itemInteraction, turnin });
                behaviorArray.Criteria += () => BaseSettings.CurrentSettings.BehaviorQuests;
                return(behaviorArray);
            }
            else if (b.Type == BuildingType.TradingPost)
            {
                var pickup  = new BehaviorQuestPickup(b.FirstQuestId, b.SafeMovementPoint, b.WorkOrderNpcEntryId);
                var moveLoc = Player.IsAlliance
                    ? new WoWPoint(1764.08, 150.39, 76.02)
                    : new WoWPoint(5745.101, 4570.491, 138.8332);

                var moveto   = new BehaviorMove(moveLoc, 7f);
                var npcId    = Player.IsAlliance ? 87288 : 87260;
                var target   = new BehaviorSelectTarget(moveLoc);
                var interact = new BehaviorItemInteraction(118418, true);
                var turnin   = new BehaviorQuestTurnin(b.FirstQuestId, b.SafeMovementPoint, b.WorkOrderNpcEntryId);

                var behaviorArray = new BehaviorArray(new Behavior[] { pickup, moveto, target, interact, turnin });
                behaviorArray.Criteria += () => BaseSettings.CurrentSettings.BehaviorQuests;
                return(behaviorArray);
            }
            else if (b.Type == BuildingType.Storehouse)
            {
                var pickup = new BehaviorQuestPickup(b.FirstQuestId, b.EntranceMovementPoint, b.FirstQuestNpcId);

                List <WoWPoint> _hotSpots = new List <WoWPoint>
                {
                    MovementCache.GarrisonEntrance,

                    MovementCache.GardenPlot63SafePoint,
                    MovementCache.MinePlot59SafePoint,

                    MovementCache.MediumPlot22SafePoint,
                    MovementCache.LargePlot23SafePoint,
                    MovementCache.LargePlot24SafePoint,
                    MovementCache.MediumPlot25SafePoint,

                    MovementCache.SmallPlot18SafePoint,
                    MovementCache.SmallPlot19SafePoint,
                    MovementCache.SmallPlot20SafePoint,
                };

                var looting = new BehaviorHotspotRunning(_hotSpots.ToArray(), BehaviorHotspotRunning.HotSpotType.Looting, () => BehaviorManager.HasQuestAndNotCompleted(b.FirstQuestId));
                var turnin  = new BehaviorQuestTurnin(b.FirstQuestId, b.EntranceMovementPoint, b.FirstQuestNpcId);

                var behaviorArray = new BehaviorArray(new Behavior[] { pickup, looting, turnin });
                behaviorArray.Criteria += () => BaseSettings.CurrentSettings.BehaviorQuests;
                return(behaviorArray);
            }
            else if (b.Type == BuildingType.Lumbermill)
            {
                var pickup = new BehaviorQuestPickup(b.FirstQuestId, b.EntranceMovementPoint, b.FirstQuestNpcId);

                WoWPoint movementPoint;
                if (Player.IsAlliance)
                {
                    movementPoint = new WoWPoint(1555.087, 173.8229, 72.59766);
                }
                else
                {
                    movementPoint = new WoWPoint(6082.979, 4795.821, 149.1655);
                }

                var looting       = new BehaviorHotspotRunning(new[] { movementPoint }, new uint[] { 234021, 233922 }, BehaviorHotspotRunning.HotSpotType.Looting, () => BehaviorManager.HasQuestAndNotCompleted(b.FirstQuestId));
                var turnin        = new BehaviorQuestTurnin(b.FirstQuestId, b.EntranceMovementPoint, b.FirstQuestNpcId);
                var behaviorArray = new BehaviorArray(new Behavior[] { pickup, looting, turnin });
                behaviorArray.Criteria += () => BaseSettings.CurrentSettings.BehaviorQuests;
                return(behaviorArray);
            }
            else if (b.Type == BuildingType.Mines)
            {
                var pickup = new BehaviorQuestPickup(b.FirstQuestId, b.EntranceMovementPoint, b.FirstQuestNpcId);

                var looting = new BehaviorHotspotRunning(Player.IsAlliance ?
                                                         MovementCache.Alliance_Mine_LevelOne.ToArray() :
                                                         MovementCache.Horde_Mine_LevelOne.ToArray(),
                                                         MineQuestMobIDs.ToArray(),
                                                         BehaviorHotspotRunning.HotSpotType.Killing,
                                                         () => BehaviorManager.HasQuestAndNotCompleted(b.FirstQuestId));

                var turnin = new BehaviorQuestTurnin(b.FirstQuestId, b.EntranceMovementPoint, b.FirstQuestNpcId);

                var behaviorArray = new BehaviorArray(new Behavior[] { pickup, looting, turnin });
                behaviorArray.Criteria += () => BaseSettings.CurrentSettings.BehaviorQuests;
                return(behaviorArray);
            }
            else if (b.Type == BuildingType.HerbGarden)
            {
                var pickup = new BehaviorQuestPickup(b.FirstQuestId, b.EntranceMovementPoint, b.FirstQuestNpcId);

                var looting = new BehaviorHotspotRunning(Player.IsAlliance ?
                                                         MovementCache.Alliance_Herb_LevelOne.ToArray() :
                                                         MovementCache.Horde_Herb_LevelOne.ToArray(),
                                                         HerbQuestMobIDs.ToArray(),
                                                         BehaviorHotspotRunning.HotSpotType.Killing,
                                                         () => BehaviorManager.HasQuestAndNotCompleted(b.FirstQuestId));

                var turnin = new BehaviorQuestTurnin(b.FirstQuestId, b.EntranceMovementPoint, b.FirstQuestNpcId);

                var behaviorArray = new BehaviorArray(new Behavior[] { pickup, looting, turnin });
                behaviorArray.Criteria += () => BaseSettings.CurrentSettings.BehaviorQuests;
                return(behaviorArray);
            }
            else
            {
                var pickup          = new BehaviorQuestPickup(b.FirstQuestId, b.SafeMovementPoint, b.FirstQuestNpcId);
                var workorder       = new BehaviorQuestWorkOrder(b);
                var workorderPickup = new BehaviorQuestWorkOrderPickup(b);
                var turnin          = new BehaviorQuestTurnin(b.FirstQuestId, b.SafeMovementPoint, b.WorkOrderNpcEntryId);
                var behaviorArray   = new BehaviorArray(new Behavior[] { pickup, workorder, workorderPickup, turnin });
                behaviorArray.Criteria += () => BaseSettings.CurrentSettings.BehaviorQuests;
                return(behaviorArray);
            }
        }
Ejemplo n.º 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);
        }