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
 
BG_AV_NodeInfo const & GetAVNodeInfo (uint32 node) const
 
bool IsCaptainAlive (uint8 index) const
 
TeamId GetMineOwner (uint8 index) const
 
- 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)
 
uint8 GetStartingEventFlags () const
 
void AddStartingEventFlag (uint8 flag)
 
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 ()
 
SpectatorList const & GetSpectators () 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
 
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 ()
 
GameObject * GetBGObject (uint32 type)
 
Creature * GetBGCreature (uint32 type)
 
void SetMapId (uint32 MapID)
 
uint32 GetMapId () const
 
void SetBgMap (BattlegroundMap *map)
 
BattlegroundMap * GetBgMap () const
 
BattlegroundMap * FindBgMap () 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, char const *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)
 
Group * GetBgRaid (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)
 
Creature * AddCreature (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
 
BattlegroundAV * ToBattlegroundAV ()
 
BattlegroundAV const * ToBattlegroundAV () const
 
BattlegroundWS * ToBattlegroundWS ()
 
BattlegroundWS const * ToBattlegroundWS () const
 
BattlegroundAB * ToBattlegroundAB ()
 
BattlegroundAB const * ToBattlegroundAB () const
 
BattlegroundNA * ToBattlegroundNA ()
 
BattlegroundNA const * ToBattlegroundNA () const
 
BattlegroundBE * ToBattlegroundBE ()
 
BattlegroundBE const * ToBattlegroundBE () const
 
BattlegroundEY * ToBattlegroundEY ()
 
BattlegroundEY const * ToBattlegroundEY () const
 
BattlegroundRL * ToBattlegroundRL ()
 
BattlegroundRL const * ToBattlegroundRL () const
 
BattlegroundSA * ToBattlegroundSA ()
 
BattlegroundSA const * ToBattlegroundSA () const
 
BattlegroundDS * ToBattlegroundDS ()
 
BattlegroundDS const * ToBattlegroundDS () const
 
BattlegroundRV * ToBattlegroundRV ()
 
BattlegroundRV const * ToBattlegroundRV () const
 
BattlegroundIC * ToBattlegroundIC ()
 
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)
 
Creature * AddAVCreature (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
 
float _avReputationRate
 
bool m_IsInformedNearVictory [2] {}
 

Additional Inherited Members

- Public Types inherited from Battleground
typedef std::set< Player * > SpectatorList
 
typedef std::map< ObjectGuid, ObjectGuid > ToBeTeleportedMap
 
typedef std::map< ObjectGuid, Player * > BattlegroundPlayerMap
 
typedef std::unordered_map< ObjectGuid::LowType, BattlegroundScore * > BattlegroundScoreMap
 
typedef std::unordered_map< ObjectGuid, ArenaLogEntryData > ArenaLogEntryDataMap
 
typedef GuidVector BGObjects
 
typedef GuidVector BGCreatures
 
- Static Public Member Functions inherited from Battleground
static TeamId GetOtherTeamId (TeamId teamId)
 
- Public Attributes inherited from Battleground
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, GuidVector > m_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:233
@ BG_STARTING_EVENT_SECOND
Definition Battleground.h:232
@ BG_STARTING_EVENT_FOURTH
Definition Battleground.h:234
std::uint8_t uint8
Definition Define.h:109
std::uint16_t uint16
Definition Define.h:108
@ TEAM_NEUTRAL
Definition SharedDefines.h:750
int32 m_Mine_Timer
Definition BattlegroundAV.h:1850
uint32 _reputationCaptain
Definition BattlegroundAV.h:1856
uint32 _reputationPerOwnedGraveyard
Definition BattlegroundAV.h:1858
void InitNode(BG_AV_Nodes node, TeamId teamId, bool tower)
Definition BattlegroundAV.cpp:1802
int32 m_Team_Scores[2]
Definition BattlegroundAV.h:1844
bool m_IsInformedNearVictory[2]
Definition BattlegroundAV.h:1864
uint32 _reputationPerOwnedMine
Definition BattlegroundAV.h:1861
uint32 m_CaptainBuffTimer[2]
Definition BattlegroundAV.h:1852
uint32 _reputationBoss
Definition BattlegroundAV.h:1857
uint32 _reputationSurvivingCaptain
Definition BattlegroundAV.h:1859
uint32 _reputationSurvivingTower
Definition BattlegroundAV.h:1860
uint32 m_Mine_Reclaim_Timer[2]
Definition BattlegroundAV.h:1851
uint32 _reputationTower
Definition BattlegroundAV.h:1855
uint32 m_Team_QuestStatus[2][9]
Definition BattlegroundAV.h:1845
TeamId m_Mine_Owner[2]
Definition BattlegroundAV.h:1849
bool m_CaptainAlive[2]
Definition BattlegroundAV.h:1853
BGObjects BgObjects
Definition Battleground.h:546
BGCreatures BgCreatures
Definition Battleground.h:547
uint32 StartMessageIds[BG_STARTING_EVENT_COUNT]
Definition Battleground.h:640

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:1449
const float BG_AV_CreaturePos[AV_CPLACE_MAX][4]
Definition BattlegroundAV.h:851
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:71
#define sObjectMgr
Definition ObjectMgr.h:1731
@ UNIT_FLAG_DISABLE_MOVE
Definition UnitDefines.h:259
#define WORLD_TRIGGER
Definition Unit.h:39
Creature * AddCreature(uint32 entry, uint32 type, float x, float y, float z, float o, uint32 respawntime=0, MotionTransport *transport=nullptr)
Definition Battleground.cpp:1586
Definition Creature.h:47
void setDeathState(DeathState s, bool despawn=false) override
A creature can be in 4 different states: Alive, JustDied, Corpse, and JustRespawned....
Definition Creature.cpp:1972
void Respawn(bool force=false)
Definition Creature.cpp:2043
void SetRespawnDelay(uint32 delay)
Definition Creature.h:297
ObjectGuid::LowType GetSpawnId() const
Definition Creature.h:68
void Initialize()
Definition MotionMaster.cpp:76
uint32 GetEntry() const
Definition Object.h:123
MotionMaster * GetMotionMaster()
Definition Unit.h:1774
void SetUnitFlag(UnitFlags flags)
UnitFlags available in UnitDefines.h.
Definition Unit.h:754
Definition CreatureData.h:370
float wander_distance
Definition CreatureData.h:378

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:1185
BattlegroundScoreMap PlayerScores
Definition Battleground.h:627
LowType GetCounter() const
Definition ObjectGuid.h:149
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:120
Definition BattlegroundAV.h:1708

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

◆ AssaultNode()

void BattlegroundAV::AssaultNode ( BG_AV_Nodes  node,
TeamId  teamId 
)
private
1762{
1763 if (m_Nodes[node].TotalOwnerId == teamId)
1764 {
1765 LOG_FATAL("bg.battleground", "Assaulting team is TotalOwner of node");
1766 ABORT();
1767 }
1768 if (m_Nodes[node].OwnerId == teamId)
1769 {
1770 LOG_FATAL("bg.battleground", "Assaulting team is owner of node");
1771 ABORT();
1772 }
1773 if (m_Nodes[node].State == POINT_DESTROYED)
1774 {
1775 LOG_FATAL("bg.battleground", "Destroyed node is being assaulted");
1776 ABORT();
1777 }
1778 if (m_Nodes[node].State == POINT_ASSAULTED && m_Nodes[node].TotalOwnerId != TEAM_NEUTRAL) //only assault an assaulted node if no totalowner exists
1779 {
1780 LOG_FATAL("bg.battleground", "Assault on an not assaulted node with total owner");
1781 ABORT();
1782 }
1783 //the timer gets another time, if the previous owner was 0 == Neutral
1785 m_Nodes[node].PrevOwnerId = m_Nodes[node].OwnerId;
1786 m_Nodes[node].OwnerId = teamId;
1787 m_Nodes[node].PrevState = m_Nodes[node].State;
1789}
@ POINT_DESTROYED
Definition BattlegroundAV.h:1542
@ POINT_ASSAULTED
Definition BattlegroundAV.h:1541
#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:141
BG_AV_NodeInfo m_Nodes[BG_AV_NODES_MAX]
Definition BattlegroundAV.h:1847
BG_AV_States State
Definition BattlegroundAV.h:1696
TeamId PrevOwnerId
Definition BattlegroundAV.h:1701
uint32 Timer
Definition BattlegroundAV.h:1698
BG_AV_States PrevState
Definition BattlegroundAV.h:1697
TeamId OwnerId
Definition BattlegroundAV.h:1700

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:140
#define sCreatureTextMgr
Definition CreatureTextMgr.h:123
#define LOG_DEBUG(filterType__,...)
Definition Log.h:157
uint32 urand(uint32 min, uint32 max)
Definition Random.cpp:44
@ LANG_UNIVERSAL
Definition SharedDefines.h:723
@ TEAM_ALLIANCE
Definition SharedDefines.h:748
@ TEAM_HORDE
Definition SharedDefines.h:749
uint8 GetMineString(uint8 mine, TeamId teamId)
Definition BattlegroundAV.cpp:1737
Creature * AddAVCreature(uint16 cinfoid, uint16 type)
Definition BattlegroundAV.cpp:309
void SendMineWorldStates(uint32 mine)
Definition BattlegroundAV.cpp:1196
void YellToAll(Creature *creature, char const *text, uint32 language)
Definition Battleground.cpp:752
bool DelCreature(uint32 type)
Definition Battleground.cpp:1649
Creature * GetBGCreature(uint32 type)
Definition Battleground.cpp:1557
void PlaySoundToAll(uint32 soundId)
Definition Battleground.cpp:733
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr, Milliseconds delay=0ms)
Causes the creature to talk/say the text assigned to their entry in the creature_text database table.
Definition CreatureAI.cpp:67
CreatureAI * AI() const
Definition Creature.h:143

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
1814{
1815 ASSERT(m_Nodes[node].TotalOwnerId == teamId);
1816 ASSERT(m_Nodes[node].OwnerId != teamId);
1817 ASSERT(m_Nodes[node].State != POINT_CONTROLLED && m_Nodes[node].State != POINT_DESTROYED);
1818 m_Nodes[node].PrevOwnerId = m_Nodes[node].OwnerId;
1819 m_Nodes[node].OwnerId = teamId;
1820 m_Nodes[node].PrevState = m_Nodes[node].State;
1822 m_Nodes[node].Timer = 0;
1823}
@ POINT_CONTROLLED
Definition BattlegroundAV.h:1543

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
840{
841 uint32 c_place = AV_CPLACE_DEFENSE_STORM_AID + (4 * node);
842 for (uint8 i = 0; i < 4; i++)
843 {
844 if (BgCreatures[c_place + i])
845 {
846 DelCreature(c_place + i);
847 }
848 }
849
850 //spiritguide
851 if (!ignoreSpiritGuide && !IsTower(node))
852 {
853 DelCreature(node);
854 }
855
856 //remove bonus honor aura trigger creature when node is lost
857 if (node < BG_AV_NODES_MAX)//fail safe
858 DelCreature(static_cast<uint32>(node) + AV_CPLACE_TRIGGER01);//nullptr checks are in DelCreature!
859}
@ AV_CPLACE_TRIGGER01
Definition BattlegroundAV.h:820
@ AV_CPLACE_DEFENSE_STORM_AID
Definition BattlegroundAV.h:769
bool IsTower(BG_AV_Nodes node)
Definition BattlegroundAV.h:1825

References AV_CPLACE_DEFENSE_STORM_AID, AV_CPLACE_TRIGGER01, 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:747
static bool IsBGWeekend(BattlegroundTypeId bgTypeId)
Definition BattlegroundMgr.cpp:909
void RewardReputationToTeam(uint32 factionId, uint32 reputation, TeamId teamId)
Definition Battleground.cpp:769
void EndBattleground(PvPTeamId winnerTeamId)
Definition Battleground.cpp:820
uint32 GetBonusHonorFromKill(uint32 kills) const
Definition Battleground.cpp:1019
void RewardHonorToTeam(uint32 honor, TeamId teamId)
Definition Battleground.cpp:762
BattlegroundTypeId GetBgTypeID(bool GetRandom=false) const
Definition Battleground.h:330

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
1018{
1020
1021 BG_AV_Nodes node = GetNodeThroughObject(object);
1022 TeamId prevOwnerId = m_Nodes[node].OwnerId;
1023 TeamId teamId = player->GetTeamId();
1024 LOG_DEBUG("bg.battleground", "bg_av: player assaults point object {} node {}", object, node);
1025 if (prevOwnerId == teamId || teamId == m_Nodes[node].TotalOwnerId)
1026 return; //surely a gm used this object
1027
1028 if (node == BG_AV_NODES_SNOWFALL_GRAVE) //snowfall is a bit special in capping + it gets eyecandy stuff
1029 {
1030 if (object == BG_AV_OBJECT_FLAG_N_SNOWFALL_GRAVE) //initial capping
1031 {
1032 if (!(prevOwnerId == TEAM_NEUTRAL && m_Nodes[node].TotalOwnerId == TEAM_NEUTRAL))
1033 return;
1034
1035 if (teamId == TEAM_ALLIANCE)
1037 else
1040 }
1041 else if (m_Nodes[node].TotalOwnerId == TEAM_NEUTRAL) //recapping, when no team owns this node realy
1042 {
1043 if (!(m_Nodes[node].State != POINT_CONTROLLED))
1044 return;
1045
1046 if (teamId == TEAM_ALLIANCE)
1047 SpawnBGObject(object - 11, RESPAWN_IMMEDIATELY);
1048 else
1049 SpawnBGObject(object + 11, RESPAWN_IMMEDIATELY);
1050 }
1051 //eyecandy
1052 uint32 spawn, despawn;
1053 if (teamId == TEAM_ALLIANCE)
1054 {
1057 }
1058 else
1059 {
1062 }
1063 for (uint8 i = 0; i < 4; i++)
1064 {
1065 SpawnBGObject(despawn + i, RESPAWN_ONE_DAY);
1067 }
1068 }
1069
1070 // xinef: moved here, assure that no call to m_Nodes is used in IF statement bellow as it is modified
1071 AssaultNode(node, teamId);
1072
1073 //if snowfall gots capped it can be handled like all other graveyards
1074 if (m_Nodes[node].TotalOwnerId != TEAM_NEUTRAL)
1075 {
1076 ASSERT(prevOwnerId != TEAM_NEUTRAL);
1077 if (teamId == TEAM_ALLIANCE)
1078 SpawnBGObject(object - 22, RESPAWN_IMMEDIATELY);
1079 else
1080 SpawnBGObject(object + 22, RESPAWN_IMMEDIATELY);
1081
1082 bool ignoreSpiritGuide = false;
1083 if (IsTower(node))
1084 {
1085 //spawning/despawning of bigflag+aura
1090 }
1091 else
1092 {
1093 //spawning/despawning of aura
1095 SpawnBGObject(static_cast<uint8>(BG_AV_OBJECT_AURA_A_FIRSTAID_STATION) + prevOwnerId + 3 * node, RESPAWN_ONE_DAY); //teeamaura despawn
1096
1097 ignoreSpiritGuide = true;
1098
1099 _reviveEvents.AddEventAtOffset([this, node]()
1100 {
1102
1103 if (!IsTower(node))
1104 DelCreature(node); // Delete spirit healer
1105 }, 500ms);
1106 }
1107
1108 DePopulateNode(node, ignoreSpiritGuide);
1109 }
1110
1111 SpawnBGObject(object, RESPAWN_ONE_DAY); //delete old banner
1112 // xinef: change here is too late, AssaultNode(node, team);
1114
1115 if (Creature* creature = GetBGCreature(AV_CPLACE_HERALD))
1116 creature->AI()->Talk(GetAttackString(node, teamId));
1117
1118 //update the statistic for the assaulting player
1120
1122}
@ 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:861
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:1533
void DePopulateNode(BG_AV_Nodes node, bool ignoreSpiritGuid=false)
Definition BattlegroundAV.cpp:839
void UpdateNodeWorldState(BG_AV_Nodes node)
Definition BattlegroundAV.cpp:1187
void AssaultNode(BG_AV_Nodes node, TeamId teamId)
Definition BattlegroundAV.cpp:1761
void SpawnBGObject(uint32 type, uint32 respawntime, uint32 forceRespawnDelay=0)
Definition Battleground.cpp:1566
void RelocateDeadPlayers(ObjectGuid queueIndex)
Relocate all players in ReviveQueue to the closest graveyard.
Definition Battleground.cpp:1440
EventProcessor _reviveEvents
Definition Battleground.h:653
BattlegroundStatus GetStatus() const
Definition Battleground.h:333
void AddEventAtOffset(BasicEvent *event, Milliseconds offset, uint8 eventGroup=0)
Definition EventProcessor.h:108
void KilledMonsterCredit(uint32 entry, ObjectGuid guid=ObjectGuid::Empty)
Definition PlayerQuest.cpp:2001
TeamId GetTeamId(bool original=false) const
Definition Player.h:2140

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.

925{
927 return;
928 int32 object = GetObjectType(gameObject->GetGUID());
929 if (object < 0)
930 return;
931 switch (gameObject->GetEntry())
932 {
938 EventPlayerAssaultsPoint(source, object);
939 break;
944 EventPlayerDefendsPoint(source, object);
945 break;
946 default:
947 break;
948 }
949}
@ 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:1017
void EventPlayerDefendsPoint(Player *player, uint32 object)
Definition BattlegroundAV.cpp:951
int32 GetObjectType(ObjectGuid guid)
Definition Battleground.cpp:1846

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

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:883
void UpdateScore(TeamId teamId, int16 points)
Definition BattlegroundAV.cpp:276
void DestroyNode(BG_AV_Nodes node)
Definition BattlegroundAV.cpp:1791

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.

1125{
1126 bool stateok;
1127 packet.Worldstates.reserve(7*2*2 + 8*2*2 + 5);
1128 //graveyards
1130 {
1131 for (uint8 j = 1; j <= 3; j += 2)
1132 {
1133 //j=1=assaulted j=3=controled
1134 stateok = (m_Nodes[i].State == j);
1135 packet.Worldstates.emplace_back(BG_AV_NodeWorldStates[i][GetWorldStateType(j, TEAM_ALLIANCE)], (m_Nodes[i].OwnerId == TEAM_ALLIANCE && stateok) ? 1 : 0);
1136 packet.Worldstates.emplace_back(BG_AV_NodeWorldStates[i][GetWorldStateType(j, TEAM_HORDE)], (m_Nodes[i].OwnerId == TEAM_HORDE && stateok) ? 1 : 0);
1137 }
1138 }
1139
1140 //towers
1142 for (uint8 j = 1; j <= 3; j += 2)
1143 {
1144 //j=1=assaulted j=3=controled //i dont have j=2=destroyed cause destroyed is the same like enemy-team controll
1145 stateok = (m_Nodes[i].State == j || (m_Nodes[i].State == POINT_DESTROYED && j == 3));
1146 packet.Worldstates.emplace_back(BG_AV_NodeWorldStates[i][GetWorldStateType(j, TEAM_ALLIANCE)], (m_Nodes[i].OwnerId == TEAM_ALLIANCE && stateok) ? 1 : 0);
1147 packet.Worldstates.emplace_back(BG_AV_NodeWorldStates[i][GetWorldStateType(j, TEAM_HORDE)], (m_Nodes[i].OwnerId == TEAM_HORDE && stateok) ? 1 : 0);
1148 }
1149 if (m_Nodes[BG_AV_NODES_SNOWFALL_GRAVE].OwnerId == TEAM_NEUTRAL) //cause neutral teams aren't handled generic
1150 {
1152 }
1153
1156
1159
1162}
const uint32 BG_AV_NodeWorldStates[16][4]
Definition BattlegroundAV.h:1554
#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:1164
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
1534{
1535 uint8 strId = 0;
1536 switch (node)
1537 {
1539 if (teamId == TEAM_ALLIANCE)
1541 else
1543 break;
1545 if (teamId == TEAM_ALLIANCE)
1547 else
1549 break;
1551 if (teamId == TEAM_ALLIANCE)
1553 else
1555 break;
1557 if (teamId == TEAM_ALLIANCE)
1559 else
1561 break;
1563 if (teamId == TEAM_ALLIANCE)
1565 else
1567 break;
1569 if (teamId == TEAM_ALLIANCE)
1571 else
1573 break;
1575 if (teamId == TEAM_ALLIANCE)
1577 else
1579 break;
1581 if (teamId == TEAM_ALLIANCE)
1583 else
1585 break;
1587 if (teamId == TEAM_ALLIANCE)
1589 else
1591 break;
1593 if (teamId == TEAM_ALLIANCE)
1595 else
1597 break;
1599 if (teamId == TEAM_ALLIANCE)
1601 else
1603 break;
1605 if (teamId == TEAM_ALLIANCE)
1607 else
1609 break;
1611 if (teamId == TEAM_ALLIANCE)
1613 else
1615 break;
1617 if (teamId == TEAM_ALLIANCE)
1619 else
1621 break;
1623 if (teamId == TEAM_ALLIANCE)
1625 else
1627 break;
1628 default:
1629 break;
1630 }
1631
1632 return strId;
1633}
@ 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:1656
@ AV_TEXT_A_HERALD_ICEBLOOD_GRAVEYARD_ATTACK
Definition BattlegroundAV.h:1683
@ AV_TEXT_A_HERALD_TOWER_POINT_ATTACK
Definition BattlegroundAV.h:1662
@ AV_TEXT_H_HERALD_ICEBLOOD_GRAVEYARD_ATTACK
Definition BattlegroundAV.h:1681
@ AV_TEXT_A_HERALD_FROSTWOLF_GRAVEYARD_ATTACK
Definition BattlegroundAV.h:1633
@ AV_TEXT_H_HERALD_ICEBLOOD_TOWER_ATTACK
Definition BattlegroundAV.h:1664
@ AV_TEXT_H_HERALD_DUN_BALDAR_SOUTH_ATTACK
Definition BattlegroundAV.h:1636
@ AV_TEXT_H_HERALD_TOWER_POINT_ATTACK
Definition BattlegroundAV.h:1660
@ AV_TEXT_H_HERALD_WEST_FROSTWOLF_TOWER_ATTACK
Definition BattlegroundAV.h:1652
@ AV_TEXT_A_HERALD_WEST_FROSTWOLF_TOWER_ATTACK
Definition BattlegroundAV.h:1654
@ AV_TEXT_A_HERALD_ICEWING_BUNKER_ATTACK
Definition BattlegroundAV.h:1646
@ AV_TEXT_H_HERALD_STONEHEARTH_GRAVEYARD_ATTACK
Definition BattlegroundAV.h:1677
@ AV_TEXT_A_HERALD_FROSTWOLF_RELIEF_HUT_ATTACK
Definition BattlegroundAV.h:1675
@ AV_TEXT_A_HERALD_EAST_FROSTWOLF_TOWER_ATTACK
Definition BattlegroundAV.h:1658
@ AV_TEXT_H_HERALD_FROSTWOLF_RELIEF_HUT_ATTACK
Definition BattlegroundAV.h:1673
@ AV_TEXT_A_HERALD_DUN_BALDAR_SOUTH_ATTACK
Definition BattlegroundAV.h:1638
@ AV_TEXT_A_HERALD_STONEHEARTH_GRAVEYARD_ATTACK
Definition BattlegroundAV.h:1679
@ AV_TEXT_A_HERALD_DUN_BALDAR_NORTH_ATTACK
Definition BattlegroundAV.h:1642
@ AV_TEXT_A_HERALD_ICEBLOOD_TOWER_ATTACK
Definition BattlegroundAV.h:1666
@ AV_TEXT_H_HERALD_STORMPIKE_AID_STATION_ATTACK
Definition BattlegroundAV.h:1669
@ AV_TEXT_H_HERALD_DUN_BALDAR_NORTH_ATTACK
Definition BattlegroundAV.h:1640
@ AV_TEXT_A_HERALD_STORMPIKE_GRAVEYARD_ATTACK
Definition BattlegroundAV.h:1625
@ AV_TEXT_A_HERALD_STORMPIKE_AID_STATION_ATTACK
Definition BattlegroundAV.h:1671
@ AV_TEXT_A_HERALD_SNOWFALL_GRAVEYARD_ATTACK
Definition BattlegroundAV.h:1629
@ AV_TEXT_H_HERALD_FROSTWOLF_GRAVEYARD_ATTACK
Definition BattlegroundAV.h:1635
@ AV_TEXT_A_HERALD_STONEHEARTH_BUNKER_ATTACK
Definition BattlegroundAV.h:1650
@ AV_TEXT_H_HERALD_SNOWFALL_GRAVEYARD_ATTACK
Definition BattlegroundAV.h:1631
@ AV_TEXT_H_HERALD_STORMPIKE_GRAVEYARD_ATTACK
Definition BattlegroundAV.h:1627
@ AV_TEXT_H_HERALD_STONEHEARTH_BUNKER_ATTACK
Definition BattlegroundAV.h:1648
@ AV_TEXT_H_HERALD_ICEWING_BUNKER_ATTACK
Definition BattlegroundAV.h:1644

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_ICEBLOOD_TOWER_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().

◆ GetAVNodeInfo()

BG_AV_NodeInfo const & BattlegroundAV::GetAVNodeInfo ( uint32  node) const
inline
1800 {
1801 ASSERT(node < BG_AV_NODES_MAX);
1802 return m_Nodes[node];
1803 }

References ASSERT, and BG_AV_NODES_MAX.

◆ GetClosestGraveyard()

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

Reimplemented from Battleground.

1214{
1215 GraveyardStruct const* entry = nullptr;
1216 float dist = 0;
1217 float minDist = 0;
1218 float x, y;
1219
1220 player->GetPosition(x, y);
1221
1222 GraveyardStruct const* pGraveyard = sGraveyard->GetGraveyard(BG_AV_GraveyardIds[player->GetTeamId() + 7]);
1223 minDist = (pGraveyard->x - x) * (pGraveyard->x - x) + (pGraveyard->y - y) * (pGraveyard->y - y);
1224
1226 if (m_Nodes[i].OwnerId == player->GetTeamId() && m_Nodes[i].State == POINT_CONTROLLED)
1227 {
1228 entry = sGraveyard->GetGraveyard(BG_AV_GraveyardIds[i]);
1229 if (entry)
1230 {
1231 dist = (entry->x - x) * (entry->x - x) + (entry->y - y) * (entry->y - y);
1232 if (dist < minDist)
1233 {
1234 minDist = dist;
1235 pGraveyard = entry;
1236 }
1237 }
1238 }
1239 return pGraveyard;
1240}
const uint32 BG_AV_GraveyardIds[9]
Definition BattlegroundAV.h:1517
#define sGraveyard
Definition GameGraveyard.h:76
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
1636{
1637 uint8 strId = 0;
1638 switch (node)
1639 {
1641 if (teamId == TEAM_ALLIANCE)
1643 else
1645 break;
1647 if (teamId == TEAM_ALLIANCE)
1649 else
1651 break;
1653 if (teamId == TEAM_ALLIANCE)
1655 else
1657 break;
1659 if (teamId == TEAM_ALLIANCE)
1661 else
1663 break;
1665 if (teamId == TEAM_ALLIANCE)
1667 else
1669 break;
1671 if (teamId == TEAM_ALLIANCE)
1673 else
1675 break;
1677 if (teamId == TEAM_ALLIANCE)
1679 else
1681 break;
1683 if (teamId == TEAM_ALLIANCE)
1685 else
1687 break;
1689 if (teamId == TEAM_ALLIANCE)
1691 else
1693 break;
1695 if (teamId == TEAM_ALLIANCE)
1697 else
1699 break;
1701 if (teamId == TEAM_ALLIANCE)
1703 else
1705 break;
1707 if (teamId == TEAM_ALLIANCE)
1709 else
1711 break;
1713 if (teamId == TEAM_ALLIANCE)
1715 else
1717 break;
1719 if (teamId == TEAM_ALLIANCE)
1721 else
1723 break;
1725 if (teamId == TEAM_ALLIANCE)
1727 else
1729 break;
1730 default:
1731 break;
1732 }
1733
1734 return strId;
1735}
@ AV_TEXT_H_HERALD_TOWER_POINT_TAKEN
Definition BattlegroundAV.h:1661
@ AV_TEXT_A_HERALD_WEST_FROSTWOLF_TOWER_TAKEN
Definition BattlegroundAV.h:1655
@ AV_TEXT_A_HERALD_ICEBLOOD_GRAVEYARD_TAKEN
Definition BattlegroundAV.h:1682
@ AV_TEXT_H_HERALD_STORMPIKE_GRAVEYARD_TAKEN
Definition BattlegroundAV.h:1626
@ AV_TEXT_H_HERALD_SNOWFALL_GRAVEYARD_TAKEN
Definition BattlegroundAV.h:1630
@ AV_TEXT_H_HERALD_ICEWING_BUNKER_TAKEN
Definition BattlegroundAV.h:1645
@ AV_TEXT_H_HERALD_STONEHEARTH_GRAVEYARD_TAKEN
Definition BattlegroundAV.h:1676
@ AV_TEXT_H_HERALD_DUN_BALDAR_NORTH_TAKEN
Definition BattlegroundAV.h:1641
@ AV_TEXT_A_HERALD_ICEBLOOD_TOWER_TAKEN
Definition BattlegroundAV.h:1667
@ AV_TEXT_H_HERALD_STONEHEARTH_BUNKER_TAKEN
Definition BattlegroundAV.h:1649
@ AV_TEXT_A_HERALD_TOWER_POINT_TAKEN
Definition BattlegroundAV.h:1663
@ AV_TEXT_H_HERALD_EAST_FROSTWOLF_TOWER_TAKEN
Definition BattlegroundAV.h:1657
@ AV_TEXT_H_HERALD_STORMPIKE_AID_STATION_TAKEN
Definition BattlegroundAV.h:1668
@ AV_TEXT_H_HERALD_FROSTWOLF_GRAVEYARD_TAKEN
Definition BattlegroundAV.h:1634
@ AV_TEXT_A_HERALD_STONEHEARTH_GRAVEYARD_TAKEN
Definition BattlegroundAV.h:1678
@ AV_TEXT_A_HERALD_SNOWFALL_GRAVEYARD_TAKEN
Definition BattlegroundAV.h:1628
@ AV_TEXT_A_HERALD_ICEWING_BUNKER_TAKEN
Definition BattlegroundAV.h:1647
@ AV_TEXT_A_HERALD_DUN_BALDAR_SOUTH_TAKEN
Definition BattlegroundAV.h:1639
@ AV_TEXT_H_HERALD_ICEBLOOD_GRAVEYARD_TAKEN
Definition BattlegroundAV.h:1680
@ AV_TEXT_A_HERALD_FROSTWOLF_GRAVEYARD_TAKEN
Definition BattlegroundAV.h:1632
@ AV_TEXT_H_HERALD_ICEBLOOD_TOWER_TAKEN
Definition BattlegroundAV.h:1665
@ AV_TEXT_H_HERALD_FROSTWOLF_RELIEF_HUT_TAKEN
Definition BattlegroundAV.h:1672
@ AV_TEXT_A_HERALD_DUN_BALDAR_NORTH_TAKEN
Definition BattlegroundAV.h:1643
@ AV_TEXT_A_HERALD_STORMPIKE_GRAVEYARD_TAKEN
Definition BattlegroundAV.h:1624
@ AV_TEXT_A_HERALD_EAST_FROSTWOLF_TOWER_TAKEN
Definition BattlegroundAV.h:1659
@ AV_TEXT_H_HERALD_WEST_FROSTWOLF_TOWER_TAKEN
Definition BattlegroundAV.h:1653
@ AV_TEXT_A_HERALD_FROSTWOLF_RELIEF_HUT_TAKEN
Definition BattlegroundAV.h:1674
@ AV_TEXT_A_HERALD_STONEHEARTH_BUNKER_TAKEN
Definition BattlegroundAV.h:1651
@ AV_TEXT_H_HERALD_DUN_BALDAR_SOUTH_TAKEN
Definition BattlegroundAV.h:1637
@ AV_TEXT_A_HERALD_STORMPIKE_AID_STATION_TAKEN
Definition BattlegroundAV.h:1670

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_ICEBLOOD_TOWER_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().

◆ GetMineOwner()

TeamId BattlegroundAV::GetMineOwner ( uint8  index) const
inline
1805{ return index < PVP_TEAMS_COUNT ? m_Mine_Owner[index] : TEAM_NEUTRAL; }
uint8 constexpr PVP_TEAMS_COUNT
Definition SharedDefines.h:3701

References PVP_TEAMS_COUNT, and TEAM_NEUTRAL.

◆ GetMineString()

uint8 BattlegroundAV::GetMineString ( uint8  mine,
TeamId  teamId 
)
private
1738{
1739 uint8 strId = 0;
1740 switch (mineId)
1741 {
1742 case AV_NORTH_MINE:
1743 if (teamId == TEAM_ALLIANCE)
1745 else
1747 break;
1748 case AV_SOUTH_MINE:
1749 if (teamId == TEAM_ALLIANCE)
1751 else
1753 break;
1754 default:
1755 break;
1756 }
1757
1758 return strId;
1759}
@ AV_TEXT_H_HERALD_COLDTOOTH_MINE_TAKEN
Definition BattlegroundAV.h:1686
@ AV_TEXT_H_HERALD_IRONDEEP_MINE_TAKEN
Definition BattlegroundAV.h:1687
@ AV_TEXT_A_HERALD_COLDTOOTH_MINE_TAKEN
Definition BattlegroundAV.h:1684
@ AV_TEXT_A_HERALD_IRONDEEP_MINE_TAKEN
Definition BattlegroundAV.h:1685

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
862{
863 LOG_DEBUG("bg.battleground", "bg_AV getnodethroughobject {}", object);
865 return BG_AV_Nodes(object);
867 return BG_AV_Nodes(object - 11);
869 return BG_AV_Nodes(object - 7);
871 return BG_AV_Nodes(object - 22);
873 return BG_AV_Nodes(object - 33);
875 return BG_AV_Nodes(object - 29);
878 LOG_ERROR("bg.battleground", "BattlegroundAV: ERROR! GetPlace got a wrong object :(");
879 ABORT();
880 return BG_AV_Nodes(0);
881}
@ 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
884{
885 //this function is the counterpart to GetNodeThroughObject()
886 LOG_DEBUG("bg.battleground", "bg_AV GetObjectThroughNode {}", node);
887 if (m_Nodes[node].OwnerId == TEAM_ALLIANCE)
888 {
889 if (m_Nodes[node].State == POINT_ASSAULTED)
890 {
891 if (node <= BG_AV_NODES_FROSTWOLF_HUT)
892 return node + 11;
894 return node + 7;
895 }
896 else if (m_Nodes[node].State == POINT_CONTROLLED)
898 return node;
899 }
900 else if (m_Nodes[node].OwnerId == TEAM_HORDE)
901 {
902 if (m_Nodes[node].State == POINT_ASSAULTED)
903 {
905 return node + 22;
906 }
907 else if (m_Nodes[node].State == POINT_CONTROLLED)
908 {
909 if (node <= BG_AV_NODES_FROSTWOLF_HUT)
910 return node + 33;
912 return node + 29;
913 }
914 }
915 else if (m_Nodes[node].OwnerId == TEAM_NEUTRAL)
917 LOG_ERROR("bg.battleground", "BattlegroundAV: Error! GetPlaceNode couldn't resolve node {}", node);
918 ABORT();
919 return 0;
920}

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.

1907{
1909 return TEAM_ALLIANCE;
1910
1912}
uint32 GetTeamScore(TeamId teamId) const
Definition Battleground.cpp:1886
virtual TeamId GetPrematureWinner()
Definition Battleground.cpp:428

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

◆ GetWorldStateType()

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

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:2032
void LeaveBattleground(Battleground *bg=nullptr)
Definition Player.cpp:11522
void SendAreaTriggerMessage(std::string_view str)
Definition WorldSession.cpp:289

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:1768

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:1689
@ AV_TEXT_HERALD_FROSTWOLF_GENERAL_DEAD
Definition BattlegroundAV.h:1688
@ 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:738

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, uint32(1 * _avReputationRate), 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, uint32(1 * _avReputationRate), 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, uint32(1 * _avReputationRate), 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:1598
@ AV_QUEST_H_SCRAPS1
Definition BattlegroundAV.h:1592
@ AV_QUEST_H_BOSS1
Definition BattlegroundAV.h:1601
@ AV_QUEST_H_RIDER_TAME
Definition BattlegroundAV.h:1611
@ AV_QUEST_A_COMMANDER1
Definition BattlegroundAV.h:1594
@ AV_QUEST_A_RIDER_HIDE
Definition BattlegroundAV.h:1608
@ AV_QUEST_A_SCRAPS1
Definition BattlegroundAV.h:1590
@ AV_QUEST_H_COMMANDER1
Definition BattlegroundAV.h:1595
@ AV_QUEST_A_RIDER_TAME
Definition BattlegroundAV.h:1610
@ AV_QUEST_H_COMMANDER3
Definition BattlegroundAV.h:1599
@ AV_QUEST_H_NEAR_MINE
Definition BattlegroundAV.h:1605
@ AV_QUEST_A_COMMANDER2
Definition BattlegroundAV.h:1596
@ AV_QUEST_A_OTHER_MINE
Definition BattlegroundAV.h:1606
@ AV_QUEST_A_NEAR_MINE
Definition BattlegroundAV.h:1604
@ AV_QUEST_H_OTHER_MINE
Definition BattlegroundAV.h:1607
@ AV_QUEST_A_SCRAPS2
Definition BattlegroundAV.h:1591
@ AV_QUEST_H_BOSS2
Definition BattlegroundAV.h:1603
@ AV_QUEST_A_BOSS1
Definition BattlegroundAV.h:1600
@ AV_QUEST_H_COMMANDER2
Definition BattlegroundAV.h:1597
@ AV_QUEST_H_RIDER_HIDE
Definition BattlegroundAV.h:1609
@ AV_QUEST_A_BOSS2
Definition BattlegroundAV.h:1602
@ AV_QUEST_H_SCRAPS2
Definition BattlegroundAV.h:1593
float _avReputationRate
Definition BattlegroundAV.h:1862

References _avReputationRate, 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
1863{
1864 if (teamId == TEAM_ALLIANCE)
1865 {
1866 for (BG_AV_Nodes i = BG_AV_NODES_DUNBALDAR_SOUTH; i <= BG_AV_NODES_STONEHEART_BUNKER; ++i) // alliance towers controlled
1867 {
1868 if (m_Nodes[i].State == POINT_CONTROLLED)
1869 {
1870 if (m_Nodes[i].OwnerId != TEAM_ALLIANCE)
1871 return false;
1872 }
1873 else
1874 return false;
1875 }
1876
1877 for (BG_AV_Nodes i = BG_AV_NODES_ICEBLOOD_TOWER; i <= BG_AV_NODES_FROSTWOLF_WTOWER; ++i) // horde towers destroyed
1878 if (m_Nodes[i].State != POINT_DESTROYED)
1879 return false;
1880
1881 return m_CaptainAlive[0];
1882 }
1883 else if (teamId == TEAM_HORDE)
1884 {
1885 for (BG_AV_Nodes i = BG_AV_NODES_ICEBLOOD_TOWER; i <= BG_AV_NODES_FROSTWOLF_WTOWER; ++i) // horde towers controlled
1886 {
1887 if (m_Nodes[i].State == POINT_CONTROLLED)
1888 {
1889 if (m_Nodes[i].OwnerId != TEAM_HORDE)
1890 return false;
1891 }
1892 else
1893 return false;
1894 }
1895
1896 for (BG_AV_Nodes i = BG_AV_NODES_DUNBALDAR_SOUTH; i <= BG_AV_NODES_STONEHEART_BUNKER; ++i) // alliance towers destroyed
1897 if (m_Nodes[i].State != POINT_DESTROYED)
1898 return false;
1899
1900 return m_CaptainAlive[1];
1901 }
1902
1903 return false;
1904}

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
1854{
1855 for (auto& mine : m_Mine_Owner)
1856 if (mine != teamId)
1857 return false;
1858
1859 return true;
1860}

References m_Mine_Owner.

Referenced by achievement_everything_counts::OnCheck().

◆ IsCaptainAlive()

bool BattlegroundAV::IsCaptainAlive ( uint8  index) const
inline
1804{ return index < PVP_TEAMS_COUNT && m_CaptainAlive[index]; }

References PVP_TEAMS_COUNT.

◆ 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 uint32 const triggerType = static_cast<uint32>(node) + AV_CPLACE_TRIGGER01;
814 Creature* trigger = GetBgMap()->GetCreature(BgCreatures[triggerType]);
815 if (!trigger)
816 {
817 trigger = AddCreature(WORLD_TRIGGER,
818 triggerType,
819 BG_AV_CreaturePos[triggerType][0],
820 BG_AV_CreaturePos[triggerType][1],
821 BG_AV_CreaturePos[triggerType][2],
822 BG_AV_CreaturePos[triggerType][3]);
823 }
824
825 //add bonus honor aura trigger creature when node is accupied
826 //cast bonus aura (+50% honor in 25yards)
827 //aura should only apply to players who have accupied the node, set correct faction for trigger
828 if (trigger)
829 {
830 if (ownerId != TEAM_ALLIANCE && ownerId != TEAM_HORDE)//node can be neutral, remove trigger
831 {
832 DelCreature(triggerType);
833 return;
834 }
836 trigger->CastSpell(trigger, SPELL_HONORABLE_DEFENDER_25Y, false);
837 }
838}
@ 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:194
@ FACTION_HORDE_GENERIC
Definition SharedDefines.h:193
bool AddSpiritGuide(uint32 type, float x, float y, float z, float o, TeamId teamId)
Definition Battleground.cpp:1688
BattlegroundMap * GetBgMap() const
Definition Battleground.h:446
Creature * GetCreature(ObjectGuid const &guid)
Definition Map.cpp:2442
void SetFaction(uint32 faction)
Definition Unit.cpp:6886
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:1378

References AddAVCreature(), Battleground::AddCreature(), Battleground::AddSpiritGuide(), AV_CPLACE_DEFENSE_STORM_AID, AV_CPLACE_TRIGGER01, 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 {
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_H_CAPTAIN); //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:1535
@ AV_BUFF_A_CAPTAIN
Definition BattlegroundAV.h:1534
@ AV_MINE_TICK_TIMER
Definition BattlegroundAV.h:109
@ AV_CPLACE_A_CAPTAIN
Definition BattlegroundAV.h:846
@ AV_CPLACE_H_CAPTAIN
Definition BattlegroundAV.h:847
@ LANG_COMMON
Definition SharedDefines.h:728
@ LANG_ORCISH
Definition SharedDefines.h:724
Timer
Definition boss_solakar_flamewreath.cpp:29
void EventPlayerDestroyedPoint(BG_AV_Nodes node)
Definition BattlegroundAV.cpp:637
uint8 getGender() const
Definition Unit.h:854

References AV_BUFF_A_CAPTAIN, AV_BUFF_H_CAPTAIN, AV_CPLACE_A_CAPTAIN, AV_CPLACE_H_CAPTAIN, 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:1533
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Definition Unit.cpp:4969

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

◆ ResetBGSubclass()

void BattlegroundAV::ResetBGSubclass ( )
overridevirtual

Reimplemented from Battleground.

1826{
1827 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
1828 {
1829 for (uint8 j = 0; j < 9; j++)
1830 m_Team_QuestStatus[i][j] = 0;
1832 m_IsInformedNearVictory[i] = false;
1833 m_CaptainAlive[i] = true;
1834 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
1836 }
1837 for (BG_AV_Nodes i = BG_AV_NODES_FIRSTAID_STATION; i <= BG_AV_NODES_STONEHEART_GRAVE; ++i) //alliance graves
1838 InitNode(i, TEAM_ALLIANCE, false);
1839 for (BG_AV_Nodes i = BG_AV_NODES_DUNBALDAR_SOUTH; i <= BG_AV_NODES_STONEHEART_BUNKER; ++i) //alliance towers
1840 InitNode(i, TEAM_ALLIANCE, true);
1841 for (BG_AV_Nodes i = BG_AV_NODES_ICEBLOOD_GRAVE; i <= BG_AV_NODES_FROSTWOLF_HUT; ++i) //horde graves
1842 InitNode(i, TEAM_HORDE, false);
1843 for (BG_AV_Nodes i = BG_AV_NODES_ICEBLOOD_TOWER; i <= BG_AV_NODES_FROSTWOLF_WTOWER; ++i) //horde towers
1844 InitNode(i, TEAM_HORDE, true);
1845 InitNode(BG_AV_NODES_SNOWFALL_GRAVE, TEAM_NEUTRAL, false); //give snowfall neutral owner
1846
1848 for (uint16 i = 0; i < static_cast<uint16>(AV_CPLACE_MAX) + AV_STATICCPLACE_MAX; i++)
1849 if (BgCreatures[i])
1850 DelCreature(i);
1851}

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

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.

1243{
1245
1246 if (sBattlegroundMgr->IsBGWeekend(GetBgTypeID(true)))
1247 {
1255 }
1256 else
1257 {
1260 // Special case: This value comes from another config setting, but we still apply our multiplier
1266 }
1267
1268 // Create starting objects
1269
1270 //spawn node-objects
1272 {
1274 {
1275 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)
1276 || !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)
1277 || !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)
1278 || !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)
1279 //aura
1283 {
1284 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!2");
1285 return false;
1286 }
1287 }
1288 else //towers
1289 {
1290 if (i <= BG_AV_NODES_STONEHEART_BUNKER) //alliance towers
1291 {
1292 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)
1293 || !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)
1294 || !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)
1295 || !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)
1298 {
1299 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!3");
1300 return false;
1301 }
1302 }
1303 else //horde towers
1304 {
1305 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)
1306 || !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)
1307 || !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)
1308 || !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)
1311 {
1312 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!4");
1313 return false;
1314 }
1315 }
1316 for (uint8 j = 0; j <= 9; j++) //burning aura
1317 {
1319 {
1320 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!5.{}", i);
1321 return false;
1322 }
1323 }
1324 }
1325 }
1326 for (uint8 i = 0; i < 2; i++) //burning aura for buildings
1327 {
1328 for (uint8 j = 0; j <= 9; j++)
1329 {
1330 if (j < 5)
1331 {
1333 {
1334 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!6.{}", i);
1335 return false;
1336 }
1337 }
1338 else
1339 {
1341 {
1342 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!7.{}", i);
1343 return false;
1344 }
1345 }
1346 }
1347 }
1349 {
1351 {
1352 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some mine supplies Battleground not created!7.5.{}", i);
1353 return false;
1354 }
1355 }
1357 {
1359 {
1360 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some mine supplies Battleground not created!7.6.{}", i);
1361 return false;
1362 }
1363 }
1364
1366 {
1367 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!8");
1368 return false;
1369 }
1370 for (uint8 i = 0; i < 4; i++)
1371 {
1376 {
1377 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!9.{}", i);
1378 return false;
1379 }
1380 }
1381
1382 // Handpacked snowdrift, only during holiday
1385 {
1387 return false;
1388 }
1389
1390 // Hallow's End decorations
1393 {
1395 std::get<0>(BG_AV_HallowsEndObjectPos[i]),
1396 std::get<1>(BG_AV_HallowsEndObjectPos[i]).GetPositionX(),
1397 std::get<1>(BG_AV_HallowsEndObjectPos[i]).GetPositionY(),
1398 std::get<1>(BG_AV_HallowsEndObjectPos[i]).GetPositionZ(),
1399 std::get<1>(BG_AV_HallowsEndObjectPos[i]).GetOrientation(),
1400 std::get<2>(BG_AV_HallowsEndObjectPos[i])[0],
1401 std::get<2>(BG_AV_HallowsEndObjectPos[i])[1],
1402 std::get<2>(BG_AV_HallowsEndObjectPos[i])[2],
1403 std::get<2>(BG_AV_HallowsEndObjectPos[i])[3],
1405 {
1406 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!11.{}", i);
1407 return false;
1408 }
1409 }
1410
1411 // Generic gameobjects
1413 {
1415 std::get<0>(BG_AV_GenericObjectPos[i]),
1416 std::get<1>(BG_AV_GenericObjectPos[i]).GetPositionX(),
1417 std::get<1>(BG_AV_GenericObjectPos[i]).GetPositionY(),
1418 std::get<1>(BG_AV_GenericObjectPos[i]).GetPositionZ(),
1419 std::get<1>(BG_AV_GenericObjectPos[i]).GetOrientation(),
1420 std::get<2>(BG_AV_GenericObjectPos[i])[0],
1421 std::get<2>(BG_AV_GenericObjectPos[i])[1],
1422 std::get<2>(BG_AV_GenericObjectPos[i])[2],
1423 std::get<2>(BG_AV_GenericObjectPos[i])[3],
1425 {
1426 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!10.{}", i);
1427 return false;
1428 }
1429 }
1430
1431 // Quest banners
1433 {
1434 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!8");
1435 return false;
1436 }
1438 {
1439 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!8");
1440 return false;
1441 }
1442
1443 uint16 i;
1444 LOG_DEBUG("bg.battleground", "Alterac Valley: entering state STATUS_WAIT_JOIN ...");
1445 // Initial Nodes
1446 for (i = 0; i < BG_AV_OBJECT_MAX; i++)
1448
1450 {
1453 }
1454
1457
1459 {
1463 }
1464
1466 {
1468 SpawnBGObject(i + 16, RESPAWN_IMMEDIATELY); //aura
1469 }
1470
1472 {
1474 SpawnBGObject(i + 16, RESPAWN_IMMEDIATELY); //aura
1475 }
1476
1477 //snowfall and the doors
1480
1481 // Handpacked snowdrift, only during holiday
1485
1486 // Hallow's End decorations
1490
1491 // Generic gameobjects
1494
1495 // Quest banners
1498
1499 //creatures
1500 LOG_DEBUG("bg.battleground", "BG_AV start poputlating nodes");
1502 {
1503 if (m_Nodes[i].OwnerId != TEAM_NEUTRAL)
1505 }
1506 //all creatures which don't get despawned through the script are static
1507 LOG_DEBUG("bg.battleground", "BG_AV: start spawning static creatures");
1508 for (i = 0; i < AV_STATICCPLACE_MAX; i++)
1510 //mainspiritguides:
1511 LOG_DEBUG("bg.battleground", "BG_AV: start spawning spiritguides creatures");
1514 //spawn the marshals (those who get deleted, if a tower gets destroyed)
1515 LOG_DEBUG("bg.battleground", "BG_AV: start spawning marshal creatures");
1519
1520 if (
1521 // alliance gates
1523 // horde gates
1525 {
1526 LOG_ERROR("sql.sql", "BatteGroundAV: Failed to spawn some object Battleground not created!1");
1527 return false;
1528 }
1529
1530 return true;
1531}
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:190
bool IsHolidayActive(HolidayIds id)
Definition GameEventMgr.cpp:2054
@ HOLIDAY_HALLOWS_END
Definition SharedDefines.h:2986
@ HOLIDAY_FEAST_OF_WINTER_VEIL
Definition SharedDefines.h:2978
@ CONFIG_BATTLEGROUND_ALTERAC_REP_ONBOSSDEATH
Definition WorldConfig.h:290
@ RATE_REPUTATION_GAIN_AV
Definition WorldConfig.h:458
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:1464
#define sWorld
Definition World.h:337

References _avReputationRate, _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(), RATE_REPUTATION_GAIN_AV, 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:1536
void StartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry)
Definition Battleground.cpp:1880

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
1188{
1189 UpdateWorldState(BG_AV_NodeWorldStates[node][GetWorldStateType(m_Nodes[node].State, m_Nodes[node].OwnerId)], 1);
1190 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
1192 else
1193 UpdateWorldState(BG_AV_NodeWorldStates[node][GetWorldStateType(m_Nodes[node].PrevState, m_Nodes[node].PrevOwnerId)], 0);
1194}

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:1619
@ AV_OBJECTIVE_ASSAULT_GRAVEYARD
Definition BattlegroundAV.h:1617
@ AV_OBJECTIVE_ASSAULT_TOWER
Definition BattlegroundAV.h:1616
@ AV_OBJECTIVE_DEFEND_TOWER
Definition BattlegroundAV.h:1618
@ 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:1403
void UpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1=0, uint32 miscValue2=0, Unit *unit=nullptr)
Definition PlayerUpdates.cpp:2232

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:3422
@ CHAT_MSG_BG_SYSTEM_HORDE
Definition SharedDefines.h:3423
static TeamId GetOtherTeamId(TeamId teamId)
Definition Battleground.cpp:1803
void SendBroadcastText(uint32 id, ChatMsg msgType, WorldObject const *target=nullptr)
Definition Battleground.cpp:720

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

◆ _avReputationRate

float BattlegroundAV::_avReputationRate
private

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

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

◆ m_IsInformedNearVictory

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

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

◆ m_Mine_Owner

◆ m_Mine_Reclaim_Timer

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

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
1845{}; //[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: