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

#include "BattlegroundAV.h"

Inheritance diagram for BattlegroundAV:
Battleground

Public Member Functions

 BattlegroundAV ()
 
 ~BattlegroundAV () override=default
 
void AddPlayer (Player *player) override
 
void StartingEventCloseDoors () override
 
void StartingEventOpenDoors () override
 
void RemovePlayer (Player *player) override
 
void HandleAreaTrigger (Player *player, uint32 trigger) override
 
bool SetupBattleground () override
 
void ResetBGSubclass () override
 
void UpdateScore (TeamId teamId, int16 points)
 
bool UpdatePlayerScore (Player *player, uint32 type, uint32 value, bool doAddHonor=true) override
 
void EventPlayerClickedOnFlag (Player *source, GameObject *gameObject) override
 
void HandleKillPlayer (Player *player, Player *killer) override
 
void HandleKillUnit (Creature *unit, Player *killer) override
 
void HandleQuestComplete (uint32 questid, Player *player)
 
bool PlayerCanDoMineQuest (int32 GOId, TeamId teamId)
 
void EndBattleground (TeamId winnerTeamId) override
 
GraveyardStruct const * GetClosestGraveyard (Player *player) override
 
bool IsBothMinesControlledByTeam (TeamId teamId) const
 
bool IsAllTowersControlledAndCaptainAlive (TeamId teamId) const
 
TeamId GetPrematureWinner () override
 
- Public Member Functions inherited from Battleground
 Battleground ()
 
virtual ~Battleground ()
 
void Update (uint32 diff)
 
virtual bool SetupBattleground ()
 
virtual void Init ()
 
virtual void StartingEventCloseDoors ()
 
virtual void StartingEventOpenDoors ()
 
virtual void ResetBGSubclass ()
 
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
 
uint32 GetMaxPlayersPerTeam () const
 
uint32 GetMinPlayersPerTeam () const
 
int32 GetStartDelayTime () const
 
uint8 GetArenaType () const
 
PvPTeamId GetWinner () const
 
uint32 GetScriptId () const
 
uint32 GetBonusHonorFromKill (uint32 kills) const
 
bool SpiritofCompetitionEvent (PvPTeamId winnerTeamId)
 
bool IsRandom ()
 
void SetName (std::string_view name)
 
void SetBgTypeID (BattlegroundTypeId TypeID)
 
void SetRandomTypeID (BattlegroundTypeId TypeID)
 
void SetBracket (PvPDifficultyEntry const *bracketEntry)
 
void SetInstanceID (uint32 InstanceID)
 
void SetStatus (BattlegroundStatus Status)
 
void SetClientInstanceID (uint32 InstanceID)
 
void SetStartTime (uint32 Time)
 
void SetEndTime (uint32 Time)
 
void SetLastResurrectTime (uint32 Time)
 
void SetLevelRange (uint32 min, uint32 max)
 
void SetRated (bool state)
 
void SetArenaType (uint8 type)
 
void SetArenaorBGType (bool _isArena)
 
void SetWinner (PvPTeamId winner)
 
void SetScriptId (uint32 scriptId)
 
void SetRandom (bool isRandom)
 
void ModifyStartDelayTime (int32 diff)
 
void SetStartDelayTime (int32 Time)
 
void SetMaxPlayersPerTeam (uint32 MaxPlayers)
 
void SetMinPlayersPerTeam (uint32 MinPlayers)
 
void AddToBGFreeSlotQueue ()
 
void RemoveFromBGFreeSlotQueue ()
 
void DecreaseInvitedCount (TeamId teamId)
 
void IncreaseInvitedCount (TeamId teamId)
 
uint32 GetInvitedCount (TeamId teamId) const
 
bool HasFreeSlots () const
 
uint32 GetFreeSlotsForTeam (TeamId teamId) const
 
uint32 GetMaxFreeSlots () const
 
void AddSpectator (Player *p)
 
void RemoveSpectator (Player *p)
 
bool HaveSpectators ()
 
const SpectatorListGetSpectators () const
 
void AddToBeTeleported (ObjectGuid spectator, ObjectGuid participant)
 
void RemoveToBeTeleported (ObjectGuid spectator)
 
void SpectatorsSendPacket (WorldPacket &data)
 
bool isArena () const
 
bool isBattleground () const
 
bool isRated () const
 
BattlegroundPlayerMap const & GetPlayers () const
 
uint32 GetPlayersSize () const
 
void ReadyMarkerClicked (Player *p)
 
BattlegroundScoreMap const * GetPlayerScores () const
 
std::size_t GetPlayerScoresSize () const
 
uint32 GetReviveQueueSize () const
 
void AddPlayerToResurrectQueue (ObjectGuid npc_guid, ObjectGuid player_guid)
 
void RemovePlayerFromResurrectQueue (Player *player)
 
void RelocateDeadPlayers (ObjectGuid queueIndex)
 Relocate all players in ReviveQueue to the closest graveyard.
 
void StartBattleground ()
 
GameObjectGetBGObject (uint32 type)
 
CreatureGetBGCreature (uint32 type)
 
void SetMapId (uint32 MapID)
 
uint32 GetMapId () const
 
void SetBgMap (BattlegroundMap *map)
 
BattlegroundMapGetBgMap () const
 
BattlegroundMapFindBgMap () const
 
void SetTeamStartPosition (TeamId teamId, Position const &pos)
 
Position const * GetTeamStartPosition (TeamId teamId) const
 
void SetStartMaxDist (float startMaxDist)
 
float GetStartMaxDist () const
 
virtual void FillInitialWorldStates (WorldPacket &)
 
void SendPacketToTeam (TeamId teamId, WorldPacket const *packet, Player *sender=nullptr, bool self=true)
 
void SendPacketToAll (WorldPacket const *packet)
 
void YellToAll (Creature *creature, const char *text, uint32 language)
 
void SendChatMessage (Creature *source, uint8 textId, WorldObject *target=nullptr)
 
void SendBroadcastText (uint32 id, ChatMsg msgType, WorldObject const *target=nullptr)
 
template<class Do >
void BroadcastWorker (Do &_do)
 
void PlaySoundToAll (uint32 soundId)
 
void CastSpellOnTeam (uint32 spellId, TeamId teamId)
 
void RemoveAuraOnTeam (uint32 spellId, TeamId teamId)
 
void RewardHonorToTeam (uint32 honor, TeamId teamId)
 
void RewardReputationToTeam (uint32 factionId, uint32 reputation, TeamId teamId)
 
uint32 GetRealRepFactionForPlayer (uint32 factionId, Player *player)
 
void UpdateWorldState (uint32 variable, uint32 value)
 
void EndBattleground (PvPTeamId winnerTeamId)
 
virtual void EndBattleground (TeamId winnerTeamId)
 
void BlockMovement (Player *player)
 
void SendWarningToAll (uint32 entry,...)
 
void SendMessageToAll (uint32 entry, ChatMsg type, Player const *source=nullptr)
 
void PSendMessageToAll (uint32 entry, ChatMsg type, Player const *source,...)
 
void SendMessage2ToAll (uint32 entry, ChatMsg type, Player const *source, uint32 strId1=0, uint32 strId2=0)
 
GroupGetBgRaid (TeamId teamId) const
 
void SetBgRaid (TeamId teamId, Group *bg_raid)
 
void BuildPvPLogDataPacket (WorldPacket &data)
 
virtual bool UpdatePlayerScore (Player *player, uint32 type, uint32 value, bool doAddHonor=true)
 
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 HandleAreaTrigger (Player *, uint32)
 
virtual void HandleKillPlayer (Player *player, Player *killer)
 
virtual void HandleKillUnit (Creature *, Player *)
 
virtual void EventPlayerDroppedFlag (Player *)
 
virtual void EventPlayerClickedOnFlag (Player *, GameObject *)
 
virtual void EventPlayerDamagedGO (Player *, GameObject *, uint32)
 
virtual void EventPlayerUsedGO (Player *, GameObject *)
 
virtual void DoAction (uint32, ObjectGuid)
 
virtual void HandlePlayerResurrect (Player *)
 
virtual GraveyardStruct const * GetClosestGraveyard (Player *player)
 
virtual void AddPlayer (Player *player)
 
void AddOrSetPlayerToCorrectBgGroup (Player *player, TeamId teamId)
 
virtual void RemovePlayerAtLeave (Player *player)
 
void HandleTriggerBuff (GameObject *gameObject)
 
void SetHoliday (bool is_holiday)
 
void SpawnBGObject (uint32 type, uint32 respawntime, uint32 forceRespawnDelay=0)
 
bool AddObject (uint32 type, uint32 entry, float x, float y, float z, float o, float rotation0, float rotation1, float rotation2, float rotation3, uint32 respawnTime=0, GOState goState=GO_STATE_READY)
 
CreatureAddCreature (uint32 entry, uint32 type, float x, float y, float z, float o, uint32 respawntime=0, MotionTransport *transport=nullptr)
 
bool DelCreature (uint32 type)
 
bool DelObject (uint32 type)
 
bool AddSpiritGuide (uint32 type, float x, float y, float z, float o, TeamId teamId)
 
int32 GetObjectType (ObjectGuid guid)
 
void DoorOpen (uint32 type)
 
void DoorClose (uint32 type)
 
const char * GetAcoreString (int32 entry)
 
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
 
virtual TeamId GetPrematureWinner ()
 
uint8 GetUniqueBracketId () const
 
BattlegroundAVToBattlegroundAV ()
 
BattlegroundAV const * ToBattlegroundAV () const
 
BattlegroundWSToBattlegroundWS ()
 
BattlegroundWS const * ToBattlegroundWS () const
 
BattlegroundABToBattlegroundAB ()
 
BattlegroundAB const * ToBattlegroundAB () const
 
BattlegroundNAToBattlegroundNA ()
 
BattlegroundNA const * ToBattlegroundNA () const
 
BattlegroundBEToBattlegroundBE ()
 
BattlegroundBE const * ToBattlegroundBE () const
 
BattlegroundEYToBattlegroundEY ()
 
BattlegroundEY const * ToBattlegroundEY () const
 
BattlegroundRLToBattlegroundRL ()
 
BattlegroundRL const * ToBattlegroundRL () const
 
BattlegroundSAToBattlegroundSA ()
 
BattlegroundSA const * ToBattlegroundSA () const
 
BattlegroundDSToBattlegroundDS ()
 
BattlegroundDS const * ToBattlegroundDS () const
 
BattlegroundRVToBattlegroundRV ()
 
BattlegroundRV const * ToBattlegroundRV () const
 
BattlegroundICToBattlegroundIC ()
 
BattlegroundIC const * ToBattlegroundIC () const
 

Private Member Functions

void PostUpdateImpl (uint32 diff) override
 Post-update hook.
 
void EventPlayerAssaultsPoint (Player *player, uint32 object)
 
void EventPlayerDefendsPoint (Player *player, uint32 object)
 
void EventPlayerDestroyedPoint (BG_AV_Nodes node)
 
void AssaultNode (BG_AV_Nodes node, TeamId teamId)
 
void DestroyNode (BG_AV_Nodes node)
 
void InitNode (BG_AV_Nodes node, TeamId teamId, bool tower)
 
void DefendNode (BG_AV_Nodes node, TeamId teamId)
 
void PopulateNode (BG_AV_Nodes node)
 
void DePopulateNode (BG_AV_Nodes node, bool ignoreSpiritGuid=false)
 
BG_AV_Nodes GetNodeThroughObject (uint32 object)
 
uint32 GetObjectThroughNode (BG_AV_Nodes node)
 
char const * GetNodeName (BG_AV_Nodes node)
 
bool IsTower (BG_AV_Nodes node)
 
void ChangeMineOwner (uint8 mine, TeamId teamId, bool initial=false)
 
void FillInitialWorldStates (WorldPacket &data) override
 
uint8 GetWorldStateType (uint8 state, TeamId teamId)
 
void SendMineWorldStates (uint32 mine)
 
void UpdateNodeWorldState (BG_AV_Nodes node)
 
CreatureAddAVCreature (uint16 cinfoid, uint16 type)
 

Private Attributes

int32 m_Team_Scores [2] {}
 
uint32 m_Team_QuestStatus [2][9] {}
 
BG_AV_NodeInfo m_Nodes [BG_AV_NODES_MAX] {}
 
TeamId m_Mine_Owner [2] {}
 
int32 m_Mine_Timer
 
uint32 m_Mine_Reclaim_Timer [2] {}
 
uint32 m_CaptainBuffTimer [2] {}
 
bool m_CaptainAlive [2] {}
 
bool m_IsInformedNearVictory [2] {}
 

Additional Inherited Members

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

Detailed Description

Constructor & Destructor Documentation

◆ BattlegroundAV()

BattlegroundAV::BattlegroundAV ( )
41{
44
45 for (uint8 i = 0; i < 2; i++)
46 {
47 for (uint8 j = 0; j < 9; j++)
48 m_Team_QuestStatus[i][j] = 0;
49 m_Team_Scores[i] = 0;
50 m_IsInformedNearVictory[i] = false;
51 m_CaptainAlive[i] = true;
52 m_CaptainBuffTimer[i] = 0;
55 }
56
57 m_Mine_Timer = 0;
58
60 InitNode(i, TEAM_NEUTRAL, false);
61
65}
std::uint8_t uint8
Definition: Define.h:110
std::uint16_t uint16
Definition: Define.h:109
@ BG_STARTING_EVENT_THIRD
Definition: Battleground.h:236
@ BG_STARTING_EVENT_SECOND
Definition: Battleground.h:235
@ BG_STARTING_EVENT_FOURTH
Definition: Battleground.h:237
BG_AV_Nodes
Definition: BattlegroundAV.h:174
@ BG_AV_NODES_FIRSTAID_STATION
Definition: BattlegroundAV.h:175
@ BG_AV_NODES_MAX
Definition: BattlegroundAV.h:191
@ BG_AV_OBJECT_MAX
Definition: BattlegroundAV.h:328
@ AV_STATICCPLACE_MAX
Definition: BattlegroundAV.h:110
@ AV_CPLACE_MAX
Definition: BattlegroundAV.h:661
@ BG_AV_TEXT_START_HALF_MINUTE
Definition: BattlegroundAV.h:54
@ BG_AV_TEXT_START_ONE_MINUTE
Definition: BattlegroundAV.h:53
@ BG_AV_TEXT_BATTLE_HAS_BEGUN
Definition: BattlegroundAV.h:55
@ TEAM_NEUTRAL
Definition: SharedDefines.h:762
BGObjects BgObjects
Definition: Battleground.h:539
BGCreatures BgCreatures
Definition: Battleground.h:540
uint32 StartMessageIds[BG_STARTING_EVENT_COUNT]
Definition: Battleground.h:632
int32 m_Mine_Timer
Definition: BattlegroundAV.h:1694
void InitNode(BG_AV_Nodes node, TeamId teamId, bool tower)
Definition: BattlegroundAV.cpp:1528
int32 m_Team_Scores[2]
Definition: BattlegroundAV.h:1688
bool m_IsInformedNearVictory[2]
Definition: BattlegroundAV.h:1699
uint32 m_CaptainBuffTimer[2]
Definition: BattlegroundAV.h:1696
uint32 m_Mine_Reclaim_Timer[2]
Definition: BattlegroundAV.h:1695
uint32 m_Team_QuestStatus[2][9]
Definition: BattlegroundAV.h:1689
TeamId m_Mine_Owner[2]
Definition: BattlegroundAV.h:1693
bool m_CaptainAlive[2]
Definition: BattlegroundAV.h:1697

References 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
300{
301 bool isStatic = false;
302 Creature* creature = nullptr;
303 ASSERT(type <= static_cast<uint16>(AV_CPLACE_MAX) + AV_STATICCPLACE_MAX);
304 if (type >= AV_CPLACE_MAX) //static
305 {
306 type -= AV_CPLACE_MAX;
307 cinfoid = uint16(BG_AV_StaticCreaturePos[type][4]);
308 creature = AddCreature(BG_AV_StaticCreatureInfo[cinfoid],
309 type + AV_CPLACE_MAX,
313 BG_AV_StaticCreaturePos[type][3]);
314 isStatic = true;
315 }
316 else
317 {
318 creature = AddCreature(BG_AV_CreatureInfo[cinfoid],
319 type,
320 BG_AV_CreaturePos[type][0],
321 BG_AV_CreaturePos[type][1],
322 BG_AV_CreaturePos[type][2],
323 BG_AV_CreaturePos[type][3]);
324 }
325 if (!creature)
326 return nullptr;
329
330 if ((isStatic && cinfoid >= 10 && cinfoid <= 14) || (!isStatic && ((cinfoid >= AV_NPC_A_GRAVEDEFENSE0 && cinfoid <= AV_NPC_A_GRAVEDEFENSE3) ||
331 (cinfoid >= AV_NPC_H_GRAVEDEFENSE0 && cinfoid <= AV_NPC_H_GRAVEDEFENSE3))))
332 {
333 if (!isStatic && ((cinfoid >= AV_NPC_A_GRAVEDEFENSE0 && cinfoid <= AV_NPC_A_GRAVEDEFENSE3)
334 || (cinfoid >= AV_NPC_H_GRAVEDEFENSE0 && cinfoid <= AV_NPC_H_GRAVEDEFENSE3)))
335 {
336 CreatureData& data = sObjectMgr->NewOrExistCreatureData(creature->GetSpawnId());
337 data.wander_distance = 5;
338 }
339 //else wander_distance will be 15, so creatures move maximum=10
340 //creature->SetDefaultMovementType(RANDOM_MOTION_TYPE);
341 creature->GetMotionMaster()->Initialize();
342 creature->setDeathState(DeathState::JustDied);
343 creature->Respawn();
344 //TODO: find a way to add a motionmaster without killing the creature (i
345 //just copied this code from a gm-command
346 }
347
348 uint32 triggerSpawnID = 0;
349 uint32 newFaction = 0;
350 if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_A_CAPTAIN])
351 {
352 triggerSpawnID = AV_CPLACE_TRIGGER16;
353 newFaction = 84;
354 }
355 else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_A_BOSS])
356 {
357 triggerSpawnID = AV_CPLACE_TRIGGER17;
358 newFaction = 84;
359 }
360 else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_H_CAPTAIN])
361 {
362 triggerSpawnID = AV_CPLACE_TRIGGER18;
363 newFaction = 83;
364 }
365 else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_H_BOSS])
366 {
367 triggerSpawnID = AV_CPLACE_TRIGGER19;
368 newFaction = 83;
369 }
370 if (triggerSpawnID && newFaction)
371 {
372 if (Creature* trigger = AddCreature(WORLD_TRIGGER,
373 triggerSpawnID,
374 BG_AV_CreaturePos[triggerSpawnID][0],
375 BG_AV_CreaturePos[triggerSpawnID][1],
376 BG_AV_CreaturePos[triggerSpawnID][2],
377 BG_AV_CreaturePos[triggerSpawnID][3]))
378 {
379 trigger->SetFaction(newFaction);
380 trigger->CastSpell(trigger, SPELL_HONORABLE_DEFENDER_25Y, false);
381 }
382 }
383
384 return creature;
385}
#define ASSERT
Definition: Errors.h:68
std::uint32_t uint32
Definition: Define.h:108
@ RESPAWN_ONE_DAY
Definition: Battleground.h:163
@ SPELL_HONORABLE_DEFENDER_25Y
Definition: Battleground.h:141
const uint32 BG_AV_StaticCreatureInfo[51]
Definition: BattlegroundAV.h:1269
const float BG_AV_CreaturePos[AV_CPLACE_MAX][4]
Definition: BattlegroundAV.h:668
const float BG_AV_StaticCreaturePos[AV_STATICCPLACE_MAX][5]
Definition: BattlegroundAV.h:1141
@ AV_NPC_A_GRAVEDEFENSE3
Definition: BattlegroundAV.h:1032
@ AV_NPC_H_GRAVEDEFENSE0
Definition: BattlegroundAV.h:1037
@ AV_NPC_H_CAPTAIN
Definition: BattlegroundAV.h:1041
@ AV_NPC_A_GRAVEDEFENSE0
Definition: BattlegroundAV.h:1029
@ AV_NPC_H_BOSS
Definition: BattlegroundAV.h:1042
@ AV_NPC_A_BOSS
Definition: BattlegroundAV.h:1034
@ AV_NPC_H_GRAVEDEFENSE3
Definition: BattlegroundAV.h:1040
@ AV_NPC_A_CAPTAIN
Definition: BattlegroundAV.h:1033
const uint32 BG_AV_CreatureInfo[AV_NPC_INFO_MAX]
Definition: BattlegroundAV.h:1081
@ AV_CPLACE_TRIGGER18
Definition: BattlegroundAV.h:658
@ AV_CPLACE_TRIGGER19
Definition: BattlegroundAV.h:659
@ AV_CPLACE_TRIGGER17
Definition: BattlegroundAV.h:657
@ AV_CPLACE_TRIGGER16
Definition: BattlegroundAV.h:656
#define WORLD_TRIGGER
Definition: Unit.h:36
#define sObjectMgr
Definition: ObjectMgr.h:1640
bool isStatic(MovementGenerator *movement)
Definition: MotionMaster.cpp:68
Creature * AddCreature(uint32 entry, uint32 type, float x, float y, float z, float o, uint32 respawntime=0, MotionTransport *transport=nullptr)
Definition: Battleground.cpp:1531
Definition: Creature.h:46
void setDeathState(DeathState s, bool despawn=false) override
Definition: Creature.cpp:1903
void Respawn(bool force=false)
Definition: Creature.cpp:1974
void SetRespawnDelay(uint32 delay)
Definition: Creature.h:286
ObjectGuid::LowType GetSpawnId() const
Definition: Creature.h:67
Definition: CreatureData.h:359
float wander_distance
Definition: CreatureData.h:373
uint32 GetEntry() const
Definition: Object.h:109
MotionMaster * GetMotionMaster()
Definition: Unit.h:2276
void Initialize()
Definition: MotionMaster.cpp:73

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_H_BOSS, AV_NPC_H_CAPTAIN, AV_NPC_H_GRAVEDEFENSE0, AV_NPC_H_GRAVEDEFENSE3, AV_STATICCPLACE_MAX, BG_AV_CreatureInfo, BG_AV_CreaturePos, BG_AV_StaticCreatureInfo, BG_AV_StaticCreaturePos, Object::GetEntry(), Unit::GetMotionMaster(), Creature::GetSpawnId(), MotionMaster::Initialize(), isStatic(), Creature::Respawn(), RESPAWN_ONE_DAY, Creature::setDeathState(), Creature::SetRespawnDelay(), sObjectMgr, SPELL_HONORABLE_DEFENDER_25Y, CreatureData::wander_distance, and WORLD_TRIGGER.

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

◆ AddPlayer()

void BattlegroundAV::AddPlayer ( Player player)
overridevirtual

Reimplemented from Battleground.

488{
490 PlayerScores.emplace(player->GetGUID().GetCounter(), new BattlegroundAVScore(player->GetGUID()));
491}
virtual void AddPlayer(Player *player)
Definition: Battleground.cpp:1117
BattlegroundScoreMap PlayerScores
Definition: Battleground.h:619
Definition: BattlegroundAV.h:1569
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:106
LowType GetCounter() const
Definition: ObjectGuid.h:147

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

◆ AssaultNode()

void BattlegroundAV::AssaultNode ( BG_AV_Nodes  node,
TeamId  teamId 
)
private
1488{
1489 if (m_Nodes[node].TotalOwnerId == teamId)
1490 {
1491 LOG_FATAL("bg.battleground", "Assaulting team is TotalOwner of node");
1492 ABORT();
1493 }
1494 if (m_Nodes[node].OwnerId == teamId)
1495 {
1496 LOG_FATAL("bg.battleground", "Assaulting team is owner of node");
1497 ABORT();
1498 }
1499 if (m_Nodes[node].State == POINT_DESTROYED)
1500 {
1501 LOG_FATAL("bg.battleground", "Destroyed node is being assaulted");
1502 ABORT();
1503 }
1504 if (m_Nodes[node].State == POINT_ASSAULTED && m_Nodes[node].TotalOwnerId != TEAM_NEUTRAL) //only assault an assaulted node if no totalowner exists
1505 {
1506 LOG_FATAL("bg.battleground", "Assault on an not assaulted node with total owner");
1507 ABORT();
1508 }
1509 //the timer gets another time, if the previous owner was 0 == Neutral
1511 m_Nodes[node].PrevOwnerId = m_Nodes[node].OwnerId;
1512 m_Nodes[node].OwnerId = teamId;
1513 m_Nodes[node].PrevState = m_Nodes[node].State;
1515}
#define ABORT
Definition: Errors.h:76
#define LOG_FATAL(filterType__,...)
Definition: Log.h:153
@ POINT_DESTROYED
Definition: BattlegroundAV.h:1362
@ POINT_ASSAULTED
Definition: BattlegroundAV.h:1361
#define BG_AV_SNOWFALL_FIRSTCAP
Definition: BattlegroundAV.h:25
#define BG_AV_CAPTIME
Definition: BattlegroundAV.h:24
BG_AV_States State
Definition: BattlegroundAV.h:1557
TeamId PrevOwnerId
Definition: BattlegroundAV.h:1562
uint32 Timer
Definition: BattlegroundAV.h:1559
BG_AV_States PrevState
Definition: BattlegroundAV.h:1558
TeamId OwnerId
Definition: BattlegroundAV.h:1561
BG_AV_NodeInfo m_Nodes[BG_AV_NODES_MAX]
Definition: BattlegroundAV.h:1691

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
662{
663 // mine=0 northmine mine=1 southmin
664 // changing the owner results in setting respawntim to infinite for current creatures,
665 // spawning new mine owners creatures and changing the chest-objects so that the current owning team can use them
666
667 ASSERT(mine == AV_NORTH_MINE || mine == AV_SOUTH_MINE);
668 if (teamId == TEAM_ALLIANCE || teamId == TEAM_HORDE)
670
671 if (m_Mine_Owner[mine] == teamId && !initial)
672 return;
673 m_Mine_Owner[mine] = teamId;
674
675 if (!initial)
676 {
677 LOG_DEBUG("bg.battleground", "bg_av depopulating mine {} (0=north, 1=south)", mine);
678 if (mine == AV_SOUTH_MINE)
680 if (BgCreatures[i])
681 DelCreature(i); //TODO just set the respawntime to 999999
683 if (BgCreatures[i])
684 DelCreature(i); //TODO here also
685 }
687
688 LOG_DEBUG("bg.battleground", "bg_av populating mine {} (0=north, 1=south)", mine);
689 uint16 miner;
690 //also neutral team exists.. after a big time, the neutral team tries to conquer the mine
691 if (mine == AV_NORTH_MINE)
692 {
693 if (teamId == TEAM_ALLIANCE)
694 miner = AV_NPC_N_MINE_A_1;
695 else if (teamId == TEAM_HORDE)
696 miner = AV_NPC_N_MINE_H_1;
697 else
698 miner = AV_NPC_N_MINE_N_1;
699 }
700 else
701 {
702 uint16 cinfo;
703 if (teamId == TEAM_ALLIANCE)
704 miner = AV_NPC_S_MINE_A_1;
705 else if (teamId == TEAM_HORDE)
706 miner = AV_NPC_S_MINE_H_1;
707 else
708 miner = AV_NPC_S_MINE_N_1;
709 //vermin
710 LOG_DEBUG("bg.battleground", "spawning vermin");
711 if (teamId == TEAM_ALLIANCE)
712 cinfo = AV_NPC_S_MINE_A_3;
713 else if (teamId == TEAM_HORDE)
714 cinfo = AV_NPC_S_MINE_H_3;
715 else
716 cinfo = AV_NPC_S_MINE_N_S;
718 AddAVCreature(cinfo, i);
719 }
721 AddAVCreature(miner, i);
722 //the next chooses randomly between 2 cretures
724 AddAVCreature(miner + (urand(1, 2)), i);
726
727 if (teamId == TEAM_ALLIANCE || teamId == TEAM_HORDE)
728 {
730 char buf[256];
734 if (creature)
735 YellToAll(creature, buf, LANG_UNIVERSAL);
736 }
737 else
738 {
739 if (mine == AV_SOUTH_MINE) //i think this gets called all the time
740 {
742 {
743 std::string creatureText = sCreatureTextMgr->GetLocalizedChatString(creature->GetEntry(), creature->getGender(), 0, 0, DEFAULT_LOCALE);
744 YellToAll(creature, creatureText.c_str(), LANG_UNIVERSAL);
745 }
746 }
747 }
748}
#define DEFAULT_LOCALE
Definition: Common.h:81
#define LOG_DEBUG(filterType__,...)
Definition: Log.h:169
uint32 urand(uint32 min, uint32 max)
Definition: Random.cpp:44
@ AV_SOUND_HORDE_GOOD
Definition: BattlegroundAV.h:101
@ AV_SOUND_ALLIANCE_GOOD
Definition: BattlegroundAV.h:100
@ AV_MINE_RECLAIM_TIMER
Definition: BattlegroundAV.h:114
@ AV_NORTH_MINE
Definition: BattlegroundAV.h:111
@ AV_SOUTH_MINE
Definition: BattlegroundAV.h:112
@ AV_NPC_N_MINE_H_1
Definition: BattlegroundAV.h:1060
@ AV_NPC_S_MINE_N_S
Definition: BattlegroundAV.h:1068
@ AV_NPC_S_MINE_N_1
Definition: BattlegroundAV.h:1064
@ AV_NPC_N_MINE_N_1
Definition: BattlegroundAV.h:1052
@ AV_NPC_S_MINE_H_1
Definition: BattlegroundAV.h:1073
@ AV_NPC_N_MINE_A_1
Definition: BattlegroundAV.h:1056
@ AV_NPC_S_MINE_H_3
Definition: BattlegroundAV.h:1075
@ AV_NPC_S_MINE_A_3
Definition: BattlegroundAV.h:1071
@ AV_NPC_S_MINE_A_1
Definition: BattlegroundAV.h:1069
@ AV_CPLACE_MINE_S_2_MAX
Definition: BattlegroundAV.h:628
@ AV_CPLACE_MINE_N_1_MIN
Definition: BattlegroundAV.h:615
@ AV_CPLACE_MINE_S_S_MIN
Definition: BattlegroundAV.h:630
@ AV_CPLACE_MINE_S_2_MIN
Definition: BattlegroundAV.h:627
@ AV_CPLACE_MINE_S_1_MIN
Definition: BattlegroundAV.h:624
@ AV_CPLACE_MINE_S_S_MAX
Definition: BattlegroundAV.h:631
@ AV_CPLACE_MINE_N_2_MAX
Definition: BattlegroundAV.h:619
@ AV_CPLACE_MINE_N_1_MAX
Definition: BattlegroundAV.h:616
@ AV_CPLACE_MINE_S_3
Definition: BattlegroundAV.h:633
@ AV_CPLACE_MINE_S_1_MAX
Definition: BattlegroundAV.h:625
@ AV_CPLACE_MINE_N_3
Definition: BattlegroundAV.h:621
@ AV_CPLACE_HERALD
Definition: BattlegroundAV.h:636
@ AV_CPLACE_MINE_N_2_MIN
Definition: BattlegroundAV.h:618
@ LANG_BG_AV_HORDE
Definition: Language.h:970
@ LANG_BG_AV_ALLY
Definition: Language.h:969
@ LANG_BG_AV_MINE_SOUTH
Definition: Language.h:980
@ LANG_BG_AV_MINE_NORTH
Definition: Language.h:979
@ LANG_BG_AV_MINE_TAKEN
Definition: Language.h:978
#define sCreatureTextMgr
Definition: CreatureTextMgr.h:119
@ LANG_UNIVERSAL
Definition: SharedDefines.h:735
@ TEAM_ALLIANCE
Definition: SharedDefines.h:760
@ TEAM_HORDE
Definition: SharedDefines.h:761
bool DelCreature(uint32 type)
Definition: Battleground.cpp:1594
void YellToAll(Creature *creature, const char *text, uint32 language)
Definition: Battleground.cpp:710
const char * GetAcoreString(int32 entry)
Definition: Battleground.cpp:1722
Creature * GetBGCreature(uint32 type)
Definition: Battleground.cpp:1502
void PlaySoundToAll(uint32 soundId)
Definition: Battleground.cpp:691
Creature * AddAVCreature(uint16 cinfoid, uint16 type)
Definition: BattlegroundAV.cpp:299
void SendMineWorldStates(uint32 mine)
Definition: BattlegroundAV.cpp:1182
uint8 getGender() const
Definition: Unit.h:1440

References AddAVCreature(), 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::GetAcoreString(), Battleground::GetBGCreature(), LANG_BG_AV_ALLY, LANG_BG_AV_HORDE, LANG_BG_AV_MINE_NORTH, LANG_BG_AV_MINE_SOUTH, LANG_BG_AV_MINE_TAKEN, LANG_UNIVERSAL, LOG_DEBUG, m_Mine_Owner, m_Mine_Reclaim_Timer, Battleground::PlaySoundToAll(), sCreatureTextMgr, SendMineWorldStates(), 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
1540{
1541 ASSERT(m_Nodes[node].TotalOwnerId == teamId);
1542 ASSERT(m_Nodes[node].OwnerId != teamId);
1543 ASSERT(m_Nodes[node].State != POINT_CONTROLED && m_Nodes[node].State != POINT_DESTROYED);
1544 m_Nodes[node].PrevOwnerId = m_Nodes[node].OwnerId;
1545 m_Nodes[node].OwnerId = teamId;
1546 m_Nodes[node].PrevState = m_Nodes[node].State;
1548 m_Nodes[node].Timer = 0;
1549}
@ POINT_CONTROLED
Definition: BattlegroundAV.h:1363

References ASSERT, m_Nodes, BG_AV_NodeInfo::OwnerId, POINT_CONTROLED, 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
814{
815 uint32 c_place = AV_CPLACE_DEFENSE_STORM_AID + (4 * node);
816 for (uint8 i = 0; i < 4; i++)
817 {
818 if (BgCreatures[c_place + i])
819 {
820 DelCreature(c_place + i);
821 }
822 }
823
824 //spiritguide
825 if (!ignoreSpiritGuide && !IsTower(node))
826 {
827 DelCreature(node);
828 }
829
830 //remove bonus honor aura trigger creature when node is lost
831 if (node < BG_AV_NODES_MAX)//fail safe
832 DelCreature(node + 302);//nullptr checks are in DelCreature! 0-302 spirit guides
833}
@ AV_CPLACE_DEFENSE_STORM_AID
Definition: BattlegroundAV.h:588
bool IsTower(BG_AV_Nodes node)
Definition: BattlegroundAV.h:1673

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

Referenced by EventPlayerAssaultsPoint(), and HandleQuestComplete().

◆ DestroyNode()

void BattlegroundAV::DestroyNode ( BG_AV_Nodes  node)
private

◆ EndBattleground()

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

Reimplemented from Battleground.

494{
495 //calculate bonuskills for both teams:
496 //first towers:
497 uint8 kills[2] = {0, 0}; // 0 = Alliance 1 = Horde
498 uint8 rep[2] = {0, 0}; // 0 = Alliance 1 = Horde
500 {
501 if (m_Nodes[i].State == POINT_CONTROLED)
502 {
503 if (m_Nodes[i].OwnerId == TEAM_ALLIANCE)
504 {
506 kills[0] += BG_AV_KILL_SURVIVING_TOWER;
507 }
508 else
509 {
511 kills[1] += BG_AV_KILL_SURVIVING_TOWER;
512 }
513 }
514 }
515
516 for (TeamId iTeamId = TEAM_ALLIANCE; iTeamId <= TEAM_HORDE; iTeamId = TeamId(iTeamId + 1))
517 {
518 if (m_CaptainAlive[iTeamId])
519 {
520 kills[iTeamId] += BG_AV_KILL_SURVIVING_CAPTAIN;
521 rep[iTeamId] += BG_AV_REP_SURVIVING_CAPTAIN;
522 }
523 if (rep[iTeamId] != 0)
524 RewardReputationToTeam(iTeamId == TEAM_ALLIANCE ? 730 : 729, rep[iTeamId], iTeamId);
525 if (kills[iTeamId] != 0)
526 RewardHonorToTeam(GetBonusHonorFromKill(kills[iTeamId]), iTeamId);
527 }
528
529 //TODO add enterevademode for all attacking creatures
530 Battleground::EndBattleground(winnerTeamId);
531}
@ BG_AV_NODES_FROSTWOLF_WTOWER
Definition: BattlegroundAV.h:189
@ BG_AV_NODES_DUNBALDAR_SOUTH
Definition: BattlegroundAV.h:182
#define BG_AV_KILL_SURVIVING_TOWER
Definition: BattlegroundAV.h:43
#define BG_AV_REP_SURVIVING_CAPTAIN
Definition: BattlegroundAV.h:47
#define BG_AV_REP_SURVIVING_TOWER
Definition: BattlegroundAV.h:44
#define BG_AV_KILL_SURVIVING_CAPTAIN
Definition: BattlegroundAV.h:46
TeamId
Definition: SharedDefines.h:759
void RewardReputationToTeam(uint32 factionId, uint32 reputation, TeamId teamId)
Definition: Battleground.cpp:727
void EndBattleground(PvPTeamId winnerTeamId)
Definition: Battleground.cpp:778
uint32 GetBonusHonorFromKill(uint32 kills) const
Definition: Battleground.cpp:962
void RewardHonorToTeam(uint32 honor, TeamId teamId)
Definition: Battleground.cpp:720

References BG_AV_KILL_SURVIVING_CAPTAIN, BG_AV_KILL_SURVIVING_TOWER, BG_AV_NODES_DUNBALDAR_SOUTH, BG_AV_NODES_FROSTWOLF_WTOWER, BG_AV_REP_SURVIVING_CAPTAIN, BG_AV_REP_SURVIVING_TOWER, Battleground::EndBattleground(), Battleground::GetBonusHonorFromKill(), m_CaptainAlive, m_Nodes, POINT_CONTROLED, Battleground::RewardHonorToTeam(), Battleground::RewardReputationToTeam(), TEAM_ALLIANCE, and TEAM_HORDE.

Referenced by HandleKillUnit(), and UpdateScore().

◆ EventPlayerAssaultsPoint()

void BattlegroundAV::EventPlayerAssaultsPoint ( Player player,
uint32  object 
)
private
998{
1000
1001 BG_AV_Nodes node = GetNodeThroughObject(object);
1002 TeamId prevOwnerId = m_Nodes[node].OwnerId;
1003 TeamId teamId = player->GetTeamId();
1004 LOG_DEBUG("bg.battleground", "bg_av: player assaults point object {} node {}", object, node);
1005 if (prevOwnerId == teamId || teamId == m_Nodes[node].TotalOwnerId)
1006 return; //surely a gm used this object
1007
1008 if (node == BG_AV_NODES_SNOWFALL_GRAVE) //snowfall is a bit special in capping + it gets eyecandy stuff
1009 {
1010 if (object == BG_AV_OBJECT_FLAG_N_SNOWFALL_GRAVE) //initial capping
1011 {
1012 if (!(prevOwnerId == TEAM_NEUTRAL && m_Nodes[node].TotalOwnerId == TEAM_NEUTRAL))
1013 return;
1014
1015 if (teamId == TEAM_ALLIANCE)
1017 else
1020 }
1021 else if (m_Nodes[node].TotalOwnerId == TEAM_NEUTRAL) //recapping, when no team owns this node realy
1022 {
1023 if (!(m_Nodes[node].State != POINT_CONTROLED))
1024 return;
1025
1026 if (teamId == TEAM_ALLIANCE)
1027 SpawnBGObject(object - 11, RESPAWN_IMMEDIATELY);
1028 else
1029 SpawnBGObject(object + 11, RESPAWN_IMMEDIATELY);
1030 }
1031 //eyecandy
1032 uint32 spawn, despawn;
1033 if (teamId == TEAM_ALLIANCE)
1034 {
1037 }
1038 else
1039 {
1042 }
1043 for (uint8 i = 0; i < 4; i++)
1044 {
1045 SpawnBGObject(despawn + i, RESPAWN_ONE_DAY);
1047 }
1048 }
1049
1050 // xinef: moved here, assure that no call to m_Nodes is used in IF statement bellow as it is modified
1051 AssaultNode(node, teamId);
1052
1053 //if snowfall gots capped it can be handled like all other graveyards
1054 if (m_Nodes[node].TotalOwnerId != TEAM_NEUTRAL)
1055 {
1056 ASSERT(prevOwnerId != TEAM_NEUTRAL);
1057 if (teamId == TEAM_ALLIANCE)
1058 SpawnBGObject(object - 22, RESPAWN_IMMEDIATELY);
1059 else
1060 SpawnBGObject(object + 22, RESPAWN_IMMEDIATELY);
1061
1062 bool ignoreSpiritGuide = false;
1063 if (IsTower(node))
1064 {
1065 //spawning/despawning of bigflag+aura
1070 }
1071 else
1072 {
1073 //spawning/despawning of aura
1075 SpawnBGObject(static_cast<uint8>(BG_AV_OBJECT_AURA_A_FIRSTAID_STATION) + prevOwnerId + 3 * node, RESPAWN_ONE_DAY); //teeamaura despawn
1076
1077 ignoreSpiritGuide = true;
1078
1079 _reviveEvents.AddEventAtOffset([this, node]()
1080 {
1082
1083 if (!IsTower(node))
1084 DelCreature(node); // Delete spirit healer
1085 }, 500ms);
1086 }
1087
1088 DePopulateNode(node, ignoreSpiritGuide);
1089 }
1090
1091 SpawnBGObject(object, RESPAWN_ONE_DAY); //delete old banner
1092 // xinef: change here is too late, AssaultNode(node, team);
1094
1095 //send a nice message to all :)
1096 char buf[256];
1099 if (creature)
1100 YellToAll(creature, buf, LANG_UNIVERSAL);
1101 //update the statistic for the assaulting player
1104
1106}
@ RESPAWN_IMMEDIATELY
Definition: Battleground.h:164
@ STATUS_IN_PROGRESS
Definition: Battleground.h:197
@ SCORE_GRAVEYARDS_ASSAULTED
Definition: BattlegroundScore.h:45
@ SCORE_TOWERS_ASSAULTED
Definition: BattlegroundScore.h:47
@ AV_SOUND_ALLIANCE_ASSAULTS
Definition: BattlegroundAV.h:98
@ AV_SOUND_HORDE_ASSAULTS
Definition: BattlegroundAV.h:99
@ BG_AV_NODES_SNOWFALL_GRAVE
Definition: BattlegroundAV.h:178
@ BG_AV_OBJECT_AURA_N_FIRSTAID_STATION
Definition: BattlegroundAV.h:249
@ BG_AV_OBJECT_FLAG_C_H_SNOWFALL_GRAVE
Definition: BattlegroundAV.h:223
@ BG_AV_OBJECT_AURA_A_FIRSTAID_STATION
Definition: BattlegroundAV.h:250
@ BG_AV_OBJECT_FLAG_C_A_SNOWFALL_GRAVE
Definition: BattlegroundAV.h:211
@ BG_AV_OBJECT_SNOW_EYECANDY_A
Definition: BattlegroundAV.h:315
@ BG_AV_OBJECT_TAURA_H_DUNBALDAR_SOUTH
Definition: BattlegroundAV.h:289
@ BG_AV_OBJECT_FLAG_N_SNOWFALL_GRAVE
Definition: BattlegroundAV.h:244
@ BG_AV_OBJECT_SNOW_EYECANDY_PH
Definition: BattlegroundAV.h:318
@ BG_AV_OBJECT_SNOW_EYECANDY_H
Definition: BattlegroundAV.h:317
@ BG_AV_OBJECT_TFLAG_A_DUNBALDAR_SOUTH
Definition: BattlegroundAV.h:272
@ BG_AV_OBJECT_TAURA_A_DUNBALDAR_SOUTH
Definition: BattlegroundAV.h:288
@ BG_AV_OBJECT_TFLAG_H_DUNBALDAR_SOUTH
Definition: BattlegroundAV.h:273
@ BG_AV_OBJECT_SNOW_EYECANDY_PA
Definition: BattlegroundAV.h:316
@ BG_AV_QUEST_CREDIT_TOWER
Definition: BattlegroundAV.h:116
@ BG_AV_QUEST_CREDIT_GRAVEYARD
Definition: BattlegroundAV.h:117
@ LANG_BG_AV_GRAVE_ASSAULTED
Definition: Language.h:976
@ LANG_BG_AV_TOWER_ASSAULTED
Definition: Language.h:972
void AddEventAtOffset(BasicEvent *event, Milliseconds offset)
Definition: EventProcessor.h:108
void SpawnBGObject(uint32 type, uint32 respawntime, uint32 forceRespawnDelay=0)
Definition: Battleground.cpp:1511
void RelocateDeadPlayers(ObjectGuid queueIndex)
Relocate all players in ReviveQueue to the closest graveyard.
Definition: Battleground.cpp:1385
EventProcessor _reviveEvents
Definition: Battleground.h:645
BattlegroundStatus GetStatus() const
Definition: Battleground.h:327
BG_AV_Nodes GetNodeThroughObject(uint32 object)
Definition: BattlegroundAV.cpp:835
bool UpdatePlayerScore(Player *player, uint32 type, uint32 value, bool doAddHonor=true) override
Definition: BattlegroundAV.cpp:575
char const * GetNodeName(BG_AV_Nodes node)
Definition: BattlegroundAV.cpp:1445
void DePopulateNode(BG_AV_Nodes node, bool ignoreSpiritGuid=false)
Definition: BattlegroundAV.cpp:813
void UpdateNodeWorldState(BG_AV_Nodes node)
Definition: BattlegroundAV.cpp:1173
void AssaultNode(BG_AV_Nodes node, TeamId teamId)
Definition: BattlegroundAV.cpp:1487
void KilledMonsterCredit(uint32 entry, ObjectGuid guid=ObjectGuid::Empty)
Definition: PlayerQuest.cpp:1913
TeamId GetTeamId(bool original=false) const
Definition: Player.h:2072

References Battleground::_reviveEvents, EventProcessor::AddEventAtOffset(), AssaultNode(), ASSERT, AV_CPLACE_HERALD, AV_SOUND_ALLIANCE_ASSAULTS, AV_SOUND_HORDE_ASSAULTS, 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(), Battleground::GetAcoreString(), Battleground::GetBGCreature(), GetNodeName(), GetNodeThroughObject(), Battleground::GetStatus(), Player::GetTeamId(), IsTower(), Player::KilledMonsterCredit(), LANG_BG_AV_ALLY, LANG_BG_AV_GRAVE_ASSAULTED, LANG_BG_AV_HORDE, LANG_BG_AV_TOWER_ASSAULTED, LANG_UNIVERSAL, LOG_DEBUG, m_Nodes, BG_AV_NodeInfo::OwnerId, Battleground::PlaySoundToAll(), POINT_ASSAULTED, POINT_CONTROLED, 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(), UpdatePlayerScore(), and Battleground::YellToAll().

Referenced by EventPlayerClickedOnFlag(), and EventPlayerDefendsPoint().

◆ EventPlayerClickedOnFlag()

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

Reimplemented from Battleground.

899{
901 return;
902 int32 object = GetObjectType(gameObject->GetGUID());
903 if (object < 0)
904 return;
905 switch (gameObject->GetEntry())
906 {
912 EventPlayerAssaultsPoint(source, object);
913 break;
918 EventPlayerDefendsPoint(source, object);
919 break;
920 default:
921 break;
922 }
923}
std::int32_t int32
Definition: Define.h:104
@ BG_AV_OBJECTID_BANNER_H
Definition: BattlegroundAV.h:126
@ BG_AV_OBJECTID_BANNER_CONT_A
Definition: BattlegroundAV.h:127
@ BG_AV_OBJECTID_BANNER_H_B
Definition: BattlegroundAV.h:131
@ BG_AV_OBJECTID_BANNER_A_B
Definition: BattlegroundAV.h:130
@ BG_AV_OBJECTID_BANNER_SNOWFALL_N
Definition: BattlegroundAV.h:134
@ BG_AV_OBJECTID_BANNER_A
Definition: BattlegroundAV.h:125
@ BG_AV_OBJECTID_BANNER_CONT_H
Definition: BattlegroundAV.h:128
@ BG_AV_OBJECTID_BANNER_CONT_H_B
Definition: BattlegroundAV.h:133
@ BG_AV_OBJECTID_BANNER_CONT_A_B
Definition: BattlegroundAV.h:132
int32 GetObjectType(ObjectGuid guid)
Definition: Battleground.cpp:1856
void EventPlayerAssaultsPoint(Player *player, uint32 object)
Definition: BattlegroundAV.cpp:997
void EventPlayerDefendsPoint(Player *player, uint32 object)
Definition: BattlegroundAV.cpp:925

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
926{
928 BG_AV_Nodes node = GetNodeThroughObject(object);
929
930 TeamId ownerId = m_Nodes[node].OwnerId; //maybe should name it prevowner
931 TeamId teamId = player->GetTeamId();
932
933 if (ownerId == player->GetTeamId() || m_Nodes[node].State != POINT_ASSAULTED)
934 return;
935 if (m_Nodes[node].TotalOwnerId == TEAM_NEUTRAL)
936 {
937 //until snowfall doesn't belong to anyone it is better handled in assault-code
938 ASSERT(node == BG_AV_NODES_SNOWFALL_GRAVE); //currently the only neutral grave
939 EventPlayerAssaultsPoint(player, object);
940 return;
941 }
942 LOG_DEBUG("bg.battleground", "player defends point object: {} node: {}", object, node);
943 if (m_Nodes[node].PrevOwnerId != teamId)
944 {
945 LOG_ERROR("bg.battleground", "BG_AV: player defends point which doesn't belong to his team {}", node);
946 return;
947 }
948
949 //spawn new go :)
950 if (m_Nodes[node].OwnerId == TEAM_ALLIANCE)
951 SpawnBGObject(object + 22, RESPAWN_IMMEDIATELY); //spawn horde banner
952 else
953 SpawnBGObject(object - 22, RESPAWN_IMMEDIATELY); //spawn alliance banner
954
955 if (!IsTower(node))
956 {
959 }
960 // despawn old go
962
963 DefendNode(node, teamId);
964 PopulateNode(node);
966
967 if (IsTower(node))
968 {
969 //spawn big flag+aura on top of tower
974 }
975 else if (node == BG_AV_NODES_SNOWFALL_GRAVE) //snowfall eyecandy
976 {
977 for (uint8 i = 0; i < 4; i++)
978 {
981 }
982 }
983 //send a nice message to all :)
984 char buf[256];
987 if (creature)
988 YellToAll(creature, buf, LANG_UNIVERSAL);
989 //update the statistic for the defending player
991 if (IsTower(node))
993 else
995}
#define LOG_ERROR(filterType__,...)
Definition: Log.h:157
@ SCORE_TOWERS_DEFENDED
Definition: BattlegroundScore.h:48
@ SCORE_GRAVEYARDS_DEFENDED
Definition: BattlegroundScore.h:46
@ AV_SOUND_BOTH_TOWER_DEFEND
Definition: BattlegroundAV.h:102
@ LANG_BG_AV_GRAVE_DEFENDED
Definition: Language.h:975
@ LANG_BG_AV_TOWER_DEFENDED
Definition: Language.h:973
void PopulateNode(BG_AV_Nodes node)
Definition: BattlegroundAV.cpp:759
void DefendNode(BG_AV_Nodes node, TeamId teamId)
Definition: BattlegroundAV.cpp:1539

References ASSERT, AV_CPLACE_HERALD, AV_SOUND_ALLIANCE_GOOD, AV_SOUND_BOTH_TOWER_DEFEND, AV_SOUND_HORDE_GOOD, 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::GetAcoreString(), Battleground::GetBGCreature(), GetNodeName(), GetNodeThroughObject(), Battleground::GetStatus(), Player::GetTeamId(), IsTower(), LANG_BG_AV_ALLY, LANG_BG_AV_GRAVE_DEFENDED, LANG_BG_AV_HORDE, LANG_BG_AV_TOWER_DEFENDED, LANG_UNIVERSAL, LOG_DEBUG, LOG_ERROR, m_Nodes, BG_AV_NodeInfo::OwnerId, Battleground::PlaySoundToAll(), 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(), UpdatePlayerScore(), and Battleground::YellToAll().

Referenced by EventPlayerClickedOnFlag().

◆ EventPlayerDestroyedPoint()

void BattlegroundAV::EventPlayerDestroyedPoint ( BG_AV_Nodes  node)
private
602{
603 uint32 object = GetObjectThroughNode(node);
604 LOG_DEBUG("bg.battleground", "bg_av: player destroyed point node {} object {}", node, object);
605
606 //despawn banner
608 DestroyNode(node);
610
611 TeamId ownerId = m_Nodes[node].OwnerId;
612 if (IsTower(node))
613 {
615 //despawn marshal
618 else
619 LOG_ERROR("bg.battleground", "BG_AV: playerdestroyedpoint: marshal {} doesn't exist", AV_CPLACE_A_MARSHAL_SOUTH + tmp);
620 //spawn destroyed aura
621 for (uint8 i = 0; i <= 9; i++)
623
625 RewardReputationToTeam(ownerId == TEAM_ALLIANCE ? 730 : 729, BG_AV_REP_TOWER, ownerId);
627
628 SpawnBGObject(static_cast<uint8>(BG_AV_OBJECT_TAURA_A_DUNBALDAR_SOUTH) + ownerId + (2 * tmp), RESPAWN_ONE_DAY);
629 SpawnBGObject(static_cast<uint8>(BG_AV_OBJECT_TFLAG_A_DUNBALDAR_SOUTH) + ownerId + (2 * tmp), RESPAWN_ONE_DAY);
630 }
631 else
632 {
633 if (ownerId == TEAM_ALLIANCE)
635 else
639 PopulateNode(node);
640 if (node == BG_AV_NODES_SNOWFALL_GRAVE) //snowfall eyecandy
641 {
642 for (uint8 i = 0; i < 4; i++)
643 {
646 }
647 }
648 }
649 //send a nice message to all :)
650 char buf[256];
651 if (IsTower(node))
653 else
655
657 if (creature)
658 YellToAll(creature, buf, LANG_UNIVERSAL);
659}
#define BG_AV_RES_TOWER
Definition: BattlegroundAV.h:39
#define BG_AV_REP_TOWER
Definition: BattlegroundAV.h:38
@ BG_AV_OBJECT_BURN_DUNBALDAR_SOUTH
Definition: BattlegroundAV.h:305
@ AV_CPLACE_A_MARSHAL_SOUTH
Definition: BattlegroundAV.h:605
#define BG_AV_KILL_TOWER
Definition: BattlegroundAV.h:37
@ LANG_BG_AV_GRAVE_TAKEN
Definition: Language.h:974
@ LANG_BG_AV_TOWER_TAKEN
Definition: Language.h:971
uint32 GetObjectThroughNode(BG_AV_Nodes node)
Definition: BattlegroundAV.cpp:857
void UpdateScore(TeamId teamId, int16 points)
Definition: BattlegroundAV.cpp:269
void DestroyNode(BG_AV_Nodes node)
Definition: BattlegroundAV.cpp:1517

References 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_REP_TOWER, BG_AV_RES_TOWER, Battleground::BgCreatures, Battleground::DelCreature(), DestroyNode(), Battleground::GetAcoreString(), Battleground::GetBGCreature(), Battleground::GetBonusHonorFromKill(), GetNodeName(), GetObjectThroughNode(), IsTower(), LANG_BG_AV_ALLY, LANG_BG_AV_GRAVE_TAKEN, LANG_BG_AV_HORDE, LANG_BG_AV_TOWER_TAKEN, LANG_UNIVERSAL, 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(), UpdateScore(), and Battleground::YellToAll().

Referenced by PostUpdateImpl().

◆ FillInitialWorldStates()

void BattlegroundAV::FillInitialWorldStates ( WorldPacket data)
overrideprivatevirtual

Reimplemented from Battleground.

1109{
1110 bool stateok;
1111 //graveyards
1113 {
1114 for (uint8 j = 1; j <= 3; j += 2)
1115 {
1116 //j=1=assaulted j=3=controled
1117 stateok = (m_Nodes[i].State == j);
1118 data << uint32(BG_AV_NodeWorldStates[i][GetWorldStateType(j, TEAM_ALLIANCE)]) << uint32((m_Nodes[i].OwnerId == TEAM_ALLIANCE && stateok) ? 1 : 0);
1119 data << uint32(BG_AV_NodeWorldStates[i][GetWorldStateType(j, TEAM_HORDE)]) << uint32((m_Nodes[i].OwnerId == TEAM_HORDE && stateok) ? 1 : 0);
1120 }
1121 }
1122
1123 //towers
1125 for (uint8 j = 1; j <= 3; j += 2)
1126 {
1127 //j=1=assaulted j=3=controled //i dont have j=2=destroyed cause destroyed is the same like enemy-team controll
1128 stateok = (m_Nodes[i].State == j || (m_Nodes[i].State == POINT_DESTROYED && j == 3));
1129 data << uint32(BG_AV_NodeWorldStates[i][GetWorldStateType(j, TEAM_ALLIANCE)]) << uint32((m_Nodes[i].OwnerId == TEAM_ALLIANCE && stateok) ? 1 : 0);
1130 data << uint32(BG_AV_NodeWorldStates[i][GetWorldStateType(j, TEAM_HORDE)]) << uint32((m_Nodes[i].OwnerId == TEAM_HORDE && stateok) ? 1 : 0);
1131 }
1132 if (m_Nodes[BG_AV_NODES_SNOWFALL_GRAVE].OwnerId == TEAM_NEUTRAL) //cause neutral teams aren't handled generic
1133 data << uint32(AV_SNOWFALL_N) << uint32(1);
1135 data << uint32(AV_Horde_Score) << uint32(m_Team_Scores[1]);
1136 if (GetStatus() == STATUS_IN_PROGRESS) //only if game started the teamscores are displayed
1137 {
1138 data << uint32(AV_SHOW_A_SCORE) << uint32(1);
1139 data << uint32(AV_SHOW_H_SCORE) << uint32(1);
1140 }
1141 else
1142 {
1143 data << uint32(AV_SHOW_A_SCORE) << uint32(0);
1144 data << uint32(AV_SHOW_H_SCORE) << uint32(0);
1145 }
1148}
@ BG_AV_NODES_FROSTWOLF_HUT
Definition: BattlegroundAV.h:181
const uint32 BG_AV_NodeWorldStates[16][4]
Definition: BattlegroundAV.h:1487
@ AV_SNOWFALL_N
Definition: BattlegroundAV.h:1397
@ AV_SHOW_A_SCORE
Definition: BattlegroundAV.h:1371
@ AV_Horde_Score
Definition: BattlegroundAV.h:1369
@ AV_Alliance_Score
Definition: BattlegroundAV.h:1368
@ AV_SHOW_H_SCORE
Definition: BattlegroundAV.h:1370
uint8 GetWorldStateType(uint8 state, TeamId teamId)
Definition: BattlegroundAV.cpp:1150

References AV_Alliance_Score, AV_Horde_Score, AV_NORTH_MINE, AV_SHOW_A_SCORE, AV_SHOW_H_SCORE, AV_SNOWFALL_N, 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, Battleground::GetStatus(), GetWorldStateType(), m_Nodes, m_Team_Scores, POINT_DESTROYED, SendMineWorldStates(), BG_AV_NodeInfo::State, STATUS_IN_PROGRESS, TEAM_ALLIANCE, TEAM_HORDE, and TEAM_NEUTRAL.

◆ GetClosestGraveyard()

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

Reimplemented from Battleground.

1200{
1201 GraveyardStruct const* entry = nullptr;
1202 float dist = 0;
1203 float minDist = 0;
1204 float x, y;
1205
1206 player->GetPosition(x, y);
1207
1208 GraveyardStruct const* pGraveyard = sGraveyard->GetGraveyard(BG_AV_GraveyardIds[player->GetTeamId() + 7]);
1209 minDist = (pGraveyard->x - x) * (pGraveyard->x - x) + (pGraveyard->y - y) * (pGraveyard->y - y);
1210
1212 if (m_Nodes[i].OwnerId == player->GetTeamId() && m_Nodes[i].State == POINT_CONTROLED)
1213 {
1214 entry = sGraveyard->GetGraveyard(BG_AV_GraveyardIds[i]);
1215 if (entry)
1216 {
1217 dist = (entry->x - x) * (entry->x - x) + (entry->y - y) * (entry->y - y);
1218 if (dist < minDist)
1219 {
1220 minDist = dist;
1221 pGraveyard = entry;
1222 }
1223 }
1224 }
1225 return pGraveyard;
1226}
const uint32 BG_AV_GraveyardIds[9]
Definition: BattlegroundAV.h:1337
#define sGraveyard
Definition: GameGraveyard.h:75
void GetPosition(float &x, float &y) const
Definition: Position.h:122
Definition: GameGraveyard.h:28
float x
Definition: GameGraveyard.h:31
float y
Definition: GameGraveyard.h:32

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

◆ GetNodeName()

char const * BattlegroundAV::GetNodeName ( BG_AV_Nodes  node)
private
1446{
1447 switch (node)
1448 {
1479 default:
1480 LOG_ERROR("bg.battleground", "tried to get name for node {}", node);
1481 break;
1482 }
1483
1484 return "Unknown";
1485}
@ BG_AV_NODES_ICEWING_BUNKER
Definition: BattlegroundAV.h:184
@ BG_AV_NODES_TOWER_POINT
Definition: BattlegroundAV.h:187
@ BG_AV_NODES_FROSTWOLF_GRAVE
Definition: BattlegroundAV.h:180
@ BG_AV_NODES_STORMPIKE_GRAVE
Definition: BattlegroundAV.h:176
@ BG_AV_NODES_STONEHEART_GRAVE
Definition: BattlegroundAV.h:177
@ BG_AV_NODES_ICEBLOOD_TOWER
Definition: BattlegroundAV.h:186
@ BG_AV_NODES_DUNBALDAR_NORTH
Definition: BattlegroundAV.h:183
@ BG_AV_NODES_STONEHEART_BUNKER
Definition: BattlegroundAV.h:185
@ BG_AV_NODES_FROSTWOLF_ETOWER
Definition: BattlegroundAV.h:188
@ BG_AV_NODES_ICEBLOOD_GRAVE
Definition: BattlegroundAV.h:179
@ LANG_BG_AV_NODE_GRAVE_SNOW
Definition: Language.h:989
@ LANG_BG_AV_NODE_GRAVE_FROST
Definition: Language.h:993
@ LANG_BG_AV_NODE_TOWER_STONE
Definition: Language.h:988
@ LANG_BG_AV_NODE_TOWER_FROST_E
Definition: Language.h:994
@ LANG_BG_AV_NODE_GRAVE_STORMPIKE
Definition: Language.h:985
@ LANG_BG_AV_NODE_GRAVE_ICE
Definition: Language.h:991
@ LANG_BG_AV_NODE_TOWER_ICE
Definition: Language.h:990
@ LANG_BG_AV_NODE_TOWER_POINT
Definition: Language.h:992
@ LANG_BG_AV_NODE_TOWER_ICEWING
Definition: Language.h:986
@ LANG_BG_AV_NODE_TOWER_DUN_S
Definition: Language.h:983
@ LANG_BG_AV_NODE_GRAVE_STORM_AID
Definition: Language.h:982
@ LANG_BG_AV_NODE_TOWER_DUN_N
Definition: Language.h:984
@ LANG_BG_AV_NODE_GRAVE_FROST_HUT
Definition: Language.h:996
@ LANG_BG_AV_NODE_GRAVE_STONE
Definition: Language.h:987
@ LANG_BG_AV_NODE_TOWER_FROST_W
Definition: Language.h:995

References 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, Battleground::GetAcoreString(), LANG_BG_AV_NODE_GRAVE_FROST, LANG_BG_AV_NODE_GRAVE_FROST_HUT, LANG_BG_AV_NODE_GRAVE_ICE, LANG_BG_AV_NODE_GRAVE_SNOW, LANG_BG_AV_NODE_GRAVE_STONE, LANG_BG_AV_NODE_GRAVE_STORM_AID, LANG_BG_AV_NODE_GRAVE_STORMPIKE, LANG_BG_AV_NODE_TOWER_DUN_N, LANG_BG_AV_NODE_TOWER_DUN_S, LANG_BG_AV_NODE_TOWER_FROST_E, LANG_BG_AV_NODE_TOWER_FROST_W, LANG_BG_AV_NODE_TOWER_ICE, LANG_BG_AV_NODE_TOWER_ICEWING, LANG_BG_AV_NODE_TOWER_POINT, LANG_BG_AV_NODE_TOWER_STONE, and LOG_ERROR.

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

◆ GetNodeThroughObject()

BG_AV_Nodes BattlegroundAV::GetNodeThroughObject ( uint32  object)
private
836{
837 LOG_DEBUG("bg.battleground", "bg_AV getnodethroughobject {}", object);
839 return BG_AV_Nodes(object);
841 return BG_AV_Nodes(object - 11);
843 return BG_AV_Nodes(object - 7);
845 return BG_AV_Nodes(object - 22);
847 return BG_AV_Nodes(object - 33);
849 return BG_AV_Nodes(object - 29);
852 LOG_ERROR("bg.battleground", "BattlegroundAV: ERROR! GetPlace got a wrong object :(");
853 ABORT();
854 return BG_AV_Nodes(0);
855}
@ BG_AV_OBJECT_FLAG_H_FROSTWOLF_HUT
Definition: BattlegroundAV.h:238
@ BG_AV_OBJECT_FLAG_H_FROSTWOLF_WTOWER
Definition: BattlegroundAV.h:242
@ BG_AV_OBJECT_FLAG_C_A_FROSTWOLF_HUT
Definition: BattlegroundAV.h:214
@ BG_AV_OBJECT_FLAG_C_H_STONEHEART_BUNKER
Definition: BattlegroundAV.h:230
@ BG_AV_OBJECT_FLAG_A_STONEHEART_BUNKER
Definition: BattlegroundAV.h:206
@ BG_AV_OBJECT_FLAG_C_A_FROSTWOLF_WTOWER
Definition: BattlegroundAV.h:218

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
858{
859 //this function is the counterpart to GetNodeThroughObject()
860 LOG_DEBUG("bg.battleground", "bg_AV GetObjectThroughNode {}", node);
861 if (m_Nodes[node].OwnerId == TEAM_ALLIANCE)
862 {
863 if (m_Nodes[node].State == POINT_ASSAULTED)
864 {
865 if (node <= BG_AV_NODES_FROSTWOLF_HUT)
866 return node + 11;
868 return node + 7;
869 }
870 else if (m_Nodes[node].State == POINT_CONTROLED)
872 return node;
873 }
874 else if (m_Nodes[node].OwnerId == TEAM_HORDE)
875 {
876 if (m_Nodes[node].State == POINT_ASSAULTED)
877 {
879 return node + 22;
880 }
881 else if (m_Nodes[node].State == POINT_CONTROLED)
882 {
883 if (node <= BG_AV_NODES_FROSTWOLF_HUT)
884 return node + 33;
886 return node + 29;
887 }
888 }
889 else if (m_Nodes[node].OwnerId == TEAM_NEUTRAL)
891 LOG_ERROR("bg.battleground", "BattlegroundAV: Error! GetPlaceNode couldn't resolve node {}", node);
892 ABORT();
893 return 0;
894}

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_CONTROLED, TEAM_ALLIANCE, TEAM_HORDE, and TEAM_NEUTRAL.

Referenced by EventPlayerDestroyedPoint().

◆ GetPrematureWinner()

TeamId BattlegroundAV::GetPrematureWinner ( )
overridevirtual

Reimplemented from Battleground.

1633{
1635 return TEAM_ALLIANCE;
1636
1638}
uint32 GetTeamScore(TeamId teamId) const
Definition: Battleground.cpp:1895
virtual TeamId GetPrematureWinner()
Definition: Battleground.cpp:407

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

◆ GetWorldStateType()

uint8 BattlegroundAV::GetWorldStateType ( uint8  state,
TeamId  teamId 
)
private
1151{
1152 //neutral stuff cant get handled (currently its only snowfall)
1153 ASSERT(teamId != TEAM_NEUTRAL);
1154 //a_c a_a h_c h_a the positions in worldstate-array
1155 if (teamId == TEAM_ALLIANCE)
1156 {
1157 if (state == POINT_CONTROLED || state == POINT_DESTROYED)
1158 return 0;
1159 if (state == POINT_ASSAULTED)
1160 return 1;
1161 }
1162 if (teamId == TEAM_HORDE)
1163 {
1164 if (state == POINT_DESTROYED || state == POINT_CONTROLED)
1165 return 2;
1166 if (state == POINT_ASSAULTED)
1167 return 3;
1168 }
1169 LOG_ERROR("bg.battleground", "BG_AV: should update a strange worldstate state:{} team:{}", state, teamId);
1170 return 5; //this will crash the game, but i want to know if something is wrong here
1171}

References ASSERT, LOG_ERROR, POINT_ASSAULTED, POINT_CONTROLED, 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.

542{
543 // this is wrong way to implement these things. On official it done by gameobject spell cast.
545 return;
546
547 switch (trigger)
548 {
549 case 95:
550 case 2608:
551 if (player->GetTeamId() != TEAM_ALLIANCE)
552 player->GetSession()->SendAreaTriggerMessage("Only The Alliance can use that portal");
553 else
554 player->LeaveBattleground();
555 break;
556 case 2606:
557 if (player->GetTeamId() != TEAM_HORDE)
558 player->GetSession()->SendAreaTriggerMessage("Only The Horde can use that portal");
559 else
560 player->LeaveBattleground();
561 break;
562 case 3326:
563 case 3327:
564 case 3328:
565 case 3329:
566 case 3330:
567 case 3331:
568 //player->Unmount();
569 break;
570 default:
571 break;
572 }
573}
WorldSession * GetSession() const
Definition: Player.h:1961
void LeaveBattleground(Battleground *bg=nullptr)
Definition: Player.cpp:11237
void SendAreaTriggerMessage(const char *Text,...) ATTR_PRINTF(2
Definition: MiscHandler.cpp:691

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.

68{
70 return;
71
72 Battleground::HandleKillPlayer(player, killer);
73 UpdateScore(player->GetTeamId(), -1);
74}
virtual void HandleKillPlayer(Player *player, Player *killer)
Definition: Battleground.cpp:1778

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

◆ HandleKillUnit()

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

Reimplemented from Battleground.

77{
78 LOG_DEBUG("bg.battleground", "bg_av HandleKillUnit {}", unit->GetEntry());
80 return;
81 uint32 entry = unit->GetEntry();
82 /*
83 uint32 triggerSpawnID = 0;
84 if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_A_CAPTAIN])
85 triggerSpawnID = AV_CPLACE_TRIGGER16;
86 else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_A_BOSS])
87 triggerSpawnID = AV_CPLACE_TRIGGER17;
88 else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_H_CAPTAIN])
89 triggerSpawnID = AV_CPLACE_TRIGGER18;
90 else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_H_BOSS])
91 triggerSpawnID = AV_CPLACE_TRIGGER19;
92 */
94 {
95 CastSpellOnTeam(23658, TEAM_HORDE); //this is a spell which finishes a quest where a player has to kill the boss
100 }
101 else if (entry == BG_AV_CreatureInfo[AV_NPC_H_BOSS])
102 {
103 CastSpellOnTeam(23658, TEAM_ALLIANCE); //this is a spell which finishes a quest where a player has to kill the boss
108 }
109 else if (entry == BG_AV_CreatureInfo[AV_NPC_A_CAPTAIN])
110 {
111 if (!m_CaptainAlive[0])
112 {
113 LOG_ERROR("bg.battleground", "Killed a Captain twice, please report this bug, if you haven't done \".respawn\"");
114 return;
115 }
116 m_CaptainAlive[0] = false;
120 //spawn destroyed aura
121 for (uint8 i = 0; i <= 9; i++)
124 if (creature)
127 }
128 else if (entry == BG_AV_CreatureInfo[AV_NPC_H_CAPTAIN])
129 {
130 if (!m_CaptainAlive[1])
131 {
132 LOG_ERROR("bg.battleground", "Killed a Captain twice, please report this bug, if you haven't done \".respawn\"");
133 return;
134 }
135 m_CaptainAlive[1] = false;
139 //spawn destroyed aura
140 for (uint8 i = 0; i <= 9; i++)
143 if (creature)
146 }
148 {
152 }
154 {
158 }
159}
@ SCORE_MINES_CAPTURED
Definition: BattlegroundScore.h:49
#define BG_AV_RES_CAPTAIN
Definition: BattlegroundAV.h:35
#define BG_AV_KILL_BOSS
Definition: BattlegroundAV.h:30
@ BG_AV_OBJECT_BURN_BUILDING_HORDE
Definition: BattlegroundAV.h:314
@ BG_AV_OBJECT_BURN_BUILDING_ALLIANCE
Definition: BattlegroundAV.h:313
@ BG_AV_QUEST_CREDIT_MINE
Definition: BattlegroundAV.h:115
#define BG_AV_REP_BOSS
Definition: BattlegroundAV.h:31
@ AV_NPC_S_MINE_H_4
Definition: BattlegroundAV.h:1076
@ AV_NPC_N_MINE_A_4
Definition: BattlegroundAV.h:1059
@ AV_NPC_N_MINE_N_4
Definition: BattlegroundAV.h:1055
@ AV_NPC_S_MINE_N_4
Definition: BattlegroundAV.h:1067
@ AV_NPC_S_MINE_A_4
Definition: BattlegroundAV.h:1072
@ AV_NPC_N_MINE_H_4
Definition: BattlegroundAV.h:1063
#define BG_AV_KILL_CAPTAIN
Definition: BattlegroundAV.h:33
#define BG_AV_REP_CAPTAIN
Definition: BattlegroundAV.h:34
@ LANG_BG_AV_H_CAPTAIN_DEAD
Definition: Language.h:1000
@ LANG_BG_AV_A_CAPTAIN_DEAD
Definition: Language.h:1001
void CastSpellOnTeam(uint32 spellId, TeamId teamId)
Definition: Battleground.cpp:696
void EndBattleground(TeamId winnerTeamId) override
Definition: BattlegroundAV.cpp:493
void ChangeMineOwner(uint8 mine, TeamId teamId, bool initial=false)
Definition: BattlegroundAV.cpp:661

References 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, 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_REP_BOSS, BG_AV_REP_CAPTAIN, BG_AV_RES_CAPTAIN, Battleground::CastSpellOnTeam(), ChangeMineOwner(), Battleground::DelCreature(), EndBattleground(), Battleground::GetAcoreString(), Battleground::GetBGCreature(), Battleground::GetBonusHonorFromKill(), Object::GetEntry(), Battleground::GetStatus(), Player::GetTeamId(), Player::KilledMonsterCredit(), LANG_BG_AV_A_CAPTAIN_DEAD, LANG_BG_AV_H_CAPTAIN_DEAD, LANG_UNIVERSAL, 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(), UpdateScore(), and Battleground::YellToAll().

◆ HandleQuestComplete()

void BattlegroundAV::HandleQuestComplete ( uint32  questid,
Player player 
)
162{
164 return;//maybe we should log this, cause this must be a cheater or a big bug
165 TeamId teamId = player->GetTeamId();
166 //TODO add reputation, events (including quest not available anymore, next quest availabe, go/npc de/spawning)and maybe honor
167 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed", questid);
168 switch (questid)
169 {
174 m_Team_QuestStatus[teamId][0] += 20;
175 if (m_Team_QuestStatus[teamId][0] == 500 || m_Team_QuestStatus[teamId][0] == 1000 || m_Team_QuestStatus[teamId][0] == 1500) //25, 50, 75 turn ins
176 {
177 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed starting with unit upgrading..", questid);
179 if (m_Nodes[i].OwnerId == player->GetTeamId() && m_Nodes[i].State == POINT_CONTROLED)
180 {
182 PopulateNode(i);
183 //maybe this is bad, because it will instantly respawn all creatures on every grave..
184 }
185 }
186 break;
189 m_Team_QuestStatus[teamId][1]++;
190 RewardReputationToTeam(teamId, 1, teamId);
191 if (m_Team_QuestStatus[teamId][1] == 30)
192 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
193 break;
196 m_Team_QuestStatus[teamId][2]++;
197 RewardReputationToTeam(teamId, 1, teamId);
198 if (m_Team_QuestStatus[teamId][2] == 60)
199 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
200 break;
203 m_Team_QuestStatus[teamId][3]++;
204 RewardReputationToTeam(teamId, 1, teamId);
205 if (m_Team_QuestStatus[teamId][3] == 120)
206 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
207 break;
208 case AV_QUEST_A_BOSS1:
209 case AV_QUEST_H_BOSS1:
210 m_Team_QuestStatus[teamId][4] += 9; //you can turn in 10 or 1 item..
211 [[fallthrough]];
212 case AV_QUEST_A_BOSS2:
213 case AV_QUEST_H_BOSS2:
214 m_Team_QuestStatus[teamId][4]++;
215 if (m_Team_QuestStatus[teamId][4] >= 200)
216 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
217 break;
220 m_Team_QuestStatus[teamId][5]++;
221 if (m_Team_QuestStatus[teamId][5] == 28)
222 {
223 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
224
225 if (m_Team_QuestStatus[teamId][6] == 7)
226 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here - ground assault ready", questid);
227 }
228 break;
231 m_Team_QuestStatus[teamId][6]++;
232 if (m_Team_QuestStatus[teamId][6] == 7)
233 {
234 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
235
236 if (m_Team_QuestStatus[teamId][5] == 20)
237 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here - ground assault ready", questid);
238 }
239 break;
242 m_Team_QuestStatus[teamId][7]++;
243 if (m_Team_QuestStatus[teamId][7] == 25)
244 {
245 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
246
247 if (m_Team_QuestStatus[teamId][8] == 25)
248 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here - rider assault ready", questid);
249 }
250 break;
253 m_Team_QuestStatus[teamId][8]++;
254 if (m_Team_QuestStatus[teamId][8] == 25)
255 {
256 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
257
258 if (m_Team_QuestStatus[teamId][7] == 25)
259 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here - rider assault ready", questid);
260 }
261 break;
262 default:
263 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed but is not interesting at all", questid);
264 return; //was no interesting quest at all
265 break;
266 }
267}
@ AV_QUEST_A_COMMANDER3
Definition: BattlegroundAV.h:1531
@ AV_QUEST_H_SCRAPS1
Definition: BattlegroundAV.h:1525
@ AV_QUEST_H_BOSS1
Definition: BattlegroundAV.h:1534
@ AV_QUEST_H_RIDER_TAME
Definition: BattlegroundAV.h:1544
@ AV_QUEST_A_COMMANDER1
Definition: BattlegroundAV.h:1527
@ AV_QUEST_A_RIDER_HIDE
Definition: BattlegroundAV.h:1541
@ AV_QUEST_A_SCRAPS1
Definition: BattlegroundAV.h:1523
@ AV_QUEST_H_COMMANDER1
Definition: BattlegroundAV.h:1528
@ AV_QUEST_A_RIDER_TAME
Definition: BattlegroundAV.h:1543
@ AV_QUEST_H_COMMANDER3
Definition: BattlegroundAV.h:1532
@ AV_QUEST_H_NEAR_MINE
Definition: BattlegroundAV.h:1538
@ AV_QUEST_A_COMMANDER2
Definition: BattlegroundAV.h:1529
@ AV_QUEST_A_OTHER_MINE
Definition: BattlegroundAV.h:1539
@ AV_QUEST_A_NEAR_MINE
Definition: BattlegroundAV.h:1537
@ AV_QUEST_H_OTHER_MINE
Definition: BattlegroundAV.h:1540
@ AV_QUEST_A_SCRAPS2
Definition: BattlegroundAV.h:1524
@ AV_QUEST_H_BOSS2
Definition: BattlegroundAV.h:1536
@ AV_QUEST_A_BOSS1
Definition: BattlegroundAV.h:1533
@ AV_QUEST_H_COMMANDER2
Definition: BattlegroundAV.h:1530
@ AV_QUEST_H_RIDER_HIDE
Definition: BattlegroundAV.h:1542
@ AV_QUEST_A_BOSS2
Definition: BattlegroundAV.h:1535
@ AV_QUEST_H_SCRAPS2
Definition: BattlegroundAV.h:1526

References AV_QUEST_A_BOSS1, AV_QUEST_A_BOSS2, AV_QUEST_A_COMMANDER1, AV_QUEST_A_COMMANDER2, AV_QUEST_A_COMMANDER3, AV_QUEST_A_NEAR_MINE, AV_QUEST_A_OTHER_MINE, AV_QUEST_A_RIDER_HIDE, AV_QUEST_A_RIDER_TAME, AV_QUEST_A_SCRAPS1, AV_QUEST_A_SCRAPS2, AV_QUEST_H_BOSS1, AV_QUEST_H_BOSS2, AV_QUEST_H_COMMANDER1, AV_QUEST_H_COMMANDER2, AV_QUEST_H_COMMANDER3, AV_QUEST_H_NEAR_MINE, AV_QUEST_H_OTHER_MINE, AV_QUEST_H_RIDER_HIDE, AV_QUEST_H_RIDER_TAME, AV_QUEST_H_SCRAPS1, AV_QUEST_H_SCRAPS2, BG_AV_NODES_FIRSTAID_STATION, BG_AV_NODES_FROSTWOLF_HUT, DePopulateNode(), Battleground::GetStatus(), Player::GetTeamId(), LOG_DEBUG, m_Nodes, m_Team_QuestStatus, POINT_CONTROLED, 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
1589{
1590 if (teamId == TEAM_ALLIANCE)
1591 {
1592 for (BG_AV_Nodes i = BG_AV_NODES_DUNBALDAR_SOUTH; i <= BG_AV_NODES_STONEHEART_BUNKER; ++i) // alliance towers controlled
1593 {
1594 if (m_Nodes[i].State == POINT_CONTROLED)
1595 {
1596 if (m_Nodes[i].OwnerId != TEAM_ALLIANCE)
1597 return false;
1598 }
1599 else
1600 return false;
1601 }
1602
1603 for (BG_AV_Nodes i = BG_AV_NODES_ICEBLOOD_TOWER; i <= BG_AV_NODES_FROSTWOLF_WTOWER; ++i) // horde towers destroyed
1604 if (m_Nodes[i].State != POINT_DESTROYED)
1605 return false;
1606
1607 return m_CaptainAlive[0];
1608 }
1609 else if (teamId == TEAM_HORDE)
1610 {
1611 for (BG_AV_Nodes i = BG_AV_NODES_ICEBLOOD_TOWER; i <= BG_AV_NODES_FROSTWOLF_WTOWER; ++i) // horde towers controlled
1612 {
1613 if (m_Nodes[i].State == POINT_CONTROLED)
1614 {
1615 if (m_Nodes[i].OwnerId != TEAM_HORDE)
1616 return false;
1617 }
1618 else
1619 return false;
1620 }
1621
1622 for (BG_AV_Nodes i = BG_AV_NODES_DUNBALDAR_SOUTH; i <= BG_AV_NODES_STONEHEART_BUNKER; ++i) // alliance towers destroyed
1623 if (m_Nodes[i].State != POINT_DESTROYED)
1624 return false;
1625
1626 return m_CaptainAlive[1];
1627 }
1628
1629 return false;
1630}

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_CONTROLED, POINT_DESTROYED, TEAM_ALLIANCE, and TEAM_HORDE.

Referenced by achievement_bg_av_perfection::OnCheck().

◆ IsBothMinesControlledByTeam()

bool BattlegroundAV::IsBothMinesControlledByTeam ( TeamId  teamId) const
1580{
1581 for (auto& mine : m_Mine_Owner)
1582 if (mine != teamId)
1583 return false;
1584
1585 return true;
1586}

References m_Mine_Owner.

Referenced by achievement_everything_counts::OnCheck().

◆ IsTower()

bool BattlegroundAV::IsTower ( BG_AV_Nodes  node)
inlineprivate

◆ PlayerCanDoMineQuest()

bool BattlegroundAV::PlayerCanDoMineQuest ( int32  GOId,
TeamId  teamId 
)
751{
752 if (GOId == BG_AV_OBJECTID_MINE_N)
753 return (m_Mine_Owner[AV_NORTH_MINE] == teamId);
754 if (GOId == BG_AV_OBJECTID_MINE_S)
755 return (m_Mine_Owner[AV_SOUTH_MINE] == teamId);
756 return true; //cause it's no mine'object it is ok if this is true
757}
@ BG_AV_OBJECTID_MINE_N
Definition: BattlegroundAV.h:160
@ BG_AV_OBJECTID_MINE_S
Definition: BattlegroundAV.h:161

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
760{
761 TeamId ownerId = m_Nodes[node].OwnerId;
762
763 uint32 c_place = AV_CPLACE_DEFENSE_STORM_AID + (4 * node);
764 uint32 creatureid;
765 if (IsTower(node))
766 creatureid = (ownerId == TEAM_ALLIANCE) ? AV_NPC_A_TOWERDEFENSE : AV_NPC_H_TOWERDEFENSE;
767 else
768 {
769 if (m_Team_QuestStatus[ownerId][0] < 500)
770 creatureid = (ownerId == TEAM_ALLIANCE) ? AV_NPC_A_GRAVEDEFENSE0 : AV_NPC_H_GRAVEDEFENSE0;
771 else if (m_Team_QuestStatus[ownerId][0] < 1000)
772 creatureid = (ownerId == TEAM_ALLIANCE) ? AV_NPC_A_GRAVEDEFENSE1 : AV_NPC_H_GRAVEDEFENSE1;
773 else if (m_Team_QuestStatus[ownerId][0] < 1500)
774 creatureid = (ownerId == TEAM_ALLIANCE) ? AV_NPC_A_GRAVEDEFENSE2 : AV_NPC_H_GRAVEDEFENSE2;
775 else
776 creatureid = (ownerId == TEAM_ALLIANCE) ? AV_NPC_A_GRAVEDEFENSE3 : AV_NPC_H_GRAVEDEFENSE3;
777 //spiritguide
778 if (BgCreatures[node])
779 DelCreature(node);
780 if (!AddSpiritGuide(node, BG_AV_CreaturePos[node][0], BG_AV_CreaturePos[node][1], BG_AV_CreaturePos[node][2], BG_AV_CreaturePos[node][3], ownerId))
781 LOG_ERROR("bg.battleground", "AV: couldn't spawn spiritguide at node {}", node);
782 }
783 for (uint8 i = 0; i < 4; i++)
784 AddAVCreature(creatureid, c_place + i);
785
786 if (node >= BG_AV_NODES_MAX)//fail safe
787 return;
788 Creature* trigger = GetBgMap()->GetCreature(BgCreatures[node + 302]);//0-302 other creatures
789 if (!trigger)
790 {
791 trigger = AddCreature(WORLD_TRIGGER,
792 node + 302,
793 BG_AV_CreaturePos[node + 302][0],
794 BG_AV_CreaturePos[node + 302][1],
795 BG_AV_CreaturePos[node + 302][2],
796 BG_AV_CreaturePos[node + 302][3]);
797 }
798
799 //add bonus honor aura trigger creature when node is accupied
800 //cast bonus aura (+50% honor in 25yards)
801 //aura should only apply to players who have accupied the node, set correct faction for trigger
802 if (trigger)
803 {
804 if (ownerId != TEAM_ALLIANCE && ownerId != TEAM_HORDE)//node can be neutral, remove trigger
805 {
806 DelCreature(node + 302);
807 return;
808 }
810 trigger->CastSpell(trigger, SPELL_HONORABLE_DEFENDER_25Y, false);
811 }
812}
@ AV_NPC_H_TOWERDEFENSE
Definition: BattlegroundAV.h:1036
@ AV_NPC_A_GRAVEDEFENSE1
Definition: BattlegroundAV.h:1030
@ AV_NPC_H_GRAVEDEFENSE2
Definition: BattlegroundAV.h:1039
@ AV_NPC_A_TOWERDEFENSE
Definition: BattlegroundAV.h:1028
@ AV_NPC_H_GRAVEDEFENSE1
Definition: BattlegroundAV.h:1038
@ AV_NPC_A_GRAVEDEFENSE2
Definition: BattlegroundAV.h:1031
@ FACTION_ALLIANCE_GENERIC
Definition: SharedDefines.h:206
@ FACTION_HORDE_GENERIC
Definition: SharedDefines.h:205
bool AddSpiritGuide(uint32 type, float x, float y, float z, float o, TeamId teamId)
Definition: Battleground.cpp:1633
BattlegroundMap * GetBgMap() const
Definition: Battleground.h:432
void SetFaction(uint32 faction)
Definition: Unit.cpp:10064
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:1169
Creature * GetCreature(ObjectGuid const guid)
Definition: Map.cpp:3307

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

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

◆ PostUpdateImpl()

void BattlegroundAV::PostUpdateImpl ( uint32  )
overrideprivatevirtual

Post-update hook.

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

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

Reimplemented from Battleground.

388{
390 {
391 for (uint8 i = 0; i <= 1; i++) //0=alliance, 1=horde
392 {
393 if (!m_CaptainAlive[i])
394 {
395 continue;
396 }
397 if (m_CaptainBuffTimer[i] > diff)
398 {
399 m_CaptainBuffTimer[i] -= diff;
400 }
401 else
402 {
403 if (i == 0)
404 {
406 Creature* creature = GetBGCreature(AV_CPLACE_MAX + 61);
407 if (creature)
408 {
409 std::string creatureText = sCreatureTextMgr->GetLocalizedChatString(creature->GetEntry(), creature->getGender(), 0, 0, DEFAULT_LOCALE);
410 YellToAll(creature, creatureText.c_str(), LANG_COMMON);
411 }
412 }
413 else
414 {
416 Creature* creature = GetBGCreature(AV_CPLACE_MAX + 59); //TODO: make the captains a dynamic creature
417 if (creature)
418 {
419 std::string creatureText = sCreatureTextMgr->GetLocalizedChatString(creature->GetEntry(), creature->getGender(), 2, 0, DEFAULT_LOCALE);
420 YellToAll(creature, creatureText.c_str(), LANG_ORCISH);
421 }
422 }
423 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
424 }
425 }
426 //add points from mine owning, and look if he neutral team wanrts to reclaim the mine
427 m_Mine_Timer -= diff;
428 for (uint8 mine = 0; mine < 2; mine++)
429 {
430 if (m_Mine_Owner[mine] == TEAM_ALLIANCE || m_Mine_Owner[mine] == TEAM_HORDE)
431 {
432 if (m_Mine_Timer <= 0)
433 UpdateScore(m_Mine_Owner[mine], 1);
434
435 if (m_Mine_Reclaim_Timer[mine] > diff)
436 m_Mine_Reclaim_Timer[mine] -= diff;
437 else //we don't need to set this timer to 0 cause this codepart wont get called when this thing is 0
438 {
440 }
441 }
442 }
443 if (m_Mine_Timer <= 0)
444 m_Mine_Timer = AV_MINE_TICK_TIMER; //this is at the end, cause we need to update both mines
445
446 //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
448 if (m_Nodes[i].State == POINT_ASSAULTED) //maybe remove this
449 {
450 if (m_Nodes[i].Timer > diff)
451 m_Nodes[i].Timer -= diff;
452 else
454 }
455 }
456}
@ AV_BUFF_H_CAPTAIN
Definition: BattlegroundAV.h:1355
@ AV_BUFF_A_CAPTAIN
Definition: BattlegroundAV.h:1354
@ AV_MINE_TICK_TIMER
Definition: BattlegroundAV.h:113
Timer
Definition: boss_grizzle.cpp:30
@ LANG_COMMON
Definition: SharedDefines.h:740
@ LANG_ORCISH
Definition: SharedDefines.h:736
void EventPlayerDestroyedPoint(BG_AV_Nodes node)
Definition: BattlegroundAV.cpp:601

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

◆ RemovePlayer()

void BattlegroundAV::RemovePlayer ( Player player)
overridevirtual

Reimplemented from Battleground.

534{
535 //TODO search more buffs
539}
@ AV_BUFF_ARMOR
Definition: BattlegroundAV.h:1353
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Definition: Unit.cpp:4855

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

◆ ResetBGSubclass()

void BattlegroundAV::ResetBGSubclass ( )
overridevirtual

Reimplemented from Battleground.

1552{
1553 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
1554 {
1555 for (uint8 j = 0; j < 9; j++)
1556 m_Team_QuestStatus[i][j] = 0;
1558 m_IsInformedNearVictory[i] = false;
1559 m_CaptainAlive[i] = true;
1560 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
1562 }
1563 for (BG_AV_Nodes i = BG_AV_NODES_FIRSTAID_STATION; i <= BG_AV_NODES_STONEHEART_GRAVE; ++i) //alliance graves
1564 InitNode(i, TEAM_ALLIANCE, false);
1565 for (BG_AV_Nodes i = BG_AV_NODES_DUNBALDAR_SOUTH; i <= BG_AV_NODES_STONEHEART_BUNKER; ++i) //alliance towers
1566 InitNode(i, TEAM_ALLIANCE, true);
1567 for (BG_AV_Nodes i = BG_AV_NODES_ICEBLOOD_GRAVE; i <= BG_AV_NODES_FROSTWOLF_HUT; ++i) //horde graves
1568 InitNode(i, TEAM_HORDE, false);
1569 for (BG_AV_Nodes i = BG_AV_NODES_ICEBLOOD_TOWER; i <= BG_AV_NODES_FROSTWOLF_WTOWER; ++i) //horde towers
1570 InitNode(i, TEAM_HORDE, true);
1571 InitNode(BG_AV_NODES_SNOWFALL_GRAVE, TEAM_NEUTRAL, false); //give snowfall neutral owner
1572
1574 for (uint16 i = 0; i < static_cast<uint16>(AV_CPLACE_MAX) + AV_STATICCPLACE_MAX; i++)
1575 if (BgCreatures[i])
1576 DelCreature(i);
1577}
#define BG_AV_SCORE_INITIAL_POINTS
Definition: BattlegroundAV.h:27

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
1183{
1184 ASSERT(mine == AV_NORTH_MINE || mine == AV_SOUTH_MINE);
1185
1186 uint8 owner = 1;
1187
1188 if (m_Mine_Owner[mine] == TEAM_ALLIANCE)
1189 owner = 0;
1190 else if (m_Mine_Owner[mine] == TEAM_HORDE)
1191 owner = 2;
1192
1193 for (uint8 i = 0; i < 3; ++i)
1194 UpdateWorldState(BG_AV_MineWorldStates[mine][i], 0); // Xinef: Clear data for consistency and buglessness
1195
1196 UpdateWorldState(BG_AV_MineWorldStates[mine][owner], 1);
1197}
const uint32 BG_AV_MineWorldStates[2][3]
Definition: BattlegroundAV.h:1480
void UpdateWorldState(uint32 variable, uint32 value)
Definition: Battleground.cpp:770

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.

1229{
1230 // Create starting objects
1231
1232 //spawn node-objects
1234 {
1236 {
1237 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)
1238 || !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)
1239 || !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)
1240 || !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)
1241 //aura
1245 {
1246 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!2");
1247 return false;
1248 }
1249 }
1250 else //towers
1251 {
1252 if (i <= BG_AV_NODES_STONEHEART_BUNKER) //alliance towers
1253 {
1254 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)
1255 || !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)
1256 || !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)
1257 || !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)
1260 {
1261 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!3");
1262 return false;
1263 }
1264 }
1265 else //horde towers
1266 {
1267 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)
1268 || !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)
1269 || !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)
1270 || !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)
1273 {
1274 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!4");
1275 return false;
1276 }
1277 }
1278 for (uint8 j = 0; j <= 9; j++) //burning aura
1279 {
1281 {
1282 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!5.{}", i);
1283 return false;
1284 }
1285 }
1286 }
1287 }
1288 for (uint8 i = 0; i < 2; i++) //burning aura for buildings
1289 {
1290 for (uint8 j = 0; j <= 9; j++)
1291 {
1292 if (j < 5)
1293 {
1295 {
1296 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!6.{}", i);
1297 return false;
1298 }
1299 }
1300 else
1301 {
1303 {
1304 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!7.{}", i);
1305 return false;
1306 }
1307 }
1308 }
1309 }
1311 {
1313 {
1314 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some mine supplies Battleground not created!7.5.{}", i);
1315 return false;
1316 }
1317 }
1319 {
1321 {
1322 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some mine supplies Battleground not created!7.6.{}", i);
1323 return false;
1324 }
1325 }
1326
1328 {
1329 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!8");
1330 return false;
1331 }
1332 for (uint8 i = 0; i < 4; i++)
1333 {
1338 {
1339 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!9.{}", i);
1340 return false;
1341 }
1342 }
1343
1344 // Handpacked snowdrift, only during holiday
1347 {
1349 return false;
1350 }
1351
1352 // Quest banners
1354 {
1355 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!8");
1356 return false;
1357 }
1359 {
1360 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!8");
1361 return false;
1362 }
1363
1364 uint16 i;
1365 LOG_DEBUG("bg.battleground", "Alterac Valley: entering state STATUS_WAIT_JOIN ...");
1366 // Initial Nodes
1367 for (i = 0; i < BG_AV_OBJECT_MAX; i++)
1369
1371 {
1374 }
1375
1378
1380 {
1384 }
1385
1387 {
1389 SpawnBGObject(i + 16, RESPAWN_IMMEDIATELY); //aura
1390 }
1391
1393 {
1395 SpawnBGObject(i + 16, RESPAWN_IMMEDIATELY); //aura
1396 }
1397
1398 //snowfall and the doors
1401
1402 // Handpacked snowdrift, only during holiday
1406
1407 // Quest banners
1410
1411 //creatures
1412 LOG_DEBUG("bg.battleground", "BG_AV start poputlating nodes");
1414 {
1415 if (m_Nodes[i].OwnerId != TEAM_NEUTRAL)
1417 }
1418 //all creatures which don't get despawned through the script are static
1419 LOG_DEBUG("bg.battleground", "BG_AV: start spawning static creatures");
1420 for (i = 0; i < AV_STATICCPLACE_MAX; i++)
1422 //mainspiritguides:
1423 LOG_DEBUG("bg.battleground", "BG_AV: start spawning spiritguides creatures");
1426 //spawn the marshals (those who get deleted, if a tower gets destroyed)
1427 LOG_DEBUG("bg.battleground", "BG_AV: start spawning marshal creatures");
1431
1432 if (
1433 // alliance gates
1435 // horde gates
1437 {
1438 LOG_ERROR("sql.sql", "BatteGroundAV: Failed to spawn some object Battleground not created!1");
1439 return false;
1440 }
1441
1442 return true;
1443}
const float BG_AV_DoorPositons[2][4]
Definition: BattlegroundAV.h:568
@ BG_AV_OBJECTID_FROSTWOLF_BANNER
Definition: BattlegroundAV.h:169
@ BG_AV_OBJECTID_SMOKE
Definition: BattlegroundAV.h:164
@ BG_AV_OBJECTID_SNOWFALL_CANDY_A
Definition: BattlegroundAV.h:137
@ BG_AV_OBJECTID_SNOWFALL_CANDY_PH
Definition: BattlegroundAV.h:140
@ BG_AV_OBJECTID_FIRE
Definition: BattlegroundAV.h:163
@ BG_AV_OBJECTID_TOWER_BANNER_PA
Definition: BattlegroundAV.h:145
@ BG_AV_OBJECTID_TOWER_BANNER_H
Definition: BattlegroundAV.h:144
@ BG_AV_OBJECTID_SNOWFALL_CANDY_H
Definition: BattlegroundAV.h:139
@ BG_AV_OBJECTID_SNOWFALL_CANDY_PA
Definition: BattlegroundAV.h:138
@ BG_AV_OBJECTID_GATE_H
Definition: BattlegroundAV.h:157
@ BG_AV_OBJECTID_TOWER_BANNER_PH
Definition: BattlegroundAV.h:146
@ BG_AV_OBJECTID_STORMPIKE_BANNER
Definition: BattlegroundAV.h:170
@ BG_AV_OBJECTID_HARDPACKED_SNOWDRIFT
Definition: BattlegroundAV.h:167
@ BG_AV_OBJECTID_AURA_N
Definition: BattlegroundAV.h:151
@ BG_AV_OBJECTID_AURA_A
Definition: BattlegroundAV.h:149
@ BG_AV_OBJECTID_AURA_H
Definition: BattlegroundAV.h:150
@ BG_AV_OBJECTID_TOWER_BANNER_A
Definition: BattlegroundAV.h:143
@ BG_AV_OBJECTID_GATE_A
Definition: BattlegroundAV.h:156
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:319
@ BG_AV_OBJECT_MINE_SUPPLY_N_MAX
Definition: BattlegroundAV.h:320
@ BG_AV_OBJECT_MINE_SUPPLY_S_MIN
Definition: BattlegroundAV.h:321
@ BG_AV_OBJECT_MINE_SUPPLY_S_MAX
Definition: BattlegroundAV.h:322
@ BG_AV_OBJECT_DOOR_H
Definition: BattlegroundAV.h:246
@ BG_AV_OBJECT_FLAG_A_FIRSTAID_STATION
Definition: BattlegroundAV.h:196
@ BG_AV_OBJECT_FLAG_H_ICEBLOOD_GRAVE
Definition: BattlegroundAV.h:236
@ BG_AV_OBJECT_HANDPACKED_SNOWDRIFT_MIN
Definition: BattlegroundAV.h:323
@ BG_AV_OBJECT_TFLAG_H_ICEBLOOD_TOWER
Definition: BattlegroundAV.h:281
@ BG_AV_OBJECT_TFLAG_A_STONEHEART_BUNKER
Definition: BattlegroundAV.h:278
@ BG_AV_OBJECT_AURA_H_FIRSTAID_STATION
Definition: BattlegroundAV.h:251
@ BG_AV_OBJECT_HANDPACKED_SNOWDRIFT_MAX
Definition: BattlegroundAV.h:324
@ BG_AV_OBJECT_TFLAG_H_FROSTWOLF_WTOWER
Definition: BattlegroundAV.h:287
@ BG_AV_OBJECT_FLAG_A_DUNBALDAR_SOUTH
Definition: BattlegroundAV.h:203
@ BG_AV_OBJECT_AURA_N_SNOWFALL_GRAVE
Definition: BattlegroundAV.h:258
@ BG_AV_OBJECT_DOOR_A
Definition: BattlegroundAV.h:247
@ BG_AV_OBJECT_STORMPIKE_BANNER
Definition: BattlegroundAV.h:326
@ BG_AV_OBJECT_FLAG_A_STONEHEART_GRAVE
Definition: BattlegroundAV.h:198
@ BG_AV_OBJECT_FROSTWOLF_BANNER
Definition: BattlegroundAV.h:325
@ AV_NPC_H_MARSHAL_WTOWER
Definition: BattlegroundAV.h:1051
@ AV_NPC_HERALD
Definition: BattlegroundAV.h:1077
@ AV_NPC_A_MARSHAL_SOUTH
Definition: BattlegroundAV.h:1044
bool IsHolidayActive(HolidayIds id)
Definition: GameEventMgr.cpp:1909
@ HOLIDAY_FEAST_OF_WINTER_VEIL
Definition: SharedDefines.h:2745
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:1409

References 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_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_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, GetNodeThroughObject(), HOLIDAY_FEAST_OF_WINTER_VEIL, IsHolidayActive(), LOG_DEBUG, LOG_ERROR, m_Nodes, PopulateNode(), RESPAWN_IMMEDIATELY, RESPAWN_ONE_DAY, Battleground::SpawnBGObject(), TEAM_ALLIANCE, TEAM_HORDE, and TEAM_NEUTRAL.

◆ StartingEventCloseDoors()

void BattlegroundAV::StartingEventCloseDoors ( )
overridevirtual

◆ StartingEventOpenDoors()

void BattlegroundAV::StartingEventOpenDoors ( )
overridevirtual

Reimplemented from Battleground.

468{
469 LOG_DEBUG("bg.battleground", "BG_AV: start spawning mine stuff");
474 for (uint8 mine = AV_NORTH_MINE; mine <= AV_SOUTH_MINE; mine++) //mine population
475 ChangeMineOwner(mine, TEAM_NEUTRAL, true);
476
479
482
483 // Achievement: The Alterac Blitz
485}
constexpr auto MINUTE
Definition: Common.h:49
#define AV_EVENT_START_BATTLE
Definition: BattlegroundAV.h:49
@ ACHIEVEMENT_TIMED_TYPE_EVENT
Definition: DBCEnums.h:118
void DoorOpen(uint32 type)
Definition: Battleground.cpp:1481
void StartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry)
Definition: Battleground.cpp:1889

References ACHIEVEMENT_TIMED_TYPE_EVENT, AV_EVENT_START_BATTLE, AV_NORTH_MINE, AV_SHOW_A_SCORE, AV_SHOW_H_SCORE, 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, ChangeMineOwner(), Battleground::DoorOpen(), LOG_DEBUG, MINUTE, RESPAWN_IMMEDIATELY, Battleground::SpawnBGObject(), Battleground::StartTimedAchievement(), TEAM_NEUTRAL, and Battleground::UpdateWorldState().

◆ UpdateNodeWorldState()

void BattlegroundAV::UpdateNodeWorldState ( BG_AV_Nodes  node)
private
1174{
1175 UpdateWorldState(BG_AV_NodeWorldStates[node][GetWorldStateType(m_Nodes[node].State, m_Nodes[node].OwnerId)], 1);
1176 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
1178 else
1179 UpdateWorldState(BG_AV_NodeWorldStates[node][GetWorldStateType(m_Nodes[node].PrevState, m_Nodes[node].PrevOwnerId)], 0);
1180}

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

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

◆ UpdatePlayerScore()

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

Reimplemented from Battleground.

576{
577 if (!Battleground::UpdatePlayerScore(player, type, value, doAddHonor))
578 return false;
579
580 switch (type)
581 {
584 break;
587 break;
590 break;
593 break;
594 default:
595 break;
596 }
597
598 return true;
599}
@ AV_OBJECTIVE_DEFEND_GRAVEYARD
Definition: BattlegroundAV.h:1552
@ AV_OBJECTIVE_ASSAULT_GRAVEYARD
Definition: BattlegroundAV.h:1550
@ AV_OBJECTIVE_ASSAULT_TOWER
Definition: BattlegroundAV.h:1549
@ AV_OBJECTIVE_DEFEND_TOWER
Definition: BattlegroundAV.h:1551
@ ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE
Definition: DBCEnums.h:152
virtual bool UpdatePlayerScore(Player *player, uint32 type, uint32 value, bool doAddHonor=true)
Definition: Battleground.cpp:1348
void UpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1=0, uint32 miscValue2=0, Unit *unit=nullptr)
Definition: PlayerUpdates.cpp:2131

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 
)
270{
271 //note: to remove reinforcementpoints points must be negative, for adding reinforcements points must be positive
272 m_Team_Scores[teamId] += points;
273
275 if (points < 0)
276 {
277 if (m_Team_Scores[teamId] < 1)
278 {
279 m_Team_Scores[teamId] = 0;
281 }
282 else if (!m_IsInformedNearVictory[teamId] && m_Team_Scores[teamId] < SEND_MSG_NEAR_LOSE)
283 {
284 if (teamId == TEAM_ALLIANCE)
285 {
287 }
288 else
289 {
291 }
292
294 m_IsInformedNearVictory[teamId] = true;
295 }
296 }
297}
@ AV_SOUND_NEAR_VICTORY
Definition: BattlegroundAV.h:96
#define SEND_MSG_NEAR_LOSE
Definition: BattlegroundAV.h:28
@ BG_AV_TEXT_ALLIANCE_NEAR_LOSE
Definition: BattlegroundAV.h:57
@ BG_AV_TEXT_HORDE_NEAR_LOSE
Definition: BattlegroundAV.h:58
@ CHAT_MSG_BG_SYSTEM_ALLIANCE
Definition: SharedDefines.h:3189
@ CHAT_MSG_BG_SYSTEM_HORDE
Definition: SharedDefines.h:3190
static TeamId GetOtherTeamId(TeamId teamId)
Definition: Battleground.cpp:1813
void SendBroadcastText(uint32 id, ChatMsg msgType, WorldObject const *target=nullptr)
Definition: Battleground.cpp:678

References AV_Alliance_Score, AV_Horde_Score, AV_SOUND_NEAR_VICTORY, 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, and Battleground::UpdateWorldState().

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

Member Data Documentation

◆ m_CaptainAlive

bool BattlegroundAV::m_CaptainAlive[2] {}
private

◆ m_CaptainBuffTimer

uint32 BattlegroundAV::m_CaptainBuffTimer[2] {}
private

◆ m_IsInformedNearVictory

bool BattlegroundAV::m_IsInformedNearVictory[2] {}
private

◆ m_Mine_Owner

◆ m_Mine_Reclaim_Timer

uint32 BattlegroundAV::m_Mine_Reclaim_Timer[2] {}
private

◆ m_Mine_Timer

int32 BattlegroundAV::m_Mine_Timer
private

◆ m_Nodes

◆ m_Team_QuestStatus

uint32 BattlegroundAV::m_Team_QuestStatus[2][9] {}
private

◆ m_Team_Scores

int32 BattlegroundAV::m_Team_Scores[2] {}
private