6#ifndef SF_BATTLEGROUND_H
7#define SF_BATTLEGROUND_H
221#define BG_TEAMS_COUNT 2
239#define BG_STARTING_EVENT_COUNT 4
264#define BG_AWARD_ARENA_POINTS_MIN_LEVEL 71
265#define ARENA_TIMELIMIT_POINTS_LOSS -16
286 virtual void Reset();
511 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);
552 Player*
_GetPlayer(BattlegroundPlayerMap::iterator itr,
const char* context);
553 Player*
_GetPlayer(BattlegroundPlayerMap::const_iterator itr,
const char* context)
const;
@ 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
@ PLAYER_POSITION_UPDATE_INTERVAL
@ TIME_AUTOCLOSE_BATTLEGROUND
@ BATTLEGROUND_COUNTDOWN_MAX
@ CHECK_PLAYER_POSITION_INVERVAL
BattlegroundStartingEvents
@ BG_OBJECTID_REGENBUFF_ENTRY
@ BG_OBJECTID_BERSERKERBUFF_ENTRY
@ BG_OBJECTID_SPEEDBUFF_ENTRY
@ BG_CREATURE_ENTRY_H_SPIRITGUIDE
@ BG_CREATURE_ENTRY_A_SPIRITGUIDE
uint32 const Buff_Entries[3]
@ SPELL_AURA_PLAYER_INACTIVE
@ SPELL_ALLIANCE_GOLD_FLAG
@ SPELL_THE_LAST_STANDING
@ SPELL_RECENTLY_DROPPED_FLAG
@ SPELL_SPIRIT_HEAL_CHANNEL
@ SPELL_ARENA_PREPARATION
@ SPELL_HONORABLE_DEFENDER_25Y
@ SPELL_RESURRECTION_VISUAL
@ SPELL_ALLIANCE_GREEN_FLAG
@ SPELL_WAITING_FOR_RESURRECT
@ SPELL_HONORABLE_DEFENDER_60Y
@ SCORE_GRAVEYARDS_ASSAULTED
@ SCORE_SECONDARY_OBJECTIVES
@ SCORE_DESTROYED_DEMOLISHER
@ SCORE_GRAVEYARDS_DEFENDED
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
void GetTeamStartLoc(uint32 TeamID, float &X, float &Y, float &Z, float &O) const
virtual void AddPlayer(Player *player)
void SetMapId(uint32 MapID)
void SetRemainingTime(uint32 Time)
void SetInstanceID(uint32 InstanceID)
void IncreaseInvitedCount(uint32 team)
uint32 GetAlivePlayersCountByTeam(uint32 Team) const
virtual void EventPlayerDamagedGO(Player *, GameObject *, uint32)
BattlegroundTypeId GetTypeID(bool GetRandom=false) const
void EndBattleground(uint32 winner)
virtual void EventPlayerClickedOnFlag(Player *, GameObject *)
virtual bool HandlePlayerUnderMap(Player *)
virtual void HandleKillUnit(Creature *, Player *)
uint32 GetReviveQueueSize() const
char const * GetName() const
Group * m_BgRaids[BG_TEAMS_COUNT]
int32 GetArenaTeamRatingChangeForTeam(uint32 Team) const
uint32 GetMinLevel() const
void ModifyStartDelayTime(int diff)
uint32 m_ArenaTeamIds[BG_TEAMS_COUNT]
void SetRandom(bool isRandom)
void SetMaxPlayers(uint32 MaxPlayers)
void CastSpellOnTeam(uint32 SpellID, uint32 TeamID)
void SetElapsedTime(uint32 Time)
virtual void HandleKillPlayer(Player *player, Player *killer)
virtual uint64 GetFlagPickerGUID(int32=-1) const
static TeamId GetTeamIndexByTeamId(uint32 Team)
virtual bool SetupBattleground()
float m_TeamStartLocX[BG_TEAMS_COUNT]
void DoorOpen(uint32 type)
uint32 GetMinPlayersPerTeam() const
void PlayerAddedToBGCheckIfBGIsRunning(Player *player)
bool DelCreature(uint32 type)
virtual void HandlePlayerResurrect(Player *)
int32 GetArenaTeamRatingChangeByIndex(uint32 index) const
uint8 GetArenaType() const
float m_TeamStartLocY[BG_TEAMS_COUNT]
BattlegroundPlayerMap m_Players
void SpawnBGObject(uint32 type, uint32 respawntime)
uint32 GetMaxPlayersPerTeam() const
uint32 GetArenaTeamIdByIndex(uint32 index) const
uint32 m_ValidStartPositionTimer
void SendPacketToAll(WorldPacket *packet)
void UpdateWorldStateForPlayer(uint32 Field, uint32 Value, Player *player)
void HandleTriggerBuff(uint64 go_guid)
void YellToAll(Creature *creature, const char *text, Language language)
virtual void SetDroppedFlagGUID(uint64, int32=-1)
void AddOrSetPlayerToCorrectBgGroup(Player *player, uint32 team)
void PlaySoundToAll(uint32 SoundID)
virtual void EventPlayerUsedGO(Player *, GameObject *)
uint32 GetArenaMatchmakerRating(uint32 Team) const
uint32 m_ClientInstanceID
void AddToBGFreeSlotQueue()
uint32 GetPlayerScoresSize() const
BattlegroundTypeId m_TypeID
std::map< uint64, std::vector< uint64 > > m_ReviveQueue
void PlaySoundToTeam(uint32 SoundID, uint32 TeamID)
Group * GetBgRaid(uint32 TeamID) const
virtual void HandleQuestComplete(uint32, Player *)
uint32 GetPlayerActiveSpec(uint64 guid) const
void SetScriptId(uint32 scriptId)
uint32 m_LastResurrectTime
virtual bool IsAllNodesControlledByTeam(uint32) const
bool CanAwardArenaPoints() const
void SetName(char const *Name)
uint32 GetOtherTeam(uint32 teamId) const
void SetBgMap(BattlegroundMap *map)
uint32 GetMaxPlayers() const
BattlegroundMap * GetBgMap() const
virtual void PostUpdateImpl(uint32)
Post-update hook.
BattlegroundTypeId m_RandomTypeID
void SetBracket(PvPDifficultyEntry const *bracketEntry)
void DecreaseInvitedCount(uint32 team)
void SetMinPlayersPerTeam(uint32 MinPlayers)
void _ProcessRessurect(uint32 diff)
void CheckArenaWinConditions()
void SetRated(bool state)
uint32 m_ArenaTeamMMR[BG_TEAMS_COUNT]
uint32 GetArenaTeamIdForTeam(uint32 Team) const
BattlegroundMap * FindBgMap() const
void SetStartMaxDist(float startMaxDist)
void BlockMovement(Player *player)
uint32 GetRemainingTime() const
void RemoveAuraOnTeam(uint32 SpellID, uint32 TeamID)
virtual void ResetBGSubclass()
void DoorClose(uint32 type)
float m_TeamStartLocZ[BG_TEAMS_COUNT]
void RelocateDeadPlayers(uint64 queueIndex)
Relocate all players in ReviveQueue to the closest graveyard.
void SetBgRaid(uint32 TeamID, Group *bg_raid)
bool m_PrematureCountDown
uint32 GetInstanceID() const
uint32 m_PrematureCountDownTimer
virtual void RemovePlayerAtLeave(uint64 guid, bool Transport, bool SendPacket)
int32 GetObjectType(uint64 guid)
BattlegroundScoreMap::const_iterator GetPlayerScoresBegin() const
void SetLevelRange(uint32 min, uint32 max)
void EventPlayerLoggedOut(Player *player)
void UpdateWorldState(uint32 Field, uint32 Value)
const char * GetSkyFireString(int32 entry)
Player * _GetPlayer(uint64 guid, bool offlineRemove, const char *context) const
uint32 GetClientInstanceID() const
virtual bool IsSpellAllowed(uint32, Player const *) const
void SetGuid(uint64 newGuid)
void RewardXPAtKill(Player *killer, Player *victim)
void SetClientInstanceID(uint32 InstanceID)
void SetStatus(BattlegroundStatus Status)
virtual void StartingEventCloseDoors()
BattlegroundBracketId m_BracketId
void BroadcastWorker(Do &_do)
BattlegroundStartTimeIntervals StartDelayTimes[BG_STARTING_EVENT_COUNT]
void SetArenaTeamIdForTeam(uint32 Team, uint32 ArenaTeamId)
void SetWinner(uint8 winner)
void SetArenaType(uint8 type)
void SetArenaMatchmakerRating(uint32 Team, uint32 MMR)
void AddPlayerToResurrectQueue(uint64 npc_guid, uint64 player_guid)
void SetRandomTypeID(BattlegroundTypeId TypeID)
int32 m_ArenaTeamRatingChanges[BG_TEAMS_COUNT]
virtual void DoAction(uint32, uint64)
virtual void FillInitialWorldStates(WorldStateBuilder &)
bool DelObject(uint32 type)
std::map< uint64, BattlegroundScore * > BattlegroundScoreMap
BattlegroundPlayerMap const & GetPlayers() const
int32 GetStartDelayTime() const
virtual void RemovePlayer(Player *, uint64, uint32)
BattlegroundScoreMap PlayerScores
virtual void StartingEventOpenDoors()
float GetStartMaxDist() const
bool isBattleground() const
uint32 m_MinPlayersPerTeam
virtual bool ShouldDelayStartForDebug() const
void SetLastResurrectTime(uint32 Time)
void RewardHonorToTeam(uint32 Honor, uint32 TeamID)
void SendWarningToAll(int32 entry,...)
bool AddSpiritGuide(uint32 type, float x, float y, float z, float o, uint32 team)
void SetTeamStartLoc(uint32 TeamID, float X, float Y, float Z, float O)
BattlegroundStatus GetStatus() const
void SetArenaorBGType(bool _isArena)
bool HasFreeSlots() const
virtual bool CheckAchievementCriteriaMeet(uint32, Player const *, Unit const *=NULL, uint32=0)
uint32 GetArenaMatchmakerRatingByIndex(uint32 index) const
virtual WorldSafeLocsEntry const * GetClosestGraveYard(Player *player)
uint32 m_PlayersCount[BG_TEAMS_COUNT]
std::vector< uint64 > BGCreatures
virtual void HandleAreaTrigger(Player *, uint32)
void _ProcessOfflineQueue()
void RemoveFromBGFreeSlotQueue()
void _ProcessProgress(uint32 diff)
float m_TeamStartLocO[BG_TEAMS_COUNT]
void SetHoliday(bool is_holiday)
GameObject * GetBGObject(uint32 type)
uint32 GetPlayersCountByTeam(uint32 Team) const
virtual bool PreUpdateImpl(uint32)
Pre-update hook.
uint32 GetLastResurrectTime() const
void UpdateArenaWorldState()
uint32 GetScriptId() const
uint32 GetTeamScore(uint32 TeamID) const
void StartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry)
uint32 m_MaxPlayersPerTeam
void EventPlayerLoggedIn(Player *player)
void SetArenaTeamRatingChangeForTeam(uint32 Team, int32 RatingChange)
void SendMessage2ToAll(int32 entry, ChatMsg type, Player const *source, int32 strId1=0, int32 strId2=0)
void _CheckSafePositions(uint32 diff)
virtual void DestroyGate(Player *, GameObject *)
std::vector< uint64 > m_ResurrectQueue
void _ProcessJoin(uint32 diff)
BattlegroundBracketId GetBracketId() const
void UpdatePlayersCountByTeam(uint32 Team, bool remove)
virtual bool CanActivateGO(int32, uint32) const
std::vector< uint64 > BGObjects
void SendPacketToTeam(uint32 TeamID, WorldPacket *packet, Player *sender=NULL, bool self=true)
virtual void EventPlayerDroppedFlag(Player *)
std::map< uint64, BattlegroundPlayer > BattlegroundPlayerMap
bool IsPlayerInBattleground(uint64 guid) const
uint32 GetBonusHonorFromKill(uint32 kills) const
void RewardReputationToTeam(uint32 faction_id, uint32 Reputation, uint32 TeamID)
uint32 GetMaxLevel() const
virtual void UpdatePlayerScore(Player *player, uint32 type, uint32 value, bool doAddHonor=true)
BattlegroundScoreMap::const_iterator GetPlayerScoresEnd() const
Creature * AddCreature(uint32 entry, uint32 type, uint32 teamval, float x, float y, float z, float o, uint32 respawntime=0)
uint32 GetElapsedTime() const
void SetMinPlayers(uint32 MinPlayers)
uint32 GetPlayersSize() const
uint32 GetPlayerTeam(uint64 guid) const
void PSendMessageToAll(int32 entry, ChatMsg type, Player const *source,...)
void SetMaxPlayersPerTeam(uint32 MaxPlayers)
void SendMessageToAll(int32 entry, ChatMsg type, Player const *source=NULL)
int32 m_TeamScores[BG_TEAMS_COUNT]
std::deque< uint64 > m_OfflineQueue
Creature * GetBGCreature(uint32 type)
void SetStartDelayTime(int Time)
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)
uint32 GetFreeSlotsForTeam(uint32 Team) const
void RemovePlayerFromResurrectQueue(uint64 player_guid)
uint32 GetMinPlayers() const
uint32 GetInvitedCount(uint32 team) const
void _ProcessLeave(uint32 diff)
virtual uint32 GetPrematureWinner()
Player * _GetPlayerForTeam(uint32 teamId, BattlegroundPlayerMap::const_iterator itr, const char *context) const
BattlegroundStatus m_Status
void CheckArenaAfterTimerConditions()
void SetTypeID(BattlegroundTypeId TypeID)
uint32 StartMessageIds[BG_STARTING_EVENT_COUNT]
virtual ~BattlegroundScore()