public Building(int id) { Id = id; Type = GetBuildingTypeUsingId(Id); Level = GetBuildingUpgradeLevel(Id); Plot = GetBuildingPlotSize(Type); HasFollowerWorking = GarrisonManager.BuildingIdsWithFollowerWorking.Contains(Id); WorkOrderType = WorkOrder.GetWorkorderType(Type); if (WorkOrderType != WorkOrderType.None) { WorkOrderObjectEntryId = WorkOrder.WorkOrderPickupEntryIds[WorkOrderType]; WorkOrderObjectName = WorkOrder.WorkOrderPickupNames[WorkOrderType]; if (WorkOrderType == WorkOrderType.WarMillDwarvenBunker && Player.IsAlliance) { WorkOrderObjectName = WorkOrder.WorkOrderPickupNames[WorkOrderType.DwarvenBunker]; } } else { WorkOrderObjectEntryId = -1; WorkOrderObjectName = String.Empty; } WorkOrderNpcEntryId = WorkOrder.GetWorkOrderNpcEntryId(Type, Player.IsAlliance); if (GarrisonManager.BuildingIDs.Contains(Id)) { string plotid; bool canActivate, isBuilding; int shipTotal, shipCap, shipReady; LuaCommands.GetBuildingInfo(id, out plotid, out canActivate, out shipCap, out shipReady, out shipTotal, out isBuilding); if (WorkOrderType != WorkOrderType.None) { _workorder = new WorkOrder(Id, Type, WorkOrderType, shipCap, WorkOrder.GetWorkOrderItemAndQuanityRequired(WorkOrderType), shipReady, shipTotal); } PlotId = plotid.ToInt32(); CanActivate = canActivate; IsBuilding = isBuilding; SafeMovementPoint = MovementCache.GetBuildingSafeMovementPoint(PlotId); EntranceMovementPoint = MovementCache.GetBuildingEntranceMovementPoint(PlotId); } else if (Type == BuildingType.HerbGarden || Type == BuildingType.Mines) {//if not completed first quest than we must insert temp info. PlotId = Type == BuildingType.HerbGarden ? 63 : 59; SafeMovementPoint = MovementCache.GetBuildingSafeMovementPoint(PlotId); EntranceMovementPoint = MovementCache.GetBuildingEntranceMovementPoint(PlotId); _workorder = new WorkOrder(Id, Type, WorkOrderType, 0, WorkOrder.GetWorkOrderItemAndQuanityRequired(WorkOrderType)); } SpecialMovementPoints = MovementCache.GetSpecialMovementPoints(Type, PlotId, Level, Player.IsAlliance); int firstquestID = GetBuildingFirstQuestId(Type, Player.IsAlliance); if (firstquestID > 0) { FirstQuestId = Convert.ToUInt32(firstquestID); FirstQuestCompleted = LuaCommands.IsQuestFlaggedCompleted(FirstQuestId.ToString()); if (Type == BuildingType.TradingPost) { FirstQuestNpcId = WorkOrderNpcEntryId; } else { FirstQuestNpcId = GetBuildingFirstQuestNpcId(Type, Player.IsAlliance); } } else { FirstQuestId = 0; FirstQuestNpcId = 0; FirstQuestCompleted = true; } }
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); }