AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
BattlegroundAB Class Reference

#include "BattlegroundAB.h"

Inheritance diagram for BattlegroundAB:
Battleground

Classes

struct  CapturePointInfo
 

Public Member Functions

 BattlegroundAB ()
 
 ~BattlegroundAB () override
 
void AddPlayer (Player *player) override
 
void StartingEventCloseDoors () override
 
void StartingEventOpenDoors () override
 
void RemovePlayer (Player *player) override
 
void HandleAreaTrigger (Player *player, uint32 trigger) override
 
bool SetupBattleground () override
 
void Init () override
 
void EndBattleground (TeamId winnerTeamId) override
 
GraveyardStruct const * GetClosestGraveyard (Player *player) override
 
bool UpdatePlayerScore (Player *player, uint32 type, uint32 value, bool doAddHonor=true) override
 
void FillInitialWorldStates (WorldPackets::WorldState::InitWorldStates &packet) override
 
void EventPlayerClickedOnFlag (Player *source, GameObject *gameObject) override
 
bool AllNodesConrolledByTeam (TeamId teamId) const override
 
bool IsTeamScores500Disadvantage (TeamId teamId) const
 
TeamId GetPrematureWinner () override
 
- Public Member Functions inherited from Battleground
 Battleground ()
 
virtual ~Battleground ()
 
void Update (uint32 diff)
 
virtual void ResetBGSubclass ()
 
virtual void DestroyGate (Player *, GameObject *)
 
void StartTimedAchievement (AchievementCriteriaTimedTypes type, uint32 entry)
 
std::string GetName () const
 
BattlegroundTypeId GetBgTypeID (bool GetRandom=false) const
 
BattlegroundBracketId GetBracketId () const
 
uint32 GetInstanceID () const
 
BattlegroundStatus GetStatus () const
 
uint32 GetClientInstanceID () const
 
uint32 GetStartTime () const
 
uint32 GetEndTime () const
 
uint32 GetLastResurrectTime () const
 
uint32 GetMinLevel () const
 
uint32 GetMaxLevel () const
 
bool isTemplate () const
 
bool isMaxLevel () const
 
uint32 GetMaxPlayersPerTeam () const
 
uint32 GetMinPlayersPerTeam () const
 
int32 GetStartDelayTime () const
 
uint8 GetArenaType () const
 
PvPTeamId GetWinner () const
 
uint32 GetScriptId () const
 
uint32 GetBonusHonorFromKill (uint32 kills) const
 
void SpiritOfCompetitionEvent (PvPTeamId winnerTeamId) const
 
bool IsRandom ()
 
void SetName (std::string_view name)
 
void SetBgTypeID (BattlegroundTypeId TypeID)
 
void SetRandomTypeID (BattlegroundTypeId TypeID)
 
void SetBracket (PvPDifficultyEntry const *bracketEntry)
 
void SetInstanceID (uint32 InstanceID)
 
void SetStatus (BattlegroundStatus Status)
 
void SetClientInstanceID (uint32 InstanceID)
 
void SetStartTime (uint32 Time)
 
void SetEndTime (uint32 Time)
 
void SetLastResurrectTime (uint32 Time)
 
void SetLevelRange (uint32 min, uint32 max)
 
void SetRated (bool state)
 
void SetArenaType (uint8 type)
 
void SetArenaorBGType (bool _isArena)
 
void SetWinner (PvPTeamId winner)
 
void SetScriptId (uint32 scriptId)
 
void SetRandom (bool isRandom)
 
void ModifyStartDelayTime (int32 diff)
 
void SetStartDelayTime (int32 Time)
 
void SetMaxPlayersPerTeam (uint32 MaxPlayers)
 
void SetMinPlayersPerTeam (uint32 MinPlayers)
 
void AddToBGFreeSlotQueue ()
 
void RemoveFromBGFreeSlotQueue ()
 
void DecreaseInvitedCount (TeamId teamId)
 
void IncreaseInvitedCount (TeamId teamId)
 
uint32 GetInvitedCount (TeamId teamId) const
 
bool HasFreeSlots () const
 
uint32 GetFreeSlotsForTeam (TeamId teamId) const
 
uint32 GetMaxFreeSlots () const
 
void AddSpectator (Player *p)
 
void RemoveSpectator (Player *p)
 
bool HaveSpectators ()
 
const SpectatorListGetSpectators () const
 
void AddToBeTeleported (ObjectGuid spectator, ObjectGuid participant)
 
void RemoveToBeTeleported (ObjectGuid spectator)
 
void SpectatorsSendPacket (WorldPacket &data)
 
bool isArena () const
 
bool isBattleground () const
 
bool isRated () const
 
BattlegroundPlayerMap const & GetPlayers () const
 
uint32 GetPlayersSize () const
 
void ReadyMarkerClicked (Player *p)
 
BattlegroundScoreMap const * GetPlayerScores () const
 
std::size_t GetPlayerScoresSize () const
 
uint32 GetReviveQueueSize () const
 
void AddPlayerToResurrectQueue (ObjectGuid npc_guid, ObjectGuid player_guid)
 
void RemovePlayerFromResurrectQueue (Player *player)
 
void RelocateDeadPlayers (ObjectGuid queueIndex)
 Relocate all players in ReviveQueue to the closest graveyard.
 
void StartBattleground ()
 
GameObjectGetBGObject (uint32 type)
 
CreatureGetBGCreature (uint32 type)
 
void SetMapId (uint32 MapID)
 
uint32 GetMapId () const
 
void SetBgMap (BattlegroundMap *map)
 
BattlegroundMapGetBgMap () const
 
BattlegroundMapFindBgMap () const
 
void SetTeamStartPosition (TeamId teamId, Position const &pos)
 
Position const * GetTeamStartPosition (TeamId teamId) const
 
void SetStartMaxDist (float startMaxDist)
 
float GetStartMaxDist () const
 
void SendPacketToTeam (TeamId teamId, WorldPacket const *packet, Player *sender=nullptr, bool self=true)
 
void SendPacketToAll (WorldPacket const *packet)
 
void YellToAll (Creature *creature, const char *text, uint32 language)
 
void SendChatMessage (Creature *source, uint8 textId, WorldObject *target=nullptr)
 
void SendBroadcastText (uint32 id, ChatMsg msgType, WorldObject const *target=nullptr)
 
template<class Do >
void BroadcastWorker (Do &_do)
 
void PlaySoundToAll (uint32 soundId)
 
void CastSpellOnTeam (uint32 spellId, TeamId teamId)
 
void RemoveAuraOnTeam (uint32 spellId, TeamId teamId)
 
void RewardHonorToTeam (uint32 honor, TeamId teamId)
 
void RewardReputationToTeam (uint32 factionId, uint32 reputation, TeamId teamId)
 
uint32 GetRealRepFactionForPlayer (uint32 factionId, Player *player)
 
void UpdateWorldState (uint32 variable, uint32 value)
 
void EndBattleground (PvPTeamId winnerTeamId)
 
void BlockMovement (Player *player)
 
GroupGetBgRaid (TeamId teamId) const
 
void SetBgRaid (TeamId teamId, Group *bg_raid)
 
void BuildPvPLogDataPacket (WorldPacket &data)
 
uint32 GetPlayersCountByTeam (TeamId teamId) const
 
uint32 GetAlivePlayersCountByTeam (TeamId teamId) const
 
void UpdatePlayersCountByTeam (TeamId teamId, bool remove)
 
virtual void CheckWinConditions ()
 
void SetArenaTeamIdForTeam (TeamId teamId, uint32 ArenaTeamId)
 
uint32 GetArenaTeamIdForTeam (TeamId teamId) const
 
void SetArenaMatchmakerRating (TeamId teamId, uint32 MMR)
 
uint32 GetArenaMatchmakerRating (TeamId teamId) const
 
virtual void HandleKillPlayer (Player *player, Player *killer)
 
virtual void HandleKillUnit (Creature *, Player *)
 
virtual void EventPlayerDroppedFlag (Player *)
 
virtual void EventPlayerDamagedGO (Player *, GameObject *, uint32)
 
