18#ifndef __BATTLEGROUND_H
19#define __BATTLEGROUND_H
38 class InitWorldStates;
229#define BG_STARTING_EVENT_COUNT 4
238#define BG_AWARD_ARENA_POINTS_MIN_LEVEL 71
239#define ARENA_TIMELIMIT_POINTS_LOSS -16
260 virtual void Reset();
274 std::string
const&
GetName()
const {
return m_Name; }
300 void SetName(std::string
const& name) { m_Name = name; }
326 void AddToBGFreeSlotQueue();
327 void RemoveFromBGFreeSlotQueue();
333 void SetRandom(
bool isRandom) { m_IsRandom = isRandom; }
335 bool HasFreeSlots()
const;
352 void RemovePlayerFromResurrectQueue(
ObjectGuid player_guid);
355 void RelocateDeadPlayers(
ObjectGuid guideGuid);
357 void StartBattleground();
380 void SendPacketToTeam(
uint32 TeamID,
WorldPacket const* packet,
Player* sender =
nullptr,
bool self =
true)
const;
381 void SendPacketToAll(
WorldPacket const* packet)
const;
387 void BroadcastWorker(Do& _do);
390 void PlaySoundToAll(
uint32 soundID);
396 virtual void EndBattleground(
uint32 winner);
397 void BlockMovement(
Player* player);
408 virtual bool UpdatePlayerScore(
Player* player,
uint32 type,
uint32 value,
bool doAddHonor =
true);
416 --m_PlayersCount[GetTeamIndexByTeamId(
Team)];
418 ++m_PlayersCount[GetTeamIndexByTeamId(
Team)];
434 virtual void HandleKillPlayer(
Player* player,
Player* killer);
440 void EventPlayerLoggedIn(
Player* player);
441 void EventPlayerLoggedOut(
Player* player);
452 virtual void AddPlayer(
Player* player);
454 void AddOrSetPlayerToCorrectBgGroup(
Player* player,
uint32 team);
460 void SetHoliday(
bool is_holiday);
466 virtual bool AddObject(
uint32 type,
uint32 entry,
float x,
float y,
float z,
float o,
float rotation0,
float rotation1,
float rotation2,
float rotation3,
uint32 respawnTime = 0,
GOState goState =
GO_STATE_READY);
470 bool DelCreature(
uint32 type);
471 bool DelObject(
uint32 type);
472 bool RemoveObjectFromWorld(
uint32 type);
477 void DoorOpen(
uint32 type);
478 void DoorClose(
uint32 type);
485 bool IsPlayerInBattleground(
ObjectGuid guid)
const;
500 virtual uint32 GetPrematureWinner();
503 uint8 GetUniqueBracketId()
const;
507 auto itr = m_Players.find(playerGuid);
508 if (itr == m_Players.end())
520 void PlayerAddedToBGCheckIfBGIsRunning(
Player* player);
522 Player* _GetPlayer(
ObjectGuid guid,
bool offlineRemove,
char const* context)
const;
523 Player*
_GetPlayer(BattlegroundPlayerMap::iterator itr,
char const* context) {
return _GetPlayer(itr->first, itr->second.OfflineRemoveTime != 0, context); }
524 Player*
_GetPlayer(BattlegroundPlayerMap::const_iterator itr,
char const* context)
const {
return _GetPlayer(itr->first, itr->second.OfflineRemoveTime != 0, context); }
525 Player* _GetPlayerForTeam(
uint32 teamId, BattlegroundPlayerMap::const_iterator itr,
char const* context)
const;
527 void _ProcessOfflineQueue();
528 void _ProcessResurrect(
uint32 diff);
529 void _ProcessProgress(
uint32 diff);
530 void _ProcessLeave(
uint32 diff);
531 void _ProcessJoin(
uint32 diff);
532 void _CheckSafePositions(
uint32 diff);
@ BG_CRITERIA_CHECK_AV_PERFECTION
@ BG_CRITERIA_CHECK_SAVE_THE_DAY
@ BG_CRITERIA_CHECK_DEFENSE_OF_THE_ANCIENTS
@ BG_CRITERIA_CHECK_RESILIENT_VICTORY
@ BG_CRITERIA_CHECK_EVERYTHING_COUNTS
@ BG_CRITERIA_CHECK_NOT_EVEN_A_SCRATCH
BattlegroundTimeIntervals
@ INVITE_ACCEPT_WAIT_TIME
@ CHECK_PLAYER_POSITION_INVERVAL
const uint32 Buff_Entries[3]
BattlegroundDesertionType
@ BG_DESERTION_TYPE_LEAVE_BG
@ BG_DESERTION_TYPE_OFFLINE
@ BG_DESERTION_TYPE_NO_ENTER_BUTTON
@ BG_DESERTION_TYPE_LEAVE_QUEUE
@ BG_DESERTION_TYPE_INVITE_LOGOUT
BattlegroundStartingEvents
@ BG_OBJECTID_REGENBUFF_ENTRY
@ BG_OBJECTID_BERSERKERBUFF_ENTRY
@ BG_OBJECTID_SPEEDBUFF_ENTRY
@ BG_CREATURE_ENTRY_H_SPIRITGUIDE
@ BG_CREATURE_ENTRY_A_SPIRITGUIDE
BattlegroundBroadcastTexts
@ BG_TEXT_START_TWO_MINUTES
@ BG_TEXT_BATTLE_HAS_BEGUN
@ BG_TEXT_START_ONE_MINUTE
@ BG_TEXT_START_HALF_MINUTE
@ SPELL_AURA_PLAYER_INACTIVE
@ SPELL_RECENTLY_DROPPED_FLAG
@ SPELL_SPIRIT_HEAL_CHANNEL
@ SPELL_ARENA_PREPARATION
@ SPELL_HONORABLE_DEFENDER_25Y
@ SPELL_RESURRECTION_VISUAL
@ SPELL_WAITING_FOR_RESURRECT
@ SPELL_HONORABLE_DEFENDER_60Y
BattlegroundStartTimeIntervals
#define BG_AWARD_ARENA_POINTS_MIN_LEVEL
#define BG_STARTING_EVENT_COUNT
@ SPELL_AB_QUEST_REWARD_4_BASES
@ SPELL_AB_QUEST_REWARD_5_BASES
@ SPELL_AV_QUEST_KILLED_BOSS
BattlegroundStartingEventsIds
@ BG_STARTING_EVENT_THIRD
@ BG_STARTING_EVENT_SECOND
@ BG_STARTING_EVENT_FIRST
@ BG_STARTING_EVENT_FOURTH
AchievementCriteriaTimedTypes
std::vector< ObjectGuid > GuidVector
uint8 constexpr PVP_TEAMS_COUNT
void UpdateWorldState(Map *map, uint32 id, uint32 state)
virtual ObjectGuid GetFlagPickerGUID(int32=-1) const
void SetMapId(uint32 MapID)
GuidVector m_ResurrectQueue
void SetInstanceID(uint32 InstanceID)
void IncreaseInvitedCount(uint32 team)
BattlegroundTypeId GetTypeID(bool GetRandom=false) const
virtual void EventPlayerClickedOnFlag(Player *, GameObject *)
virtual bool HandlePlayerUnderMap(Player *)
uint32 GetReviveQueueSize() const
uint32 GetMinLevel() const
void ModifyStartDelayTime(int diff)
void SetRandom(bool isRandom)
void SetMaxPlayers(uint32 MaxPlayers)
static TeamId GetTeamIndexByTeamId(uint32 Team)
void SendWarningToAll(uint32 entry,...)
virtual bool SetupBattleground()
std::deque< ObjectGuid > m_OfflineQueue
uint32 GetMinPlayersPerTeam() const
virtual void HandlePlayerResurrect(Player *)
uint8 GetArenaType() const
BattlegroundPlayerMap m_Players
uint32 GetMaxPlayersPerTeam() const
uint32 GetArenaTeamIdByIndex(uint32 index) const
uint32 m_ValidStartPositionTimer
void SetName(std::string const &name)
void SetWinner(PvPTeamId winnerTeamId)
uint32 GetArenaMatchmakerRating(uint32 Team) const
uint32 m_ClientInstanceID
uint32 GetPlayerScoresSize() const
uint32 GetEndTime() const
BattlegroundTypeId m_TypeID
Group * GetBgRaid(uint32 TeamID) const
virtual void HandleQuestComplete(uint32, Player *)
void SetScriptId(uint32 scriptId)
uint32 m_LastResurrectTime
virtual bool IsAllNodesControlledByTeam(uint32) const
bool CanAwardArenaPoints() const
void SetBgMap(BattlegroundMap *map)
uint32 GetMaxPlayers() const
BattlegroundMap * GetBgMap() const
virtual void PostUpdateImpl(uint32)
Post-update hook.
BattlegroundTypeId m_RandomTypeID
void DecreaseInvitedCount(uint32 team)
std::string const & GetName() const
PvPTeamId GetWinner() const
void SetMinPlayersPerTeam(uint32 MinPlayers)
void SetRated(bool state)
virtual void RemovePlayer(Player *, ObjectGuid, uint32)
uint32 GetArenaTeamIdForTeam(uint32 Team) const
BattlegroundMap * FindBgMap() const
void SetStartMaxDist(float startMaxDist)
virtual void ResetBGSubclass()
std::map< ObjectGuid, GuidVector > m_ReviveQueue
bool m_PrematureCountDown
uint32 GetInstanceID() const
uint32 m_PrematureCountDownTimer
void SetStartTime(uint32 Time)
void SetEndTime(uint32 Time)
virtual void DoAction(uint32, ObjectGuid)
void SetLevelRange(uint32 min, uint32 max)
uint32 GetClientInstanceID() const
virtual bool IsSpellAllowed(uint32, Player const *) const
BattlegroundPlayer const * GetBattlegroundPlayerData(ObjectGuid const &playerGuid) const
void SetClientInstanceID(uint32 InstanceID)
void SetStatus(BattlegroundStatus Status)
virtual void StartingEventCloseDoors()
BattlegroundBracketId m_BracketId
void SetArenaTeamIdForTeam(uint32 Team, uint32 ArenaTeamId)
void SetArenaType(uint8 type)
void SetArenaMatchmakerRating(uint32 Team, uint32 MMR)
void SetRandomTypeID(BattlegroundTypeId TypeID)
uint32 GetStartTime() const
BattlegroundPlayerMap const & GetPlayers() const
int32 GetStartDelayTime() const
BattlegroundScoreMap PlayerScores
virtual void StartingEventOpenDoors()
float GetStartMaxDist() const
virtual void SetDroppedFlagGUID(ObjectGuid, int32=-1)
bool isBattleground() const
uint32 m_MinPlayersPerTeam
void SetLastResurrectTime(uint32 Time)
BattlegroundStatus GetStatus() const
void SetArenaorBGType(bool _isArena)
virtual void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates &)
virtual void HandleKillUnit(Creature *, Player *)
uint32 GetPlayersCountByTeam(uint32 Team) const
virtual bool PreUpdateImpl(uint32)
Pre-update hook.
uint32 GetLastResurrectTime() const
Trinity::unique_weak_ptr< Battleground > m_weakRef
uint32 GetScriptId() const
virtual void CheckWinConditions()
uint32 m_MaxPlayersPerTeam
std::map< ObjectGuid, BattlegroundPlayer > BattlegroundPlayerMap
virtual void ProcessEvent(WorldObject *, uint32, WorldObject *=nullptr)
std::map< ObjectGuid, BattlegroundScore * > BattlegroundScoreMap
virtual void DestroyGate(Player *, GameObject *)
BattlegroundBracketId GetBracketId() const
void UpdatePlayersCountByTeam(uint32 Team, bool remove)
virtual bool CanActivateGO(int32, uint32) const
virtual void EventPlayerDroppedFlag(Player *)
uint32 GetMaxLevel() const
void SetMinPlayers(uint32 MinPlayers)
Trinity::unique_weak_ptr< Battleground > GetWeakPtr() const
uint32 GetPlayersSize() const
Player * _GetPlayer(BattlegroundPlayerMap::iterator itr, char const *context)
void SetMaxPlayersPerTeam(uint32 MaxPlayers)
void SetStartDelayTime(int Time)
void SetWeakPtr(Trinity::unique_weak_ptr< Battleground > weakRef)
uint32 GetMinPlayers() const
Player * _GetPlayer(BattlegroundPlayerMap::const_iterator itr, char const *context) const
uint32 GetInvitedCount(uint32 team) const
BattlegroundStatus m_Status
void SetTypeID(BattlegroundTypeId TypeID)
void RemoveFromBGFreeSlotQueueOnShutdown()
static ObjectGuid const Empty
Trinity::unique_trackable_ptr companion class, replicating what std::weak_ptr is to std::shared_ptr.