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)
 

Private Attributes

CapturePointInfo _capturePointInfo [BG_AB_DYNAMIC_NODES_COUNT]
 
EventMap _bgEvents
 
uint32 _honorTics
 
uint32 _reputationTics
 
float _abReputationRate
 
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
bool m_SetupCompleted
 
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:771
@ TEAM_HORDE
Definition SharedDefines.h:772
uint32 _honorTics
Definition BattlegroundAB.h:298
uint32 _reputationTics
Definition BattlegroundAB.h:299
uint8 _controlledPoints[PVP_TEAMS_COUNT]
Definition BattlegroundAB.h:301
bool _teamScores500Disadvantage[PVP_TEAMS_COUNT]
Definition BattlegroundAB.h:302
BGObjects BgObjects
Definition Battleground.h:540
bool m_BuffChange
Definition Battleground.h:636
BGCreatures BgCreatures
Definition Battleground.h:541

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:1189
BattlegroundScoreMap PlayerScores
Definition Battleground.h:621
LowType GetCounter() const
Definition ObjectGuid.h:145
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:113
Definition BattlegroundAB.h:217

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

◆ AllNodesConrolledByTeam()

bool BattlegroundAB::AllNodesConrolledByTeam ( TeamId  teamId) const
overridevirtual

Reimplemented from Battleground.

544{
546}

References _controlledPoints, and BG_AB_DYNAMIC_NODES_COUNT.

◆ CreateBanner()

void BattlegroundAB::CreateBanner ( uint8  node,
bool  delay 
)
private
220{
221 // Just put it into the queue
222 if (delay)
223 {
225 return;
226 }
227
230}
@ 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
constexpr Milliseconds BG_AB_BANNER_UPDATE_TIME
Definition BattlegroundAB.h:175
@ RESPAWN_IMMEDIATELY
Definition Battleground.h:160
EventMap _bgEvents
Definition BattlegroundAB.h:297
CapturePointInfo _capturePointInfo[BG_AB_DYNAMIC_NODES_COUNT]
Definition BattlegroundAB.h:296
void SpawnBGObject(uint32 type, uint32 respawntime, uint32 forceRespawnDelay=0)
Definition Battleground.cpp:1586
void RescheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)
Definition EventMap.cpp:70

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.

490{
494 Battleground::EndBattleground(winnerTeamId);
496}
void EndBattleground(PvPTeamId winnerTeamId)
Definition Battleground.cpp:834
uint32 GetBonusHonorFromKill(uint32 kills) const
Definition Battleground.cpp:1033
void RewardHonorToTeam(uint32 honor, TeamId teamId)
Definition Battleground.cpp:776
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.