virtual void EventPlayerUsedGO (Player *, GameObject *)
 
virtual void DoAction (uint32, ObjectGuid)
 
virtual void HandlePlayerResurrect (Player *)
 
void AddOrSetPlayerToCorrectBgGroup (Player *player, TeamId teamId)
 
virtual void RemovePlayerAtLeave (Player *player)
 
void HandleTriggerBuff (GameObject *gameObject)
 
void SetHoliday (bool is_holiday)
 
void SpawnBGObject (uint32 type, uint32 respawntime, uint32 forceRespawnDelay=0)
 
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)
 
CreatureAddCreature (uint32 entry, uint32 type, float x, float y, float z, float o, uint32 respawntime=0, MotionTransport *transport=nullptr)
 
bool DelCreature (uint32 type)
 
bool DelObject (uint32 type)
 
bool AddSpiritGuide (uint32 type, float x, float y, float z, float o, TeamId teamId)
 
int32 GetObjectType (ObjectGuid guid)
 
void DoorOpen (uint32 type)
 
void DoorClose (uint32 type)
 
virtual bool HandlePlayerUnderMap (Player *)
 
bool IsPlayerInBattleground (ObjectGuid guid) const
 
bool ToBeDeleted () const
 
void RewardXPAtKill (Player *killer, Player *victim)
 
virtual ObjectGuid GetFlagPickerGUID (TeamId=TEAM_NEUTRAL) const
 
virtual void SetDroppedFlagGUID (ObjectGuid, TeamId=TEAM_NEUTRAL)
 
uint32 GetTeamScore (TeamId teamId) const
 
uint8 GetUniqueBracketId () const
 
BattlegroundAVToBattlegroundAV ()
 
BattlegroundAV const * ToBattlegroundAV () const
 
BattlegroundWSToBattlegroundWS ()
 
BattlegroundWS const * ToBattlegroundWS () const
 
BattlegroundABToBattlegroundAB ()
 
BattlegroundAB const * ToBattlegroundAB () const
 
BattlegroundNAToBattlegroundNA ()
 
BattlegroundNA const * ToBattlegroundNA () const
 
BattlegroundBEToBattlegroundBE ()
 
BattlegroundBE const * ToBattlegroundBE () const
 
BattlegroundEYToBattlegroundEY ()
 
BattlegroundEY const * ToBattlegroundEY () const
 
BattlegroundRLToBattlegroundRL ()
 
BattlegroundRL const * ToBattlegroundRL () const
 
BattlegroundSAToBattlegroundSA ()
 
BattlegroundSA const * ToBattlegroundSA () const
 
BattlegroundDSToBattlegroundDS ()
 
BattlegroundDS const * ToBattlegroundDS () const
 
BattlegroundRVToBattlegroundRV ()
 
BattlegroundRV const * ToBattlegroundRV () const
 
BattlegroundICToBattlegroundIC ()
 
BattlegroundIC const * ToBattlegroundIC () const
 

Private Member Functions

void PostUpdateImpl (uint32 diff) override
 Post-update hook.
 
void DeleteBanner (uint8 node)
 
void CreateBanner (uint8 node, bool delay)
 
void SendNodeUpdate (uint8 node)
 
void NodeOccupied (uint8 node)
 
void NodeDeoccupied (uint8 node)
 
void ApplyPhaseMask ()
 

Private Attributes

CapturePointInfo _capturePointInfo [BG_AB_DYNAMIC_NODES_COUNT]
 
EventMap _bgEvents
 
uint32 _honorTics
 
uint32 _reputationTics
 
uint8 _controlledPoints [PVP_TEAMS_COUNT] {}
 
bool _teamScores500Disadvantage [PVP_TEAMS_COUNT] {}
 
uint32 _configurableMaxTeamScore
 

Additional Inherited Members

- Public Types inherited from Battleground
typedef std::set< Player * > SpectatorList
 
typedef std::map< ObjectGuid, ObjectGuidToBeTeleportedMap
 
typedef std::map< ObjectGuid, Player * > BattlegroundPlayerMap
 
typedef std::unordered_map< ObjectGuid::LowType, BattlegroundScore * > BattlegroundScoreMap
 
typedef std::unordered_map< ObjectGuid, ArenaLogEntryDataArenaLogEntryDataMap
 
typedef GuidVector BGObjects
 
typedef GuidVector BGCreatures
 
- Static Public Member Functions inherited from Battleground
static TeamId GetOtherTeamId (TeamId teamId)
 
- Public Attributes inherited from Battleground
GuidSet readyMarkerClickedSet
 
ArenaLogEntryDataMap ArenaLogEntries
 
BGObjects BgObjects
 
BGCreatures BgCreatures
 
- Protected Member Functions inherited from Battleground
void EndNow ()
 
void PlayerAddedToBGCheckIfBGIsRunning (Player *player)
 
void _ProcessResurrect (uint32 diff)
 
void _ProcessProgress (uint32 diff)
 
void _ProcessLeave (uint32 diff)
 
void _ProcessJoin (uint32 diff)
 
void _CheckSafePositions (uint32 diff)
 
- Protected Attributes inherited from Battleground
BattlegroundScoreMap PlayerScores
 
BattlegroundPlayerMap m_Players
 
std::map< ObjectGuid, GuidVectorm_ReviveQueue
 
uint8 m_Events
 
BattlegroundStartTimeIntervals StartDelayTimes [BG_STARTING_EVENT_COUNT]
 
uint32 StartMessageIds [BG_STARTING_EVENT_COUNT]
 
bool m_BuffChange
 
bool m_IsRandom
 
BGHonorMode m_HonorMode
 
int32 m_TeamScores [PVP_TEAMS_COUNT]
 
ArenaTeamScore _arenaTeamScores [PVP_TEAMS_COUNT]
 
uint32 m_UpdateTimer
 
EventProcessor _reviveEvents
 

Detailed Description

Constructor & Destructor Documentation

◆ BattlegroundAB()

BattlegroundAB::BattlegroundAB ( )
37{
38 m_BuffChange = true;
40 BgCreatures.resize(BG_AB_ALL_NODES_COUNT + BG_AB_DYNAMIC_NODES_COUNT); // xinef: +BG_AB_DYNAMIC_NODES_COUNT buff triggers
41
46 _honorTics = 0;
48}
@ BG_AB_OBJECT_MAX
Definition BattlegroundAB.h:94
@ BG_AB_ALL_NODES_COUNT
Definition BattlegroundAB.h:108
@ BG_AB_DYNAMIC_NODES_COUNT
Definition BattlegroundAB.h:104
@ TEAM_ALLIANCE
Definition SharedDefines.h:760
@ TEAM_HORDE
Definition SharedDefines.h:761
uint32 _honorTics
Definition BattlegroundAB.h:300
uint32 _reputationTics
Definition BattlegroundAB.h:301
uint8 _controlledPoints[PVP_TEAMS_COUNT]
Definition BattlegroundAB.h:302
bool _teamScores500Disadvantage[PVP_TEAMS_COUNT]
Definition BattlegroundAB.h:303
BGObjects BgObjects
Definition Battleground.h:550
bool m_BuffChange
Definition Battleground.h:643
BGCreatures BgCreatures
Definition Battleground.h:551

References _controlledPoints, _honorTics, _reputationTics, _teamScores500Disadvantage, BG_AB_ALL_NODES_COUNT, BG_AB_DYNAMIC_NODES_COUNT, BG_AB_OBJECT_MAX, Battleground::BgCreatures, Battleground::BgObjects, Battleground::m_BuffChange, TEAM_ALLIANCE, and TEAM_HORDE.

◆ ~BattlegroundAB()

BattlegroundAB::~BattlegroundAB ( )
overridedefault

Member Function Documentation

◆ AddPlayer()

void BattlegroundAB::AddPlayer ( Player player)
overridevirtual

Reimplemented from Battleground.

178{
180 PlayerScores.emplace(player->GetGUID().GetCounter(), new BattlegroundABScore(player->GetGUID()));
181}
virtual void AddPlayer(Player *player)
Definition Battleground.cpp:1119
BattlegroundScoreMap PlayerScores
Definition Battleground.h:628
LowType GetCounter() const
Definition ObjectGuid.h:145
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:112
Definition BattlegroundAB.h:218

