27#include <unordered_map>
189 bool CanActivate()
const;
199 void DeleteGameObject(
Map* map);
212 uint32 GetItemLevel()
const;
213 bool HasAbility(
uint32 garrAbilityId)
const;
225 bool Create(
uint32 garrSiteId);
238 std::vector<Plot*> GetPlots();
239 Plot* GetPlot(
uint32 garrPlotInstanceId);
240 Plot
const* GetPlot(
uint32 garrPlotInstanceId)
const;
243 void LearnBlueprint(
uint32 garrBuildingId);
244 void UnlearnBlueprint(
uint32 garrBuildingId);
245 bool HasBlueprint(
uint32 garrBuildingId)
const {
return _knownBuildings.find(garrBuildingId) != _knownBuildings.end(); }
246 void PlaceBuilding(
uint32 garrPlotInstanceId,
uint32 garrBuildingId);
247 void CancelBuildingConstruction(
uint32 garrPlotInstanceId);
248 void ActivateBuilding(
uint32 garrPlotInstanceId);
251 void AddFollower(
uint32 garrFollowerId);
253 template<
typename Predicate>
257 for (
auto itr = _followers.begin(); itr != _followers.end(); ++itr)
258 if (predicate(itr->second))
265 void SendRemoteInfo()
const;
266 void SendBlueprintAndSpecializationData();
267 void SendMapData(
Player* receiver)
const;
272 Map* FindMap()
const;
273 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
static constexpr GarrisonFactionIndex GetFaction(Team team)
uint32 _followerActivationsRemainingToday
void ResetFollowerActivationLimit()
Optional< WorldPackets::Garrison::GarrisonBuildingInfo > PacketInfo
std::unordered_set< ObjectGuid > Spawns
WorldPackets::Garrison::GarrisonFollower PacketInfo
WorldPackets::Garrison::GarrisonPlotInfo PacketInfo