306{
307 if (GetStatus() != STATUS_IN_PROGRESS || !player->IsWithinDistInMap(gameObject, 10.0f))
308 return;
309
311 for (; node < BG_AB_DYNAMIC_NODES_COUNT; ++node)
312 if (player->GetDistance2d(BG_AB_NodePositions[node][0], BG_AB_NodePositions[node][1]) < 10.0f)
313 break;
314
315 if (node == BG_AB_DYNAMIC_NODES_COUNT || _capturePointInfo[node]._ownerTeamId == player->GetTeamId() ||
316 (_capturePointInfo[node]._state == BG_AB_NODE_STATE_ALLY_CONTESTED && player->GetTeamId() == TEAM_ALLIANCE) ||
317 (_capturePointInfo[node]._state == BG_AB_NODE_STATE_HORDE_CONTESTED && player->GetTeamId() == TEAM_HORDE))
318 return;
319
320 player->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_ENTER_PVP_COMBAT);
321
322 uint32 sound = 0;
323 TeamId teamid = player->GetTeamId();
324
325 DeleteBanner(node);
326 CreateBanner(node, true);
327
329 {
330 player->KilledMonsterCredit(BG_AB_QUEST_CREDIT_BASE + node);
332 _capturePointInfo[node]._state = static_cast<uint8>(BG_AB_NODE_STATE_ALLY_CONTESTED) + player->GetTeamId();
336
337 if (teamid == TEAM_ALLIANCE)
338 {
339 SendBroadcastText(ABNodes[node].TextAllianceClaims, CHAT_MSG_BG_SYSTEM_ALLIANCE, player);
340 }
341 else
342 {
343 SendBroadcastText(ABNodes[node].TextHordeClaims, CHAT_MSG_BG_SYSTEM_HORDE, player);
344 }
345 }
347 {
348 if (!_capturePointInfo[node]._captured)
349 {
350 player->KilledMonsterCredit(BG_AB_QUEST_CREDIT_BASE + node);
352 _capturePointInfo[node]._state = static_cast<uint8>(BG_AB_NODE_STATE_ALLY_CONTESTED) + player->GetTeamId();
355
356 if (teamid == TEAM_ALLIANCE)
357 {
358 SendBroadcastText(ABNodes[node].TextAllianceAssaulted, CHAT_MSG_BG_SYSTEM_ALLIANCE, player);
359 }
360 else
361 {
362 SendBroadcastText(ABNodes[node].TextHordeAssaulted, CHAT_MSG_BG_SYSTEM_HORDE, player);
363 }
364 }
365 else
366 {
368 _capturePointInfo[node]._state = static_cast<uint8>(BG_AB_NODE_STATE_ALLY_OCCUPIED) + player->GetTeamId();
369 _capturePointInfo[node]._ownerTeamId = player->GetTeamId();
371 NodeOccupied(node); // after setting team owner
372
373 if (teamid == TEAM_ALLIANCE)
374 {
375 SendBroadcastText(ABNodes[node].TextAllianceDefended, CHAT_MSG_BG_SYSTEM_ALLIANCE, player);
376 }
377 else
378 {
379 SendBroadcastText(ABNodes[node].TextHordeDefended, CHAT_MSG_BG_SYSTEM_HORDE, player);
380 }
381 }
382
384 }
385 else
386 {
387 player->KilledMonsterCredit(BG_AB_QUEST_CREDIT_BASE + node);
389 NodeDeoccupied(node); // before setting team owner to neutral
390
391 _capturePointInfo[node]._state = static_cast<uint8>(BG_AB_NODE_STATE_ALLY_CONTESTED) + player->GetTeamId();
392
395
396 if (teamid == TEAM_ALLIANCE)
397 {
398 SendBroadcastText(ABNodes[node].TextAllianceAssaulted, CHAT_MSG_BG_SYSTEM_ALLIANCE, player);
399 }
400 else
401 {
402 SendBroadcastText(ABNodes[node].TextHordeAssaulted, CHAT_MSG_BG_SYSTEM_HORDE, player);
403 }
404 }
405
406 SendNodeUpdate(node);
407 PlaySoundToAll(sound);
408}
constexpr Milliseconds BG_AB_FLAG_CAPTURING_TIME
Definition BattlegroundAB.h:174
@ 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_QUEST_CREDIT_BASE
Definition BattlegroundAB.h:164
@ BG_AB_NODE_STABLES
Definition BattlegroundAB.h:99
const float BG_AB_NodePositions[BG_AB_DYNAMIC_NODES_COUNT][4]
Definition BattlegroundAB.h:190
@ 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:193
std::uint8_t uint8
Definition Define.h:109
std::uint32_t uint32
Definition Define.h:107
@ CHAT_MSG_BG_SYSTEM_ALLIANCE
Definition SharedDefines.h:3429
@ CHAT_MSG_BG_SYSTEM_HORDE
Definition SharedDefines.h:3430
TeamId
Definition SharedDefines.h:770
@ TEAM_NEUTRAL
Definition SharedDefines.h:773
@ AURA_INTERRUPT_FLAG_ENTER_PVP_COMBAT
Definition SpellDefines.h:66
void NodeOccupied(uint8 node)
Definition BattlegroundAB.cpp:269
void NodeDeoccupied(uint8 node)
Definition BattlegroundAB.cpp:290
void DeleteBanner(uint8 node)
Definition BattlegroundAB.cpp:232
bool UpdatePlayerScore(Player *player, uint32 type, uint32 value, bool doAddHonor=true) override
Definition BattlegroundAB.cpp:523
void CreateBanner(uint8 node, bool delay)
Definition BattlegroundAB.cpp:219
void SendNodeUpdate(uint8 node)
Definition BattlegroundAB.cpp:259
void SendBroadcastText(uint32 id, ChatMsg msgType, WorldObject const *target=nullptr)
Definition Battleground.cpp:734
BattlegroundStatus GetStatus() const
Definition Battleground.h:323
void PlaySoundToAll(uint32 soundId)
Definition Battleground.cpp:747
void CancelEvent(EventId eventId)
Definition EventMap.cpp:160
uint8 _state
Definition BattlegroundAB.h:291
TeamId _ownerTeamId
Definition BattlegroundAB.h:288

References _bgEvents, _capturePointInfo, BattlegroundAB::CapturePointInfo::_ownerTeamId, BattlegroundAB::CapturePointInfo::_state, ABNodes, 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.

239{
240 packet.Worldstates.reserve(BG_AB_DYNAMIC_NODES_COUNT+7);
241 for (auto& node : _capturePointInfo)
242 {
243 if (node._state == BG_AB_NODE_STATE_NEUTRAL)
244 packet.Worldstates.emplace_back(node._iconNone, 1);
245
247 packet.Worldstates.emplace_back(node._iconCapture + i - 1, node._state == i ? 1 : 0);
248 }
249
256 packet.Worldstates.emplace_back(WORLD_STATE_BATTLEGROUND_AB_UNK, 2);
257}
@ 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:303
int32 m_TeamScores[PVP_TEAMS_COUNT]
Definition Battleground.h:640
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.

499{
500 GraveyardStruct const* entry = sGraveyard->GetGraveyard(BG_AB_GraveyardIds[static_cast<uint8>(BG_AB_SPIRIT_ALIANCE) + player->GetTeamId()]);
501 GraveyardStruct const* nearestEntry = entry;
502
503 float pX = player->GetPositionX();
504 float pY = player->GetPositionY();
505 float dist = (entry->x - pX) * (entry->x - pX) + (entry->y - pY) * (entry->y - pY);
506 float minDist = dist;
507
509 if (_capturePointInfo[i]._ownerTeamId == player->GetTeamId())
510 {
511 entry = sGraveyard->GetGraveyard(BG_AB_GraveyardIds[i]);
512 dist = (entry->x - pX) * (entry->x - pX) + (entry->y - pY) * (entry->y - pY);
513 if (dist < minDist)
514 {
515 minDist = dist;
516 nearestEntry = entry;
517 }
518 }
519
520 return nearestEntry;
521}
const uint32 BG_AB_GraveyardIds[BG_AB_ALL_NODES_COUNT]
Definition BattlegroundAB.h:179
@ BG_AB_SPIRIT_ALIANCE
Definition BattlegroundAB.h:106
#define sGraveyard
Definition GameGraveyard.h:74
TeamId GetTeamId(bool original=false) const
Definition Player.h:2101
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.

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

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.

466{
467 //call parent's class reset
469
471
482
483 uint32 bgArathiCapturePointsConfig = sWorld->getIntConfig(CONFIG_BATTLEGROUND_ARATHI_CAPTUREPOINTS);
484 _configurableMaxTeamScore = bgArathiCapturePointsConfig > 0
485 ? bgArathiCapturePointsConfig
486 : static_cast<uint32>(BG_AB_MAX_TEAM_SCORE);
487}
@ BG_AB_MAX_TEAM_SCORE
Definition BattlegroundAB.h:172
@ 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 WorldConfig.h:277
@ 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
virtual void Init()
Definition Battleground.cpp:1140
#define sWorld
Definition World.h:316
uint32 _iconNone
Definition BattlegroundAB.h:289
uint32 _iconCapture
Definition BattlegroundAB.h:290

References _bgEvents, _capturePointInfo, _configurableMaxTeamScore, BattlegroundAB::CapturePointInfo::_iconCapture, BattlegroundAB::CapturePointInfo::_iconNone, 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, CONFIG_BATTLEGROUND_ARATHI_CAPTUREPOINTS, Battleground::Init(), 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
291{
293
295
296 _reviveEvents.AddEventAtOffset([this, node]()
297 {
299 DelCreature(node); // Delete spirit healer
300 }, 500ms);
301
302 DelCreature(BG_AB_ALL_NODES_COUNT + node); // Delete aura trigger
303}
bool DelCreature(uint32 type)
Definition Battleground.cpp:1669
void RelocateDeadPlayers(ObjectGuid queueIndex)
Relocate all players in ReviveQueue to the closest graveyard.
Definition Battleground.cpp:1460
EventProcessor _reviveEvents
Definition Battleground.h:647
void AddEventAtOffset(BasicEvent *event, Milliseconds offset, uint8 eventGroup=0)
Definition EventProcessor.h:108

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
270{
271 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);
272
274 if (_controlledPoints[_capturePointInfo[node]._ownerTeamId] >= 5)
276 if (_controlledPoints[_capturePointInfo[node]._ownerTeamId] >= 4)
278
280 if (!trigger)
282
283 if (trigger)
284 {
286 trigger->CastSpell(trigger, SPELL_HONORABLE_DEFENDER_25Y, false);
287 }
288}
const float BG_AB_SpiritGuidePos[BG_AB_ALL_NODES_COUNT][4]
Definition BattlegroundAB.h:205
@ SPELL_HONORABLE_DEFENDER_25Y
Definition Battleground.h:137
@ SPELL_AB_QUEST_REWARD_4_BASES
Definition Battleground.h:90
@ SPELL_AB_QUEST_REWARD_5_BASES
Definition Battleground.h:91
@ FACTION_ALLIANCE_GENERIC
Definition SharedDefines.h:217
@ FACTION_HORDE_GENERIC
Definition SharedDefines.h:216
#define WORLD_TRIGGER
Definition Unit.h:39
bool AddSpiritGuide(uint32 type, float x, float y, float z, float o, TeamId teamId)
Definition Battleground.cpp:1708
BattlegroundMap * GetBgMap() const
Definition Battleground.h:440
Creature * AddCreature(uint32 entry, uint32 type, float x, float y, float z, float o, uint32 respawntime=0, MotionTransport *transport=nullptr)
Definition Battleground.cpp:1606
void CastSpellOnTeam(uint32 spellId, TeamId teamId)
Definition Battleground.cpp:752
Definition Creature.h:47
Creature * GetCreature(ObjectGuid const &guid)
Definition Map.cpp:2357
void SetFaction(uint32 faction)
Definition Unit.cpp:10246
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:1194

References _capturePointInfo, _controlledPoints, BattlegroundAB::CapturePointInfo::_ownerTeamId, Battleground::AddCreature(), Battleground::AddSpiritGuide(), 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, 3s);
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, uint32(10 * _abReputationRate), 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 Milliseconds BG_AB_TickIntervals[BG_AB_DYNAMIC_NODES_COUNT+1]
Definition BattlegroundAB.h:177
const uint32 BG_AB_TickPoints[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:3428
float _abReputationRate
Definition BattlegroundAB.h:300
void EndBattleground(TeamId winnerTeamId) override
Definition BattlegroundAB.cpp:489
void RewardReputationToTeam(uint32 factionId, uint32 reputation, TeamId teamId)
Definition Battleground.cpp:783
static TeamId GetOtherTeamId(TeamId teamId)
Definition Battleground.cpp:1824
void UpdateWorldState(uint32 variable, uint32 value)
Definition Battleground.cpp:826
void Update(uint32 time)
Definition EventMap.h:67
EventId ExecuteEvent()
Definition EventMap.cpp:86
void ScheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)
Definition EventMap.cpp:48
bool _captured
Definition BattlegroundAB.h:293

References _abReputationRate, _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}

◆ SendNodeUpdate()

◆ SetupBattleground()

bool BattlegroundAB::SetupBattleground ( )
overridevirtual

Reimplemented from Battleground.

418{
422
423 for (uint32 i = 0; i < BG_AB_DYNAMIC_NODES_COUNT; ++i)
424 {
433 }
434
437
438 for (uint32 i = 0; i < BG_AB_DYNAMIC_NODES_COUNT; ++i)
439 {
443 }
444
447
449 if (!BgObjects[i])
450 {
451 LOG_ERROR("sql.sql", "BatteGroundAB: Failed to spawn some object Battleground not created!");
452 return false;
453 }
454
456 if (!BgCreatures[i])
457 {
458 LOG_ERROR("sql.sql", "BatteGroundAB: Failed to spawn spirit guides Battleground not created!");
459 return false;
460 }
461
462 return true;
463}
@ 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:181
@ 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_HONOR_TICK_WEEKEND
Definition BattlegroundAB.h:167
const float BG_AB_DoorPositions[2][8]
Definition BattlegroundAB.h:199
@ BG_AB_SPIRIT_HORDE
Definition BattlegroundAB.h:107
const uint32 Buff_Entries[3]
Definition Battleground.h:186
#define LOG_ERROR(filterType__,...)
Definition Log.h:158
@ RATE_REPUTATION_GAIN_AB
Definition WorldConfig.h:442
static bool IsBGWeekend(BattlegroundTypeId bgTypeId)
Definition BattlegroundMgr.cpp:910
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:1484
BattlegroundTypeId GetBgTypeID(bool GetRandom=false) const
Definition Battleground.h:320

References _abReputationRate, _honorTics, _reputationTics, Battleground::AddObject(), Battleground::AddSpiritGuide(), BG_AB_BuffPositions, BG_AB_DoorPositions, BG_AB_DYNAMIC_NODES_COUNT, BG_AB_HONOR_TICK_NORMAL, BG_AB_HONOR_TICK_WEEKEND, 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_REP_TICK_NORMAL, BG_AB_REP_TICK_WEEKEND, BG_AB_SPIRIT_ALIANCE, BG_AB_SPIRIT_HORDE, BG_AB_SpiritGuidePos, Battleground::BgCreatures, Battleground::BgObjects, Buff_Entries, Battleground::GetBgTypeID(), BattlegroundMgr::IsBGWeekend(), LOG_ERROR, RATE_REPUTATION_GAIN_AB, RESPAWN_IMMEDIATELY, RESPAWN_ONE_DAY, sWorld, 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:1556
void StartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry)
Definition Battleground.cpp:1901

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.

524{
525 if (!Battleground::UpdatePlayerScore(player, type, value, doAddHonor))
526 return false;
527
528 switch (type)
529 {
532 break;
535 break;
536 default:
537 break;
538 }
539
540 return true;
541}
@ 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:1423
void UpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1=0, uint32 miscValue2=0, Unit *unit=nullptr)
Definition PlayerUpdates.cpp:2169

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

◆ _abReputationRate

float BattlegroundAB::_abReputationRate
private

◆ _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
302{};

Referenced by BattlegroundAB(), and PostUpdateImpl().


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