References Battleground::AddPlayer(), ObjectGuid::GetCounter(), Object::GetGUID(), and Battleground::PlayerScores.

◆ AllNodesConrolledByTeam()

bool BattlegroundAB::AllNodesConrolledByTeam ( TeamId  teamId) const
overridevirtual

Reimplemented from Battleground.

546{
548}

References _controlledPoints, and BG_AB_DYNAMIC_NODES_COUNT.

◆ ApplyPhaseMask()

void BattlegroundAB::ApplyPhaseMask ( )
private
551{
552 uint32 phaseMask = 1;
554 if (_capturePointInfo[i]._ownerTeamId != TEAM_NEUTRAL)
555 phaseMask |= 1 << (i * 2 + 1 + _capturePointInfo[i]._ownerTeamId);
556
557 const BattlegroundPlayerMap& bgPlayerMap = GetPlayers();
558
559 for (auto const& itr : bgPlayerMap)
560 {
561 itr.second->SetPhaseMask(phaseMask, false);
562 itr.second->UpdateObjectVisibility(true, false);
563 }
564}
@ BG_AB_NODE_STABLES
Definition BattlegroundAB.h:99
std::uint32_t uint32
Definition Define.h:107
@ TEAM_NEUTRAL
Definition SharedDefines.h:762
CapturePointInfo _capturePointInfo[BG_AB_DYNAMIC_NODES_COUNT]
Definition BattlegroundAB.h:298
std::map< ObjectGuid, Player * > BattlegroundPlayerMap
Definition Battleground.h:418
BattlegroundPlayerMap const & GetPlayers() const
Definition Battleground.h:419
TeamId _ownerTeamId
Definition BattlegroundAB.h:290

References _capturePointInfo, BattlegroundAB::CapturePointInfo::_ownerTeamId, BG_AB_DYNAMIC_NODES_COUNT, BG_AB_NODE_STABLES, Battleground::GetPlayers(), and TEAM_NEUTRAL.

Referenced by EventPlayerClickedOnFlag(), and NodeOccupied().

◆ CreateBanner()

void BattlegroundAB::CreateBanner ( uint8  node,
bool  delay 
)
private
221{
222 // Just put it into the queue
223 if (delay)
224 {
226 return;
227 }
228
231}
@ BG_AB_OBJECTS_PER_NODE
Definition BattlegroundAB.h:74
@ BG_AB_OBJECT_AURA_ALLY
Definition BattlegroundAB.h:71
@ BG_AB_EVENT_UPDATE_BANNER_STABLE
Definition BattlegroundAB.h:27
@ BG_AB_BANNER_UPDATE_TIME
Definition BattlegroundAB.h:175
@ RESPAWN_IMMEDIATELY
Definition Battleground.h:170
EventMap _bgEvents
Definition BattlegroundAB.h:299
void SpawnBGObject(uint32 type, uint32 respawntime, uint32 forceRespawnDelay=0)
Definition Battleground.cpp:1513
void RescheduleEvent(uint32 eventId, uint32 time, uint32 groupId=0, uint32 phase=0)
Definition EventMap.cpp:81

References _bgEvents, _capturePointInfo, BG_AB_BANNER_UPDATE_TIME, BG_AB_EVENT_UPDATE_BANNER_STABLE, BG_AB_OBJECT_AURA_ALLY, BG_AB_OBJECTS_PER_NODE, EventMap::RescheduleEvent(), RESPAWN_IMMEDIATELY, and Battleground::SpawnBGObject().

Referenced by EventPlayerClickedOnFlag(), and PostUpdateImpl().

◆ DeleteBanner()

void BattlegroundAB::DeleteBanner ( uint8  node)
private

◆ EndBattleground()

void BattlegroundAB::EndBattleground ( TeamId  winnerTeamId)
overridevirtual
Deprecated:
need delete

Reimplemented from Battleground.

492{
496 Battleground::EndBattleground(winnerTeamId);
498}
void EndBattleground(PvPTeamId winnerTeamId)
Definition Battleground.cpp:791
uint32 GetBonusHonorFromKill(uint32 kills) const
Definition Battleground.cpp:963
void RewardHonorToTeam(uint32 honor, TeamId teamId)
Definition Battleground.cpp:733
void Reset()
Definition EventMap.cpp:21

References _bgEvents, Battleground::EndBattleground(), Battleground::GetBonusHonorFromKill(), EventMap::Reset(), Battleground::RewardHonorToTeam(), TEAM_ALLIANCE, and TEAM_HORDE.

Referenced by PostUpdateImpl().

◆ EventPlayerClickedOnFlag()

void BattlegroundAB::EventPlayerClickedOnFlag ( Player source,
GameObject gameObject 
)
overridevirtual

Reimplemented from Battleground.

