26#include <unordered_map>
188 bool CanActivate()
const;
198 void DeleteGameObject(
Map* map);
211 uint32 GetItemLevel()
const;
212 bool HasAbility(
uint32 garrAbilityId)
const;
236 std::vector<Plot*> GetPlots();
237 Plot* GetPlot(
uint32 garrPlotInstanceId);
238 Plot
const* GetPlot(
uint32 garrPlotInstanceId)
const;
241 void LearnBlueprint(
uint32 garrBuildingId);
242 void UnlearnBlueprint(
uint32 garrBuildingId);
243 bool HasBlueprint(
uint32 garrBuildingId)
const {
return _knownBuildings.find(garrBuildingId) != _knownBuildings.end(); }
244 void PlaceBuilding(
uint32 garrPlotInstanceId,
uint32 garrBuildingId);
245 void CancelBuildingConstruction(
uint32 garrPlotInstanceId);
246 void ActivateBuilding(
uint32 garrPlotInstanceId);
249 void AddFollower(
uint32 garrFollowerId);
251 template<
typename Predicate>
255 for (
auto itr = _followers.begin(); itr != _followers.end(); ++itr)
256 if (predicate(itr->second))
263 void SendRemoteInfo()
const;
264 void SendBlueprintAndSpecializationData();
265 void SendMapData(
Player* receiver)
const;
270 Map* FindMap()
const;
271 void InitializePlots();
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
std::shared_ptr< PreparedResultSet > PreparedQueryResult
@ GARRISON_FACTION_INDEX_HORDE
@ GARRISON_FACTION_INDEX_ALLIANCE
@ GARRISON_ABILITY_FLAG_ACTIVE_ONLY_ON_ZONE_SUPPORT
@ GARRISON_ABILITY_FLAG_EXCLUSIVE
@ GARRISON_ABILITY_FLAG_CANNOT_REMOVE
@ GARRISON_ABILITY_FLAG_TRAIT
@ GARRISON_ABILITY_FLAG_IS_SPECIALIZATION
@ GARRISON_ABILITY_FLAG_IS_EMPTY_SLOT
@ GARRISON_ABILITY_ALLIANCE_ONLY
@ GARRISON_ABILITY_FLAG_SINGLE_MISSION_DURATION
@ GARRISON_ABILITY_CANNOT_ROLL
@ GARRISON_ABILITY_HORDE_ONLY
@ GARRISON_ABILITY_FLAG_APPLY_TO_FIRST_MISSION
@ FOLLOWER_TYPE_CLASS_ORDER
@ FOLLOWER_TYPE_WAR_CAMPAIGN
@ GARRISON_TYPE_CLASS_ORDER
@ GARRISON_TYPE_WAR_CAMPAIGN
@ GARRISON_BUILDING_FLAG_NEEDS_PLAN
@ GARRISON_FOLLOWER_FLAG_UNIQUE
@ FOLLOWER_STATUS_INACTIVE
@ FOLLOWER_STATUS_FAVORITE
@ FOLLOWER_STATUS_EXHAUSTED
@ FOLLOWER_STATUS_NO_XP_GAIN
@ GARRISON_ERROR_REQUIRES_BLUEPRINT
@ GARRISON_ERROR_BUILDING_MISSING
@ GARRISON_ERROR_INVALID_SITE_ID
@ GARRISON_ERROR_FAILED_CONDITION
@ GARRISON_ERROR_PROXY_NOT_OK
@ GARRISON_ERROR_INVALID_GARRISON
@ GARRISON_ERROR_MISSION_NOT_OFFERED
@ GARRISON_ERROR_FOLLOWER_FATIGUED
@ GARRISON_ERROR_INVALID_BUILDINGID
@ GARRISON_ERROR_INVALID_PLOT_BUILDING
@ GARRISON_ERROR_INVALID_PLOT_INSTANCEID
@ GARRISON_ERROR_BUILDING_TYPE_EXISTS
@ GARRISON_ERROR_FOLLOWER_ALREADY_ON_MISSION
@ GARRISON_ERROR_UPGRADE_LEVEL_EXCEEDS_GARRISON_LEVEL
@ GARRISON_ERROR_INTERNAL_ERROR
@ GARRISON_ERROR_RECRUITMENT_ON_COOLDOWN
@ GARRISON_ERROR_MISSION_REQUIRES_100_TO_START
@ GARRISON_ERROR_SPECIALIZATION_ON_COOLDOWN
@ GARRISON_ERROR_FOLLOWER_ACTIVATION_UNAVAILABLE
@ GARRISON_ERROR_NOT_ENOUGH_CURRENCY
@ GARRISON_ERROR_ON_REMOVE_BUILDING_SPELL_FAILED
@ GARRISON_ERROR_OPERATION_NOT_SUPPORTED
@ GARRISON_ERROR_INVALID_MISSION
@ GARRISON_ERROR_BUILDING_EXISTS
@ GARRISON_ERROR_INVALID_UPGRADE_LEVEL
@ GARRISON_ERROR_RECALL_PORTAL_USED_LESS_THAN_24_HOURS_AGO
@ GARRISON_ERROR_INVALID_STATIC_TABLE_VALUE
@ GARRISON_ERROR_ALREADY_RESEARCHING_TALENT
@ GARRISON_ERROR_PLOTS_NOT_FULL
@ GARRISON_ERROR_NO_BUILDING
@ GARRISON_ERROR_FOLLOWER_CANNOT_GAIN_XP
@ GARRISON_ERROR_CONSTRUCTION_COMPLETE
@ GARRISON_ERROR_HIGHER_BUILDING_TYPE_EXISTS
@ GARRISON_ERROR_NO_GARRISON
@ GARRISON_ERROR_FOLLOWER_ACTIVE
@ GARRISON_ERROR_MISSION_REWARDS_PENDING
@ GARRISON_ERROR_NOT_IN_GARRISON
@ GARRISON_ERROR_NO_MISSION_NPC
@ GARRISON_ERROR_UPGRADE_CONDITION_FAILED
@ GARRISON_ERROR_NOT_ON_MISSION
@ GARRISON_ERROR_INVALID_SPECIALIZATION
@ GARRISON_ERROR_FOLLOWER_SOFT_CAP_EXCEEDED
@ GARRISON_ERROR_RECRUITMENT_NPC_NOT_AVAILABLE
@ GARRISON_ERROR_INVALID_MISSION_TIME
@ GARRISON_ERROR_RECRUIT_BLOCKED_BY_GENERATION
@ GARRISON_ERROR_MISSION_NOT_COMPLETE
@ GARRISON_ERROR_SPECIALIZATION_EXISTS
@ GARRISON_ERROR_INVALID_MISSION_REWARD_INDEX
@ GARRISON_ERROR_INVALID_AVAILABLE_RECRUIT
@ GARRISON_ERROR_INVALID_MISSION_BONUS_ABILITY
@ GARRISON_ERROR_INVALID_GARRISON_LEVEL
@ GARRISON_ERROR_INVALID_CLASS
@ GARRISON_ERROR_INVALID_TIER
@ GARRISON_ERROR_AT_CLASS_SPEC_CAP
@ GARRISON_ERROR_INVALID_FOLLOWER
@ GARRISON_ERROR_MISSION_MISSING_REQUIRED_FOLLOWER
@ GARRISON_ERROR_INVALID_ITEM_LEVEL
@ GARRISON_ERROR_GARRISON_LEVEL_UNCHANGED
@ GARRISON_ERROR_NOT_ENOUGH_GOLD
@ GARRISON_ERROR_ARCHITECT_NOT_AVAILABLE
@ GARRISON_ERROR_FOLLOWER_EXISTS
@ GARRISON_ERROR_BLUEPRINT_EXISTS
@ GARRISON_ERROR_RECRUITMENT_GENERATION_IN_PROGRESS
@ GARRISON_ERROR_INVALID_DOODAD_SET_ID
@ GARRISON_ERROR_FOLLOWER_TYPE_MISMATCH
@ GARRISON_ERROR_FOLLOWER_INACTIVE
@ GARRISON_ERROR_MISSION_SIZE_INVALID
@ GARRISON_ERROR_ALREADY_COMPLETED_MISSION
@ GARRISON_ERROR_MISSION_START_CONDITION_FAILED
@ GARRISON_ERROR_ALREADY_ON_MISSION
@ GARRISON_ERROR_INVALID_FOLLOWER_LEVEL
@ GARRISON_ERROR_FOLLOWER_INVALID_FOR_BUILDING
@ GARRISON_ERROR_FOLLOWER_IN_BUILDING
@ GARRISON_ERROR_GARRISON_EXISTS
@ GARRISON_ERROR_NO_ARCHITECT
@ GARRISON_ERROR_INVALID_GARRISON_TYPE
@ GARRISON_ERROR_MISSION_EXISTS
@ GARRISON_ERROR_GARRISON_SAME_TYPE_EXISTS
@ GARRISON_ERROR_AT_FOLLOWER_HARD_CAP
@ GARRISON_ERROR_FOLLOWER_ALREADY_RECRUITED
@ GARRISON_ERROR_INVALID_FOLLOWER_QUALITY
@ GARRISON_ERROR_INVALID_FACTION
@ GARRISON_ERROR_MISSION_NPC_NOT_AVAILABLE
@ GARRISON_ERROR_INVALID_TALENT
@ GARRISON_ERROR_MISSION_EXPIRED
@ GARRISON_ERROR_INVALID_FOLLOWER_ABILITY
@ GARRISON_ERROR_BUILDING_NOT_ACTIVE
std::optional< T > Optional
Optional helper class to wrap optional values within.
static void SaveToDB(QuestPool const &pool, CharacterDatabaseTransaction trans)
GarrSiteLevelEntry const * _siteLevel
std::unordered_map< uint64, Follower > _followers
std::unordered_set< uint32 > _followerIds
uint32 CountFollowers(Predicate &&predicate) const
GarrisonType GetType() const
bool HasBlueprint(uint32 garrBuildingId) const
std::unordered_map< uint32, Plot > _plots
GarrSiteLevelEntry const * GetSiteLevel() const
std::unordered_set< uint32 > _knownBuildings
uint32 _followerActivationsRemainingToday
void ResetFollowerActivationLimit()
std::unique_ptr< VignetteData > Create(VignetteEntry const *vignetteData, WorldObject const *owner)
Optional< WorldPackets::Garrison::GarrisonBuildingInfo > PacketInfo
std::unordered_set< ObjectGuid > Spawns
WorldPackets::Garrison::GarrisonFollower PacketInfo
WorldPackets::Garrison::GarrisonPlotInfo PacketInfo