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

#include "BattlegroundAV.h"

Inheritance diagram for BattlegroundAV:
Battleground

Public Member Functions

 BattlegroundAV ()
 
 ~BattlegroundAV () override=default
 
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 ResetBGSubclass () override
 
void UpdateScore (TeamId teamId, int16 points)
 
bool UpdatePlayerScore (Player *player, uint32 type, uint32 value, bool doAddHonor=true) override
 
void EventPlayerClickedOnFlag (Player *source, GameObject *gameObject) override
 
void HandleKillPlayer (Player *player, Player *killer) override
 
void HandleKillUnit (Creature *unit, Player *killer) override
 
void HandleQuestComplete (uint32 questid, Player *player)
 
bool PlayerCanDoMineQuest (int32 GOId, TeamId teamId)
 
void EndBattleground (TeamId winnerTeamId) override
 
GraveyardStruct const * GetClosestGraveyard (Player *player) override
 
bool IsBothMinesControlledByTeam (TeamId teamId) const
 
bool IsAllTowersControlledAndCaptainAlive (TeamId teamId) const
 
TeamId GetPrematureWinner () override
 
- Public Member Functions inherited from Battleground
 Battleground ()
 
virtual ~Battleground ()
 
void Update (uint32 diff)
 
virtual void Init ()
 
virtual void DestroyGate (Player *, GameObject *)
 
virtual bool AllNodesConrolledByTeam (TeamId) const
 
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 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 EventPlayerAssaultsPoint (Player *player, uint32 object)
 
void EventPlayerDefendsPoint (Player *player, uint32 object)
 
void EventPlayerDestroyedPoint (BG_AV_Nodes node)
 
void AssaultNode (BG_AV_Nodes node, TeamId teamId)
 
void DestroyNode (BG_AV_Nodes node)
 
void InitNode (BG_AV_Nodes node, TeamId teamId, bool tower)
 
void DefendNode (BG_AV_Nodes node, TeamId teamId)
 
void PopulateNode (BG_AV_Nodes node)
 
void DePopulateNode (BG_AV_Nodes node, bool ignoreSpiritGuid=false)
 
BG_AV_Nodes GetNodeThroughObject (uint32 object)
 
uint32 GetObjectThroughNode (BG_AV_Nodes node)
 
bool IsTower (BG_AV_Nodes node)
 
uint8 GetAttackString (BG_AV_Nodes node, TeamId teamId)
 
uint8 GetDefendString (BG_AV_Nodes node, TeamId teamId)
 
uint8 GetMineString (uint8 mine, TeamId teamId)
 
void ChangeMineOwner (uint8 mine, TeamId teamId, bool initial=false)
 
void FillInitialWorldStates (WorldPackets::WorldState::InitWorldStates &packet) override
 
uint8 GetWorldStateType (uint8 state, TeamId teamId)
 
void SendMineWorldStates (uint32 mine)
 
void UpdateNodeWorldState (BG_AV_Nodes node)
 
CreatureAddAVCreature (uint16 cinfoid, uint16 type)
 

Private Attributes

int32 m_Team_Scores [2] {}
 
uint32 m_Team_QuestStatus [2][9] {}
 
BG_AV_NodeInfo m_Nodes [BG_AV_NODES_MAX] {}
 
TeamId m_Mine_Owner [2] {}
 
int32 m_Mine_Timer
 
uint32 m_Mine_Reclaim_Timer [2] {}
 
uint32 m_CaptainBuffTimer [2] {}
 
bool m_CaptainAlive [2] {}
 
uint32 _reputationTower = 0
 
uint32 _reputationCaptain = 0
 
uint32 _reputationBoss = 0
 
uint32 _reputationPerOwnedGraveyard = 0
 
uint32 _reputationSurvivingCaptain = 0
 
uint32 _reputationSurvivingTower = 0
 
uint32 _reputationPerOwnedMine = 0
 
bool m_IsInformedNearVictory [2] {}
 

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

◆ BattlegroundAV()

BattlegroundAV::BattlegroundAV ( )
42{
45
46 for (uint8 i = 0; i < 2; i++)
47 {
48 for (uint8 j = 0; j < 9; j++)
49 m_Team_QuestStatus[i][j] = 0;
50 m_Team_Scores[i] = 0;
51 m_IsInformedNearVictory[i] = false;
52 m_CaptainAlive[i] = true;
53 m_CaptainBuffTimer[i] = 0;
56 }
57
58 m_Mine_Timer = 0;
59
67
69 InitNode(i, TEAM_NEUTRAL, false);
70
74}
BG_AV_Nodes
Definition BattlegroundAV.h:170
@ BG_AV_NODES_FIRSTAID_STATION
Definition BattlegroundAV.h:171
@ BG_AV_NODES_MAX
Definition BattlegroundAV.h:187
@ BG_AV_OBJECT_MAX
Definition BattlegroundAV.h:328
@ AV_STATICCPLACE_MAX
Definition BattlegroundAV.h:106
@ AV_CPLACE_MAX
Definition BattlegroundAV.h:842
@ BG_AV_TEXT_START_HALF_MINUTE
Definition BattlegroundAV.h:50
@ BG_AV_TEXT_START_ONE_MINUTE
Definition BattlegroundAV.h:49
@ BG_AV_TEXT_BATTLE_HAS_BEGUN
Definition BattlegroundAV.h:51
@ BG_STARTING_EVENT_THIRD
Definition Battleground.h:232
@ BG_STARTING_EVENT_SECOND
Definition Battleground.h:231
@ BG_STARTING_EVENT_FOURTH
Definition Battleground.h:233
std::uint8_t uint8
Definition Define.h:109
std::uint16_t uint16
Definition Define.h:108
@ TEAM_NEUTRAL
Definition SharedDefines.h:762
int32 m_Mine_Timer
Definition BattlegroundAV.h:1837
uint32 _reputationCaptain
Definition BattlegroundAV.h:1843
uint32 _reputationPerOwnedGraveyard
Definition BattlegroundAV.h:1845
void InitNode(BG_AV_Nodes node, TeamId teamId, bool tower)
Definition BattlegroundAV.cpp:1792
int32 m_Team_Scores[2]
Definition BattlegroundAV.h:1831
bool m_IsInformedNearVictory[2]
Definition BattlegroundAV.h:1850
uint32 _reputationPerOwnedMine
Definition BattlegroundAV.h:1848
uint32 m_CaptainBuffTimer[2]
Definition BattlegroundAV.h:1839
uint32 _reputationBoss
Definition BattlegroundAV.h:1844
uint32 _reputationSurvivingCaptain
Definition BattlegroundAV.h:1846
uint32 _reputationSurvivingTower
Definition BattlegroundAV.h:1847
uint32 m_Mine_Reclaim_Timer[2]
Definition BattlegroundAV.h:1838
uint32 _reputationTower
Definition BattlegroundAV.h:1842
uint32 m_Team_QuestStatus[2][9]
Definition BattlegroundAV.h:1832
TeamId m_Mine_Owner[2]
Definition BattlegroundAV.h:1836
bool m_CaptainAlive[2]
Definition BattlegroundAV.h:1840
BGObjects BgObjects
Definition Battleground.h:540
BGCreatures BgCreatures
Definition Battleground.h:541
uint32 StartMessageIds[BG_STARTING_EVENT_COUNT]
Definition Battleground.h:634

References _reputationBoss, _reputationCaptain, _reputationPerOwnedGraveyard, _reputationPerOwnedMine, _reputationSurvivingCaptain, _reputationSurvivingTower, _reputationTower, AV_CPLACE_MAX, AV_STATICCPLACE_MAX, BG_AV_NODES_FIRSTAID_STATION, BG_AV_NODES_MAX, BG_AV_OBJECT_MAX, BG_AV_TEXT_BATTLE_HAS_BEGUN, BG_AV_TEXT_START_HALF_MINUTE, BG_AV_TEXT_START_ONE_MINUTE, BG_STARTING_EVENT_FOURTH, BG_STARTING_EVENT_SECOND, BG_STARTING_EVENT_THIRD, Battleground::BgCreatures, Battleground::BgObjects, InitNode(), m_CaptainAlive, m_CaptainBuffTimer, m_IsInformedNearVictory, m_Mine_Owner, m_Mine_Reclaim_Timer, m_Mine_Timer, m_Team_QuestStatus, m_Team_Scores, Battleground::StartMessageIds, and TEAM_NEUTRAL.

◆ ~BattlegroundAV()

BattlegroundAV::~BattlegroundAV ( )
overridedefault

Member Function Documentation

◆ AddAVCreature()

Creature * BattlegroundAV::AddAVCreature ( uint16  cinfoid,
uint16  type 
)
private
Todo:
: look if this can be done by database + also add this for the wingcommanders
310{
311 bool isStatic = false;
312 Creature* creature = nullptr;
313 ASSERT(type <= static_cast<uint16>(AV_CPLACE_MAX) + AV_STATICCPLACE_MAX);
314 if (type >= AV_CPLACE_MAX) //static
315 {
316 type -= AV_CPLACE_MAX;
317 cinfoid = uint16(BG_AV_StaticCreaturePos[type][4]);
318 creature = AddCreature(BG_AV_StaticCreatureInfo[cinfoid],
319 type + AV_CPLACE_MAX,
323 BG_AV_StaticCreaturePos[type][3]);
324 isStatic = true;
325 }
326 else
327 {
328 creature = AddCreature(BG_AV_CreatureInfo[cinfoid],
329 type,
330 BG_AV_CreaturePos[type][0],
331 BG_AV_CreaturePos[type][1],
332 BG_AV_CreaturePos[type][2],
333 BG_AV_CreaturePos[type][3]);
334 }
335 if (!creature)
336 return nullptr;
339
342
343 if ((isStatic && cinfoid >= 10 && cinfoid <= 14) || (!isStatic && ((cinfoid >= AV_NPC_A_GRAVEDEFENSE0 && cinfoid <= AV_NPC_A_GRAVEDEFENSE3) ||
344 (cinfoid >= AV_NPC_H_GRAVEDEFENSE0 && cinfoid <= AV_NPC_H_GRAVEDEFENSE3))))
345 {
346 if (!isStatic && ((cinfoid >= AV_NPC_A_GRAVEDEFENSE0 && cinfoid <= AV_NPC_A_GRAVEDEFENSE3)
347 || (cinfoid >= AV_NPC_H_GRAVEDEFENSE0 && cinfoid <= AV_NPC_H_GRAVEDEFENSE3)))
348 {
349 CreatureData& data = sObjectMgr->NewOrExistCreatureData(creature->GetSpawnId());
350 data.wander_distance = 5;
351 }
352 //else wander_distance will be 15, so creatures move maximum=10
353 //creature->SetDefaultMovementType(RANDOM_MOTION_TYPE);
354 creature->GetMotionMaster()->Initialize();
356 creature->Respawn();
357 //TODO: find a way to add a motionmaster without killing the creature (i
358 //just copied this code from a gm-command
359 }
360
361 uint32 triggerSpawnID = 0;
362 uint32 newFaction = 0;
363 if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_A_CAPTAIN])
364 {
365 triggerSpawnID = AV_CPLACE_TRIGGER16;
366 newFaction = 84;
367 }
368 else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_A_BOSS])
369 {
370 triggerSpawnID = AV_CPLACE_TRIGGER17;
371 newFaction = 84;
372 }
373 else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_H_CAPTAIN])
374 {
375 triggerSpawnID = AV_CPLACE_TRIGGER18;
376 newFaction = 83;
377 }
378 else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_H_BOSS])
379 {
380 triggerSpawnID = AV_CPLACE_TRIGGER19;
381 newFaction = 83;
382 }
383 if (triggerSpawnID && newFaction)
384 {
385 if (Creature* trigger = AddCreature(WORLD_TRIGGER,
386 triggerSpawnID,
387 BG_AV_CreaturePos[triggerSpawnID][0],
388 BG_AV_CreaturePos[triggerSpawnID][1],
389 BG_AV_CreaturePos[triggerSpawnID][2],
390 BG_AV_CreaturePos[triggerSpawnID][3]))
391 {
392 trigger->SetFaction(newFaction);
393 trigger->CastSpell(trigger, SPELL_HONORABLE_DEFENDER_25Y, false);
394 }
395 }
396
397 return creature;
398}
const uint32 BG_AV_StaticCreatureInfo[51]
Definition BattlegroundAV.h:1450
const float BG_AV_CreaturePos[AV_CPLACE_MAX][4]
Definition BattlegroundAV.h:849
const float BG_AV_StaticCreaturePos[AV_STATICCPLACE_MAX][5]
Definition BattlegroundAV.h:1322
@ AV_NPC_H_TOWERDEFENSE
Definition BattlegroundAV.h:1221
@ AV_NPC_A_GRAVEDEFENSE3
Definition BattlegroundAV.h:1212
@ AV_NPC_H_GRAVEDEFENSE0
Definition BattlegroundAV.h:1217
@ AV_NPC_H_CAPTAIN
Definition BattlegroundAV.h:1222
@ AV_NPC_A_TOWERDEFENSE
Definition BattlegroundAV.h:1213
@ AV_NPC_A_GRAVEDEFENSE0
Definition BattlegroundAV.h:1209
@ AV_NPC_H_BOSS
Definition BattlegroundAV.h:1223
@ AV_NPC_A_BOSS
Definition BattlegroundAV.h:1215
@ AV_NPC_H_GRAVEDEFENSE3
Definition BattlegroundAV.h:1220
@ AV_NPC_A_CAPTAIN
Definition BattlegroundAV.h:1214
const uint32 BG_AV_CreatureInfo[AV_NPC_INFO_MAX]
Definition BattlegroundAV.h:1262
@ AV_CPLACE_TRIGGER18
Definition BattlegroundAV.h:839
@ AV_CPLACE_TRIGGER19
Definition BattlegroundAV.h:840
@ AV_CPLACE_TRIGGER17
Definition BattlegroundAV.h:838
@ AV_CPLACE_TRIGGER16
Definition BattlegroundAV.h:837
@ RESPAWN_ONE_DAY
Definition Battleground.h:159
@ SPELL_HONORABLE_DEFENDER_25Y
Definition Battleground.h:137
std::uint32_t uint32
Definition Define.h:107
#define ASSERT
Definition Errors.h:68
bool isStatic(MovementGenerator *movement)
Definition MotionMaster.cpp:68
#define sObjectMgr
Definition ObjectMgr.h:1650
@ UNIT_FLAG_DISABLE_MOVE
Definition UnitDefines.h:252
#define WORLD_TRIGGER
Definition Unit.h:38
Creature * AddCreature(uint32 entry, uint32 type, float x, float y, float z, float o, uint32 respawntime=0, MotionTransport *transport=nullptr)
Definition Battleground.cpp:1573
Definition Creature.h:43
void setDeathState(DeathState s, bool despawn=false) override
A creature can be in 4 different states: Alive, JustDied, Corpse, and JustRespawned....
Definition Creature.cpp:1970
void Respawn(bool force=false)
Definition Creature.cpp:2043
void SetRespawnDelay(uint32 delay)
Definition Creature.h:296
ObjectGuid::LowType GetSpawnId() const
Definition Creature.h:65
void Initialize()
Definition MotionMaster.cpp:73
uint32 GetEntry() const
Definition Object.h:116
MotionMaster * GetMotionMaster()
Definition Unit.h:1673
void SetUnitFlag(UnitFlags flags)
UnitFlags available in UnitDefines.h.
Definition Unit.h:703
Definition CreatureData.h:370
float wander_distance
Definition CreatureData.h:384

References Battleground::AddCreature(), ASSERT, AV_CPLACE_MAX, AV_CPLACE_TRIGGER16, AV_CPLACE_TRIGGER17, AV_CPLACE_TRIGGER18, AV_CPLACE_TRIGGER19, AV_NPC_A_BOSS, AV_NPC_A_CAPTAIN, AV_NPC_A_GRAVEDEFENSE0, AV_NPC_A_GRAVEDEFENSE3, AV_NPC_A_TOWERDEFENSE, AV_NPC_H_BOSS, AV_NPC_H_CAPTAIN, AV_NPC_H_GRAVEDEFENSE0, AV_NPC_H_GRAVEDEFENSE3, AV_NPC_H_TOWERDEFENSE, AV_STATICCPLACE_MAX, BG_AV_CreatureInfo, BG_AV_CreaturePos, BG_AV_StaticCreatureInfo, BG_AV_StaticCreaturePos, Object::GetEntry(), Unit::GetMotionMaster(), Creature::GetSpawnId(), MotionMaster::Initialize(), isStatic(), JustDied, Creature::Respawn(), RESPAWN_ONE_DAY, Creature::setDeathState(), Creature::SetRespawnDelay(), Unit::SetUnitFlag(), sObjectMgr, SPELL_HONORABLE_DEFENDER_25Y, UNIT_FLAG_DISABLE_MOVE, CreatureData::wander_distance, and WORLD_TRIGGER.

Referenced by ChangeMineOwner(), PopulateNode(), and SetupBattleground().

◆ AddPlayer()

void BattlegroundAV::AddPlayer ( Player player)
overridevirtual

Reimplemented from Battleground.

504{
506 PlayerScores.emplace(player->GetGUID().GetCounter(), new BattlegroundAVScore(player->GetGUID()));
507}
virtual void AddPlayer(Player *player)
Definition Battleground.cpp:1159
BattlegroundScoreMap PlayerScores
Definition Battleground.h:621
LowType GetCounter() const
Definition ObjectGuid.h:145
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:113
Definition BattlegroundAV.h:1709

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

◆ AssaultNode()

void BattlegroundAV::AssaultNode ( BG_AV_Nodes  node,
TeamId  teamId 
)
private
1752{
1753 if (m_Nodes[node].TotalOwnerId == teamId)
1754 {
1755 LOG_FATAL("bg.battleground", "Assaulting team is TotalOwner of node");
1756 ABORT();
1757 }
1758 if (m_Nodes[node].OwnerId == teamId)
1759 {
1760 LOG_FATAL("bg.battleground", "Assaulting team is owner of node");
1761 ABORT();
1762 }
1763 if (m_Nodes[node].State == POINT_DESTROYED)
1764 {
1765 LOG_FATAL("bg.battleground", "Destroyed node is being assaulted");
1766 ABORT();
1767 }
1768 if (m_Nodes[node].State == POINT_ASSAULTED && m_Nodes[node].TotalOwnerId != TEAM_NEUTRAL) //only assault an assaulted node if no totalowner exists
1769 {
1770 LOG_FATAL("bg.battleground", "Assault on an not assaulted node with total owner");
1771 ABORT();
1772 }
1773 //the timer gets another time, if the previous owner was 0 == Neutral
1775 m_Nodes[node].PrevOwnerId = m_Nodes[node].OwnerId;
1776 m_Nodes[node].OwnerId = teamId;
1777 m_Nodes[node].PrevState = m_Nodes[node].State;
1779}
@ POINT_DESTROYED
Definition BattlegroundAV.h:1543
@ POINT_ASSAULTED
Definition BattlegroundAV.h:1542
#define BG_AV_SNOWFALL_FIRSTCAP
Definition BattlegroundAV.h:26
#define BG_AV_CAPTIME
Definition BattlegroundAV.h:25
#define ABORT
Definition Errors.h:76
#define LOG_FATAL(filterType__,...)
Definition Log.h:154
BG_AV_NodeInfo m_Nodes[BG_AV_NODES_MAX]
Definition BattlegroundAV.h:1834
BG_AV_States State
Definition BattlegroundAV.h:1697
TeamId PrevOwnerId
Definition BattlegroundAV.h:1702
uint32 Timer
Definition BattlegroundAV.h:1699
BG_AV_States PrevState
Definition BattlegroundAV.h:1698
TeamId OwnerId
Definition BattlegroundAV.h:1701

References ABORT, BG_AV_CAPTIME, BG_AV_SNOWFALL_FIRSTCAP, LOG_FATAL, m_Nodes, BG_AV_NodeInfo::OwnerId, POINT_ASSAULTED, POINT_DESTROYED, BG_AV_NodeInfo::PrevOwnerId, BG_AV_NodeInfo::PrevState, BG_AV_NodeInfo::State, TEAM_NEUTRAL, and BG_AV_NodeInfo::Timer.

Referenced by EventPlayerAssaultsPoint().

◆ ChangeMineOwner()

void BattlegroundAV::ChangeMineOwner ( uint8  mine,
TeamId  teamId,
bool  initial = false 
)
private
691{
692 // mine=0 northmine mine=1 southmin
693 // changing the owner results in setting respawntim to infinite for current creatures,
694 // spawning new mine owners creatures and changing the chest-objects so that the current owning team can use them
695
696 ASSERT(mine == AV_NORTH_MINE || mine == AV_SOUTH_MINE);
697 if (teamId == TEAM_ALLIANCE || teamId == TEAM_HORDE)
699
700 if (m_Mine_Owner[mine] == teamId && !initial)
701 return;
702 m_Mine_Owner[mine] = teamId;
703
704 if (!initial)
705 {
706 LOG_DEBUG("bg.battleground", "bg_av depopulating mine {} (0=north, 1=south)", mine);
707 if (mine == AV_SOUTH_MINE)
709 if (BgCreatures[i])
710 DelCreature(i); //TODO just set the respawntime to 999999
712 if (BgCreatures[i])
713 DelCreature(i); //TODO here also
714 }
716
717 LOG_DEBUG("bg.battleground", "bg_av populating mine {} (0=north, 1=south)", mine);
718 uint16 miner;
719 //also neutral team exists.. after a big time, the neutral team tries to conquer the mine
720 if (mine == AV_NORTH_MINE)
721 {
722 if (teamId == TEAM_ALLIANCE)
723 miner = AV_NPC_N_MINE_A_1;
724 else if (teamId == TEAM_HORDE)
725 miner = AV_NPC_N_MINE_H_1;
726 else
727 miner = AV_NPC_N_MINE_N_1;
728 }
729 else
730 {
731 uint16 cinfo;
732 if (teamId == TEAM_ALLIANCE)
733 miner = AV_NPC_S_MINE_A_1;
734 else if (teamId == TEAM_HORDE)
735 miner = AV_NPC_S_MINE_H_1;
736 else
737 miner = AV_NPC_S_MINE_N_1;
738 //vermin
739 LOG_DEBUG("bg.battleground", "spawning vermin");
740 if (teamId == TEAM_ALLIANCE)
741 cinfo = AV_NPC_S_MINE_A_3;
742 else if (teamId == TEAM_HORDE)
743 cinfo = AV_NPC_S_MINE_H_3;
744 else
745 cinfo = AV_NPC_S_MINE_N_S;
747 AddAVCreature(cinfo, i);
748 }
750 AddAVCreature(miner, i);
751 //the next chooses randomly between 2 cretures
753 AddAVCreature(miner + (urand(1, 2)), i);
755
756 if (teamId == TEAM_ALLIANCE || teamId == TEAM_HORDE)
757 {
759 if (Creature* creature = GetBGCreature(AV_CPLACE_HERALD))
760 creature->AI()->Talk(GetMineString(mine, teamId));
761 }
762 else
763 {
764 if (mine == AV_SOUTH_MINE) //i think this gets called all the time
765 {
767 {
768 std::string creatureText = sCreatureTextMgr->GetLocalizedChatString(creature->GetEntry(), creature->getGender(), 0, 0, DEFAULT_LOCALE);
769 YellToAll(creature, creatureText.c_str(), LANG_UNIVERSAL);
770 }
771 }
772 }
773}
@ AV_SOUND_HORDE_GOOD
Definition BattlegroundAV.h:97
@ AV_SOUND_ALLIANCE_GOOD
Definition BattlegroundAV.h:96
@ AV_MINE_RECLAIM_TIMER
Definition BattlegroundAV.h:110
@ AV_NORTH_MINE
Definition BattlegroundAV.h:107
@ AV_SOUTH_MINE
Definition BattlegroundAV.h:108
@ AV_NPC_N_MINE_H_1
Definition BattlegroundAV.h:1241
@ AV_NPC_S_MINE_N_S
Definition BattlegroundAV.h:1249
@ AV_NPC_S_MINE_N_1
Definition BattlegroundAV.h:1245
@ AV_NPC_N_MINE_N_1
Definition BattlegroundAV.h:1233
@ AV_NPC_S_MINE_H_1
Definition BattlegroundAV.h:1254
@ AV_NPC_N_MINE_A_1
Definition BattlegroundAV.h:1237
@ AV_NPC_S_MINE_H_3
Definition BattlegroundAV.h:1256
@ AV_NPC_S_MINE_A_3
Definition BattlegroundAV.h:1252
@ AV_NPC_S_MINE_A_1
Definition BattlegroundAV.h:1250
@ AV_CPLACE_MINE_S_2_MAX
Definition BattlegroundAV.h:809
@ AV_CPLACE_MINE_N_1_MIN
Definition BattlegroundAV.h:796
@ AV_CPLACE_MINE_S_S_MIN
Definition BattlegroundAV.h:811
@ AV_CPLACE_MINE_S_2_MIN
Definition BattlegroundAV.h:808
@ AV_CPLACE_MINE_S_1_MIN
Definition BattlegroundAV.h:805
@ AV_CPLACE_MINE_S_S_MAX
Definition BattlegroundAV.h:812
@ AV_CPLACE_MINE_N_2_MAX
Definition BattlegroundAV.h:800
@ AV_CPLACE_MINE_N_1_MAX
Definition BattlegroundAV.h:797
@ AV_CPLACE_MINE_S_3
Definition BattlegroundAV.h:814
@ AV_CPLACE_MINE_S_1_MAX
Definition BattlegroundAV.h:806
@ AV_CPLACE_MINE_N_3
Definition BattlegroundAV.h:802
@ AV_CPLACE_HERALD
Definition BattlegroundAV.h:817
@ AV_CPLACE_MINE_N_2_MIN
Definition BattlegroundAV.h:799
#define DEFAULT_LOCALE
Definition Common.h:131
#define sCreatureTextMgr
Definition CreatureTextMgr.h:119
#define LOG_DEBUG(filterType__,...)
Definition Log.h:170
uint32 urand(uint32 min, uint32 max)
Definition Random.cpp:44
@ LANG_UNIVERSAL
Definition SharedDefines.h:735
@ TEAM_ALLIANCE
Definition SharedDefines.h:760
@ TEAM_HORDE
Definition SharedDefines.h:761
uint8 GetMineString(uint8 mine, TeamId teamId)
Definition BattlegroundAV.cpp:1727
Creature * AddAVCreature(uint16 cinfoid, uint16 type)
Definition BattlegroundAV.cpp:309
void SendMineWorldStates(uint32 mine)
Definition BattlegroundAV.cpp:1195
bool DelCreature(uint32 type)
Definition Battleground.cpp:1636
void YellToAll(Creature *creature, const char *text, uint32 language)
Definition Battleground.cpp:763
Creature * GetBGCreature(uint32 type)
Definition Battleground.cpp:1544
void PlaySoundToAll(uint32 soundId)
Definition Battleground.cpp:744
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr, Milliseconds delay=0s)
Causes the creature to talk/say the text assigned to their entry in the creature_text database table.
Definition CreatureAI.cpp:52
CreatureAI * AI() const
Definition Creature.h:141

References AddAVCreature(), Creature::AI(), ASSERT, AV_CPLACE_HERALD, AV_CPLACE_MINE_N_1_MAX, AV_CPLACE_MINE_N_1_MIN, AV_CPLACE_MINE_N_2_MAX, AV_CPLACE_MINE_N_2_MIN, AV_CPLACE_MINE_N_3, AV_CPLACE_MINE_S_1_MAX, AV_CPLACE_MINE_S_1_MIN, AV_CPLACE_MINE_S_2_MAX, AV_CPLACE_MINE_S_2_MIN, AV_CPLACE_MINE_S_3, AV_CPLACE_MINE_S_S_MAX, AV_CPLACE_MINE_S_S_MIN, AV_MINE_RECLAIM_TIMER, AV_NORTH_MINE, AV_NPC_N_MINE_A_1, AV_NPC_N_MINE_H_1, AV_NPC_N_MINE_N_1, AV_NPC_S_MINE_A_1, AV_NPC_S_MINE_A_3, AV_NPC_S_MINE_H_1, AV_NPC_S_MINE_H_3, AV_NPC_S_MINE_N_1, AV_NPC_S_MINE_N_S, AV_SOUND_ALLIANCE_GOOD, AV_SOUND_HORDE_GOOD, AV_SOUTH_MINE, Battleground::BgCreatures, DEFAULT_LOCALE, Battleground::DelCreature(), Battleground::GetBGCreature(), GetMineString(), LANG_UNIVERSAL, LOG_DEBUG, m_Mine_Owner, m_Mine_Reclaim_Timer, Battleground::PlaySoundToAll(), sCreatureTextMgr, SendMineWorldStates(), CreatureAI::Talk(), TEAM_ALLIANCE, TEAM_HORDE, urand(), and Battleground::YellToAll().

Referenced by HandleKillUnit(), PostUpdateImpl(), and StartingEventOpenDoors().

◆ DefendNode()

void BattlegroundAV::DefendNode ( BG_AV_Nodes  node,
TeamId  teamId 
)
private
1804{
1805 ASSERT(m_Nodes[node].TotalOwnerId == teamId);
1806 ASSERT(m_Nodes[node].OwnerId != teamId);
1807 ASSERT(m_Nodes[node].State != POINT_CONTROLLED && m_Nodes[node].State != POINT_DESTROYED);
1808 m_Nodes[node].PrevOwnerId = m_Nodes[node].OwnerId;
1809 m_Nodes[node].OwnerId = teamId;
1810 m_Nodes[node].PrevState = m_Nodes[node].State;
1812 m_Nodes[node].Timer = 0;
1813}
@ POINT_CONTROLLED
Definition BattlegroundAV.h:1544

References ASSERT, m_Nodes, BG_AV_NodeInfo::OwnerId, POINT_CONTROLLED, POINT_DESTROYED, BG_AV_NodeInfo::PrevOwnerId, BG_AV_NodeInfo::PrevState, BG_AV_NodeInfo::State, and BG_AV_NodeInfo::Timer.

Referenced by EventPlayerDefendsPoint().

◆ DePopulateNode()

void BattlegroundAV::DePopulateNode ( BG_AV_Nodes  node,
bool  ignoreSpiritGuid = false 
)
private
839{
840 uint32 c_place = AV_CPLACE_DEFENSE_STORM_AID + (4 * node);
841 for (uint8 i = 0; i < 4; i++)
842 {
843 if (BgCreatures[c_place + i])
844 {
845 DelCreature(c_place + i);
846 }
847 }
848
849 //spiritguide
850 if (!ignoreSpiritGuide && !IsTower(node))
851 {
852 DelCreature(node);
853 }
854
855 //remove bonus honor aura trigger creature when node is lost
856 if (node < BG_AV_NODES_MAX)//fail safe
857 DelCreature(node + 302);//nullptr checks are in DelCreature! 0-302 spirit guides
858}
@ AV_CPLACE_DEFENSE_STORM_AID
Definition BattlegroundAV.h:769
bool IsTower(BG_AV_Nodes node)
Definition BattlegroundAV.h:1812

References AV_CPLACE_DEFENSE_STORM_AID, BG_AV_NODES_MAX, Battleground::BgCreatures, Battleground::DelCreature(), and IsTower().

Referenced by EventPlayerAssaultsPoint(), and HandleQuestComplete().

◆ DestroyNode()

void BattlegroundAV::DestroyNode ( BG_AV_Nodes  node)
private

◆ EndBattleground()

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

Reimplemented from Battleground.

510{
511 //calculate bonuskills for both teams:
512 //first towers:
513 uint8 kills[2] = {0, 0}; // 0 = Alliance 1 = Horde
514 uint8 rep[2] = {0, 0}; // 0 = Alliance 1 = Horde
515
517 kills[winnerTeamId] += 4;
518
520 {
521 if (m_Nodes[i].State == POINT_CONTROLLED)
522 {
523 if (m_Nodes[i].OwnerId == TEAM_NEUTRAL)
524 continue;
525 else
526 {
529 }
530 }
531 }
532
534 {
535 if (m_Nodes[i].State == POINT_CONTROLLED)
536 {
537 if (m_Nodes[i].OwnerId == TEAM_NEUTRAL)
538 continue;
539 else
541 }
542 }
543
544 for (uint8 mine = 0; mine < 2; mine++)
545 {
546 if (m_Mine_Owner[mine] == TEAM_NEUTRAL)
547 continue;
548
550 }
551
552 for (TeamId iTeamId = TEAM_ALLIANCE; iTeamId <= TEAM_HORDE; iTeamId = TeamId(iTeamId + 1))
553 {
554 if (m_CaptainAlive[iTeamId])
555 {
556 kills[iTeamId] += BG_AV_KILL_SURVIVING_CAPTAIN;
557 rep[iTeamId] += _reputationSurvivingCaptain;
558 }
559 if (rep[iTeamId] != 0)
560 RewardReputationToTeam(iTeamId == TEAM_ALLIANCE ? 730 : 729, rep[iTeamId], iTeamId);
561 if (kills[iTeamId] != 0)
562 RewardHonorToTeam(GetBonusHonorFromKill(kills[iTeamId]), iTeamId);
563 }
564
565 //TODO add enterevademode for all attacking creatures
566 Battleground::EndBattleground(winnerTeamId);
567}
@ BG_AV_NODES_FROSTWOLF_WTOWER
Definition BattlegroundAV.h:185
@ BG_AV_NODES_DUNBALDAR_SOUTH
Definition BattlegroundAV.h:178
@ BG_AV_NODES_FROSTWOLF_HUT
Definition BattlegroundAV.h:177
#define BG_AV_KILL_SURVIVING_TOWER
Definition BattlegroundAV.h:41
#define BG_AV_KILL_SURVIVING_CAPTAIN
Definition BattlegroundAV.h:43
TeamId
Definition SharedDefines.h:759
static bool IsBGWeekend(BattlegroundTypeId bgTypeId)
Definition BattlegroundMgr.cpp:910
void RewardReputationToTeam(uint32 factionId, uint32 reputation, TeamId teamId)
Definition Battleground.cpp:780
void EndBattleground(PvPTeamId winnerTeamId)
Definition Battleground.cpp:831
uint32 GetBonusHonorFromKill(uint32 kills) const
Definition Battleground.cpp:1003
void RewardHonorToTeam(uint32 honor, TeamId teamId)
Definition Battleground.cpp:773
BattlegroundTypeId GetBgTypeID(bool GetRandom=false) const
Definition Battleground.h:320

References _reputationPerOwnedGraveyard, _reputationPerOwnedMine, _reputationSurvivingCaptain, _reputationSurvivingTower, BG_AV_KILL_SURVIVING_CAPTAIN, BG_AV_KILL_SURVIVING_TOWER, BG_AV_NODES_DUNBALDAR_SOUTH, BG_AV_NODES_FIRSTAID_STATION, BG_AV_NODES_FROSTWOLF_HUT, BG_AV_NODES_FROSTWOLF_WTOWER, Battleground::EndBattleground(), Battleground::GetBgTypeID(), Battleground::GetBonusHonorFromKill(), BattlegroundMgr::IsBGWeekend(), m_CaptainAlive, m_Mine_Owner, m_Nodes, BG_AV_NodeInfo::OwnerId, POINT_CONTROLLED, Battleground::RewardHonorToTeam(), Battleground::RewardReputationToTeam(), TEAM_ALLIANCE, TEAM_HORDE, and TEAM_NEUTRAL.

Referenced by HandleKillUnit(), and UpdateScore().

◆ EventPlayerAssaultsPoint()

void BattlegroundAV::EventPlayerAssaultsPoint ( Player player,
uint32  object 
)
private
1017{
1019
1020 BG_AV_Nodes node = GetNodeThroughObject(object);
1021 TeamId prevOwnerId = m_Nodes[node].OwnerId;
1022 TeamId teamId = player->GetTeamId();
1023 LOG_DEBUG("bg.battleground", "bg_av: player assaults point object {} node {}", object, node);
1024 if (prevOwnerId == teamId || teamId == m_Nodes[node].TotalOwnerId)
1025 return; //surely a gm used this object
1026
1027 if (node == BG_AV_NODES_SNOWFALL_GRAVE) //snowfall is a bit special in capping + it gets eyecandy stuff
1028 {
1029 if (object == BG_AV_OBJECT_FLAG_N_SNOWFALL_GRAVE) //initial capping
1030 {
1031 if (!(prevOwnerId == TEAM_NEUTRAL && m_Nodes[node].TotalOwnerId == TEAM_NEUTRAL))
1032 return;
1033
1034 if (teamId == TEAM_ALLIANCE)
1036 else
1039 }
1040 else if (m_Nodes[node].TotalOwnerId == TEAM_NEUTRAL) //recapping, when no team owns this node realy
1041 {
1042 if (!(m_Nodes[node].State != POINT_CONTROLLED))
1043 return;
1044
1045 if (teamId == TEAM_ALLIANCE)
1046 SpawnBGObject(object - 11, RESPAWN_IMMEDIATELY);
1047 else
1048 SpawnBGObject(object + 11, RESPAWN_IMMEDIATELY);
1049 }
1050 //eyecandy
1051 uint32 spawn, despawn;
1052 if (teamId == TEAM_ALLIANCE)
1053 {
1056 }
1057 else
1058 {
1061 }
1062 for (uint8 i = 0; i < 4; i++)
1063 {
1064 SpawnBGObject(despawn + i, RESPAWN_ONE_DAY);
1066 }
1067 }
1068
1069 // xinef: moved here, assure that no call to m_Nodes is used in IF statement bellow as it is modified
1070 AssaultNode(node, teamId);
1071
1072 //if snowfall gots capped it can be handled like all other graveyards
1073 if (m_Nodes[node].TotalOwnerId != TEAM_NEUTRAL)
1074 {
1075 ASSERT(prevOwnerId != TEAM_NEUTRAL);
1076 if (teamId == TEAM_ALLIANCE)
1077 SpawnBGObject(object - 22, RESPAWN_IMMEDIATELY);
1078 else
1079 SpawnBGObject(object + 22, RESPAWN_IMMEDIATELY);
1080
1081 bool ignoreSpiritGuide = false;
1082 if (IsTower(node))
1083 {
1084 //spawning/despawning of bigflag+aura
1089 }
1090 else
1091 {
1092 //spawning/despawning of aura
1094 SpawnBGObject(static_cast<uint8>(BG_AV_OBJECT_AURA_A_FIRSTAID_STATION) + prevOwnerId + 3 * node, RESPAWN_ONE_DAY); //teeamaura despawn
1095
1096 ignoreSpiritGuide = true;
1097
1098 _reviveEvents.AddEventAtOffset([this, node]()
1099 {
1101
1102 if (!IsTower(node))
1103 DelCreature(node); // Delete spirit healer
1104 }, 500ms);
1105 }
1106
1107 DePopulateNode(node, ignoreSpiritGuide);
1108 }
1109
1110 SpawnBGObject(object, RESPAWN_ONE_DAY); //delete old banner
1111 // xinef: change here is too late, AssaultNode(node, team);
1113
1114 if (Creature* creature = GetBGCreature(AV_CPLACE_HERALD))
1115 creature->AI()->Talk(GetAttackString(node, teamId));
1116
1117 //update the statistic for the assaulting player
1119
1121}
@ BG_AV_NODES_SNOWFALL_GRAVE
Definition BattlegroundAV.h:174
@ BG_AV_OBJECT_AURA_N_FIRSTAID_STATION
Definition BattlegroundAV.h:245
@ BG_AV_OBJECT_FLAG_C_H_SNOWFALL_GRAVE
Definition BattlegroundAV.h:219
@ BG_AV_OBJECT_AURA_A_FIRSTAID_STATION
Definition BattlegroundAV.h:246
@ BG_AV_OBJECT_FLAG_C_A_SNOWFALL_GRAVE
Definition BattlegroundAV.h:207
@ BG_AV_OBJECT_SNOW_EYECANDY_A
Definition BattlegroundAV.h:311
@ BG_AV_OBJECT_TAURA_H_DUNBALDAR_SOUTH
Definition BattlegroundAV.h:285
@ BG_AV_OBJECT_FLAG_N_SNOWFALL_GRAVE
Definition BattlegroundAV.h:240
@ BG_AV_OBJECT_SNOW_EYECANDY_PH
Definition BattlegroundAV.h:314
@ BG_AV_OBJECT_SNOW_EYECANDY_H
Definition BattlegroundAV.h:313
@ BG_AV_OBJECT_TFLAG_A_DUNBALDAR_SOUTH
Definition BattlegroundAV.h:268
@ BG_AV_OBJECT_TAURA_A_DUNBALDAR_SOUTH
Definition BattlegroundAV.h:284
@ BG_AV_OBJECT_TFLAG_H_DUNBALDAR_SOUTH
Definition BattlegroundAV.h:269
@ BG_AV_OBJECT_SNOW_EYECANDY_PA
Definition BattlegroundAV.h:312
@ BG_AV_QUEST_CREDIT_TOWER
Definition BattlegroundAV.h:112
@ BG_AV_QUEST_CREDIT_GRAVEYARD
Definition BattlegroundAV.h:113
@ SCORE_GRAVEYARDS_ASSAULTED
Definition BattlegroundScore.h:44
@ SCORE_TOWERS_ASSAULTED
Definition BattlegroundScore.h:46
@ RESPAWN_IMMEDIATELY
Definition Battleground.h:160
@ STATUS_IN_PROGRESS
Definition Battleground.h:193
BG_AV_Nodes GetNodeThroughObject(uint32 object)
Definition BattlegroundAV.cpp:860
bool UpdatePlayerScore(Player *player, uint32 type, uint32 value, bool doAddHonor=true) override
Definition BattlegroundAV.cpp:611
uint8 GetAttackString(BG_AV_Nodes node, TeamId teamId)
Definition BattlegroundAV.cpp:1529
void DePopulateNode(BG_AV_Nodes node, bool ignoreSpiritGuid=false)
Definition BattlegroundAV.cpp:838
void UpdateNodeWorldState(BG_AV_Nodes node)
Definition BattlegroundAV.cpp:1186
void AssaultNode(BG_AV_Nodes node, TeamId teamId)
Definition BattlegroundAV.cpp:1751
void SpawnBGObject(uint32 type, uint32 respawntime, uint32 forceRespawnDelay=0)
Definition Battleground.cpp:1553
void RelocateDeadPlayers(ObjectGuid queueIndex)
Relocate all players in ReviveQueue to the closest graveyard.
Definition Battleground.cpp:1427
EventProcessor _reviveEvents
Definition Battleground.h:647
BattlegroundStatus GetStatus() const
Definition Battleground.h:323
void AddEventAtOffset(BasicEvent *event, Milliseconds offset)
Definition EventProcessor.h:107
void KilledMonsterCredit(uint32 entry, ObjectGuid guid=ObjectGuid::Empty)
Definition PlayerQuest.cpp:1927
TeamId GetTeamId(bool original=false) const
Definition Player.h:2127

References Battleground::_reviveEvents, EventProcessor::AddEventAtOffset(), AssaultNode(), ASSERT, AV_CPLACE_HERALD, BG_AV_NODES_DUNBALDAR_SOUTH, BG_AV_NODES_SNOWFALL_GRAVE, BG_AV_OBJECT_AURA_A_FIRSTAID_STATION, BG_AV_OBJECT_AURA_N_FIRSTAID_STATION, BG_AV_OBJECT_FLAG_C_A_SNOWFALL_GRAVE, BG_AV_OBJECT_FLAG_C_H_SNOWFALL_GRAVE, BG_AV_OBJECT_FLAG_N_SNOWFALL_GRAVE, BG_AV_OBJECT_SNOW_EYECANDY_A, BG_AV_OBJECT_SNOW_EYECANDY_H, BG_AV_OBJECT_SNOW_EYECANDY_PA, BG_AV_OBJECT_SNOW_EYECANDY_PH, BG_AV_OBJECT_TAURA_A_DUNBALDAR_SOUTH, BG_AV_OBJECT_TAURA_H_DUNBALDAR_SOUTH, BG_AV_OBJECT_TFLAG_A_DUNBALDAR_SOUTH, BG_AV_OBJECT_TFLAG_H_DUNBALDAR_SOUTH, BG_AV_QUEST_CREDIT_GRAVEYARD, BG_AV_QUEST_CREDIT_TOWER, Battleground::BgCreatures, Battleground::DelCreature(), DePopulateNode(), GetAttackString(), Battleground::GetBGCreature(), GetNodeThroughObject(), Battleground::GetStatus(), Player::GetTeamId(), IsTower(), Player::KilledMonsterCredit(), LOG_DEBUG, m_Nodes, BG_AV_NodeInfo::OwnerId, POINT_ASSAULTED, POINT_CONTROLLED, Battleground::RelocateDeadPlayers(), RESPAWN_IMMEDIATELY, RESPAWN_ONE_DAY, SCORE_GRAVEYARDS_ASSAULTED, SCORE_TOWERS_ASSAULTED, Battleground::SpawnBGObject(), BG_AV_NodeInfo::State, STATUS_IN_PROGRESS, TEAM_ALLIANCE, TEAM_HORDE, TEAM_NEUTRAL, UpdateNodeWorldState(), and UpdatePlayerScore().

Referenced by EventPlayerClickedOnFlag(), and EventPlayerDefendsPoint().

◆ EventPlayerClickedOnFlag()

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

Reimplemented from Battleground.

924{
926 return;
927 int32 object = GetObjectType(gameObject->GetGUID());
928 if (object < 0)
929 return;
930 switch (gameObject->GetEntry())
931 {
937 EventPlayerAssaultsPoint(source, object);
938 break;
943 EventPlayerDefendsPoint(source, object);
944 break;
945 default:
946 break;
947 }
948}
@ BG_AV_OBJECTID_BANNER_H
Definition BattlegroundAV.h:122
@ BG_AV_OBJECTID_BANNER_CONT_A
Definition BattlegroundAV.h:123
@ BG_AV_OBJECTID_BANNER_H_B
Definition BattlegroundAV.h:127
@ BG_AV_OBJECTID_BANNER_A_B
Definition BattlegroundAV.h:126
@ BG_AV_OBJECTID_BANNER_SNOWFALL_N
Definition BattlegroundAV.h:130
@ BG_AV_OBJECTID_BANNER_A
Definition BattlegroundAV.h:121
@ BG_AV_OBJECTID_BANNER_CONT_H
Definition BattlegroundAV.h:124
@ BG_AV_OBJECTID_BANNER_CONT_H_B
Definition BattlegroundAV.h:129
@ BG_AV_OBJECTID_BANNER_CONT_A_B
Definition BattlegroundAV.h:128
std::int32_t int32
Definition Define.h:103
void EventPlayerAssaultsPoint(Player *player, uint32 object)
Definition BattlegroundAV.cpp:1016
void EventPlayerDefendsPoint(Player *player, uint32 object)
Definition BattlegroundAV.cpp:950
int32 GetObjectType(ObjectGuid guid)
Definition Battleground.cpp:1834

References BG_AV_OBJECTID_BANNER_A, BG_AV_OBJECTID_BANNER_A_B, BG_AV_OBJECTID_BANNER_CONT_A, BG_AV_OBJECTID_BANNER_CONT_A_B, BG_AV_OBJECTID_BANNER_CONT_H, BG_AV_OBJECTID_BANNER_CONT_H_B, BG_AV_OBJECTID_BANNER_H, BG_AV_OBJECTID_BANNER_H_B, BG_AV_OBJECTID_BANNER_SNOWFALL_N, EventPlayerAssaultsPoint(), EventPlayerDefendsPoint(), Object::GetEntry(), Object::GetGUID(), Battleground::GetObjectType(), Battleground::GetStatus(), and STATUS_IN_PROGRESS.

◆ EventPlayerDefendsPoint()

void BattlegroundAV::EventPlayerDefendsPoint ( Player player,
uint32  object 
)
private
951{
953 BG_AV_Nodes node = GetNodeThroughObject(object);
954
955 TeamId ownerId = m_Nodes[node].OwnerId; //maybe should name it prevowner
956 TeamId teamId = player->GetTeamId();
957
958 if (ownerId == player->GetTeamId() || m_Nodes[node].State != POINT_ASSAULTED)
959 return;
960 if (m_Nodes[node].TotalOwnerId == TEAM_NEUTRAL)
961 {
962 //until snowfall doesn't belong to anyone it is better handled in assault-code
963 ASSERT(node == BG_AV_NODES_SNOWFALL_GRAVE); //currently the only neutral grave
964 EventPlayerAssaultsPoint(player, object);
965 return;
966 }
967 LOG_DEBUG("bg.battleground", "player defends point object: {} node: {}", object, node);
968 if (m_Nodes[node].PrevOwnerId != teamId)
969 {
970 LOG_ERROR("bg.battleground", "BG_AV: player defends point which doesn't belong to his team {}", node);
971 return;
972 }
973
974 //spawn new go :)
975 if (m_Nodes[node].OwnerId == TEAM_ALLIANCE)
976 SpawnBGObject(object + 22, RESPAWN_IMMEDIATELY); //spawn horde banner
977 else
978 SpawnBGObject(object - 22, RESPAWN_IMMEDIATELY); //spawn alliance banner
979
980 if (!IsTower(node))
981 {
984 }
985 // despawn old go
987
988 DefendNode(node, teamId);
989 PopulateNode(node);
991
992 if (IsTower(node))
993 {
994 //spawn big flag+aura on top of tower
999 }
1000 else if (node == BG_AV_NODES_SNOWFALL_GRAVE) //snowfall eyecandy
1001 {
1002 for (uint8 i = 0; i < 4; i++)
1003 {
1006 }
1007 }
1008
1009 if (Creature* creature = GetBGCreature(AV_CPLACE_HERALD))
1010 creature->AI()->Talk(GetDefendString(node, teamId));
1011
1012 //update the statistic for the defending player
1014}
@ SCORE_TOWERS_DEFENDED
Definition BattlegroundScore.h:47
@ SCORE_GRAVEYARDS_DEFENDED
Definition BattlegroundScore.h:45
#define LOG_ERROR(filterType__,...)
Definition Log.h:158
void PopulateNode(BG_AV_Nodes node)
Definition BattlegroundAV.cpp:784
void DefendNode(BG_AV_Nodes node, TeamId teamId)
Definition BattlegroundAV.cpp:1803
uint8 GetDefendString(BG_AV_Nodes node, TeamId teamId)
Definition BattlegroundAV.cpp:1628

References ASSERT, AV_CPLACE_HERALD, BG_AV_NODES_DUNBALDAR_SOUTH, BG_AV_NODES_SNOWFALL_GRAVE, BG_AV_OBJECT_AURA_A_FIRSTAID_STATION, BG_AV_OBJECT_AURA_N_FIRSTAID_STATION, BG_AV_OBJECT_SNOW_EYECANDY_A, BG_AV_OBJECT_SNOW_EYECANDY_H, BG_AV_OBJECT_SNOW_EYECANDY_PA, BG_AV_OBJECT_SNOW_EYECANDY_PH, BG_AV_OBJECT_TAURA_A_DUNBALDAR_SOUTH, BG_AV_OBJECT_TAURA_H_DUNBALDAR_SOUTH, BG_AV_OBJECT_TFLAG_A_DUNBALDAR_SOUTH, BG_AV_OBJECT_TFLAG_H_DUNBALDAR_SOUTH, DefendNode(), EventPlayerAssaultsPoint(), Battleground::GetBGCreature(), GetDefendString(), GetNodeThroughObject(), Battleground::GetStatus(), Player::GetTeamId(), IsTower(), LOG_DEBUG, LOG_ERROR, m_Nodes, BG_AV_NodeInfo::OwnerId, POINT_ASSAULTED, PopulateNode(), RESPAWN_IMMEDIATELY, RESPAWN_ONE_DAY, SCORE_GRAVEYARDS_DEFENDED, SCORE_TOWERS_DEFENDED, Battleground::SpawnBGObject(), BG_AV_NodeInfo::State, STATUS_IN_PROGRESS, TEAM_ALLIANCE, TEAM_HORDE, TEAM_NEUTRAL, UpdateNodeWorldState(), and UpdatePlayerScore().

Referenced by EventPlayerClickedOnFlag().

◆ EventPlayerDestroyedPoint()

void BattlegroundAV::EventPlayerDestroyedPoint ( BG_AV_Nodes  node)
private
638{
639 uint32 object = GetObjectThroughNode(node);
640 LOG_DEBUG("bg.battleground", "bg_av: player destroyed point node {} object {}", node, object);
641
642 //despawn banner
644 DestroyNode(node);
646
647 TeamId ownerId = m_Nodes[node].OwnerId;
648 if (IsTower(node))
649 {
651 //despawn marshal
654 else
655 LOG_ERROR("bg.battleground", "BG_AV: playerdestroyedpoint: marshal {} doesn't exist", AV_CPLACE_A_MARSHAL_SOUTH + tmp);
656 //spawn destroyed aura
657 for (uint8 i = 0; i <= 9; i++)
659
661 RewardReputationToTeam(ownerId == TEAM_ALLIANCE ? 730 : 729, _reputationTower, ownerId);
663
664 SpawnBGObject(static_cast<uint8>(BG_AV_OBJECT_TAURA_A_DUNBALDAR_SOUTH) + ownerId + (2 * tmp), RESPAWN_ONE_DAY);
665 SpawnBGObject(static_cast<uint8>(BG_AV_OBJECT_TFLAG_A_DUNBALDAR_SOUTH) + ownerId + (2 * tmp), RESPAWN_ONE_DAY);
666 }
667 else
668 {
669 if (ownerId == TEAM_ALLIANCE)
671 else
675 PopulateNode(node);
676 if (node == BG_AV_NODES_SNOWFALL_GRAVE) //snowfall eyecandy
677 {
678 for (uint8 i = 0; i < 4; i++)
679 {
682 }
683 }
684 }
685
686 if (Creature* creature = GetBGCreature(AV_CPLACE_HERALD))
687 creature->AI()->Talk(GetDefendString(node, ownerId));
688}
#define BG_AV_RES_TOWER
Definition BattlegroundAV.h:37
@ BG_AV_OBJECT_BURN_DUNBALDAR_SOUTH
Definition BattlegroundAV.h:301
@ AV_CPLACE_A_MARSHAL_SOUTH
Definition BattlegroundAV.h:786
#define BG_AV_KILL_TOWER
Definition BattlegroundAV.h:36
uint32 GetObjectThroughNode(BG_AV_Nodes node)
Definition BattlegroundAV.cpp:882
void UpdateScore(TeamId teamId, int16 points)
Definition BattlegroundAV.cpp:276
void DestroyNode(BG_AV_Nodes node)
Definition BattlegroundAV.cpp:1781

References _reputationTower, AV_CPLACE_A_MARSHAL_SOUTH, AV_CPLACE_HERALD, BG_AV_KILL_TOWER, BG_AV_NODES_DUNBALDAR_SOUTH, BG_AV_NODES_SNOWFALL_GRAVE, BG_AV_OBJECT_AURA_A_FIRSTAID_STATION, BG_AV_OBJECT_AURA_N_FIRSTAID_STATION, BG_AV_OBJECT_BURN_DUNBALDAR_SOUTH, BG_AV_OBJECT_SNOW_EYECANDY_A, BG_AV_OBJECT_SNOW_EYECANDY_H, BG_AV_OBJECT_SNOW_EYECANDY_PA, BG_AV_OBJECT_SNOW_EYECANDY_PH, BG_AV_OBJECT_TAURA_A_DUNBALDAR_SOUTH, BG_AV_OBJECT_TFLAG_A_DUNBALDAR_SOUTH, BG_AV_RES_TOWER, Battleground::BgCreatures, Battleground::DelCreature(), DestroyNode(), Battleground::GetBGCreature(), Battleground::GetBonusHonorFromKill(), GetDefendString(), GetObjectThroughNode(), IsTower(), LOG_DEBUG, LOG_ERROR, m_Nodes, BG_AV_NodeInfo::OwnerId, PopulateNode(), RESPAWN_IMMEDIATELY, RESPAWN_ONE_DAY, Battleground::RewardHonorToTeam(), Battleground::RewardReputationToTeam(), Battleground::SpawnBGObject(), TEAM_ALLIANCE, TEAM_HORDE, UpdateNodeWorldState(), and UpdateScore().

Referenced by PostUpdateImpl().

◆ FillInitialWorldStates()

void BattlegroundAV::FillInitialWorldStates ( WorldPackets::WorldState::InitWorldStates packet)
overrideprivatevirtual

Reimplemented from Battleground.

1124{
1125 bool stateok;
1126 packet.Worldstates.reserve(7*2*2 + 8*2*2 + 5);
1127 //graveyards
1129 {
1130 for (uint8 j = 1; j <= 3; j += 2)
1131 {
1132 //j=1=assaulted j=3=controled
1133 stateok = (m_Nodes[i].State == j);
1134 packet.Worldstates.emplace_back(BG_AV_NodeWorldStates[i][GetWorldStateType(j, TEAM_ALLIANCE)], (m_Nodes[i].OwnerId == TEAM_ALLIANCE && stateok) ? 1 : 0);
1135 packet.Worldstates.emplace_back(BG_AV_NodeWorldStates[i][GetWorldStateType(j, TEAM_HORDE)], (m_Nodes[i].OwnerId == TEAM_HORDE && stateok) ? 1 : 0);
1136 }
1137 }
1138
1139 //towers
1141 for (uint8 j = 1; j <= 3; j += 2)
1142 {
1143 //j=1=assaulted j=3=controled //i dont have j=2=destroyed cause destroyed is the same like enemy-team controll
1144 stateok = (m_Nodes[i].State == j || (m_Nodes[i].State == POINT_DESTROYED && j == 3));
1145 packet.Worldstates.emplace_back(BG_AV_NodeWorldStates[i][GetWorldStateType(j, TEAM_ALLIANCE)], (m_Nodes[i].OwnerId == TEAM_ALLIANCE && stateok) ? 1 : 0);
1146 packet.Worldstates.emplace_back(BG_AV_NodeWorldStates[i][GetWorldStateType(j, TEAM_HORDE)], (m_Nodes[i].OwnerId == TEAM_HORDE && stateok) ? 1 : 0);
1147 }
1148 if (m_Nodes[BG_AV_NODES_SNOWFALL_GRAVE].OwnerId == TEAM_NEUTRAL) //cause neutral teams aren't handled generic
1149 {
1151 }
1152
1155
1158
1161}
const uint32 BG_AV_NodeWorldStates[16][4]
Definition BattlegroundAV.h:1555
#define BG_AV_SCORE_INITIAL_POINTS
Definition BattlegroundAV.h:28
@ WORLD_STATE_BATTLEGROUND_AV_SHOW_HORDE_SCORE
Definition WorldStateDefines.h:165
@ WORLD_STATE_BATTLEGROUND_AV_ALLIANCE_SCORE
Definition WorldStateDefines.h:163
@ WORLD_STATE_BATTLEGROUND_AV_HORDE_SCORE
Definition WorldStateDefines.h:164
@ WORLD_STATE_BATTLEGROUND_AV_SNOWFALL_N
Definition WorldStateDefines.h:162
@ WORLD_STATE_BATTLEGROUND_AV_SHOW_ALLIANCE_SCORE
Definition WorldStateDefines.h:166
uint8 GetWorldStateType(uint8 state, TeamId teamId)
Definition BattlegroundAV.cpp:1163
std::vector< WorldStateInfo > Worldstates
Definition WorldStatePackets.h:46

References AV_NORTH_MINE, AV_SOUTH_MINE, BG_AV_NODES_DUNBALDAR_SOUTH, BG_AV_NODES_FIRSTAID_STATION, BG_AV_NODES_FROSTWOLF_HUT, BG_AV_NODES_MAX, BG_AV_NODES_SNOWFALL_GRAVE, BG_AV_NodeWorldStates, BG_AV_SCORE_INITIAL_POINTS, Battleground::GetStatus(), GetWorldStateType(), m_Nodes, m_Team_Scores, BG_AV_NodeInfo::OwnerId, POINT_DESTROYED, SendMineWorldStates(), BG_AV_NodeInfo::State, STATUS_IN_PROGRESS, TEAM_ALLIANCE, TEAM_HORDE, TEAM_NEUTRAL, WORLD_STATE_BATTLEGROUND_AV_ALLIANCE_SCORE, WORLD_STATE_BATTLEGROUND_AV_HORDE_SCORE, WORLD_STATE_BATTLEGROUND_AV_SHOW_ALLIANCE_SCORE, WORLD_STATE_BATTLEGROUND_AV_SHOW_HORDE_SCORE, WORLD_STATE_BATTLEGROUND_AV_SNOWFALL_N, and WorldPackets::WorldState::InitWorldStates::Worldstates.

◆ GetAttackString()

uint8 BattlegroundAV::GetAttackString ( BG_AV_Nodes  node,
TeamId  teamId 
)
private
1530{
1531 uint8 strId = 0;
1532 switch (node)
1533 {
1535 if (teamId == TEAM_ALLIANCE)
1537 else
1539 break;
1541 if (teamId == TEAM_ALLIANCE)
1543 else
1545 break;
1547 if (teamId == TEAM_ALLIANCE)
1549 else
1551 break;
1553 if (teamId == TEAM_ALLIANCE)
1555 else
1557 break;
1559 if (teamId == TEAM_ALLIANCE)
1561 else
1563 break;
1565 if (teamId == TEAM_ALLIANCE)
1567 else
1569 break;
1571 if (teamId == TEAM_ALLIANCE)
1573 else
1575 break;
1577 if (teamId == TEAM_ALLIANCE)
1579 else
1581 break;
1584 break;
1586 if (teamId == TEAM_ALLIANCE)
1588 else
1590 break;
1592 if (teamId == TEAM_ALLIANCE)
1594 else
1596 break;
1598 if (teamId == TEAM_ALLIANCE)
1600 else
1602 break;
1604 if (teamId == TEAM_ALLIANCE)
1606 else
1608 break;
1610 if (teamId == TEAM_ALLIANCE)
1612 else
1614 break;
1616 if (teamId == TEAM_ALLIANCE)
1618 else
1620 break;
1621 default:
1622 break;
1623 }
1624
1625 return strId;
1626}
@ BG_AV_NODES_ICEWING_BUNKER
Definition BattlegroundAV.h:180
@ BG_AV_NODES_TOWER_POINT
Definition BattlegroundAV.h:183
@ BG_AV_NODES_FROSTWOLF_GRAVE
Definition BattlegroundAV.h:176
@ BG_AV_NODES_STORMPIKE_GRAVE
Definition BattlegroundAV.h:172
@ BG_AV_NODES_STONEHEART_GRAVE
Definition BattlegroundAV.h:173
@ BG_AV_NODES_ICEBLOOD_TOWER
Definition BattlegroundAV.h:182
@ BG_AV_NODES_DUNBALDAR_NORTH
Definition BattlegroundAV.h:179
@ BG_AV_NODES_STONEHEART_BUNKER
Definition BattlegroundAV.h:181
@ BG_AV_NODES_FROSTWOLF_ETOWER
Definition BattlegroundAV.h:184
@ BG_AV_NODES_ICEBLOOD_GRAVE
Definition BattlegroundAV.h:175
@ AV_TEXT_H_HERALD_EAST_FROSTWOLF_TOWER_ATTACK
Definition BattlegroundAV.h:1657
@ AV_TEXT_A_HERALD_ICEBLOOD_GRAVEYARD_ATTACK
Definition BattlegroundAV.h:1684
@ AV_TEXT_A_HERALD_TOWER_POINT_ATTACK
Definition BattlegroundAV.h:1663
@ AV_TEXT_H_HERALD_ICEBLOOD_GRAVEYARD_ATTACK
Definition BattlegroundAV.h:1682
@ AV_TEXT_A_HERALD_FROSTWOLF_GRAVEYARD_ATTACK
Definition BattlegroundAV.h:1634
@ AV_TEXT_H_HERALD_DUN_BALDAR_SOUTH_ATTACK
Definition BattlegroundAV.h:1637
@ AV_TEXT_H_HERALD_TOWER_POINT_ATTACK
Definition BattlegroundAV.h:1661
@ AV_TEXT_H_HERALD_WEST_FROSTWOLF_TOWER_ATTACK
Definition BattlegroundAV.h:1653
@ AV_TEXT_A_HERALD_WEST_FROSTWOLF_TOWER_ATTACK
Definition BattlegroundAV.h:1655
@ AV_TEXT_A_HERALD_ICEWING_BUNKER_ATTACK
Definition BattlegroundAV.h:1647
@ AV_TEXT_H_HERALD_STONEHEARTH_GRAVEYARD_ATTACK
Definition BattlegroundAV.h:1678
@ AV_TEXT_A_HERALD_FROSTWOLF_RELIEF_HUT_ATTACK
Definition BattlegroundAV.h:1676
@ AV_TEXT_A_HERALD_EAST_FROSTWOLF_TOWER_ATTACK
Definition BattlegroundAV.h:1659
@ AV_TEXT_H_HERALD_FROSTWOLF_RELIEF_HUT_ATTACK
Definition BattlegroundAV.h:1674
@ AV_TEXT_A_HERALD_DUN_BALDAR_SOUTH_ATTACK
Definition BattlegroundAV.h:1639
@ AV_TEXT_A_HERALD_STONEHEARTH_GRAVEYARD_ATTACK
Definition BattlegroundAV.h:1680
@ AV_TEXT_A_HERALD_DUN_BALDAR_NORTH_ATTACK
Definition BattlegroundAV.h:1643
@ AV_TEXT_A_HERALD_ICEBLOOD_TOWER_ATTACK
Definition BattlegroundAV.h:1667
@ AV_TEXT_H_HERALD_STORMPIKE_AID_STATION_ATTACK
Definition BattlegroundAV.h:1670
@ AV_TEXT_H_HERALD_DUN_BALDAR_NORTH_ATTACK
Definition BattlegroundAV.h:1641
@ AV_TEXT_A_HERALD_STORMPIKE_GRAVEYARD_ATTACK
Definition BattlegroundAV.h:1626
@ AV_TEXT_A_HERALD_STORMPIKE_AID_STATION_ATTACK
Definition BattlegroundAV.h:1672
@ AV_TEXT_A_HERALD_SNOWFALL_GRAVEYARD_ATTACK
Definition BattlegroundAV.h:1630
@ AV_TEXT_H_HERALD_FROSTWOLF_GRAVEYARD_ATTACK
Definition BattlegroundAV.h:1636
@ AV_TEXT_A_HERALD_STONEHEARTH_BUNKER_ATTACK
Definition BattlegroundAV.h:1651
@ AV_TEXT_H_HERALD_SNOWFALL_GRAVEYARD_ATTACK
Definition BattlegroundAV.h:1632
@ AV_TEXT_H_HERALD_STORMPIKE_GRAVEYARD_ATTACK
Definition BattlegroundAV.h:1628
@ AV_TEXT_H_HERALD_STONEHEARTH_BUNKER_ATTACK
Definition BattlegroundAV.h:1649
@ AV_TEXT_H_HERALD_ICEWING_BUNKER_ATTACK
Definition BattlegroundAV.h:1645

References AV_TEXT_A_HERALD_DUN_BALDAR_NORTH_ATTACK, AV_TEXT_A_HERALD_DUN_BALDAR_SOUTH_ATTACK, AV_TEXT_A_HERALD_EAST_FROSTWOLF_TOWER_ATTACK, AV_TEXT_A_HERALD_FROSTWOLF_GRAVEYARD_ATTACK, AV_TEXT_A_HERALD_FROSTWOLF_RELIEF_HUT_ATTACK, AV_TEXT_A_HERALD_ICEBLOOD_GRAVEYARD_ATTACK, AV_TEXT_A_HERALD_ICEBLOOD_TOWER_ATTACK, AV_TEXT_A_HERALD_ICEWING_BUNKER_ATTACK, AV_TEXT_A_HERALD_SNOWFALL_GRAVEYARD_ATTACK, AV_TEXT_A_HERALD_STONEHEARTH_BUNKER_ATTACK, AV_TEXT_A_HERALD_STONEHEARTH_GRAVEYARD_ATTACK, AV_TEXT_A_HERALD_STORMPIKE_AID_STATION_ATTACK, AV_TEXT_A_HERALD_STORMPIKE_GRAVEYARD_ATTACK, AV_TEXT_A_HERALD_TOWER_POINT_ATTACK, AV_TEXT_A_HERALD_WEST_FROSTWOLF_TOWER_ATTACK, AV_TEXT_H_HERALD_DUN_BALDAR_NORTH_ATTACK, AV_TEXT_H_HERALD_DUN_BALDAR_SOUTH_ATTACK, AV_TEXT_H_HERALD_EAST_FROSTWOLF_TOWER_ATTACK, AV_TEXT_H_HERALD_FROSTWOLF_GRAVEYARD_ATTACK, AV_TEXT_H_HERALD_FROSTWOLF_RELIEF_HUT_ATTACK, AV_TEXT_H_HERALD_ICEBLOOD_GRAVEYARD_ATTACK, AV_TEXT_H_HERALD_ICEWING_BUNKER_ATTACK, AV_TEXT_H_HERALD_SNOWFALL_GRAVEYARD_ATTACK, AV_TEXT_H_HERALD_STONEHEARTH_BUNKER_ATTACK, AV_TEXT_H_HERALD_STONEHEARTH_GRAVEYARD_ATTACK, AV_TEXT_H_HERALD_STORMPIKE_AID_STATION_ATTACK, AV_TEXT_H_HERALD_STORMPIKE_GRAVEYARD_ATTACK, AV_TEXT_H_HERALD_TOWER_POINT_ATTACK, AV_TEXT_H_HERALD_WEST_FROSTWOLF_TOWER_ATTACK, BG_AV_NODES_DUNBALDAR_NORTH, BG_AV_NODES_DUNBALDAR_SOUTH, BG_AV_NODES_FIRSTAID_STATION, BG_AV_NODES_FROSTWOLF_ETOWER, BG_AV_NODES_FROSTWOLF_GRAVE, BG_AV_NODES_FROSTWOLF_HUT, BG_AV_NODES_FROSTWOLF_WTOWER, BG_AV_NODES_ICEBLOOD_GRAVE, BG_AV_NODES_ICEBLOOD_TOWER, BG_AV_NODES_ICEWING_BUNKER, BG_AV_NODES_SNOWFALL_GRAVE, BG_AV_NODES_STONEHEART_BUNKER, BG_AV_NODES_STONEHEART_GRAVE, BG_AV_NODES_STORMPIKE_GRAVE, BG_AV_NODES_TOWER_POINT, and TEAM_ALLIANCE.

Referenced by EventPlayerAssaultsPoint().

◆ GetClosestGraveyard()

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

Reimplemented from Battleground.

1213{
1214 GraveyardStruct const* entry = nullptr;
1215 float dist = 0;
1216 float minDist = 0;
1217 float x, y;
1218
1219 player->GetPosition(x, y);
1220
1221 GraveyardStruct const* pGraveyard = sGraveyard->GetGraveyard(BG_AV_GraveyardIds[player->GetTeamId() + 7]);
1222 minDist = (pGraveyard->x - x) * (pGraveyard->x - x) + (pGraveyard->y - y) * (pGraveyard->y - y);
1223
1225 if (m_Nodes[i].OwnerId == player->GetTeamId() && m_Nodes[i].State == POINT_CONTROLLED)
1226 {
1227 entry = sGraveyard->GetGraveyard(BG_AV_GraveyardIds[i]);
1228 if (entry)
1229 {
1230 dist = (entry->x - x) * (entry->x - x) + (entry->y - y) * (entry->y - y);
1231 if (dist < minDist)
1232 {
1233 minDist = dist;
1234 pGraveyard = entry;
1235 }
1236 }
1237 }
1238 return pGraveyard;
1239}
const uint32 BG_AV_GraveyardIds[9]
Definition BattlegroundAV.h:1518
#define sGraveyard
Definition GameGraveyard.h:74
Definition GameGraveyard.h:27
float x
Definition GameGraveyard.h:30
float y
Definition GameGraveyard.h:31
void GetPosition(float &x, float &y) const
Definition Position.h:126

References BG_AV_GraveyardIds, BG_AV_NODES_FIRSTAID_STATION, BG_AV_NODES_FROSTWOLF_HUT, Position::GetPosition(), Player::GetTeamId(), m_Nodes, POINT_CONTROLLED, sGraveyard, BG_AV_NodeInfo::State, GraveyardStruct::x, and GraveyardStruct::y.

◆ GetDefendString()

uint8 BattlegroundAV::GetDefendString ( BG_AV_Nodes  node,
TeamId  teamId 
)
private
1629{
1630 uint8 strId = 0;
1631 switch (node)
1632 {
1634 if (teamId == TEAM_ALLIANCE)
1636 else
1638 break;
1640 if (teamId == TEAM_ALLIANCE)
1642 else
1644 break;
1646 if (teamId == TEAM_ALLIANCE)
1648 else
1650 break;
1652 if (teamId == TEAM_ALLIANCE)
1654 else
1656 break;
1658 if (teamId == TEAM_ALLIANCE)
1660 else
1662 break;
1664 if (teamId == TEAM_ALLIANCE)
1666 else
1668 break;
1670 if (teamId == TEAM_ALLIANCE)
1672 else
1674 break;
1676 if (teamId == TEAM_ALLIANCE)
1678 else
1680 break;
1683 break;
1685 if (teamId == TEAM_ALLIANCE)
1687 else
1689 break;
1691 if (teamId == TEAM_ALLIANCE)
1693 else
1695 break;
1697 if (teamId == TEAM_ALLIANCE)
1699 else
1701 break;
1703 if (teamId == TEAM_ALLIANCE)
1705 else
1707 break;
1709 if (teamId == TEAM_ALLIANCE)
1711 else
1713 break;
1715 if (teamId == TEAM_ALLIANCE)
1717 else
1719 break;
1720 default:
1721 break;
1722 }
1723
1724 return strId;
1725}
@ AV_TEXT_H_HERALD_TOWER_POINT_TAKEN
Definition BattlegroundAV.h:1662
@ AV_TEXT_A_HERALD_WEST_FROSTWOLF_TOWER_TAKEN
Definition BattlegroundAV.h:1656
@ AV_TEXT_A_HERALD_ICEBLOOD_GRAVEYARD_TAKEN
Definition BattlegroundAV.h:1683
@ AV_TEXT_H_HERALD_STORMPIKE_GRAVEYARD_TAKEN
Definition BattlegroundAV.h:1627
@ AV_TEXT_H_HERALD_SNOWFALL_GRAVEYARD_TAKEN
Definition BattlegroundAV.h:1631
@ AV_TEXT_H_HERALD_ICEWING_BUNKER_TAKEN
Definition BattlegroundAV.h:1646
@ AV_TEXT_H_HERALD_STONEHEARTH_GRAVEYARD_TAKEN
Definition BattlegroundAV.h:1677
@ AV_TEXT_H_HERALD_DUN_BALDAR_NORTH_TAKEN
Definition BattlegroundAV.h:1642
@ AV_TEXT_A_HERALD_ICEBLOOD_TOWER_TAKEN
Definition BattlegroundAV.h:1668
@ AV_TEXT_H_HERALD_STONEHEARTH_BUNKER_TAKEN
Definition BattlegroundAV.h:1650
@ AV_TEXT_A_HERALD_TOWER_POINT_TAKEN
Definition BattlegroundAV.h:1664
@ AV_TEXT_H_HERALD_EAST_FROSTWOLF_TOWER_TAKEN
Definition BattlegroundAV.h:1658
@ AV_TEXT_H_HERALD_STORMPIKE_AID_STATION_TAKEN
Definition BattlegroundAV.h:1669
@ AV_TEXT_H_HERALD_FROSTWOLF_GRAVEYARD_TAKEN
Definition BattlegroundAV.h:1635
@ AV_TEXT_A_HERALD_STONEHEARTH_GRAVEYARD_TAKEN
Definition BattlegroundAV.h:1679
@ AV_TEXT_A_HERALD_SNOWFALL_GRAVEYARD_TAKEN
Definition BattlegroundAV.h:1629
@ AV_TEXT_A_HERALD_ICEWING_BUNKER_TAKEN
Definition BattlegroundAV.h:1648
@ AV_TEXT_A_HERALD_DUN_BALDAR_SOUTH_TAKEN
Definition BattlegroundAV.h:1640
@ AV_TEXT_H_HERALD_ICEBLOOD_GRAVEYARD_TAKEN
Definition BattlegroundAV.h:1681
@ AV_TEXT_A_HERALD_FROSTWOLF_GRAVEYARD_TAKEN
Definition BattlegroundAV.h:1633
@ AV_TEXT_H_HERALD_FROSTWOLF_RELIEF_HUT_TAKEN
Definition BattlegroundAV.h:1673
@ AV_TEXT_A_HERALD_DUN_BALDAR_NORTH_TAKEN
Definition BattlegroundAV.h:1644
@ AV_TEXT_A_HERALD_STORMPIKE_GRAVEYARD_TAKEN
Definition BattlegroundAV.h:1625
@ AV_TEXT_A_HERALD_EAST_FROSTWOLF_TOWER_TAKEN
Definition BattlegroundAV.h:1660
@ AV_TEXT_H_HERALD_WEST_FROSTWOLF_TOWER_TAKEN
Definition BattlegroundAV.h:1654
@ AV_TEXT_A_HERALD_FROSTWOLF_RELIEF_HUT_TAKEN
Definition BattlegroundAV.h:1675
@ AV_TEXT_A_HERALD_STONEHEARTH_BUNKER_TAKEN
Definition BattlegroundAV.h:1652
@ AV_TEXT_H_HERALD_DUN_BALDAR_SOUTH_TAKEN
Definition BattlegroundAV.h:1638
@ AV_TEXT_A_HERALD_STORMPIKE_AID_STATION_TAKEN
Definition BattlegroundAV.h:1671

References AV_TEXT_A_HERALD_DUN_BALDAR_NORTH_TAKEN, AV_TEXT_A_HERALD_DUN_BALDAR_SOUTH_TAKEN, AV_TEXT_A_HERALD_EAST_FROSTWOLF_TOWER_TAKEN, AV_TEXT_A_HERALD_FROSTWOLF_GRAVEYARD_TAKEN, AV_TEXT_A_HERALD_FROSTWOLF_RELIEF_HUT_TAKEN, AV_TEXT_A_HERALD_ICEBLOOD_GRAVEYARD_TAKEN, AV_TEXT_A_HERALD_ICEBLOOD_TOWER_TAKEN, AV_TEXT_A_HERALD_ICEWING_BUNKER_TAKEN, AV_TEXT_A_HERALD_SNOWFALL_GRAVEYARD_TAKEN, AV_TEXT_A_HERALD_STONEHEARTH_BUNKER_TAKEN, AV_TEXT_A_HERALD_STONEHEARTH_GRAVEYARD_TAKEN, AV_TEXT_A_HERALD_STORMPIKE_AID_STATION_TAKEN, AV_TEXT_A_HERALD_STORMPIKE_GRAVEYARD_TAKEN, AV_TEXT_A_HERALD_TOWER_POINT_TAKEN, AV_TEXT_A_HERALD_WEST_FROSTWOLF_TOWER_TAKEN, AV_TEXT_H_HERALD_DUN_BALDAR_NORTH_TAKEN, AV_TEXT_H_HERALD_DUN_BALDAR_SOUTH_TAKEN, AV_TEXT_H_HERALD_EAST_FROSTWOLF_TOWER_TAKEN, AV_TEXT_H_HERALD_FROSTWOLF_GRAVEYARD_TAKEN, AV_TEXT_H_HERALD_FROSTWOLF_RELIEF_HUT_TAKEN, AV_TEXT_H_HERALD_ICEBLOOD_GRAVEYARD_TAKEN, AV_TEXT_H_HERALD_ICEWING_BUNKER_TAKEN, AV_TEXT_H_HERALD_SNOWFALL_GRAVEYARD_TAKEN, AV_TEXT_H_HERALD_STONEHEARTH_BUNKER_TAKEN, AV_TEXT_H_HERALD_STONEHEARTH_GRAVEYARD_TAKEN, AV_TEXT_H_HERALD_STORMPIKE_AID_STATION_TAKEN, AV_TEXT_H_HERALD_STORMPIKE_GRAVEYARD_TAKEN, AV_TEXT_H_HERALD_TOWER_POINT_TAKEN, AV_TEXT_H_HERALD_WEST_FROSTWOLF_TOWER_TAKEN, BG_AV_NODES_DUNBALDAR_NORTH, BG_AV_NODES_DUNBALDAR_SOUTH, BG_AV_NODES_FIRSTAID_STATION, BG_AV_NODES_FROSTWOLF_ETOWER, BG_AV_NODES_FROSTWOLF_GRAVE, BG_AV_NODES_FROSTWOLF_HUT, BG_AV_NODES_FROSTWOLF_WTOWER, BG_AV_NODES_ICEBLOOD_GRAVE, BG_AV_NODES_ICEBLOOD_TOWER, BG_AV_NODES_ICEWING_BUNKER, BG_AV_NODES_SNOWFALL_GRAVE, BG_AV_NODES_STONEHEART_BUNKER, BG_AV_NODES_STONEHEART_GRAVE, BG_AV_NODES_STORMPIKE_GRAVE, BG_AV_NODES_TOWER_POINT, and TEAM_ALLIANCE.

Referenced by EventPlayerDefendsPoint(), and EventPlayerDestroyedPoint().

◆ GetMineString()

uint8 BattlegroundAV::GetMineString ( uint8  mine,
TeamId  teamId 
)
private
1728{
1729 uint8 strId = 0;
1730 switch (mineId)
1731 {
1732 case AV_NORTH_MINE:
1733 if (teamId == TEAM_ALLIANCE)
1735 else
1737 break;
1738 case AV_SOUTH_MINE:
1739 if (teamId == TEAM_ALLIANCE)
1741 else
1743 break;
1744 default:
1745 break;
1746 }
1747
1748 return strId;
1749}
@ AV_TEXT_H_HERALD_COLDTOOTH_MINE_TAKEN
Definition BattlegroundAV.h:1687
@ AV_TEXT_H_HERALD_IRONDEEP_MINE_TAKEN
Definition BattlegroundAV.h:1688
@ AV_TEXT_A_HERALD_COLDTOOTH_MINE_TAKEN
Definition BattlegroundAV.h:1685
@ AV_TEXT_A_HERALD_IRONDEEP_MINE_TAKEN
Definition BattlegroundAV.h:1686

References AV_NORTH_MINE, AV_SOUTH_MINE, AV_TEXT_A_HERALD_COLDTOOTH_MINE_TAKEN, AV_TEXT_A_HERALD_IRONDEEP_MINE_TAKEN, AV_TEXT_H_HERALD_COLDTOOTH_MINE_TAKEN, AV_TEXT_H_HERALD_IRONDEEP_MINE_TAKEN, and TEAM_ALLIANCE.

Referenced by ChangeMineOwner().

◆ GetNodeThroughObject()

BG_AV_Nodes BattlegroundAV::GetNodeThroughObject ( uint32  object)
private
861{
862 LOG_DEBUG("bg.battleground", "bg_AV getnodethroughobject {}", object);
864 return BG_AV_Nodes(object);
866 return BG_AV_Nodes(object - 11);
868 return BG_AV_Nodes(object - 7);
870 return BG_AV_Nodes(object - 22);
872 return BG_AV_Nodes(object - 33);
874 return BG_AV_Nodes(object - 29);
877 LOG_ERROR("bg.battleground", "BattlegroundAV: ERROR! GetPlace got a wrong object :(");
878 ABORT();
879 return BG_AV_Nodes(0);
880}
@ BG_AV_OBJECT_FLAG_H_FROSTWOLF_HUT
Definition BattlegroundAV.h:234
@ BG_AV_OBJECT_FLAG_H_FROSTWOLF_WTOWER
Definition BattlegroundAV.h:238
@ BG_AV_OBJECT_FLAG_C_A_FROSTWOLF_HUT
Definition BattlegroundAV.h:210
@ BG_AV_OBJECT_FLAG_C_H_STONEHEART_BUNKER
Definition BattlegroundAV.h:226
@ BG_AV_OBJECT_FLAG_A_STONEHEART_BUNKER
Definition BattlegroundAV.h:202
@ BG_AV_OBJECT_FLAG_C_A_FROSTWOLF_WTOWER
Definition BattlegroundAV.h:214

References ABORT, BG_AV_NODES_SNOWFALL_GRAVE, BG_AV_OBJECT_FLAG_A_STONEHEART_BUNKER, BG_AV_OBJECT_FLAG_C_A_FROSTWOLF_HUT, BG_AV_OBJECT_FLAG_C_A_FROSTWOLF_WTOWER, BG_AV_OBJECT_FLAG_C_H_STONEHEART_BUNKER, BG_AV_OBJECT_FLAG_H_FROSTWOLF_HUT, BG_AV_OBJECT_FLAG_H_FROSTWOLF_WTOWER, BG_AV_OBJECT_FLAG_N_SNOWFALL_GRAVE, LOG_DEBUG, and LOG_ERROR.

Referenced by EventPlayerAssaultsPoint(), EventPlayerDefendsPoint(), and SetupBattleground().

◆ GetObjectThroughNode()

uint32 BattlegroundAV::GetObjectThroughNode ( BG_AV_Nodes  node)
private
883{
884 //this function is the counterpart to GetNodeThroughObject()
885 LOG_DEBUG("bg.battleground", "bg_AV GetObjectThroughNode {}", node);
886 if (m_Nodes[node].OwnerId == TEAM_ALLIANCE)
887 {
888 if (m_Nodes[node].State == POINT_ASSAULTED)
889 {
890 if (node <= BG_AV_NODES_FROSTWOLF_HUT)
891 return node + 11;
893 return node + 7;
894 }
895 else if (m_Nodes[node].State == POINT_CONTROLLED)
897 return node;
898 }
899 else if (m_Nodes[node].OwnerId == TEAM_HORDE)
900 {
901 if (m_Nodes[node].State == POINT_ASSAULTED)
902 {
904 return node + 22;
905 }
906 else if (m_Nodes[node].State == POINT_CONTROLLED)
907 {
908 if (node <= BG_AV_NODES_FROSTWOLF_HUT)
909 return node + 33;
911 return node + 29;
912 }
913 }
914 else if (m_Nodes[node].OwnerId == TEAM_NEUTRAL)
916 LOG_ERROR("bg.battleground", "BattlegroundAV: Error! GetPlaceNode couldn't resolve node {}", node);
917 ABORT();
918 return 0;
919}

References ABORT, BG_AV_NODES_FROSTWOLF_HUT, BG_AV_NODES_FROSTWOLF_WTOWER, BG_AV_NODES_ICEBLOOD_TOWER, BG_AV_NODES_STONEHEART_BUNKER, BG_AV_OBJECT_FLAG_N_SNOWFALL_GRAVE, LOG_DEBUG, LOG_ERROR, m_Nodes, POINT_ASSAULTED, POINT_CONTROLLED, TEAM_ALLIANCE, TEAM_HORDE, and TEAM_NEUTRAL.

Referenced by EventPlayerDestroyedPoint().

◆ GetPrematureWinner()

TeamId BattlegroundAV::GetPrematureWinner ( )
overridevirtual

Reimplemented from Battleground.

1897{
1899 return TEAM_ALLIANCE;
1900
1902}
uint32 GetTeamScore(TeamId teamId) const
Definition Battleground.cpp:1874
virtual TeamId GetPrematureWinner()
Definition Battleground.cpp:414

References Battleground::GetPrematureWinner(), Battleground::GetTeamScore(), TEAM_ALLIANCE, and TEAM_HORDE.

◆ GetWorldStateType()

uint8 BattlegroundAV::GetWorldStateType ( uint8  state,
TeamId  teamId 
)
private
1164{
1165 //neutral stuff cant get handled (currently its only snowfall)
1166 ASSERT(teamId != TEAM_NEUTRAL);
1167 //a_c a_a h_c h_a the positions in worldstate-array
1168 if (teamId == TEAM_ALLIANCE)
1169 {
1170 if (state == POINT_CONTROLLED || state == POINT_DESTROYED)
1171 return 0;
1172 if (state == POINT_ASSAULTED)
1173 return 1;
1174 }
1175 if (teamId == TEAM_HORDE)
1176 {
1177 if (state == POINT_DESTROYED || state == POINT_CONTROLLED)
1178 return 2;
1179 if (state == POINT_ASSAULTED)
1180 return 3;
1181 }
1182 LOG_ERROR("bg.battleground", "BG_AV: should update a strange worldstate state:{} team:{}", state, teamId);
1183 return 5; //this will crash the game, but i want to know if something is wrong here
1184}

References ASSERT, LOG_ERROR, POINT_ASSAULTED, POINT_CONTROLLED, POINT_DESTROYED, TEAM_ALLIANCE, TEAM_HORDE, and TEAM_NEUTRAL.

Referenced by FillInitialWorldStates(), and UpdateNodeWorldState().

◆ HandleAreaTrigger()

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

Reimplemented from Battleground.

578{
579 // this is wrong way to implement these things. On official it done by gameobject spell cast.
581 return;
582
583 switch (trigger)
584 {
585 case 95:
586 case 2608:
587 if (player->GetTeamId() != TEAM_ALLIANCE)
588 player->GetSession()->SendAreaTriggerMessage("Only The Alliance can use that portal");
589 else
590 player->LeaveBattleground();
591 break;
592 case 2606:
593 if (player->GetTeamId() != TEAM_HORDE)
594 player->GetSession()->SendAreaTriggerMessage("Only The Horde can use that portal");
595 else
596 player->LeaveBattleground();
597 break;
598 case 3326:
599 case 3327:
600 case 3328:
601 case 3329:
602 case 3330:
603 case 3331:
604 //player->Unmount();
605 break;
606 default:
607 break;
608 }
609}
WorldSession * GetSession() const
Definition Player.h:2016
void LeaveBattleground(Battleground *bg=nullptr)
Definition Player.cpp:11303
void SendAreaTriggerMessage(std::string_view str)
Definition WorldSession.cpp:231

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

◆ HandleKillPlayer()

void BattlegroundAV::HandleKillPlayer ( Player player,
Player killer 
)
overridevirtual

Reimplemented from Battleground.

77{
79 return;
80
81 Battleground::HandleKillPlayer(player, killer);
82 UpdateScore(player->GetTeamId(), -1);
83}
virtual void HandleKillPlayer(Player *player, Player *killer)
Definition Battleground.cpp:1756

References Battleground::GetStatus(), Player::GetTeamId(), Battleground::HandleKillPlayer(), STATUS_IN_PROGRESS, and UpdateScore().

◆ HandleKillUnit()

void BattlegroundAV::HandleKillUnit ( Creature unit,
Player killer 
)
overridevirtual

Reimplemented from Battleground.

86{
87 LOG_DEBUG("bg.battleground", "bg_av HandleKillUnit {}", unit->GetEntry());
89 return;
90 uint32 entry = unit->GetEntry();
91 /*
92 uint32 triggerSpawnID = 0;
93 if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_A_CAPTAIN])
94 triggerSpawnID = AV_CPLACE_TRIGGER16;
95 else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_A_BOSS])
96 triggerSpawnID = AV_CPLACE_TRIGGER17;
97 else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_H_CAPTAIN])
98 triggerSpawnID = AV_CPLACE_TRIGGER18;
99 else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_H_BOSS])
100 triggerSpawnID = AV_CPLACE_TRIGGER19;
101 */
102 if (entry == BG_AV_CreatureInfo[AV_NPC_A_BOSS])
103 {
104 CastSpellOnTeam(23658, TEAM_HORDE); //this is a spell which finishes a quest where a player has to kill the boss
109 }
110 else if (entry == BG_AV_CreatureInfo[AV_NPC_H_BOSS])
111 {
112 CastSpellOnTeam(23658, TEAM_ALLIANCE); //this is a spell which finishes a quest where a player has to kill the boss
117 }
118 else if (entry == BG_AV_CreatureInfo[AV_NPC_A_CAPTAIN])
119 {
120 if (!m_CaptainAlive[0])
121 {
122 LOG_ERROR("bg.battleground", "Killed a Captain twice, please report this bug, if you haven't done \".respawn\"");
123 return;
124 }
125 m_CaptainAlive[0] = false;
129 //spawn destroyed aura
130 for (uint8 i = 0; i <= 9; i++)
132 if (Creature* creature = GetBGCreature(AV_CPLACE_HERALD))
133 creature->AI()->Talk(AV_TEXT_HERALD_STORMPIKE_GENERAL_DEAD);
135 }
136 else if (entry == BG_AV_CreatureInfo[AV_NPC_H_CAPTAIN])
137 {
138 if (!m_CaptainAlive[1])
139 {
140 LOG_ERROR("bg.battleground", "Killed a Captain twice, please report this bug, if you haven't done \".respawn\"");
141 return;
142 }
143 m_CaptainAlive[1] = false;
147 //spawn destroyed aura
148 for (uint8 i = 0; i <= 9; i++)
150 if (Creature* creature = GetBGCreature(AV_CPLACE_HERALD))
151 creature->AI()->Talk(AV_TEXT_HERALD_FROSTWOLF_GENERAL_DEAD);
153 }
155 {
159 }
161 {
165 }
166}
#define BG_AV_RES_CAPTAIN
Definition BattlegroundAV.h:34
#define BG_AV_KILL_BOSS
Definition BattlegroundAV.h:31
@ BG_AV_OBJECT_BURN_BUILDING_HORDE
Definition BattlegroundAV.h:310
@ BG_AV_OBJECT_BURN_BUILDING_ALLIANCE
Definition BattlegroundAV.h:309
@ BG_AV_QUEST_CREDIT_MINE
Definition BattlegroundAV.h:111
@ AV_TEXT_HERALD_STORMPIKE_GENERAL_DEAD
Definition BattlegroundAV.h:1690
@ AV_TEXT_HERALD_FROSTWOLF_GENERAL_DEAD
Definition BattlegroundAV.h:1689
@ AV_NPC_S_MINE_H_4
Definition BattlegroundAV.h:1257
@ AV_NPC_N_MINE_A_4
Definition BattlegroundAV.h:1240
@ AV_NPC_N_MINE_N_4
Definition BattlegroundAV.h:1236
@ AV_NPC_S_MINE_N_4
Definition BattlegroundAV.h:1248
@ AV_NPC_S_MINE_A_4
Definition BattlegroundAV.h:1253
@ AV_NPC_N_MINE_H_4
Definition BattlegroundAV.h:1244
#define BG_AV_KILL_CAPTAIN
Definition BattlegroundAV.h:33
@ SCORE_MINES_CAPTURED
Definition BattlegroundScore.h:48
void EndBattleground(TeamId winnerTeamId) override
Definition BattlegroundAV.cpp:509
void ChangeMineOwner(uint8 mine, TeamId teamId, bool initial=false)
Definition BattlegroundAV.cpp:690
void CastSpellOnTeam(uint32 spellId, TeamId teamId)
Definition Battleground.cpp:749

References _reputationBoss, _reputationCaptain, AV_CPLACE_HERALD, AV_CPLACE_TRIGGER16, AV_CPLACE_TRIGGER17, AV_CPLACE_TRIGGER18, AV_CPLACE_TRIGGER19, AV_NORTH_MINE, AV_NPC_A_BOSS, AV_NPC_A_CAPTAIN, AV_NPC_H_BOSS, AV_NPC_H_CAPTAIN, AV_NPC_N_MINE_A_4, AV_NPC_N_MINE_H_4, AV_NPC_N_MINE_N_4, AV_NPC_S_MINE_A_4, AV_NPC_S_MINE_H_4, AV_NPC_S_MINE_N_4, AV_SOUTH_MINE, AV_TEXT_HERALD_FROSTWOLF_GENERAL_DEAD, AV_TEXT_HERALD_STORMPIKE_GENERAL_DEAD, BG_AV_CreatureInfo, BG_AV_KILL_BOSS, BG_AV_KILL_CAPTAIN, BG_AV_OBJECT_BURN_BUILDING_ALLIANCE, BG_AV_OBJECT_BURN_BUILDING_HORDE, BG_AV_QUEST_CREDIT_MINE, BG_AV_RES_CAPTAIN, Battleground::CastSpellOnTeam(), ChangeMineOwner(), Battleground::DelCreature(), EndBattleground(), Battleground::GetBGCreature(), Battleground::GetBonusHonorFromKill(), Object::GetEntry(), Battleground::GetStatus(), Player::GetTeamId(), Player::KilledMonsterCredit(), LOG_DEBUG, LOG_ERROR, m_CaptainAlive, RESPAWN_IMMEDIATELY, Battleground::RewardHonorToTeam(), Battleground::RewardReputationToTeam(), SCORE_MINES_CAPTURED, Battleground::SpawnBGObject(), STATUS_IN_PROGRESS, TEAM_ALLIANCE, TEAM_HORDE, UpdatePlayerScore(), and UpdateScore().

◆ HandleQuestComplete()

void BattlegroundAV::HandleQuestComplete ( uint32  questid,
Player player 
)
169{
171 return;//maybe we should log this, cause this must be a cheater or a big bug
172 TeamId teamId = player->GetTeamId();
173 //TODO add reputation, events (including quest not available anymore, next quest availabe, go/npc de/spawning)and maybe honor
174 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed", questid);
175 switch (questid)
176 {
181 m_Team_QuestStatus[teamId][0] += 20;
182 if (m_Team_QuestStatus[teamId][0] == 500 || m_Team_QuestStatus[teamId][0] == 1000 || m_Team_QuestStatus[teamId][0] == 1500) //25, 50, 75 turn ins
183 {
184 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed starting with unit upgrading..", questid);
186 if (m_Nodes[i].OwnerId == player->GetTeamId() && m_Nodes[i].State == POINT_CONTROLLED)
187 {
189 PopulateNode(i);
190 //maybe this is bad, because it will instantly respawn all creatures on every grave..
191 }
192 }
193 break;
196 m_Team_QuestStatus[teamId][1]++;
197 RewardReputationToTeam(teamId, 1, teamId);
198 if (m_Team_QuestStatus[teamId][1] == 30)
199 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
200 break;
203 m_Team_QuestStatus[teamId][2]++;
204 RewardReputationToTeam(teamId, 1, teamId);
205 if (m_Team_QuestStatus[teamId][2] == 60)
206 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
207 break;
210 m_Team_QuestStatus[teamId][3]++;
211 RewardReputationToTeam(teamId, 1, teamId);
212 if (m_Team_QuestStatus[teamId][3] == 120)
213 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
214 break;
215 case AV_QUEST_A_BOSS1:
216 case AV_QUEST_H_BOSS1:
217 m_Team_QuestStatus[teamId][4] += 9; //you can turn in 10 or 1 item..
218 [[fallthrough]];
219 case AV_QUEST_A_BOSS2:
220 case AV_QUEST_H_BOSS2:
221 m_Team_QuestStatus[teamId][4]++;
222 if (m_Team_QuestStatus[teamId][4] >= 200)
223 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
224 break;
227 m_Team_QuestStatus[teamId][5]++;
228 if (m_Team_QuestStatus[teamId][5] == 28)
229 {
230 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
231
232 if (m_Team_QuestStatus[teamId][6] == 7)
233 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here - ground assault ready", questid);
234 }
235 break;
238 m_Team_QuestStatus[teamId][6]++;
239 if (m_Team_QuestStatus[teamId][6] == 7)
240 {
241 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
242
243 if (m_Team_QuestStatus[teamId][5] == 20)
244 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here - ground assault ready", questid);
245 }
246 break;
249 m_Team_QuestStatus[teamId][7]++;
250 if (m_Team_QuestStatus[teamId][7] == 25)
251 {
252 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
253
254 if (m_Team_QuestStatus[teamId][8] == 25)
255 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here - rider assault ready", questid);
256 }
257 break;
260 m_Team_QuestStatus[teamId][8]++;
261 if (m_Team_QuestStatus[teamId][8] == 25)
262 {
263 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
264
265 if (m_Team_QuestStatus[teamId][7] == 25)
266 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here - rider assault ready", questid);
267 }
268 break;
269 default:
270 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed but is not interesting at all", questid);
271 return; //was no interesting quest at all
272 break;
273 }
274}
@ AV_QUEST_A_COMMANDER3
Definition BattlegroundAV.h:1599
@ AV_QUEST_H_SCRAPS1
Definition BattlegroundAV.h:1593
@ AV_QUEST_H_BOSS1
Definition BattlegroundAV.h:1602
@ AV_QUEST_H_RIDER_TAME
Definition BattlegroundAV.h:1612
@ AV_QUEST_A_COMMANDER1
Definition BattlegroundAV.h:1595
@ AV_QUEST_A_RIDER_HIDE
Definition BattlegroundAV.h:1609
@ AV_QUEST_A_SCRAPS1
Definition BattlegroundAV.h:1591
@ AV_QUEST_H_COMMANDER1
Definition BattlegroundAV.h:1596
@ AV_QUEST_A_RIDER_TAME
Definition BattlegroundAV.h:1611
@ AV_QUEST_H_COMMANDER3
Definition BattlegroundAV.h:1600
@ AV_QUEST_H_NEAR_MINE
Definition BattlegroundAV.h:1606
@ AV_QUEST_A_COMMANDER2
Definition BattlegroundAV.h:1597
@ AV_QUEST_A_OTHER_MINE
Definition BattlegroundAV.h:1607
@ AV_QUEST_A_NEAR_MINE
Definition BattlegroundAV.h:1605
@ AV_QUEST_H_OTHER_MINE
Definition BattlegroundAV.h:1608
@ AV_QUEST_A_SCRAPS2
Definition BattlegroundAV.h:1592
@ AV_QUEST_H_BOSS2
Definition BattlegroundAV.h:1604
@ AV_QUEST_A_BOSS1
Definition BattlegroundAV.h:1601
@ AV_QUEST_H_COMMANDER2
Definition BattlegroundAV.h:1598
@ AV_QUEST_H_RIDER_HIDE
Definition BattlegroundAV.h:1610
@ AV_QUEST_A_BOSS2
Definition BattlegroundAV.h:1603
@ AV_QUEST_H_SCRAPS2
Definition BattlegroundAV.h:1594

References AV_QUEST_A_BOSS1, AV_QUEST_A_BOSS2, AV_QUEST_A_COMMANDER1, AV_QUEST_A_COMMANDER2, AV_QUEST_A_COMMANDER3, AV_QUEST_A_NEAR_MINE, AV_QUEST_A_OTHER_MINE, AV_QUEST_A_RIDER_HIDE, AV_QUEST_A_RIDER_TAME, AV_QUEST_A_SCRAPS1, AV_QUEST_A_SCRAPS2, AV_QUEST_H_BOSS1, AV_QUEST_H_BOSS2, AV_QUEST_H_COMMANDER1, AV_QUEST_H_COMMANDER2, AV_QUEST_H_COMMANDER3, AV_QUEST_H_NEAR_MINE, AV_QUEST_H_OTHER_MINE, AV_QUEST_H_RIDER_HIDE, AV_QUEST_H_RIDER_TAME, AV_QUEST_H_SCRAPS1, AV_QUEST_H_SCRAPS2, BG_AV_NODES_FIRSTAID_STATION, BG_AV_NODES_FROSTWOLF_HUT, DePopulateNode(), Battleground::GetStatus(), Player::GetTeamId(), LOG_DEBUG, m_Nodes, m_Team_QuestStatus, POINT_CONTROLLED, PopulateNode(), Battleground::RewardReputationToTeam(), BG_AV_NodeInfo::State, and STATUS_IN_PROGRESS.

◆ InitNode()

void BattlegroundAV::InitNode ( BG_AV_Nodes  node,
TeamId  teamId,
bool  tower 
)
private

◆ IsAllTowersControlledAndCaptainAlive()

bool BattlegroundAV::IsAllTowersControlledAndCaptainAlive ( TeamId  teamId) const
1853{
1854 if (teamId == TEAM_ALLIANCE)
1855 {
1856 for (BG_AV_Nodes i = BG_AV_NODES_DUNBALDAR_SOUTH; i <= BG_AV_NODES_STONEHEART_BUNKER; ++i) // alliance towers controlled
1857 {
1858 if (m_Nodes[i].State == POINT_CONTROLLED)
1859 {
1860 if (m_Nodes[i].OwnerId != TEAM_ALLIANCE)
1861 return false;
1862 }
1863 else
1864 return false;
1865 }
1866
1867 for (BG_AV_Nodes i = BG_AV_NODES_ICEBLOOD_TOWER; i <= BG_AV_NODES_FROSTWOLF_WTOWER; ++i) // horde towers destroyed
1868 if (m_Nodes[i].State != POINT_DESTROYED)
1869 return false;
1870
1871 return m_CaptainAlive[0];
1872 }
1873 else if (teamId == TEAM_HORDE)
1874 {
1875 for (BG_AV_Nodes i = BG_AV_NODES_ICEBLOOD_TOWER; i <= BG_AV_NODES_FROSTWOLF_WTOWER; ++i) // horde towers controlled
1876 {
1877 if (m_Nodes[i].State == POINT_CONTROLLED)
1878 {
1879 if (m_Nodes[i].OwnerId != TEAM_HORDE)
1880 return false;
1881 }
1882 else
1883 return false;
1884 }
1885
1886 for (BG_AV_Nodes i = BG_AV_NODES_DUNBALDAR_SOUTH; i <= BG_AV_NODES_STONEHEART_BUNKER; ++i) // alliance towers destroyed
1887 if (m_Nodes[i].State != POINT_DESTROYED)
1888 return false;
1889
1890 return m_CaptainAlive[1];
1891 }
1892
1893 return false;
1894}

References BG_AV_NODES_DUNBALDAR_SOUTH, BG_AV_NODES_FROSTWOLF_WTOWER, BG_AV_NODES_ICEBLOOD_TOWER, BG_AV_NODES_STONEHEART_BUNKER, m_CaptainAlive, m_Nodes, POINT_CONTROLLED, POINT_DESTROYED, TEAM_ALLIANCE, and TEAM_HORDE.

Referenced by achievement_bg_av_perfection::OnCheck().

◆ IsBothMinesControlledByTeam()

bool BattlegroundAV::IsBothMinesControlledByTeam ( TeamId  teamId) const
1844{
1845 for (auto& mine : m_Mine_Owner)
1846 if (mine != teamId)
1847 return false;
1848
1849 return true;
1850}

References m_Mine_Owner.

Referenced by achievement_everything_counts::OnCheck().

◆ IsTower()

bool BattlegroundAV::IsTower ( BG_AV_Nodes  node)
inlineprivate

◆ PlayerCanDoMineQuest()

bool BattlegroundAV::PlayerCanDoMineQuest ( int32  GOId,
TeamId  teamId 
)
776{
777 if (GOId == BG_AV_OBJECTID_MINE_N)
778 return (m_Mine_Owner[AV_NORTH_MINE] == teamId);
779 if (GOId == BG_AV_OBJECTID_MINE_S)
780 return (m_Mine_Owner[AV_SOUTH_MINE] == teamId);
781 return true; //cause it's no mine'object it is ok if this is true
782}
@ BG_AV_OBJECTID_MINE_N
Definition BattlegroundAV.h:156
@ BG_AV_OBJECTID_MINE_S
Definition BattlegroundAV.h:157

References AV_NORTH_MINE, AV_SOUTH_MINE, BG_AV_OBJECTID_MINE_N, BG_AV_OBJECTID_MINE_S, and m_Mine_Owner.

◆ PopulateNode()

void BattlegroundAV::PopulateNode ( BG_AV_Nodes  node)
private
785{
786 TeamId ownerId = m_Nodes[node].OwnerId;
787
788 uint32 c_place = AV_CPLACE_DEFENSE_STORM_AID + (4 * node);
789 uint32 creatureid;
790 if (IsTower(node))
791 creatureid = (ownerId == TEAM_ALLIANCE) ? AV_NPC_A_TOWERDEFENSE : AV_NPC_H_TOWERDEFENSE;
792 else
793 {
794 if (m_Team_QuestStatus[ownerId][0] < 500)
795 creatureid = (ownerId == TEAM_ALLIANCE) ? AV_NPC_A_GRAVEDEFENSE0 : AV_NPC_H_GRAVEDEFENSE0;
796 else if (m_Team_QuestStatus[ownerId][0] < 1000)
797 creatureid = (ownerId == TEAM_ALLIANCE) ? AV_NPC_A_GRAVEDEFENSE1 : AV_NPC_H_GRAVEDEFENSE1;
798 else if (m_Team_QuestStatus[ownerId][0] < 1500)
799 creatureid = (ownerId == TEAM_ALLIANCE) ? AV_NPC_A_GRAVEDEFENSE2 : AV_NPC_H_GRAVEDEFENSE2;
800 else
801 creatureid = (ownerId == TEAM_ALLIANCE) ? AV_NPC_A_GRAVEDEFENSE3 : AV_NPC_H_GRAVEDEFENSE3;
802 //spiritguide
803 if (BgCreatures[node])
804 DelCreature(node);
805 if (!AddSpiritGuide(node, BG_AV_CreaturePos[node][0], BG_AV_CreaturePos[node][1], BG_AV_CreaturePos[node][2], BG_AV_CreaturePos[node][3], ownerId))
806 LOG_ERROR("bg.battleground", "AV: couldn't spawn spiritguide at node {}", node);
807 }
808 for (uint8 i = 0; i < 4; i++)
809 AddAVCreature(creatureid, c_place + i);
810
811 if (node >= BG_AV_NODES_MAX)//fail safe
812 return;
813 Creature* trigger = GetBgMap()->GetCreature(BgCreatures[node + 302]);//0-302 other creatures
814 if (!trigger)
815 {
816 trigger = AddCreature(WORLD_TRIGGER,
817 node + 302,
818 BG_AV_CreaturePos[node + 302][0],
819 BG_AV_CreaturePos[node + 302][1],
820 BG_AV_CreaturePos[node + 302][2],
821 BG_AV_CreaturePos[node + 302][3]);
822 }
823
824 //add bonus honor aura trigger creature when node is accupied
825 //cast bonus aura (+50% honor in 25yards)
826 //aura should only apply to players who have accupied the node, set correct faction for trigger
827 if (trigger)
828 {
829 if (ownerId != TEAM_ALLIANCE && ownerId != TEAM_HORDE)//node can be neutral, remove trigger
830 {
831 DelCreature(node + 302);
832 return;
833 }
835 trigger->CastSpell(trigger, SPELL_HONORABLE_DEFENDER_25Y, false);
836 }
837}
@ AV_NPC_A_GRAVEDEFENSE1
Definition BattlegroundAV.h:1210
@ AV_NPC_H_GRAVEDEFENSE2
Definition BattlegroundAV.h:1219
@ AV_NPC_H_GRAVEDEFENSE1
Definition BattlegroundAV.h:1218
@ AV_NPC_A_GRAVEDEFENSE2
Definition BattlegroundAV.h:1211
@ FACTION_ALLIANCE_GENERIC
Definition SharedDefines.h:206
@ FACTION_HORDE_GENERIC
Definition SharedDefines.h:205
bool AddSpiritGuide(uint32 type, float x, float y, float z, float o, TeamId teamId)
Definition Battleground.cpp:1675
BattlegroundMap * GetBgMap() const
Definition Battleground.h:440
Creature * GetCreature(ObjectGuid const guid)
Definition Map.cpp:2389
void SetFaction(uint32 faction)
Definition Unit.cpp:10117
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:1193

References AddAVCreature(), Battleground::AddCreature(), Battleground::AddSpiritGuide(), AV_CPLACE_DEFENSE_STORM_AID, AV_NPC_A_GRAVEDEFENSE0, AV_NPC_A_GRAVEDEFENSE1, AV_NPC_A_GRAVEDEFENSE2, AV_NPC_A_GRAVEDEFENSE3, AV_NPC_A_TOWERDEFENSE, AV_NPC_H_GRAVEDEFENSE0, AV_NPC_H_GRAVEDEFENSE1, AV_NPC_H_GRAVEDEFENSE2, AV_NPC_H_GRAVEDEFENSE3, AV_NPC_H_TOWERDEFENSE, BG_AV_CreaturePos, BG_AV_NODES_MAX, Battleground::BgCreatures, Unit::CastSpell(), Battleground::DelCreature(), FACTION_ALLIANCE_GENERIC, FACTION_HORDE_GENERIC, Battleground::GetBgMap(), Map::GetCreature(), IsTower(), LOG_ERROR, m_Nodes, m_Team_QuestStatus, BG_AV_NodeInfo::OwnerId, Unit::SetFaction(), SPELL_HONORABLE_DEFENDER_25Y, TEAM_ALLIANCE, TEAM_HORDE, and WORLD_TRIGGER.

Referenced by EventPlayerDefendsPoint(), EventPlayerDestroyedPoint(), HandleQuestComplete(), and SetupBattleground().

◆ PostUpdateImpl()

void BattlegroundAV::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.

401{
403 {
404 for (uint8 i = 0; i <= 1; i++) //0=alliance, 1=horde
405 {
406 if (!m_CaptainAlive[i])
407 {
408 continue;
409 }
410 if (m_CaptainBuffTimer[i] > diff)
411 {
412 m_CaptainBuffTimer[i] -= diff;
413 }
414 else
415 {
416 if (i == 0)
417 {
419 Creature* creature = GetBGCreature(AV_CPLACE_MAX + 61);
420 if (creature)
421 {
422 std::string creatureText = sCreatureTextMgr->GetLocalizedChatString(creature->GetEntry(), creature->getGender(), 0, 0, DEFAULT_LOCALE);
423 YellToAll(creature, creatureText.c_str(), LANG_COMMON);
424 }
425 }
426 else
427 {
429 Creature* creature = GetBGCreature(AV_CPLACE_MAX + 59); //TODO: make the captains a dynamic creature
430 if (creature)
431 {
432 std::string creatureText = sCreatureTextMgr->GetLocalizedChatString(creature->GetEntry(), creature->getGender(), 2, 0, DEFAULT_LOCALE);
433 YellToAll(creature, creatureText.c_str(), LANG_ORCISH);
434 }
435 }
436 m_CaptainBuffTimer[i] = 120000 + urand(0, 4) * 60000; //as far as i could see, the buff is randomly so i make 2minutes (thats the duration of the buff itself) + 0-4minutes TODO get the right times
437 }
438 }
439 //add points from mine owning, and look if he neutral team wanrts to reclaim the mine
440 m_Mine_Timer -= diff;
441 for (uint8 mine = 0; mine < 2; mine++)
442 {
443 if (m_Mine_Owner[mine] == TEAM_ALLIANCE || m_Mine_Owner[mine] == TEAM_HORDE)
444 {
445 if (m_Mine_Timer <= 0)
446 UpdateScore(m_Mine_Owner[mine], 1);
447
448 if (m_Mine_Reclaim_Timer[mine] > diff)
449 m_Mine_Reclaim_Timer[mine] -= diff;
450 else //we don't need to set this timer to 0 cause this codepart wont get called when this thing is 0
451 {
453 }
454 }
455 }
456 if (m_Mine_Timer <= 0)
457 m_Mine_Timer = AV_MINE_TICK_TIMER; //this is at the end, cause we need to update both mines
458
459 //looks for all timers of the nodes and destroy the building (for graveyards the building wont get destroyed, it goes just to the other team
461 if (m_Nodes[i].State == POINT_ASSAULTED) //maybe remove this
462 {
463 if (m_Nodes[i].Timer > diff)
464 m_Nodes[i].Timer -= diff;
465 else
467 }
468 }
469}
@ AV_BUFF_H_CAPTAIN
Definition BattlegroundAV.h:1536
@ AV_BUFF_A_CAPTAIN
Definition BattlegroundAV.h:1535
@ AV_MINE_TICK_TIMER
Definition BattlegroundAV.h:109
@ LANG_COMMON
Definition SharedDefines.h:740
@ LANG_ORCISH
Definition SharedDefines.h:736
Timer
Definition boss_grizzle.cpp:30
void EventPlayerDestroyedPoint(BG_AV_Nodes node)
Definition BattlegroundAV.cpp:637
uint8 getGender() const
Definition Unit.h:798

References AV_BUFF_A_CAPTAIN, AV_BUFF_H_CAPTAIN, AV_CPLACE_MAX, AV_MINE_TICK_TIMER, BG_AV_NODES_FIRSTAID_STATION, BG_AV_NODES_MAX, Battleground::CastSpellOnTeam(), ChangeMineOwner(), DEFAULT_LOCALE, EventPlayerDestroyedPoint(), Battleground::GetBGCreature(), Object::GetEntry(), Unit::getGender(), Battleground::GetStatus(), LANG_COMMON, LANG_ORCISH, m_CaptainAlive, m_CaptainBuffTimer, m_Mine_Owner, m_Mine_Reclaim_Timer, m_Mine_Timer, m_Nodes, POINT_ASSAULTED, sCreatureTextMgr, STATUS_IN_PROGRESS, TEAM_ALLIANCE, TEAM_HORDE, TEAM_NEUTRAL, BG_AV_NodeInfo::Timer, UpdateScore(), urand(), and Battleground::YellToAll().

◆ RemovePlayer()

void BattlegroundAV::RemovePlayer ( Player player)
overridevirtual

Reimplemented from Battleground.

570{
571 //TODO search more buffs
575}
@ AV_BUFF_ARMOR
Definition BattlegroundAV.h:1534
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Definition Unit.cpp:4965

References AV_BUFF_A_CAPTAIN, AV_BUFF_ARMOR, AV_BUFF_H_CAPTAIN, and Unit::RemoveAurasDueToSpell().

◆ ResetBGSubclass()

void BattlegroundAV::ResetBGSubclass ( )
overridevirtual

Reimplemented from Battleground.

1816{
1817 for (uint8 i = 0; i < 2; i++) //forloop for both teams (it just make 0 == alliance and 1 == horde also for both mines 0=north 1=south
1818 {
1819 for (uint8 j = 0; j < 9; j++)
1820 m_Team_QuestStatus[i][j] = 0;
1822 m_IsInformedNearVictory[i] = false;
1823 m_CaptainAlive[i] = true;
1824 m_CaptainBuffTimer[i] = 120000 + urand(0, 4) * 60; //as far as i could see, the buff is randomly so i make 2minutes (thats the duration of the buff itself) + 0-4minutes TODO get the right times
1826 }
1827 for (BG_AV_Nodes i = BG_AV_NODES_FIRSTAID_STATION; i <= BG_AV_NODES_STONEHEART_GRAVE; ++i) //alliance graves
1828 InitNode(i, TEAM_ALLIANCE, false);
1829 for (BG_AV_Nodes i = BG_AV_NODES_DUNBALDAR_SOUTH; i <= BG_AV_NODES_STONEHEART_BUNKER; ++i) //alliance towers
1830 InitNode(i, TEAM_ALLIANCE, true);
1831 for (BG_AV_Nodes i = BG_AV_NODES_ICEBLOOD_GRAVE; i <= BG_AV_NODES_FROSTWOLF_HUT; ++i) //horde graves
1832 InitNode(i, TEAM_HORDE, false);
1833 for (BG_AV_Nodes i = BG_AV_NODES_ICEBLOOD_TOWER; i <= BG_AV_NODES_FROSTWOLF_WTOWER; ++i) //horde towers
1834 InitNode(i, TEAM_HORDE, true);
1835 InitNode(BG_AV_NODES_SNOWFALL_GRAVE, TEAM_NEUTRAL, false); //give snowfall neutral owner
1836
1838 for (uint16 i = 0; i < static_cast<uint16>(AV_CPLACE_MAX) + AV_STATICCPLACE_MAX; i++)
1839 if (BgCreatures[i])
1840 DelCreature(i);
1841}

References AV_CPLACE_MAX, AV_MINE_TICK_TIMER, AV_STATICCPLACE_MAX, BG_AV_NODES_DUNBALDAR_SOUTH, BG_AV_NODES_FIRSTAID_STATION, BG_AV_NODES_FROSTWOLF_HUT, BG_AV_NODES_FROSTWOLF_WTOWER, BG_AV_NODES_ICEBLOOD_GRAVE, BG_AV_NODES_ICEBLOOD_TOWER, BG_AV_NODES_SNOWFALL_GRAVE, BG_AV_NODES_STONEHEART_BUNKER, BG_AV_NODES_STONEHEART_GRAVE, BG_AV_SCORE_INITIAL_POINTS, Battleground::BgCreatures, Battleground::DelCreature(), InitNode(), m_CaptainAlive, m_CaptainBuffTimer, m_IsInformedNearVictory, m_Mine_Owner, m_Mine_Timer, m_Team_QuestStatus, m_Team_Scores, TEAM_ALLIANCE, TEAM_HORDE, TEAM_NEUTRAL, and urand().

◆ SendMineWorldStates()

void BattlegroundAV::SendMineWorldStates ( uint32  mine)
private
1196{
1197 ASSERT(mine == AV_NORTH_MINE || mine == AV_SOUTH_MINE);
1198
1199 uint8 owner = 1;
1200
1201 if (m_Mine_Owner[mine] == TEAM_ALLIANCE)
1202 owner = 0;
1203 else if (m_Mine_Owner[mine] == TEAM_HORDE)
1204 owner = 2;
1205
1206 for (uint8 i = 0; i < 3; ++i)
1207 UpdateWorldState(BG_AV_MineWorldStates[mine][i], 0); // Xinef: Clear data for consistency and buglessness
1208
1209 UpdateWorldState(BG_AV_MineWorldStates[mine][owner], 1);
1210}
const uint32 BG_AV_MineWorldStates[2][3]
Definition BattlegroundAV.h:1548
void UpdateWorldState(uint32 variable, uint32 value)
Definition Battleground.cpp:823

References ASSERT, AV_NORTH_MINE, AV_SOUTH_MINE, BG_AV_MineWorldStates, m_Mine_Owner, TEAM_ALLIANCE, TEAM_HORDE, and Battleground::UpdateWorldState().

Referenced by ChangeMineOwner(), and FillInitialWorldStates().

◆ SetupBattleground()

bool BattlegroundAV::SetupBattleground ( )
overridevirtual

Reimplemented from Battleground.

1242{
1243 if (sBattlegroundMgr->IsBGWeekend(GetBgTypeID(true)))
1244 {
1245 _reputationTower = 18;
1246 _reputationCaptain = 185;
1247 _reputationBoss = 525;
1252 }
1253 else
1254 {
1255 _reputationTower = 12;
1256 _reputationCaptain = 125;
1262 }
1263
1264 // Create starting objects
1265
1266 //spawn node-objects
1268 {
1270 {
1271 if (!AddObject(i, BG_AV_OBJECTID_BANNER_A_B, BG_AV_ObjectPos[i][0], BG_AV_ObjectPos[i][1], BG_AV_ObjectPos[i][2], BG_AV_ObjectPos[i][3], 0, 0, std::sin(BG_AV_ObjectPos[i][3] / 2), cos(BG_AV_ObjectPos[i][3] / 2), RESPAWN_ONE_DAY)
1272 || !AddObject(i + 11, BG_AV_OBJECTID_BANNER_CONT_A_B, BG_AV_ObjectPos[i][0], BG_AV_ObjectPos[i][1], BG_AV_ObjectPos[i][2], BG_AV_ObjectPos[i][3], 0, 0, std::sin(BG_AV_ObjectPos[i][3] / 2), cos(BG_AV_ObjectPos[i][3] / 2), RESPAWN_ONE_DAY)
1273 || !AddObject(i + 33, BG_AV_OBJECTID_BANNER_H_B, BG_AV_ObjectPos[i][0], BG_AV_ObjectPos[i][1], BG_AV_ObjectPos[i][2], BG_AV_ObjectPos[i][3], 0, 0, std::sin(BG_AV_ObjectPos[i][3] / 2), cos(BG_AV_ObjectPos[i][3] / 2), RESPAWN_ONE_DAY)
1274 || !AddObject(i + 22, BG_AV_OBJECTID_BANNER_CONT_H_B, BG_AV_ObjectPos[i][0], BG_AV_ObjectPos[i][1], BG_AV_ObjectPos[i][2], BG_AV_ObjectPos[i][3], 0, 0, std::sin(BG_AV_ObjectPos[i][3] / 2), cos(BG_AV_ObjectPos[i][3] / 2), RESPAWN_ONE_DAY)
1275 //aura
1279 {
1280 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!2");
1281 return false;
1282 }
1283 }
1284 else //towers
1285 {
1286 if (i <= BG_AV_NODES_STONEHEART_BUNKER) //alliance towers
1287 {
1288 if (!AddObject(i, BG_AV_OBJECTID_BANNER_A, BG_AV_ObjectPos[i][0], BG_AV_ObjectPos[i][1], BG_AV_ObjectPos[i][2], BG_AV_ObjectPos[i][3], 0, 0, std::sin(BG_AV_ObjectPos[i][3] / 2), cos(BG_AV_ObjectPos[i][3] / 2), RESPAWN_ONE_DAY)
1289 || !AddObject(i + 22, BG_AV_OBJECTID_BANNER_CONT_H, BG_AV_ObjectPos[i][0], BG_AV_ObjectPos[i][1], BG_AV_ObjectPos[i][2], BG_AV_ObjectPos[i][3], 0, 0, std::sin(BG_AV_ObjectPos[i][3] / 2), cos(BG_AV_ObjectPos[i][3] / 2), RESPAWN_ONE_DAY)
1290 || !AddObject(BG_AV_OBJECT_TAURA_A_DUNBALDAR_SOUTH + (2 * (i - BG_AV_NODES_DUNBALDAR_SOUTH)), BG_AV_OBJECTID_AURA_A, BG_AV_ObjectPos[i + 8][0], BG_AV_ObjectPos[i + 8][1], BG_AV_ObjectPos[i + 8][2], BG_AV_ObjectPos[i + 8][3], 0, 0, std::sin(BG_AV_ObjectPos[i + 8][3] / 2), cos(BG_AV_ObjectPos[i + 8][3] / 2), RESPAWN_ONE_DAY)
1291 || !AddObject(BG_AV_OBJECT_TAURA_H_DUNBALDAR_SOUTH + (2 * (i - BG_AV_NODES_DUNBALDAR_SOUTH)), BG_AV_OBJECTID_AURA_N, BG_AV_ObjectPos[i + 8][0], BG_AV_ObjectPos[i + 8][1], BG_AV_ObjectPos[i + 8][2], BG_AV_ObjectPos[i + 8][3], 0, 0, std::sin(BG_AV_ObjectPos[i + 8][3] / 2), cos(BG_AV_ObjectPos[i + 8][3] / 2), RESPAWN_ONE_DAY)
1294 {
1295 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!3");
1296 return false;
1297 }
1298 }
1299 else //horde towers
1300 {
1301 if (!AddObject(i + 7, BG_AV_OBJECTID_BANNER_CONT_A, BG_AV_ObjectPos[i][0], BG_AV_ObjectPos[i][1], BG_AV_ObjectPos[i][2], BG_AV_ObjectPos[i][3], 0, 0, std::sin(BG_AV_ObjectPos[i][3] / 2), cos(BG_AV_ObjectPos[i][3] / 2), RESPAWN_ONE_DAY)
1302 || !AddObject(i + 29, BG_AV_OBJECTID_BANNER_H, BG_AV_ObjectPos[i][0], BG_AV_ObjectPos[i][1], BG_AV_ObjectPos[i][2], BG_AV_ObjectPos[i][3], 0, 0, std::sin(BG_AV_ObjectPos[i][3] / 2), cos(BG_AV_ObjectPos[i][3] / 2), RESPAWN_ONE_DAY)
1303 || !AddObject(BG_AV_OBJECT_TAURA_A_DUNBALDAR_SOUTH + (2 * (i - BG_AV_NODES_DUNBALDAR_SOUTH)), BG_AV_OBJECTID_AURA_N, BG_AV_ObjectPos[i + 8][0], BG_AV_ObjectPos[i + 8][1], BG_AV_ObjectPos[i + 8][2], BG_AV_ObjectPos[i + 8][3], 0, 0, std::sin(BG_AV_ObjectPos[i + 8][3] / 2), cos(BG_AV_ObjectPos[i + 8][3] / 2), RESPAWN_ONE_DAY)
1304 || !AddObject(BG_AV_OBJECT_TAURA_H_DUNBALDAR_SOUTH + (2 * (i - BG_AV_NODES_DUNBALDAR_SOUTH)), BG_AV_OBJECTID_AURA_H, BG_AV_ObjectPos[i + 8][0], BG_AV_ObjectPos[i + 8][1], BG_AV_ObjectPos[i + 8][2], BG_AV_ObjectPos[i + 8][3], 0, 0, std::sin(BG_AV_ObjectPos[i + 8][3] / 2), cos(BG_AV_ObjectPos[i + 8][3] / 2), RESPAWN_ONE_DAY)
1307 {
1308 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!4");
1309 return false;
1310 }
1311 }
1312 for (uint8 j = 0; j <= 9; j++) //burning aura
1313 {
1315 {
1316 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!5.{}", i);
1317 return false;
1318 }
1319 }
1320 }
1321 }
1322 for (uint8 i = 0; i < 2; i++) //burning aura for buildings
1323 {
1324 for (uint8 j = 0; j <= 9; j++)
1325 {
1326 if (j < 5)
1327 {
1329 {
1330 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!6.{}", i);
1331 return false;
1332 }
1333 }
1334 else
1335 {
1337 {
1338 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!7.{}", i);
1339 return false;
1340 }
1341 }
1342 }
1343 }
1345 {
1347 {
1348 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some mine supplies Battleground not created!7.5.{}", i);
1349 return false;
1350 }
1351 }
1353 {
1355 {
1356 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some mine supplies Battleground not created!7.6.{}", i);
1357 return false;
1358 }
1359 }
1360
1362 {
1363 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!8");
1364 return false;
1365 }
1366 for (uint8 i = 0; i < 4; i++)
1367 {
1372 {
1373 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!9.{}", i);
1374 return false;
1375 }
1376 }
1377
1378 // Handpacked snowdrift, only during holiday
1381 {
1383 return false;
1384 }
1385
1386 // Hallow's End decorations
1389 {
1391 std::get<0>(BG_AV_HallowsEndObjectPos[i]),
1392 std::get<1>(BG_AV_HallowsEndObjectPos[i]).GetPositionX(),
1393 std::get<1>(BG_AV_HallowsEndObjectPos[i]).GetPositionY(),
1394 std::get<1>(BG_AV_HallowsEndObjectPos[i]).GetPositionZ(),
1395 std::get<1>(BG_AV_HallowsEndObjectPos[i]).GetOrientation(),
1396 std::get<2>(BG_AV_HallowsEndObjectPos[i])[0],
1397 std::get<2>(BG_AV_HallowsEndObjectPos[i])[1],
1398 std::get<2>(BG_AV_HallowsEndObjectPos[i])[2],
1399 std::get<2>(BG_AV_HallowsEndObjectPos[i])[3],
1401 {
1402 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!11.{}", i);
1403 return false;
1404 }
1405 }
1406
1407 // Generic gameobjects
1409 {
1411 std::get<0>(BG_AV_GenericObjectPos[i]),
1412 std::get<1>(BG_AV_GenericObjectPos[i]).GetPositionX(),
1413 std::get<1>(BG_AV_GenericObjectPos[i]).GetPositionY(),
1414 std::get<1>(BG_AV_GenericObjectPos[i]).GetPositionZ(),
1415 std::get<1>(BG_AV_GenericObjectPos[i]).GetOrientation(),
1416 std::get<2>(BG_AV_GenericObjectPos[i])[0],
1417 std::get<2>(BG_AV_GenericObjectPos[i])[1],
1418 std::get<2>(BG_AV_GenericObjectPos[i])[2],
1419 std::get<2>(BG_AV_GenericObjectPos[i])[3],
1421 {
1422 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!10.{}", i);
1423 return false;
1424 }
1425 }
1426
1427 // Quest banners
1429 {
1430 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!8");
1431 return false;
1432 }
1434 {
1435 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!8");
1436 return false;
1437 }
1438
1439 uint16 i;
1440 LOG_DEBUG("bg.battleground", "Alterac Valley: entering state STATUS_WAIT_JOIN ...");
1441 // Initial Nodes
1442 for (i = 0; i < BG_AV_OBJECT_MAX; i++)
1444
1446 {
1449 }
1450
1453
1455 {
1459 }
1460
1462 {
1464 SpawnBGObject(i + 16, RESPAWN_IMMEDIATELY); //aura
1465 }
1466
1468 {
1470 SpawnBGObject(i + 16, RESPAWN_IMMEDIATELY); //aura
1471 }
1472
1473 //snowfall and the doors
1476
1477 // Handpacked snowdrift, only during holiday
1481
1482 // Hallow's End decorations
1486
1487 // Generic gameobjects
1490
1491 // Quest banners
1494
1495 //creatures
1496 LOG_DEBUG("bg.battleground", "BG_AV start poputlating nodes");
1498 {
1499 if (m_Nodes[i].OwnerId != TEAM_NEUTRAL)
1501 }
1502 //all creatures which don't get despawned through the script are static
1503 LOG_DEBUG("bg.battleground", "BG_AV: start spawning static creatures");
1504 for (i = 0; i < AV_STATICCPLACE_MAX; i++)
1506 //mainspiritguides:
1507 LOG_DEBUG("bg.battleground", "BG_AV: start spawning spiritguides creatures");
1510 //spawn the marshals (those who get deleted, if a tower gets destroyed)
1511 LOG_DEBUG("bg.battleground", "BG_AV: start spawning marshal creatures");
1515
1516 if (
1517 // alliance gates
1519 // horde gates
1521 {
1522 LOG_ERROR("sql.sql", "BatteGroundAV: Failed to spawn some object Battleground not created!1");
1523 return false;
1524 }
1525
1526 return true;
1527}
const float BG_AV_DoorPositons[2][4]
Definition BattlegroundAV.h:749
@ BG_AV_OBJECTID_FROSTWOLF_BANNER
Definition BattlegroundAV.h:165
@ BG_AV_OBJECTID_SMOKE
Definition BattlegroundAV.h:160
@ BG_AV_OBJECTID_SNOWFALL_CANDY_A
Definition BattlegroundAV.h:133
@ BG_AV_OBJECTID_SNOWFALL_CANDY_PH
Definition BattlegroundAV.h:136
@ BG_AV_OBJECTID_FIRE
Definition BattlegroundAV.h:159
@ BG_AV_OBJECTID_TOWER_BANNER_PA
Definition BattlegroundAV.h:141
@ BG_AV_OBJECTID_TOWER_BANNER_H
Definition BattlegroundAV.h:140
@ BG_AV_OBJECTID_SNOWFALL_CANDY_H
Definition BattlegroundAV.h:135
@ BG_AV_OBJECTID_SNOWFALL_CANDY_PA
Definition BattlegroundAV.h:134
@ BG_AV_OBJECTID_GATE_H
Definition BattlegroundAV.h:153
@ BG_AV_OBJECTID_TOWER_BANNER_PH
Definition BattlegroundAV.h:142
@ BG_AV_OBJECTID_STORMPIKE_BANNER
Definition BattlegroundAV.h:166
@ BG_AV_OBJECTID_HARDPACKED_SNOWDRIFT
Definition BattlegroundAV.h:163
@ BG_AV_OBJECTID_AURA_N
Definition BattlegroundAV.h:147
@ BG_AV_OBJECTID_AURA_A
Definition BattlegroundAV.h:145
@ BG_AV_OBJECTID_AURA_H
Definition BattlegroundAV.h:146
@ BG_AV_OBJECTID_TOWER_BANNER_A
Definition BattlegroundAV.h:139
@ BG_AV_OBJECTID_GATE_A
Definition BattlegroundAV.h:152
std::tuple< uint32, Position, std::array< float, 4 > > const BG_AV_GenericObjectPos[BG_AV_OBJECT_GENERIC_MAX - BG_AV_OBJECT_GENERIC_MIN+1]
Definition BattlegroundAV.h:569
const float BG_AV_ObjectPos[AV_OPLACE_MAX][4]
Definition BattlegroundAV.h:383
@ AV_OPLACE_BURN_DUNBALDAR_SOUTH
Definition BattlegroundAV.h:357
@ AV_OPLACE_MINE_SUPPLY_N_MIN
Definition BattlegroundAV.h:371
@ AV_OPLACE_SNOW_1
Definition BattlegroundAV.h:367
@ AV_OPLACE_HANDPACKED_SNOWDRIFT_MIN
Definition BattlegroundAV.h:375
@ AV_OPLACE_STORMPIKE_BANNER
Definition BattlegroundAV.h:378
@ AV_OPLACE_MINE_SUPPLY_S_MIN
Definition BattlegroundAV.h:373
@ AV_OPLACE_BURN_BUILDING_A
Definition BattlegroundAV.h:365
@ AV_OPLACE_FROSTWOLF_BANNER
Definition BattlegroundAV.h:377
@ BG_AV_OBJECT_MINE_SUPPLY_N_MIN
Definition BattlegroundAV.h:315
@ BG_AV_OBJECT_MINE_SUPPLY_N_MAX
Definition BattlegroundAV.h:316
@ BG_AV_OBJECT_MINE_SUPPLY_S_MIN
Definition BattlegroundAV.h:317
@ BG_AV_OBJECT_MINE_SUPPLY_S_MAX
Definition BattlegroundAV.h:318
@ BG_AV_OBJECT_HALLOWS_END_MIN
Definition BattlegroundAV.h:325
@ BG_AV_OBJECT_DOOR_H
Definition BattlegroundAV.h:242
@ BG_AV_OBJECT_FLAG_A_FIRSTAID_STATION
Definition BattlegroundAV.h:192
@ BG_AV_OBJECT_FLAG_H_ICEBLOOD_GRAVE
Definition BattlegroundAV.h:232
@ BG_AV_OBJECT_HANDPACKED_SNOWDRIFT_MIN
Definition BattlegroundAV.h:319
@ BG_AV_OBJECT_TFLAG_H_ICEBLOOD_TOWER
Definition BattlegroundAV.h:277
@ BG_AV_OBJECT_TFLAG_A_STONEHEART_BUNKER
Definition BattlegroundAV.h:274
@ BG_AV_OBJECT_AURA_H_FIRSTAID_STATION
Definition BattlegroundAV.h:247
@ BG_AV_OBJECT_HALLOWS_END_MAX
Definition BattlegroundAV.h:326
@ BG_AV_OBJECT_HANDPACKED_SNOWDRIFT_MAX
Definition BattlegroundAV.h:320
@ BG_AV_OBJECT_TFLAG_H_FROSTWOLF_WTOWER
Definition BattlegroundAV.h:283
@ BG_AV_OBJECT_FLAG_A_DUNBALDAR_SOUTH
Definition BattlegroundAV.h:199
@ BG_AV_OBJECT_GENERIC_MAX
Definition BattlegroundAV.h:324
@ BG_AV_OBJECT_AURA_N_SNOWFALL_GRAVE
Definition BattlegroundAV.h:254
@ BG_AV_OBJECT_DOOR_A
Definition BattlegroundAV.h:243
@ BG_AV_OBJECT_GENERIC_MIN
Definition BattlegroundAV.h:323
@ BG_AV_OBJECT_STORMPIKE_BANNER
Definition BattlegroundAV.h:322
@ BG_AV_OBJECT_FLAG_A_STONEHEART_GRAVE
Definition BattlegroundAV.h:194
@ BG_AV_OBJECT_FROSTWOLF_BANNER
Definition BattlegroundAV.h:321
@ AV_NPC_H_MARSHAL_WTOWER
Definition BattlegroundAV.h:1232
@ AV_NPC_HERALD
Definition BattlegroundAV.h:1258
@ AV_NPC_A_MARSHAL_SOUTH
Definition BattlegroundAV.h:1225
std::tuple< uint32, Position, std::array< float, 4 > > const BG_AV_HallowsEndObjectPos[BG_AV_OBJECT_HALLOWS_END_MAX - BG_AV_OBJECT_HALLOWS_END_MIN+1]
Definition BattlegroundAV.h:660
#define sBattlegroundMgr
Definition BattlegroundMgr.h:187
bool IsHolidayActive(HolidayIds id)
Definition GameEventMgr.cpp:1950
@ HOLIDAY_HALLOWS_END
Definition SharedDefines.h:2992
@ HOLIDAY_FEAST_OF_WINTER_VEIL
Definition SharedDefines.h:2984
@ CONFIG_BATTLEGROUND_ALTERAC_REP_ONBOSSDEATH
Definition WorldConfig.h:275
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:1451
#define sWorld
Definition World.h:320

References _reputationBoss, _reputationCaptain, _reputationPerOwnedGraveyard, _reputationPerOwnedMine, _reputationSurvivingCaptain, _reputationSurvivingTower, _reputationTower, AddAVCreature(), Battleground::AddObject(), Battleground::AddSpiritGuide(), AV_CPLACE_A_MARSHAL_SOUTH, AV_CPLACE_HERALD, AV_CPLACE_MAX, AV_NPC_A_MARSHAL_SOUTH, AV_NPC_H_MARSHAL_WTOWER, AV_NPC_HERALD, AV_OPLACE_BURN_BUILDING_A, AV_OPLACE_BURN_DUNBALDAR_SOUTH, AV_OPLACE_FROSTWOLF_BANNER, AV_OPLACE_HANDPACKED_SNOWDRIFT_MIN, AV_OPLACE_MINE_SUPPLY_N_MIN, AV_OPLACE_MINE_SUPPLY_S_MIN, AV_OPLACE_SNOW_1, AV_OPLACE_STORMPIKE_BANNER, AV_STATICCPLACE_MAX, BG_AV_CreaturePos, BG_AV_DoorPositons, BG_AV_GenericObjectPos, BG_AV_HallowsEndObjectPos, BG_AV_NODES_DUNBALDAR_SOUTH, BG_AV_NODES_FIRSTAID_STATION, BG_AV_NODES_FROSTWOLF_HUT, BG_AV_NODES_MAX, BG_AV_NODES_SNOWFALL_GRAVE, BG_AV_NODES_STONEHEART_BUNKER, BG_AV_OBJECT_AURA_A_FIRSTAID_STATION, BG_AV_OBJECT_AURA_H_FIRSTAID_STATION, BG_AV_OBJECT_AURA_N_FIRSTAID_STATION, BG_AV_OBJECT_AURA_N_SNOWFALL_GRAVE, BG_AV_OBJECT_BURN_BUILDING_ALLIANCE, BG_AV_OBJECT_BURN_DUNBALDAR_SOUTH, BG_AV_OBJECT_DOOR_A, BG_AV_OBJECT_DOOR_H, BG_AV_OBJECT_FLAG_A_DUNBALDAR_SOUTH, BG_AV_OBJECT_FLAG_A_FIRSTAID_STATION, BG_AV_OBJECT_FLAG_A_STONEHEART_BUNKER, BG_AV_OBJECT_FLAG_A_STONEHEART_GRAVE, BG_AV_OBJECT_FLAG_H_FROSTWOLF_HUT, BG_AV_OBJECT_FLAG_H_FROSTWOLF_WTOWER, BG_AV_OBJECT_FLAG_H_ICEBLOOD_GRAVE, BG_AV_OBJECT_FLAG_N_SNOWFALL_GRAVE, BG_AV_OBJECT_FROSTWOLF_BANNER, BG_AV_OBJECT_GENERIC_MAX, BG_AV_OBJECT_GENERIC_MIN, BG_AV_OBJECT_HALLOWS_END_MAX, BG_AV_OBJECT_HALLOWS_END_MIN, BG_AV_OBJECT_HANDPACKED_SNOWDRIFT_MAX, BG_AV_OBJECT_HANDPACKED_SNOWDRIFT_MIN, BG_AV_OBJECT_MAX, BG_AV_OBJECT_MINE_SUPPLY_N_MAX, BG_AV_OBJECT_MINE_SUPPLY_N_MIN, BG_AV_OBJECT_MINE_SUPPLY_S_MAX, BG_AV_OBJECT_MINE_SUPPLY_S_MIN, BG_AV_OBJECT_SNOW_EYECANDY_A, BG_AV_OBJECT_SNOW_EYECANDY_H, BG_AV_OBJECT_SNOW_EYECANDY_PA, BG_AV_OBJECT_SNOW_EYECANDY_PH, BG_AV_OBJECT_STORMPIKE_BANNER, BG_AV_OBJECT_TAURA_A_DUNBALDAR_SOUTH, BG_AV_OBJECT_TAURA_H_DUNBALDAR_SOUTH, BG_AV_OBJECT_TFLAG_A_DUNBALDAR_SOUTH, BG_AV_OBJECT_TFLAG_A_STONEHEART_BUNKER, BG_AV_OBJECT_TFLAG_H_DUNBALDAR_SOUTH, BG_AV_OBJECT_TFLAG_H_FROSTWOLF_WTOWER, BG_AV_OBJECT_TFLAG_H_ICEBLOOD_TOWER, BG_AV_OBJECTID_AURA_A, BG_AV_OBJECTID_AURA_H, BG_AV_OBJECTID_AURA_N, BG_AV_OBJECTID_BANNER_A, BG_AV_OBJECTID_BANNER_A_B, BG_AV_OBJECTID_BANNER_CONT_A, BG_AV_OBJECTID_BANNER_CONT_A_B, BG_AV_OBJECTID_BANNER_CONT_H, BG_AV_OBJECTID_BANNER_CONT_H_B, BG_AV_OBJECTID_BANNER_H, BG_AV_OBJECTID_BANNER_H_B, BG_AV_OBJECTID_BANNER_SNOWFALL_N, BG_AV_OBJECTID_FIRE, BG_AV_OBJECTID_FROSTWOLF_BANNER, BG_AV_OBJECTID_GATE_A, BG_AV_OBJECTID_GATE_H, BG_AV_OBJECTID_HARDPACKED_SNOWDRIFT, BG_AV_OBJECTID_MINE_N, BG_AV_OBJECTID_MINE_S, BG_AV_OBJECTID_SMOKE, BG_AV_OBJECTID_SNOWFALL_CANDY_A, BG_AV_OBJECTID_SNOWFALL_CANDY_H, BG_AV_OBJECTID_SNOWFALL_CANDY_PA, BG_AV_OBJECTID_SNOWFALL_CANDY_PH, BG_AV_OBJECTID_STORMPIKE_BANNER, BG_AV_OBJECTID_TOWER_BANNER_A, BG_AV_OBJECTID_TOWER_BANNER_H, BG_AV_OBJECTID_TOWER_BANNER_PA, BG_AV_OBJECTID_TOWER_BANNER_PH, BG_AV_ObjectPos, CONFIG_BATTLEGROUND_ALTERAC_REP_ONBOSSDEATH, Battleground::GetBgTypeID(), GetNodeThroughObject(), HOLIDAY_FEAST_OF_WINTER_VEIL, HOLIDAY_HALLOWS_END, IsHolidayActive(), LOG_DEBUG, LOG_ERROR, m_Nodes, PopulateNode(), RESPAWN_IMMEDIATELY, RESPAWN_ONE_DAY, sBattlegroundMgr, Battleground::SpawnBGObject(), sWorld, TEAM_ALLIANCE, TEAM_HORDE, and TEAM_NEUTRAL.

◆ StartingEventCloseDoors()

void BattlegroundAV::StartingEventCloseDoors ( )
overridevirtual

◆ StartingEventOpenDoors()

void BattlegroundAV::StartingEventOpenDoors ( )
overridevirtual

Reimplemented from Battleground.

481{
482 LOG_DEBUG("bg.battleground", "BG_AV: start spawning mine stuff");
487 for (uint8 mine = AV_NORTH_MINE; mine <= AV_SOUTH_MINE; mine++) //mine population
488 ChangeMineOwner(mine, TEAM_NEUTRAL, true);
489
490 if (BG_AV_SCORE_INITIAL_POINTS > 0) // display teamscores on top only if reinforcements are enabled
491 {
494 }
495
498
499 // Achievement: The Alterac Blitz
501}
#define AV_EVENT_START_BATTLE
Definition BattlegroundAV.h:45
constexpr auto MINUTE
Definition Common.h:47
@ ACHIEVEMENT_TIMED_TYPE_EVENT
Definition DBCEnums.h:110
void DoorOpen(uint32 type)
Definition Battleground.cpp:1523
void StartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry)
Definition Battleground.cpp:1868

References ACHIEVEMENT_TIMED_TYPE_EVENT, AV_EVENT_START_BATTLE, AV_NORTH_MINE, AV_SOUTH_MINE, BG_AV_OBJECT_DOOR_A, BG_AV_OBJECT_DOOR_H, BG_AV_OBJECT_MINE_SUPPLY_N_MAX, BG_AV_OBJECT_MINE_SUPPLY_N_MIN, BG_AV_OBJECT_MINE_SUPPLY_S_MAX, BG_AV_OBJECT_MINE_SUPPLY_S_MIN, BG_AV_SCORE_INITIAL_POINTS, ChangeMineOwner(), Battleground::DoorOpen(), LOG_DEBUG, MINUTE, RESPAWN_IMMEDIATELY, Battleground::SpawnBGObject(), Battleground::StartTimedAchievement(), TEAM_NEUTRAL, Battleground::UpdateWorldState(), WORLD_STATE_BATTLEGROUND_AV_SHOW_ALLIANCE_SCORE, and WORLD_STATE_BATTLEGROUND_AV_SHOW_HORDE_SCORE.

◆ UpdateNodeWorldState()

void BattlegroundAV::UpdateNodeWorldState ( BG_AV_Nodes  node)
private
1187{
1188 UpdateWorldState(BG_AV_NodeWorldStates[node][GetWorldStateType(m_Nodes[node].State, m_Nodes[node].OwnerId)], 1);
1189 if (m_Nodes[node].PrevOwnerId == TEAM_NEUTRAL) //currently only snowfall is supported as neutral node (i don't want to make an extra row (neutral states) in worldstatesarray just for one node
1191 else
1192 UpdateWorldState(BG_AV_NodeWorldStates[node][GetWorldStateType(m_Nodes[node].PrevState, m_Nodes[node].PrevOwnerId)], 0);
1193}

References BG_AV_NodeWorldStates, GetWorldStateType(), m_Nodes, TEAM_NEUTRAL, Battleground::UpdateWorldState(), and WORLD_STATE_BATTLEGROUND_AV_SNOWFALL_N.

Referenced by EventPlayerAssaultsPoint(), EventPlayerDefendsPoint(), and EventPlayerDestroyedPoint().

◆ UpdatePlayerScore()

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

Reimplemented from Battleground.

612{
613 if (!Battleground::UpdatePlayerScore(player, type, value, doAddHonor))
614 return false;
615
616 switch (type)
617 {
620 break;
623 break;
626 break;
629 break;
630 default:
631 break;
632 }
633
634 return true;
635}
@ AV_OBJECTIVE_DEFEND_GRAVEYARD
Definition BattlegroundAV.h:1620
@ AV_OBJECTIVE_ASSAULT_GRAVEYARD
Definition BattlegroundAV.h:1618
@ AV_OBJECTIVE_ASSAULT_TOWER
Definition BattlegroundAV.h:1617
@ AV_OBJECTIVE_DEFEND_TOWER
Definition BattlegroundAV.h:1619
@ 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:1390
void UpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1=0, uint32 miscValue2=0, Unit *unit=nullptr)
Definition PlayerUpdates.cpp:2179

References ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, AV_OBJECTIVE_ASSAULT_GRAVEYARD, AV_OBJECTIVE_ASSAULT_TOWER, AV_OBJECTIVE_DEFEND_GRAVEYARD, AV_OBJECTIVE_DEFEND_TOWER, SCORE_GRAVEYARDS_ASSAULTED, SCORE_GRAVEYARDS_DEFENDED, SCORE_TOWERS_ASSAULTED, SCORE_TOWERS_DEFENDED, Player::UpdateAchievementCriteria(), and Battleground::UpdatePlayerScore().

Referenced by EventPlayerAssaultsPoint(), EventPlayerDefendsPoint(), and HandleKillUnit().

◆ UpdateScore()

void BattlegroundAV::UpdateScore ( TeamId  teamId,
int16  points 
)
277{
279 return; // don't update teamscores if reinforcements are disabled
280
281 //note: to remove reinforcementpoints points must be negative, for adding reinforcements points must be positive
282 m_Team_Scores[teamId] += points;
283
285 if (points < 0)
286 {
287 if (m_Team_Scores[teamId] < 1)
288 {
289 m_Team_Scores[teamId] = 0;
291 }
292 else if (!m_IsInformedNearVictory[teamId] && m_Team_Scores[teamId] < SEND_MSG_NEAR_LOSE)
293 {
294 if (teamId == TEAM_ALLIANCE)
295 {
297 }
298 else
299 {
301 }
302
304 m_IsInformedNearVictory[teamId] = true;
305 }
306 }
307}
@ AV_SOUND_NEAR_VICTORY
Definition BattlegroundAV.h:92
#define SEND_MSG_NEAR_LOSE
Definition BattlegroundAV.h:29
@ BG_AV_TEXT_ALLIANCE_NEAR_LOSE
Definition BattlegroundAV.h:53
@ BG_AV_TEXT_HORDE_NEAR_LOSE
Definition BattlegroundAV.h:54
@ CHAT_MSG_BG_SYSTEM_ALLIANCE
Definition SharedDefines.h:3428
@ CHAT_MSG_BG_SYSTEM_HORDE
Definition SharedDefines.h:3429
static TeamId GetOtherTeamId(TeamId teamId)
Definition Battleground.cpp:1791
void SendBroadcastText(uint32 id, ChatMsg msgType, WorldObject const *target=nullptr)
Definition Battleground.cpp:731

References AV_SOUND_NEAR_VICTORY, BG_AV_SCORE_INITIAL_POINTS, BG_AV_TEXT_ALLIANCE_NEAR_LOSE, BG_AV_TEXT_HORDE_NEAR_LOSE, CHAT_MSG_BG_SYSTEM_ALLIANCE, CHAT_MSG_BG_SYSTEM_HORDE, EndBattleground(), Battleground::GetOtherTeamId(), m_IsInformedNearVictory, m_Team_Scores, Battleground::PlaySoundToAll(), SEND_MSG_NEAR_LOSE, Battleground::SendBroadcastText(), TEAM_ALLIANCE, TEAM_HORDE, Battleground::UpdateWorldState(), WORLD_STATE_BATTLEGROUND_AV_ALLIANCE_SCORE, and WORLD_STATE_BATTLEGROUND_AV_HORDE_SCORE.

Referenced by EventPlayerDestroyedPoint(), HandleKillPlayer(), HandleKillUnit(), and PostUpdateImpl().

Member Data Documentation

◆ _reputationBoss

uint32 BattlegroundAV::_reputationBoss = 0
private

◆ _reputationCaptain

uint32 BattlegroundAV::_reputationCaptain = 0
private

◆ _reputationPerOwnedGraveyard

uint32 BattlegroundAV::_reputationPerOwnedGraveyard = 0
private

◆ _reputationPerOwnedMine

uint32 BattlegroundAV::_reputationPerOwnedMine = 0
private

◆ _reputationSurvivingCaptain

uint32 BattlegroundAV::_reputationSurvivingCaptain = 0
private

◆ _reputationSurvivingTower

uint32 BattlegroundAV::_reputationSurvivingTower = 0
private

◆ _reputationTower

uint32 BattlegroundAV::_reputationTower = 0
private

◆ m_CaptainAlive

bool BattlegroundAV::m_CaptainAlive[2] {}
private

◆ m_CaptainBuffTimer

uint32 BattlegroundAV::m_CaptainBuffTimer[2] {}
private
1839{};

Referenced by BattlegroundAV(), PostUpdateImpl(), and ResetBGSubclass().

◆ m_IsInformedNearVictory

bool BattlegroundAV::m_IsInformedNearVictory[2] {}
private
1850{};

Referenced by BattlegroundAV(), ResetBGSubclass(), and UpdateScore().

◆ m_Mine_Owner

◆ m_Mine_Reclaim_Timer

uint32 BattlegroundAV::m_Mine_Reclaim_Timer[2] {}
private
1838{};

Referenced by BattlegroundAV(), ChangeMineOwner(), and PostUpdateImpl().

◆ m_Mine_Timer

int32 BattlegroundAV::m_Mine_Timer
private

◆ m_Nodes

◆ m_Team_QuestStatus

uint32 BattlegroundAV::m_Team_QuestStatus[2][9] {}
private
1832{}; //[x][y] x=team y=questcounter

Referenced by BattlegroundAV(), HandleQuestComplete(), PopulateNode(), and ResetBGSubclass().

◆ m_Team_Scores

int32 BattlegroundAV::m_Team_Scores[2] {}
private

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