308{
309 if (GetStatus() != STATUS_IN_PROGRESS || !player->IsWithinDistInMap(gameObject, 10.0f))
310 return;
311
313 for (; node < BG_AB_DYNAMIC_NODES_COUNT; ++node)
314 if (player->GetDistance2d(BG_AB_NodePositions[node][0], BG_AB_NodePositions[node][1]) < 10.0f)
315 break;
316
317 if (node == BG_AB_DYNAMIC_NODES_COUNT || _capturePointInfo[node]._ownerTeamId == player->GetTeamId() ||
318 (_capturePointInfo[node]._state == BG_AB_NODE_STATE_ALLY_CONTESTED && player->GetTeamId() == TEAM_ALLIANCE) ||
319 (_capturePointInfo[node]._state == BG_AB_NODE_STATE_HORDE_CONTESTED && player->GetTeamId() == TEAM_HORDE))
320 return;
321
322 player->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_ENTER_PVP_COMBAT);
323
324 uint32 sound = 0;
325 TeamId teamid = player->GetTeamId();
326
327 DeleteBanner(node);
328 CreateBanner(node, true);
329
331 {
332 player->KilledMonsterCredit(BG_AB_QUEST_CREDIT_BASE + node);
334 _capturePointInfo[node]._state = static_cast<uint8>(BG_AB_NODE_STATE_ALLY_CONTESTED) + player->GetTeamId();
338
339 if (teamid == TEAM_ALLIANCE)
340 {
341 SendBroadcastText(ABNodes[node].TextAllianceClaims, CHAT_MSG_BG_SYSTEM_ALLIANCE, player);
342 }
343 else
344 {
345 SendBroadcastText(ABNodes[node].TextHordeClaims, CHAT_MSG_BG_SYSTEM_HORDE, player);
346 }
347 }
349 {
350 if (!_capturePointInfo[node]._captured)
351 {
352 player->KilledMonsterCredit(BG_AB_QUEST_CREDIT_BASE + node);
354 _capturePointInfo[node]._state = static_cast<uint8>(BG_AB_NODE_STATE_ALLY_CONTESTED) + player->GetTeamId();
357
358 if (teamid == TEAM_ALLIANCE)
359 {
360 SendBroadcastText(ABNodes[node].TextAllianceAssaulted, CHAT_MSG_BG_SYSTEM_ALLIANCE, player);
361 }
362 else
363 {
364 SendBroadcastText(ABNodes[node].TextHordeAssaulted, CHAT_MSG_BG_SYSTEM_HORDE, player);
365 }
366 }
367 else
368 {
370 _capturePointInfo[node]._state = static_cast<uint8>(BG_AB_NODE_STATE_ALLY_OCCUPIED) + player->GetTeamId();
371 _capturePointInfo[node]._ownerTeamId = player->GetTeamId();
373 NodeOccupied(node); // after setting team owner
374
375 if (teamid == TEAM_ALLIANCE)
376 {
377 SendBroadcastText(ABNodes[node].TextAllianceDefended, CHAT_MSG_BG_SYSTEM_ALLIANCE, player);
378 }
379 else
380 {
381 SendBroadcastText(ABNodes[node].TextHordeDefended, CHAT_MSG_BG_SYSTEM_HORDE, player);
382 }
383 }
384
386 }
387 else
388 {
389 player->KilledMonsterCredit(BG_AB_QUEST_CREDIT_BASE + node);
391 NodeDeoccupied(node); // before setting team owner to neutral
392
393 _capturePointInfo[node]._state = static_cast<uint8>(BG_AB_NODE_STATE_ALLY_CONTESTED) + player->GetTeamId();
394
398
399 if (teamid == TEAM_ALLIANCE)
400 {
401 SendBroadcastText(ABNodes[node].TextAllianceAssaulted, CHAT_MSG_BG_SYSTEM_ALLIANCE, player);
402 }
403 else
404 {
405 SendBroadcastText(ABNodes[node].TextHordeAssaulted, CHAT_MSG_BG_SYSTEM_HORDE, player);
406 }
407 }
408
409 SendNodeUpdate(node);
410 PlaySoundToAll(sound);
411}
@ BG_AB_NODE_STATE_NEUTRAL
Definition BattlegroundAB.h:141
@ BG_AB_NODE_STATE_ALLY_OCCUPIED
Definition BattlegroundAB.h:142
@ BG_AB_NODE_STATE_HORDE_CONTESTED
Definition BattlegroundAB.h:145
@ BG_AB_NODE_STATE_ALLY_CONTESTED
Definition BattlegroundAB.h:144
@ BG_AB_EVENT_CAPTURE_STABLE
Definition BattlegroundAB.h:33
ABNodeInfo const ABNodes[BG_AB_DYNAMIC_NODES_COUNT]
Definition BattlegroundAB.h:130
@ BG_AB_FLAG_CAPTURING_TIME
Definition BattlegroundAB.h:174
@ BG_AB_QUEST_CREDIT_BASE
Definition BattlegroundAB.h:164
const float BG_AB_NodePositions[BG_AB_DYNAMIC_NODES_COUNT][4]
Definition BattlegroundAB.h:191
@ BG_AB_SOUND_NODE_ASSAULTED_ALLIANCE
Definition BattlegroundAB.h:153
@ BG_AB_SOUND_NODE_ASSAULTED_HORDE
Definition BattlegroundAB.h:154
@ BG_AB_SOUND_NODE_CLAIMED
Definition BattlegroundAB.h:150
@ SCORE_BASES_ASSAULTED
Definition BattlegroundScore.h:40
@ SCORE_BASES_DEFENDED
Definition BattlegroundScore.h:41
@ STATUS_IN_PROGRESS
Definition Battleground.h:203
std::uint8_t uint8
Definition Define.h:109
@ CHAT_MSG_BG_SYSTEM_ALLIANCE
Definition SharedDefines.h:3189
@ CHAT_MSG_BG_SYSTEM_HORDE
Definition SharedDefines.h:3190
TeamId
Definition SharedDefines.h:759
@ AURA_INTERRUPT_FLAG_ENTER_PVP_COMBAT
Definition SpellDefines.h:66
void ApplyPhaseMask()
Definition BattlegroundAB.cpp:550
void NodeOccupied(uint8 node)
Definition BattlegroundAB.cpp:270
void NodeDeoccupied(uint8 node)
Definition BattlegroundAB.cpp:292
void DeleteBanner(uint8 node)
Definition BattlegroundAB.cpp:233
bool UpdatePlayerScore(Player *player, uint32 type, uint32 value, bool doAddHonor=true) override
Definition BattlegroundAB.cpp:525
void CreateBanner(uint8 node, bool delay)
Definition BattlegroundAB.cpp:220
void SendNodeUpdate(uint8 node)
Definition BattlegroundAB.cpp:260
void SendBroadcastText(uint32 id, ChatMsg msgType, WorldObject const *target=nullptr)
Definition Battleground.cpp:691
BattlegroundStatus GetStatus() const
Definition Battleground.h:333
void PlaySoundToAll(uint32 soundId)
Definition Battleground.cpp:704
void CancelEvent(uint32 eventId)
Definition EventMap.cpp:190
uint8 _state
Definition BattlegroundAB.h:293

References _bgEvents, _capturePointInfo, BattlegroundAB::CapturePointInfo::_ownerTeamId, BattlegroundAB::CapturePointInfo::_state, ABNodes, ApplyPhaseMask(), AURA_INTERRUPT_FLAG_ENTER_PVP_COMBAT, BG_AB_DYNAMIC_NODES_COUNT, BG_AB_EVENT_CAPTURE_STABLE, BG_AB_FLAG_CAPTURING_TIME, BG_AB_NODE_STABLES, BG_AB_NODE_STATE_ALLY_CONTESTED, BG_AB_NODE_STATE_ALLY_OCCUPIED, BG_AB_NODE_STATE_HORDE_CONTESTED, BG_AB_NODE_STATE_NEUTRAL, BG_AB_NodePositions, BG_AB_QUEST_CREDIT_BASE, BG_AB_SOUND_NODE_ASSAULTED_ALLIANCE, BG_AB_SOUND_NODE_ASSAULTED_HORDE, BG_AB_SOUND_NODE_CLAIMED, EventMap::CancelEvent(), CHAT_MSG_BG_SYSTEM_ALLIANCE, CHAT_MSG_BG_SYSTEM_HORDE, CreateBanner(), DeleteBanner(), WorldObject::GetDistance2d(), Battleground::GetStatus(), Player::GetTeamId(), WorldObject::IsWithinDistInMap(), Player::KilledMonsterCredit(), NodeDeoccupied(), NodeOccupied(), Battleground::PlaySoundToAll(), Unit::RemoveAurasWithInterruptFlags(), EventMap::RescheduleEvent(), SCORE_BASES_ASSAULTED, SCORE_BASES_DEFENDED, Battleground::SendBroadcastText(), SendNodeUpdate(), STATUS_IN_PROGRESS, TEAM_ALLIANCE, TEAM_HORDE, TEAM_NEUTRAL, and UpdatePlayerScore().

◆ FillInitialWorldStates()

void BattlegroundAB::FillInitialWorldStates ( WorldPackets::WorldState::InitWorldStates packet)
overridevirtual

Reimplemented from Battleground.

240{
241 packet.Worldstates.reserve(BG_AB_DYNAMIC_NODES_COUNT+7);
242 for (auto& node : _capturePointInfo)
243 {
244 if (node._state == BG_AB_NODE_STATE_NEUTRAL)
245 packet.Worldstates.emplace_back(node._iconNone, 1);
246
248 packet.Worldstates.emplace_back(node._iconCapture + i - 1, node._state == i ? 1 : 0);
249 }
250
257 packet.Worldstates.emplace_back(WORLD_STATE_BATTLEGROUND_AB_UNK, 2);
258}
@ BG_AB_WARNING_NEAR_VICTORY_SCORE
Definition BattlegroundAB.h:171
@ WORLD_STATE_BATTLEGROUND_AB_RESOURCES_ALLIANCE
Definition WorldStateDefines.h:189
@ WORLD_STATE_BATTLEGROUND_AB_RESOURCES_WARNING
Definition WorldStateDefines.h:212
@ WORLD_STATE_BATTLEGROUND_AB_OCCUPIED_BASES_ALLIANCE
Definition WorldStateDefines.h:192
@ WORLD_STATE_BATTLEGROUND_AB_RESOURCES_MAX
Definition WorldStateDefines.h:193
@ WORLD_STATE_BATTLEGROUND_AB_RESOURCES_HORDE
Definition WorldStateDefines.h:190
@ WORLD_STATE_BATTLEGROUND_AB_OCCUPIED_BASES_HORDE
Definition WorldStateDefines.h:191
@ WORLD_STATE_BATTLEGROUND_AB_UNK
Definition WorldStateDefines.h:211
uint32 _configurableMaxTeamScore
Definition BattlegroundAB.h:304
int32 m_TeamScores[PVP_TEAMS_COUNT]
Definition Battleground.h:647
std::vector< WorldStateInfo > Worldstates
Definition WorldStatePackets.h:46

References _capturePointInfo, _configurableMaxTeamScore, _controlledPoints, BG_AB_DYNAMIC_NODES_COUNT, BG_AB_NODE_STATE_ALLY_OCCUPIED, BG_AB_NODE_STATE_HORDE_CONTESTED, BG_AB_NODE_STATE_NEUTRAL, BG_AB_WARNING_NEAR_VICTORY_SCORE, Battleground::m_TeamScores, TEAM_ALLIANCE, TEAM_HORDE, WORLD_STATE_BATTLEGROUND_AB_OCCUPIED_BASES_ALLIANCE, WORLD_STATE_BATTLEGROUND_AB_OCCUPIED_BASES_HORDE, WORLD_STATE_BATTLEGROUND_AB_RESOURCES_ALLIANCE, WORLD_STATE_BATTLEGROUND_AB_RESOURCES_HORDE, WORLD_STATE_BATTLEGROUND_AB_RESOURCES_MAX, WORLD_STATE_BATTLEGROUND_AB_RESOURCES_WARNING, WORLD_STATE_BATTLEGROUND_AB_UNK, and WorldPackets::WorldState::InitWorldStates::Worldstates.

◆ GetClosestGraveyard()

GraveyardStruct const * BattlegroundAB::GetClosestGraveyard ( Player player)
overridevirtual

Reimplemented from Battleground.

501{
502 GraveyardStruct const* entry = sGraveyard->GetGraveyard(BG_AB_GraveyardIds[static_cast<uint8>(BG_AB_SPIRIT_ALIANCE) + player->GetTeamId()]);
503 GraveyardStruct const* nearestEntry = entry;
504
505 float pX = player->GetPositionX();
506 float pY = player->GetPositionY();
507 float dist = (entry->x - pX) * (entry->x - pX) + (entry->y - pY) * (entry->y - pY);
508 float minDist = dist;
509
511 if (_capturePointInfo[i]._ownerTeamId == player->GetTeamId())
512 {
513 entry = sGraveyard->GetGraveyard(BG_AB_GraveyardIds[i]);
514 dist = (entry->x - pX) * (entry->x - pX) + (entry->y - pY) * (entry->y - pY);
515 if (dist < minDist)
516 {
517 minDist = dist;
518 nearestEntry = entry;
519 }
520 }
521
522 return nearestEntry;
523}
const uint32 BG_AB_GraveyardIds[BG_AB_ALL_NODES_COUNT]
Definition BattlegroundAB.h:180
@ BG_AB_SPIRIT_ALIANCE
Definition BattlegroundAB.h:106
#define sGraveyard
Definition GameGraveyard.h:74
TeamId GetTeamId(bool original=false) const
Definition Player.h:2116
Definition GameGraveyard.h:27
float x
Definition GameGraveyard.h:30
float y
Definition GameGraveyard.h:31
float GetPositionX() const
Definition Position.h:121
float GetPositionY() const
Definition Position.h:122

References _capturePointInfo, BG_AB_DYNAMIC_NODES_COUNT, BG_AB_GraveyardIds, BG_AB_NODE_STABLES, BG_AB_SPIRIT_ALIANCE, Position::GetPositionX(), Position::GetPositionY(), Player::GetTeamId(), sGraveyard, GraveyardStruct::x, and GraveyardStruct::y.

◆ GetPrematureWinner()

TeamId BattlegroundAB::GetPrematureWinner ( )
overridevirtual

◆ HandleAreaTrigger()

void BattlegroundAB::HandleAreaTrigger ( Player player,
uint32  trigger 
)
overridevirtual

Reimplemented from Battleground.

189{
191 return;
192
193 switch (trigger)
194 {
195 case 3948: // Arathi Basin Alliance Exit.
196 if (player->GetTeamId() != TEAM_ALLIANCE)
197 player->GetSession()->SendAreaTriggerMessage("Only The Alliance can use that portal");
198 else
199 player->LeaveBattleground();
200 break;
201 case 3949: // Arathi Basin Horde Exit.
202 if (player->GetTeamId() != TEAM_HORDE)
203 player->GetSession()->SendAreaTriggerMessage("Only The Horde can use that portal");
204 else
205 player->LeaveBattleground();
206 break;
207 case 3866: // Stables
208 case 3869: // Gold Mine
209 case 3867: // Farm
210 case 3868: // Lumber Mill
211 case 3870: // Black Smith
212 case 4020: // Unk1
213 case 4021: // Unk2
214 break;
215 default:
216 break;
217 }
218}
WorldSession * GetSession() const
Definition Player.h:2005
void LeaveBattleground(Battleground *bg=nullptr)
Definition Player.cpp:11382
void SendAreaTriggerMessage(std::string_view str)
Definition WorldSession.cpp:206

References Player::GetSession(), Battleground::GetStatus(), Player::GetTeamId(), Player::LeaveBattleground(), WorldSession::SendAreaTriggerMessage(), STATUS_IN_PROGRESS, TEAM_ALLIANCE, and TEAM_HORDE.

◆ Init()

void BattlegroundAB::Init ( )
overridevirtual

Reimplemented from Battleground.

465{
466 //call parent's class reset
468
470
473
484
485 uint32 bgArathiCapturePointsConfig = sWorld->getIntConfig(CONFIG_BATTLEGROUND_ARATHI_CAPTUREPOINTS);
486 _configurableMaxTeamScore = bgArathiCapturePointsConfig > 0
487 ? bgArathiCapturePointsConfig
488 : static_cast<uint32>(BG_AB_MAX_TEAM_SCORE);
489}
@ BG_AB_REP_TICK_NORMAL
Definition BattlegroundAB.h:168
@ BG_AB_REP_TICK_WEEKEND
Definition BattlegroundAB.h:169
@ BG_AB_HONOR_TICK_NORMAL
Definition BattlegroundAB.h:166
@ BG_AB_MAX_TEAM_SCORE
Definition BattlegroundAB.h:172
@ BG_AB_HONOR_TICK_WEEKEND
Definition BattlegroundAB.h:167
@ BG_AB_NODE_BLACKSMITH
Definition BattlegroundAB.h:100
@ BG_AB_NODE_LUMBER_MILL
Definition BattlegroundAB.h:102
@ BG_AB_NODE_FARM
Definition BattlegroundAB.h:101
@ BG_AB_NODE_GOLD_MINE
Definition BattlegroundAB.h:103
@ CONFIG_BATTLEGROUND_ARATHI_CAPTUREPOINTS
Definition IWorld.h:322
@ WORLD_STATE_BATTLEGROUND_AB_LUMBERMILL_STATE_ALLIANCE
Definition WorldStateDefines.h:202
@ WORLD_STATE_BATTLEGROUND_AB_GOLDMINE_STATE_ALLIANCE
Definition WorldStateDefines.h:198
@ WORLD_STATE_BATTLEGROUND_AB_LUMBERMILL_ICON
Definition WorldStateDefines.h:208
@ WORLD_STATE_BATTLEGROUND_AB_GOLDMINE_ICON
Definition WorldStateDefines.h:207
@ WORLD_STATE_BATTLEGROUND_AB_FARM_ICON
Definition WorldStateDefines.h:209
@ WORLD_STATE_BATTLEGROUND_AB_STABLE_ICON
Definition WorldStateDefines.h:206
@ WORLD_STATE_BATTLEGROUND_AB_FARM_STATE_ALLIANCE
Definition WorldStateDefines.h:185
@ WORLD_STATE_BATTLEGROUND_AB_BLACKSMITH_ICON
Definition WorldStateDefines.h:210
@ WORLD_STATE_BATTLEGROUND_AB_STABLE_STATE_ALLIANCE
Definition WorldStateDefines.h:181
@ WORLD_STATE_BATTLEGROUND_AB_BLACKSMITH_STATE_ALLIANCE
Definition WorldStateDefines.h:194
static bool IsBGWeekend(BattlegroundTypeId bgTypeId)
Definition BattlegroundMgr.cpp:909
virtual void Init()
Definition Battleground.cpp:1070
BattlegroundTypeId GetBgTypeID(bool GetRandom=false) const
Definition Battleground.h:330
#define sWorld
Definition World.h:363
uint32 _iconNone
Definition BattlegroundAB.h:291
uint32 _iconCapture
Definition BattlegroundAB.h:292

References _bgEvents, _capturePointInfo, _configurableMaxTeamScore, _honorTics, BattlegroundAB::CapturePointInfo::_iconCapture, BattlegroundAB::CapturePointInfo::_iconNone, _reputationTics, BG_AB_HONOR_TICK_NORMAL, BG_AB_HONOR_TICK_WEEKEND, BG_AB_MAX_TEAM_SCORE, BG_AB_NODE_BLACKSMITH, BG_AB_NODE_FARM, BG_AB_NODE_GOLD_MINE, BG_AB_NODE_LUMBER_MILL, BG_AB_NODE_STABLES, BG_AB_REP_TICK_NORMAL, BG_AB_REP_TICK_WEEKEND, CONFIG_BATTLEGROUND_ARATHI_CAPTUREPOINTS, Battleground::GetBgTypeID(), Battleground::Init(), BattlegroundMgr::IsBGWeekend(), EventMap::Reset(), sWorld, WORLD_STATE_BATTLEGROUND_AB_BLACKSMITH_ICON, WORLD_STATE_BATTLEGROUND_AB_BLACKSMITH_STATE_ALLIANCE, WORLD_STATE_BATTLEGROUND_AB_FARM_ICON, WORLD_STATE_BATTLEGROUND_AB_FARM_STATE_ALLIANCE, WORLD_STATE_BATTLEGROUND_AB_GOLDMINE_ICON, WORLD_STATE_BATTLEGROUND_AB_GOLDMINE_STATE_ALLIANCE, WORLD_STATE_BATTLEGROUND_AB_LUMBERMILL_ICON, WORLD_STATE_BATTLEGROUND_AB_LUMBERMILL_STATE_ALLIANCE, WORLD_STATE_BATTLEGROUND_AB_STABLE_ICON, and WORLD_STATE_BATTLEGROUND_AB_STABLE_STATE_ALLIANCE.

◆ IsTeamScores500Disadvantage()

bool BattlegroundAB::IsTeamScores500Disadvantage ( TeamId  teamId) const
inline

◆ NodeDeoccupied()

void BattlegroundAB::NodeDeoccupied ( uint8  node)
private
293{
295
297
298 _reviveEvents.AddEventAtOffset([this, node]()
299 {
301 DelCreature(node); // Delete spirit healer
302 }, 500ms);
303
304 DelCreature(BG_AB_ALL_NODES_COUNT + node); // Delete aura trigger
305}
bool DelCreature(uint32 type)
Definition Battleground.cpp:1596
void RelocateDeadPlayers(ObjectGuid queueIndex)
Relocate all players in ReviveQueue to the closest graveyard.
Definition Battleground.cpp:1387
EventProcessor _reviveEvents
Definition Battleground.h:654
void AddEventAtOffset(BasicEvent *event, Milliseconds offset)
Definition EventProcessor.h:107

References _capturePointInfo, _controlledPoints, BattlegroundAB::CapturePointInfo::_ownerTeamId, Battleground::_reviveEvents, EventProcessor::AddEventAtOffset(), BG_AB_ALL_NODES_COUNT, Battleground::BgCreatures, Battleground::DelCreature(), Battleground::RelocateDeadPlayers(), and TEAM_NEUTRAL.

Referenced by EventPlayerClickedOnFlag().

◆ NodeOccupied()

void BattlegroundAB::NodeOccupied ( uint8  node)
private
271{
273 AddSpiritGuide(node, BG_AB_SpiritGuidePos[node][0], BG_AB_SpiritGuidePos[node][1], BG_AB_SpiritGuidePos[node][2], BG_AB_SpiritGuidePos[node][3], _capturePointInfo[node]._ownerTeamId);
274
276 if (_controlledPoints[_capturePointInfo[node]._ownerTeamId] >= 5)
278 if (_controlledPoints[_capturePointInfo[node]._ownerTeamId] >= 4)
280
282 if (!trigger)
284
285 if (trigger)
286 {
288 trigger->CastSpell(trigger, SPELL_HONORABLE_DEFENDER_25Y, false);
289 }
290}
const float BG_AB_SpiritGuidePos[BG_AB_ALL_NODES_COUNT][4]
Definition BattlegroundAB.h:206
@ SPELL_HONORABLE_DEFENDER_25Y
Definition Battleground.h:147
@ SPELL_AB_QUEST_REWARD_4_BASES
Definition Battleground.h:100
@ SPELL_AB_QUEST_REWARD_5_BASES
Definition Battleground.h:101
@ FACTION_ALLIANCE_GENERIC
Definition SharedDefines.h:206
@ FACTION_HORDE_GENERIC
Definition SharedDefines.h:205
#define WORLD_TRIGGER
Definition Unit.h:37
bool AddSpiritGuide(uint32 type, float x, float y, float z, float o, TeamId teamId)
Definition Battleground.cpp:1635
BattlegroundMap * GetBgMap() const
Definition Battleground.h:450
Creature * AddCreature(uint32 entry, uint32 type, float x, float y, float z, float o, uint32 respawntime=0, MotionTransport *transport=nullptr)
Definition Battleground.cpp:1533
void CastSpellOnTeam(uint32 spellId, TeamId teamId)
Definition Battleground.cpp:709
Definition Creature.h:43
Creature * GetCreature(ObjectGuid const guid)
Definition Map.cpp:2498
void SetFaction(uint32 faction)
Definition Unit.cpp:10097
SpellCastResult CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=nullptr, AuraEffect const *triggeredByAura=nullptr, ObjectGuid originalCaster=ObjectGuid::Empty)
Definition Unit.cpp:1178

References _capturePointInfo, _controlledPoints, BattlegroundAB::CapturePointInfo::_ownerTeamId, Battleground::AddCreature(), Battleground::AddSpiritGuide(), ApplyPhaseMask(), BG_AB_ALL_NODES_COUNT, BG_AB_NodePositions, BG_AB_SpiritGuidePos, Battleground::BgCreatures, Unit::CastSpell(), Battleground::CastSpellOnTeam(), FACTION_ALLIANCE_GENERIC, FACTION_HORDE_GENERIC, Battleground::GetBgMap(), Map::GetCreature(), Unit::SetFaction(), SPELL_AB_QUEST_REWARD_4_BASES, SPELL_AB_QUEST_REWARD_5_BASES, SPELL_HONORABLE_DEFENDER_25Y, TEAM_ALLIANCE, and WORLD_TRIGGER.

Referenced by EventPlayerClickedOnFlag(), and PostUpdateImpl().

◆ PostUpdateImpl()

void BattlegroundAB::PostUpdateImpl ( uint32  )
overrideprivatevirtual

Post-update hook.

Will be called after battleground update has passed. May be used to implement custom update effects in subclasses.

Parameters
diffa time difference between two worldserver update loops in milliseconds.
See also
Update(), PreUpdateImpl().

Reimplemented from Battleground.

53{
55 {
56 _bgEvents.Update(diff);
57 while (uint32 eventId = _bgEvents.ExecuteEvent())
58 switch (eventId)
59 {
66 break;
72 {
73 uint8 node = eventId - BG_AB_EVENT_CAPTURE_STABLE;
75 DeleteBanner(node);
76 _capturePointInfo[node]._ownerTeamId = teamId;
78 _capturePointInfo[node]._captured = true;
79
80 CreateBanner(node, false);
81 NodeOccupied(node);
82 SendNodeUpdate(node);
83
84 if (teamId == TEAM_ALLIANCE)
85 {
88 }
89 else
90 {
93 }
94
95 break;
96 }
99 {
100 auto teamId = TeamId(eventId - BG_AB_EVENT_ALLIANCE_TICK);
101 uint8 controlledPoints = _controlledPoints[teamId];
102 if (controlledPoints == 0)
103 {
104 _bgEvents.ScheduleEvent(eventId, 3000);
105 break;
106 }
107
108 auto honorRewards = uint8(m_TeamScores[teamId] / _honorTics);
109 auto reputationRewards = uint8(m_TeamScores[teamId] / _reputationTics);
110 auto information = uint8(m_TeamScores[teamId] / BG_AB_WARNING_NEAR_VICTORY_SCORE);
111 m_TeamScores[teamId] += BG_AB_TickPoints[controlledPoints];
112 if (m_TeamScores[teamId] > static_cast<int32>(_configurableMaxTeamScore))
114
115 if (honorRewards < uint8(m_TeamScores[teamId] / _honorTics))
117 if (reputationRewards < uint8(m_TeamScores[teamId] / _reputationTics))
118 RewardReputationToTeam(teamId == TEAM_ALLIANCE ? 509 : 510, 10, teamId);
119 if (information < uint8(m_TeamScores[teamId] / BG_AB_WARNING_NEAR_VICTORY_SCORE))
120 {
121 if (teamId == TEAM_ALLIANCE)
122 {
125 }
126 else
127 {
130 }
131 }
132
134 if (m_TeamScores[teamId] > m_TeamScores[GetOtherTeamId(teamId)] + 500)
136 if (m_TeamScores[teamId] >= static_cast<int32>(_configurableMaxTeamScore))
137 EndBattleground(teamId);
138
139 _bgEvents.ScheduleEvent(eventId, BG_AB_TickIntervals[controlledPoints]);
140 break;
141 }
142 default:
143 break;
144 }
145 }
146}
@ BG_AB_TEXT_ALLIANCE_NEAR_VICTORY
Definition BattlegroundAB.h:113
@ BG_AB_TEXT_HORDE_NEAR_VICTORY
Definition BattlegroundAB.h:114
@ BG_AB_NODE_STATE_HORDE_OCCUPIED
Definition BattlegroundAB.h:143
@ BG_AB_EVENT_UPDATE_BANNER_GOLDMINE
Definition BattlegroundAB.h:31
@ BG_AB_EVENT_ALLIANCE_TICK
Definition BattlegroundAB.h:39
@ BG_AB_EVENT_UPDATE_BANNER_FARM
Definition BattlegroundAB.h:28
@ BG_AB_EVENT_CAPTURE_GOLDMINE
Definition BattlegroundAB.h:37
@ BG_AB_EVENT_UPDATE_BANNER_LUMBERMILL
Definition BattlegroundAB.h:30
@ BG_AB_EVENT_UPDATE_BANNER_BLACKSMITH
Definition BattlegroundAB.h:29
@ BG_AB_EVENT_CAPTURE_LUMBERMILL
Definition BattlegroundAB.h:36
@ BG_AB_EVENT_HORDE_TICK
Definition BattlegroundAB.h:40
@ BG_AB_EVENT_CAPTURE_BLACKSMITH
Definition BattlegroundAB.h:35
@ BG_AB_EVENT_CAPTURE_FARM
Definition BattlegroundAB.h:34
const uint32 BG_AB_TickPoints[BG_AB_DYNAMIC_NODES_COUNT+1]
Definition BattlegroundAB.h:179
const uint32 BG_AB_TickIntervals[BG_AB_DYNAMIC_NODES_COUNT+1]
Definition BattlegroundAB.h:178
@ BG_AB_SOUND_NEAR_VICTORY_ALLIANCE
Definition BattlegroundAB.h:155
@ BG_AB_SOUND_NODE_CAPTURED_HORDE
Definition BattlegroundAB.h:152
@ BG_AB_SOUND_NEAR_VICTORY_HORDE
Definition BattlegroundAB.h:156
@ BG_AB_SOUND_NODE_CAPTURED_ALLIANCE
Definition BattlegroundAB.h:151
std::int32_t int32
Definition Define.h:103
@ CHAT_MSG_BG_SYSTEM_NEUTRAL
Definition SharedDefines.h:3188
void EndBattleground(TeamId winnerTeamId) override
Definition BattlegroundAB.cpp:491
void RewardReputationToTeam(uint32 factionId, uint32 reputation, TeamId teamId)
Definition Battleground.cpp:740
static TeamId GetOtherTeamId(TeamId teamId)
Definition Battleground.cpp:1751
void UpdateWorldState(uint32 variable, uint32 value)
Definition Battleground.cpp:783
uint32 ExecuteEvent()
Definition EventMap.cpp:114
void Update(uint32 time)
Definition EventMap.h:54
void ScheduleEvent(uint32 eventId, uint32 time, uint32 group=0, uint32 phase=0)
Definition EventMap.cpp:56
bool _captured
Definition BattlegroundAB.h:295

References _bgEvents, BattlegroundAB::CapturePointInfo::_captured, _capturePointInfo, _configurableMaxTeamScore, _controlledPoints, _honorTics, BattlegroundAB::CapturePointInfo::_ownerTeamId, _reputationTics, BattlegroundAB::CapturePointInfo::_state, _teamScores500Disadvantage, ABNodes, BG_AB_EVENT_ALLIANCE_TICK, BG_AB_EVENT_CAPTURE_BLACKSMITH, BG_AB_EVENT_CAPTURE_FARM, BG_AB_EVENT_CAPTURE_GOLDMINE, BG_AB_EVENT_CAPTURE_LUMBERMILL, BG_AB_EVENT_CAPTURE_STABLE, BG_AB_EVENT_HORDE_TICK, BG_AB_EVENT_UPDATE_BANNER_BLACKSMITH, BG_AB_EVENT_UPDATE_BANNER_FARM, BG_AB_EVENT_UPDATE_BANNER_GOLDMINE, BG_AB_EVENT_UPDATE_BANNER_LUMBERMILL, BG_AB_EVENT_UPDATE_BANNER_STABLE, BG_AB_NODE_STATE_ALLY_CONTESTED, BG_AB_NODE_STATE_ALLY_OCCUPIED, BG_AB_NODE_STATE_HORDE_OCCUPIED, BG_AB_SOUND_NEAR_VICTORY_ALLIANCE, BG_AB_SOUND_NEAR_VICTORY_HORDE, BG_AB_SOUND_NODE_CAPTURED_ALLIANCE, BG_AB_SOUND_NODE_CAPTURED_HORDE, BG_AB_TEXT_ALLIANCE_NEAR_VICTORY, BG_AB_TEXT_HORDE_NEAR_VICTORY, BG_AB_TickIntervals, BG_AB_TickPoints, BG_AB_WARNING_NEAR_VICTORY_SCORE, CHAT_MSG_BG_SYSTEM_ALLIANCE, CHAT_MSG_BG_SYSTEM_HORDE, CHAT_MSG_BG_SYSTEM_NEUTRAL, CreateBanner(), DeleteBanner(), EndBattleground(), EventMap::ExecuteEvent(), Battleground::GetBonusHonorFromKill(), Battleground::GetOtherTeamId(), Battleground::GetStatus(), Battleground::m_TeamScores, NodeOccupied(), Battleground::PlaySoundToAll(), Battleground::RewardHonorToTeam(), Battleground::RewardReputationToTeam(), EventMap::ScheduleEvent(), Battleground::SendBroadcastText(), SendNodeUpdate(), STATUS_IN_PROGRESS, TEAM_ALLIANCE, TEAM_HORDE, EventMap::Update(), Battleground::UpdateWorldState(), WORLD_STATE_BATTLEGROUND_AB_RESOURCES_ALLIANCE, and WORLD_STATE_BATTLEGROUND_AB_RESOURCES_HORDE.

◆ RemovePlayer()

void BattlegroundAB::RemovePlayer ( Player player)
overridevirtual

Reimplemented from Battleground.

184{
185 player->SetPhaseMask(1, false);
186}
void SetPhaseMask(uint32 newPhaseMask, bool update) override
Definition Unit.cpp:19101

References Unit::SetPhaseMask().

◆ SendNodeUpdate()

◆ SetupBattleground()

bool BattlegroundAB::SetupBattleground ( )
overridevirtual

Reimplemented from Battleground.

421{
422 for (uint32 i = 0; i < BG_AB_DYNAMIC_NODES_COUNT; ++i)
423 {
432 }
433
436
437 for (uint32 i = 0; i < BG_AB_DYNAMIC_NODES_COUNT; ++i)
438 {
442 }
443
446
448 if (!BgObjects[i])
449 {
450 LOG_ERROR("sql.sql", "BatteGroundAB: Failed to spawn some object Battleground not created!");
451 return false;
452 }
453
455 if (!BgCreatures[i])
456 {
457 LOG_ERROR("sql.sql", "BatteGroundAB: Failed to spawn spirit guides Battleground not created!");
458 return false;
459 }
460
461 return true;
462}
@ BG_AB_OBJECTID_BANNER_CONT_A
Definition BattlegroundAB.h:52
@ BG_AB_OBJECTID_BANNER_A
Definition BattlegroundAB.h:51
@ BG_AB_OBJECTID_AURA_A
Definition BattlegroundAB.h:56
@ BG_AB_OBJECTID_BANNER_H
Definition BattlegroundAB.h:53
@ BG_AB_OBJECTID_AURA_C
Definition BattlegroundAB.h:58
@ BG_AB_OBJECTID_AURA_H
Definition BattlegroundAB.h:57
@ BG_AB_OBJECTID_GATE_A
Definition BattlegroundAB.h:60
@ BG_AB_OBJECTID_NODE_BANNER_0
Definition BattlegroundAB.h:45
@ BG_AB_OBJECTID_BANNER_CONT_H
Definition BattlegroundAB.h:54
@ BG_AB_OBJECTID_GATE_H
Definition BattlegroundAB.h:61
@ BG_AB_OBJECT_BANNER_HORDE
Definition BattlegroundAB.h:68
@ BG_AB_OBJECT_BANNER_ALLY
Definition BattlegroundAB.h:67
@ BG_AB_OBJECT_GATE_A
Definition BattlegroundAB.h:76
@ BG_AB_OBJECT_AURA_HORDE
Definition BattlegroundAB.h:72
@ BG_AB_OBJECT_GATE_H
Definition BattlegroundAB.h:77
@ BG_AB_OBJECT_BANNER_NEUTRAL
Definition BattlegroundAB.h:66
@ BG_AB_OBJECT_BANNER_CONT_H
Definition BattlegroundAB.h:70
@ BG_AB_OBJECT_SPEEDBUFF_STABLES
Definition BattlegroundAB.h:79
@ BG_AB_OBJECT_BANNER_CONT_A
Definition BattlegroundAB.h:69
@ BG_AB_OBJECT_AURA_CONTESTED
Definition BattlegroundAB.h:73
const float BG_AB_BuffPositions[BG_AB_DYNAMIC_NODES_COUNT][4]
Definition BattlegroundAB.h:182
const float BG_AB_DoorPositions[2][8]
Definition BattlegroundAB.h:200
@ BG_AB_SPIRIT_HORDE
Definition BattlegroundAB.h:107
const uint32 Buff_Entries[3]
Definition Battleground.h:196
#define LOG_ERROR(filterType__,...)
Definition Log.h:157
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)
Definition Battleground.cpp:1411

References Battleground::AddObject(), Battleground::AddSpiritGuide(), BG_AB_BuffPositions, BG_AB_DoorPositions, BG_AB_DYNAMIC_NODES_COUNT, BG_AB_NodePositions, BG_AB_OBJECT_AURA_ALLY, BG_AB_OBJECT_AURA_CONTESTED, BG_AB_OBJECT_AURA_HORDE, BG_AB_OBJECT_BANNER_ALLY, BG_AB_OBJECT_BANNER_CONT_A, BG_AB_OBJECT_BANNER_CONT_H, BG_AB_OBJECT_BANNER_HORDE, BG_AB_OBJECT_BANNER_NEUTRAL, BG_AB_OBJECT_GATE_A, BG_AB_OBJECT_GATE_H, BG_AB_OBJECT_MAX, BG_AB_OBJECT_SPEEDBUFF_STABLES, BG_AB_OBJECTID_AURA_A, BG_AB_OBJECTID_AURA_C, BG_AB_OBJECTID_AURA_H, BG_AB_OBJECTID_BANNER_A, BG_AB_OBJECTID_BANNER_CONT_A, BG_AB_OBJECTID_BANNER_CONT_H, BG_AB_OBJECTID_BANNER_H, BG_AB_OBJECTID_GATE_A, BG_AB_OBJECTID_GATE_H, BG_AB_OBJECTID_NODE_BANNER_0, BG_AB_OBJECTS_PER_NODE, BG_AB_SPIRIT_ALIANCE, BG_AB_SPIRIT_HORDE, BG_AB_SpiritGuidePos, Battleground::BgCreatures, Battleground::BgObjects, Buff_Entries, LOG_ERROR, RESPAWN_IMMEDIATELY, RESPAWN_ONE_DAY, TEAM_ALLIANCE, and TEAM_HORDE.

◆ StartingEventCloseDoors()

◆ StartingEventOpenDoors()

void BattlegroundAB::StartingEventOpenDoors ( )
overridevirtual

Reimplemented from Battleground.

163{
166
167 for (uint32 i = 0; i < BG_AB_DYNAMIC_NODES_COUNT; ++i)
169
175}
@ BG_AB_EVENT_START_BATTLE
Definition BattlegroundAB.h:163
@ ACHIEVEMENT_TIMED_TYPE_EVENT
Definition DBCEnums.h:110
uint32 urand(uint32 min, uint32 max)
Definition Random.cpp:44
void DoorOpen(uint32 type)
Definition Battleground.cpp:1483
void StartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry)
Definition Battleground.cpp:1828

References _bgEvents, ACHIEVEMENT_TIMED_TYPE_EVENT, BG_AB_DYNAMIC_NODES_COUNT, BG_AB_EVENT_ALLIANCE_TICK, BG_AB_EVENT_HORDE_TICK, BG_AB_EVENT_START_BATTLE, BG_AB_OBJECT_BANNER_NEUTRAL, BG_AB_OBJECT_GATE_A, BG_AB_OBJECT_GATE_H, BG_AB_OBJECT_SPEEDBUFF_STABLES, BG_AB_OBJECTS_PER_NODE, Battleground::DoorOpen(), RESPAWN_IMMEDIATELY, EventMap::ScheduleEvent(), Battleground::SpawnBGObject(), Battleground::StartTimedAchievement(), and urand().

◆ UpdatePlayerScore()

bool BattlegroundAB::UpdatePlayerScore ( Player player,
uint32  type,
uint32  value,
bool  doAddHonor = true 
)
overridevirtual

Reimplemented from Battleground.

526{
527 if (!Battleground::UpdatePlayerScore(player, type, value, doAddHonor))
528 return false;
529
530 switch (type)
531 {
534 break;
537 break;
538 default:
539 break;
540 }
541
542 return true;
543}
@ BG_AB_OBJECTIVE_ASSAULT_BASE
Definition BattlegroundAB.h:161
@ BG_AB_OBJECTIVE_DEFEND_BASE
Definition BattlegroundAB.h:162
@ ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE
Definition DBCEnums.h:144
virtual bool UpdatePlayerScore(Player *player, uint32 type, uint32 value, bool doAddHonor=true)
Definition Battleground.cpp:1350
void UpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1=0, uint32 miscValue2=0, Unit *unit=nullptr)
Definition PlayerUpdates.cpp:2177

References ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, BG_AB_OBJECTIVE_ASSAULT_BASE, BG_AB_OBJECTIVE_DEFEND_BASE, SCORE_BASES_ASSAULTED, SCORE_BASES_DEFENDED, Player::UpdateAchievementCriteria(), and Battleground::UpdatePlayerScore().

Referenced by EventPlayerClickedOnFlag().

Member Data Documentation

◆ _bgEvents

◆ _capturePointInfo

◆ _configurableMaxTeamScore

uint32 BattlegroundAB::_configurableMaxTeamScore
private

◆ _controlledPoints

◆ _honorTics

uint32 BattlegroundAB::_honorTics
private

◆ _reputationTics

uint32 BattlegroundAB::_reputationTics
private

◆ _teamScores500Disadvantage

bool BattlegroundAB::_teamScores500Disadvantage[PVP_TEAMS_COUNT] {}
private
303{};

Referenced by BattlegroundAB(), and PostUpdateImpl().


The documentation for this class was generated from the following files: