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 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 ( )
42{
45
46 for (uint8 i = 0; i < 2; i++)
47 {
48 for (uint8 j = 0; j < 9; j++)
49 m_Team_QuestStatus[i][j] = 0;
50 m_Team_Scores[i] = 0;
51 m_IsInformedNearVictory[i] = false;
52 m_CaptainAlive[i] = true;
53 m_CaptainBuffTimer[i] = 0;
56 }
57
58 m_Mine_Timer = 0;
59
61 InitNode(i, TEAM_NEUTRAL, false);
62
66}
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:734
BGObjects BgObjects
Definition: Battleground.h:531
BGCreatures BgCreatures
Definition: Battleground.h:532
uint32 StartMessageIds[BG_STARTING_EVENT_COUNT]
Definition: Battleground.h:624
int32 m_Mine_Timer
Definition: BattlegroundAV.h:1694
void InitNode(BG_AV_Nodes node, TeamId teamId, bool tower)
Definition: BattlegroundAV.cpp:1529
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
301{
302 bool isStatic = false;
303 Creature* creature = nullptr;
304 ASSERT(type <= static_cast<uint16>(AV_CPLACE_MAX) + AV_STATICCPLACE_MAX);
305 if (type >= AV_CPLACE_MAX) //static
306 {
307 type -= AV_CPLACE_MAX;
308 cinfoid = uint16(BG_AV_StaticCreaturePos[type][4]);
309 creature = AddCreature(BG_AV_StaticCreatureInfo[cinfoid],
310 type + AV_CPLACE_MAX,
314 BG_AV_StaticCreaturePos[type][3]);
315 isStatic = true;
316 }
317 else
318 {
319 creature = AddCreature(BG_AV_CreatureInfo[cinfoid],
320 type,
321 BG_AV_CreaturePos[type][0],
322 BG_AV_CreaturePos[type][1],
323 BG_AV_CreaturePos[type][2],
324 BG_AV_CreaturePos[type][3]);
325 }
326 if (!creature)
327 return nullptr;
330
331 if ((isStatic && cinfoid >= 10 && cinfoid <= 14) || (!isStatic && ((cinfoid >= AV_NPC_A_GRAVEDEFENSE0 && cinfoid <= AV_NPC_A_GRAVEDEFENSE3) ||
332 (cinfoid >= AV_NPC_H_GRAVEDEFENSE0 && cinfoid <= AV_NPC_H_GRAVEDEFENSE3))))
333 {
334 if (!isStatic && ((cinfoid >= AV_NPC_A_GRAVEDEFENSE0 && cinfoid <= AV_NPC_A_GRAVEDEFENSE3)
335 || (cinfoid >= AV_NPC_H_GRAVEDEFENSE0 && cinfoid <= AV_NPC_H_GRAVEDEFENSE3)))
336 {
337 CreatureData& data = sObjectMgr->NewOrExistCreatureData(creature->GetSpawnId());
338 data.wander_distance = 5;
339 }
340 //else wander_distance will be 15, so creatures move maximum=10
341 //creature->SetDefaultMovementType(RANDOM_MOTION_TYPE);
342 creature->GetMotionMaster()->Initialize();
343 creature->setDeathState(JUST_DIED);
344 creature->Respawn();
345 //TODO: find a way to add a motionmaster without killing the creature (i
346 //just copied this code from a gm-command
347 }
348
349 uint32 triggerSpawnID = 0;
350 uint32 newFaction = 0;
351 if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_A_CAPTAIN])
352 {
353 triggerSpawnID = AV_CPLACE_TRIGGER16;
354 newFaction = 84;
355 }
356 else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_A_BOSS])
357 {
358 triggerSpawnID = AV_CPLACE_TRIGGER17;
359 newFaction = 84;
360 }
361 else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_H_CAPTAIN])
362 {
363 triggerSpawnID = AV_CPLACE_TRIGGER18;
364 newFaction = 83;
365 }
366 else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_H_BOSS])
367 {
368 triggerSpawnID = AV_CPLACE_TRIGGER19;
369 newFaction = 83;
370 }
371 if (triggerSpawnID && newFaction)
372 {
373 if (Creature* trigger = AddCreature(WORLD_TRIGGER,
374 triggerSpawnID,
375 BG_AV_CreaturePos[triggerSpawnID][0],
376 BG_AV_CreaturePos[triggerSpawnID][1],
377 BG_AV_CreaturePos[triggerSpawnID][2],
378 BG_AV_CreaturePos[triggerSpawnID][3]))
379 {
380 trigger->SetFaction(newFaction);
381 trigger->CastSpell(trigger, SPELL_HONORABLE_DEFENDER_25Y, false);
382 }
383 }
384
385 return creature;
386}
#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
@ JUST_DIED
Definition: Unit.h:317
#define sObjectMgr
Definition: ObjectMgr.h:1640
bool isStatic(MovementGenerator *movement)
Definition: MotionMaster.cpp:67
Creature * AddCreature(uint32 entry, uint32 type, float x, float y, float z, float o, uint32 respawntime=0, MotionTransport *transport=nullptr)
Definition: Battleground.cpp:1491
Definition: Creature.h:46
void setDeathState(DeathState s, bool despawn=false) override
Definition: Creature.cpp:1934
void Respawn(bool force=false)
Definition: Creature.cpp:2005
void SetRespawnDelay(uint32 delay)
Definition: Creature.h:284
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:2262
void Initialize()
Definition: MotionMaster.cpp:72

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(), JUST_DIED, 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.

489{
491 PlayerScores.emplace(player->GetGUID().GetCounter(), new BattlegroundAVScore(player->GetGUID()));
492}
virtual void AddPlayer(Player *player)
Definition: Battleground.cpp:1077
BattlegroundScoreMap PlayerScores
Definition: Battleground.h:611
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
1489{
1490 if (m_Nodes[node].TotalOwnerId == teamId)
1491 {
1492 LOG_FATAL("bg.battleground", "Assaulting team is TotalOwner of node");
1493 ABORT();
1494 }
1495 if (m_Nodes[node].OwnerId == teamId)
1496 {
1497 LOG_FATAL("bg.battleground", "Assaulting team is owner of node");
1498 ABORT();
1499 }
1500 if (m_Nodes[node].State == POINT_DESTROYED)
1501 {
1502 LOG_FATAL("bg.battleground", "Destroyed node is being assaulted");
1503 ABORT();
1504 }
1505 if (m_Nodes[node].State == POINT_ASSAULTED && m_Nodes[node].TotalOwnerId != TEAM_NEUTRAL) //only assault an assaulted node if no totalowner exists
1506 {
1507 LOG_FATAL("bg.battleground", "Assault on an not assaulted node with total owner");
1508 ABORT();
1509 }
1510 //the timer gets another time, if the previous owner was 0 == Neutral
1512 m_Nodes[node].PrevOwnerId = m_Nodes[node].OwnerId;
1513 m_Nodes[node].OwnerId = teamId;
1514 m_Nodes[node].PrevState = m_Nodes[node].State;
1516}
#define ABORT
Definition: Errors.h:76
#define LOG_FATAL(filterType__,...)
Definition: Log.h:155
@ 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
663{
664 // mine=0 northmine mine=1 southmin
665 // changing the owner results in setting respawntim to infinite for current creatures,
666 // spawning new mine owners creatures and changing the chest-objects so that the current owning team can use them
667
668 ASSERT(mine == AV_NORTH_MINE || mine == AV_SOUTH_MINE);
669 if (teamId == TEAM_ALLIANCE || teamId == TEAM_HORDE)
671
672 if (m_Mine_Owner[mine] == teamId && !initial)
673 return;
674 m_Mine_Owner[mine] = teamId;
675
676 if (!initial)
677 {
678 LOG_DEBUG("bg.battleground", "bg_av depopulating mine {} (0=north, 1=south)", mine);
679 if (mine == AV_SOUTH_MINE)
681 if (BgCreatures[i])
682 DelCreature(i); //TODO just set the respawntime to 999999
684 if (BgCreatures[i])
685 DelCreature(i); //TODO here also
686 }
688
689 LOG_DEBUG("bg.battleground", "bg_av populating mine {} (0=north, 1=south)", mine);
690 uint16 miner;
691 //also neutral team exists.. after a big time, the neutral team tries to conquer the mine
692 if (mine == AV_NORTH_MINE)
693 {
694 if (teamId == TEAM_ALLIANCE)
695 miner = AV_NPC_N_MINE_A_1;
696 else if (teamId == TEAM_HORDE)
697 miner = AV_NPC_N_MINE_H_1;
698 else
699 miner = AV_NPC_N_MINE_N_1;
700 }
701 else
702 {
703 uint16 cinfo;
704 if (teamId == TEAM_ALLIANCE)
705 miner = AV_NPC_S_MINE_A_1;
706 else if (teamId == TEAM_HORDE)
707 miner = AV_NPC_S_MINE_H_1;
708 else
709 miner = AV_NPC_S_MINE_N_1;
710 //vermin
711 LOG_DEBUG("bg.battleground", "spawning vermin");
712 if (teamId == TEAM_ALLIANCE)
713 cinfo = AV_NPC_S_MINE_A_3;
714 else if (teamId == TEAM_HORDE)
715 cinfo = AV_NPC_S_MINE_H_3;
716 else
717 cinfo = AV_NPC_S_MINE_N_S;
719 AddAVCreature(cinfo, i);
720 }
722 AddAVCreature(miner, i);
723 //the next chooses randomly between 2 cretures
725 AddAVCreature(miner + (urand(1, 2)), i);
727
728 if (teamId == TEAM_ALLIANCE || teamId == TEAM_HORDE)
729 {
731 char buf[256];
735 if (creature)
736 YellToAll(creature, buf, LANG_UNIVERSAL);
737 }
738 else
739 {
740 if (mine == AV_SOUTH_MINE) //i think this gets called all the time
741 {
743 {
744 std::string creatureText = sCreatureTextMgr->GetLocalizedChatString(creature->GetEntry(), creature->getGender(), 0, 0, DEFAULT_LOCALE);
745 YellToAll(creature, creatureText.c_str(), LANG_UNIVERSAL);
746 }
747 }
748 }
749}
#define DEFAULT_LOCALE
Definition: Common.h:88
#define LOG_DEBUG(filterType__,...)
Definition: Log.h:171
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:961
@ LANG_BG_AV_ALLY
Definition: Language.h:960
@ LANG_BG_AV_MINE_SOUTH
Definition: Language.h:971
@ LANG_BG_AV_MINE_NORTH
Definition: Language.h:970
@ LANG_BG_AV_MINE_TAKEN
Definition: Language.h:969
#define sCreatureTextMgr
Definition: CreatureTextMgr.h:119
@ LANG_UNIVERSAL
Definition: SharedDefines.h:707
@ TEAM_ALLIANCE
Definition: SharedDefines.h:732
@ TEAM_HORDE
Definition: SharedDefines.h:733
bool DelCreature(uint32 type)
Definition: Battleground.cpp:1554
void YellToAll(Creature *creature, const char *text, uint32 language)
Definition: Battleground.cpp:710
const char * GetAcoreString(int32 entry)
Definition: Battleground.cpp:1682
Creature * GetBGCreature(uint32 type)
Definition: Battleground.cpp:1462
void PlaySoundToAll(uint32 soundId)
Definition: Battleground.cpp:691
Creature * AddAVCreature(uint16 cinfoid, uint16 type)
Definition: BattlegroundAV.cpp:300
void SendMineWorldStates(uint32 mine)
Definition: BattlegroundAV.cpp:1183
uint8 getGender() const
Definition: Unit.h:1428

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
1541{
1542 ASSERT(m_Nodes[node].TotalOwnerId == teamId);
1543 ASSERT(m_Nodes[node].OwnerId != teamId);
1544 ASSERT(m_Nodes[node].State != POINT_CONTROLED && m_Nodes[node].State != POINT_DESTROYED);
1545 m_Nodes[node].PrevOwnerId = m_Nodes[node].OwnerId;
1546 m_Nodes[node].OwnerId = teamId;
1547 m_Nodes[node].PrevState = m_Nodes[node].State;
1549 m_Nodes[node].Timer = 0;
1550}
@ 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
815{
816 uint32 c_place = AV_CPLACE_DEFENSE_STORM_AID + (4 * node);
817 for (uint8 i = 0; i < 4; i++)
818 {
819 if (BgCreatures[c_place + i])
820 {
821 DelCreature(c_place + i);
822 }
823 }
824
825 //spiritguide
826 if (!ignoreSpiritGuide && !IsTower(node))
827 {
828 DelCreature(node);
829 }
830
831 //remove bonus honor aura trigger creature when node is lost
832 if (node < BG_AV_NODES_MAX)//fail safe
833 DelCreature(node + 302);//nullptr checks are in DelCreature! 0-302 spirit guides
834}
@ 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.

495{
496 //calculate bonuskills for both teams:
497 //first towers:
498 uint8 kills[2] = {0, 0}; // 0 = Alliance 1 = Horde
499 uint8 rep[2] = {0, 0}; // 0 = Alliance 1 = Horde
501 {
502 if (m_Nodes[i].State == POINT_CONTROLED)
503 {
504 if (m_Nodes[i].OwnerId == TEAM_ALLIANCE)
505 {
507 kills[0] += BG_AV_KILL_SURVIVING_TOWER;
508 }
509 else
510 {
512 kills[1] += BG_AV_KILL_SURVIVING_TOWER;
513 }
514 }
515 }
516
517 for (TeamId iTeamId = TEAM_ALLIANCE; iTeamId <= TEAM_HORDE; iTeamId = TeamId(iTeamId + 1))
518 {
519 if (m_CaptainAlive[iTeamId])
520 {
521 kills[iTeamId] += BG_AV_KILL_SURVIVING_CAPTAIN;
522 rep[iTeamId] += BG_AV_REP_SURVIVING_CAPTAIN;
523 }
524 if (rep[iTeamId] != 0)
525 RewardReputationToTeam(iTeamId == TEAM_ALLIANCE ? 730 : 729, rep[iTeamId], iTeamId);
526 if (kills[iTeamId] != 0)
527 RewardHonorToTeam(GetBonusHonorFromKill(kills[iTeamId]), iTeamId);
528 }
529
530 //TODO add enterevademode for all attacking creatures
531 Battleground::EndBattleground(winnerTeamId);
532}
@ 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:731
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:922
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
999{
1001
1002 BG_AV_Nodes node = GetNodeThroughObject(object);
1003 TeamId prevOwnerId = m_Nodes[node].OwnerId;
1004 TeamId teamId = player->GetTeamId();
1005 LOG_DEBUG("bg.battleground", "bg_av: player assaults point object {} node {}", object, node);
1006 if (prevOwnerId == teamId || teamId == m_Nodes[node].TotalOwnerId)
1007 return; //surely a gm used this object
1008
1009 if (node == BG_AV_NODES_SNOWFALL_GRAVE) //snowfall is a bit special in capping + it gets eyecandy stuff
1010 {
1011 if (object == BG_AV_OBJECT_FLAG_N_SNOWFALL_GRAVE) //initial capping
1012 {
1013 if (!(prevOwnerId == TEAM_NEUTRAL && m_Nodes[node].TotalOwnerId == TEAM_NEUTRAL))
1014 return;
1015
1016 if (teamId == TEAM_ALLIANCE)
1018 else
1021 }
1022 else if (m_Nodes[node].TotalOwnerId == TEAM_NEUTRAL) //recapping, when no team owns this node realy
1023 {
1024 if (!(m_Nodes[node].State != POINT_CONTROLED))
1025 return;
1026
1027 if (teamId == TEAM_ALLIANCE)
1028 SpawnBGObject(object - 11, RESPAWN_IMMEDIATELY);
1029 else
1030 SpawnBGObject(object + 11, RESPAWN_IMMEDIATELY);
1031 }
1032 //eyecandy
1033 uint32 spawn, despawn;
1034 if (teamId == TEAM_ALLIANCE)
1035 {
1038 }
1039 else
1040 {
1043 }
1044 for (uint8 i = 0; i < 4; i++)
1045 {
1046 SpawnBGObject(despawn + i, RESPAWN_ONE_DAY);
1048 }
1049 }
1050
1051 // xinef: moved here, assure that no call to m_Nodes is used in IF statement bellow as it is modified
1052 AssaultNode(node, teamId);
1053
1054 //if snowfall gots capped it can be handled like all other graveyards
1055 if (m_Nodes[node].TotalOwnerId != TEAM_NEUTRAL)
1056 {
1057 ASSERT(prevOwnerId != TEAM_NEUTRAL);
1058 if (teamId == TEAM_ALLIANCE)
1059 SpawnBGObject(object - 22, RESPAWN_IMMEDIATELY);
1060 else
1061 SpawnBGObject(object + 22, RESPAWN_IMMEDIATELY);
1062
1063 bool ignoreSpiritGuide = false;
1064 if (IsTower(node))
1065 {
1066 //spawning/despawning of bigflag+aura
1071 }
1072 else
1073 {
1074 //spawning/despawning of aura
1076 SpawnBGObject(static_cast<uint8>(BG_AV_OBJECT_AURA_A_FIRSTAID_STATION) + prevOwnerId + 3 * node, RESPAWN_ONE_DAY); //teeamaura despawn
1077
1078 ignoreSpiritGuide = true;
1079
1080 _reviveEvents.AddEventAtOffset([this, node]()
1081 {
1083
1084 if (!IsTower(node))
1085 DelCreature(node); // Delete spirit healer
1086 }, 500ms);
1087 }
1088
1089 DePopulateNode(node, ignoreSpiritGuide);
1090 }
1091
1092 SpawnBGObject(object, RESPAWN_ONE_DAY); //delete old banner
1093 // xinef: change here is too late, AssaultNode(node, team);
1095
1096 //send a nice message to all :)
1097 char buf[256];
1100 if (creature)
1101 YellToAll(creature, buf, LANG_UNIVERSAL);
1102 //update the statistic for the assaulting player
1105
1107}
@ 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:967
@ LANG_BG_AV_TOWER_ASSAULTED
Definition: Language.h:963
void AddEventAtOffset(BasicEvent *event, Milliseconds offset)
Definition: EventProcessor.h:109
void SpawnBGObject(uint32 type, uint32 respawntime, uint32 forceRespawnDelay=0)
Definition: Battleground.cpp:1471
void RelocateDeadPlayers(ObjectGuid queueIndex)
Relocate all players in ReviveQueue to the closest graveyard.
Definition: Battleground.cpp:1345
EventProcessor _reviveEvents
Definition: Battleground.h:637
BattlegroundStatus GetStatus() const
Definition: Battleground.h:322
BG_AV_Nodes GetNodeThroughObject(uint32 object)
Definition: BattlegroundAV.cpp:836
bool UpdatePlayerScore(Player *player, uint32 type, uint32 value, bool doAddHonor=true) override
Definition: BattlegroundAV.cpp:576
char const * GetNodeName(BG_AV_Nodes node)
Definition: BattlegroundAV.cpp:1446
void DePopulateNode(BG_AV_Nodes node, bool ignoreSpiritGuid=false)
Definition: BattlegroundAV.cpp:814
void UpdateNodeWorldState(BG_AV_Nodes node)
Definition: BattlegroundAV.cpp:1174
void AssaultNode(BG_AV_Nodes node, TeamId teamId)
Definition: BattlegroundAV.cpp:1488
void KilledMonsterCredit(uint32 entry, ObjectGuid guid=ObjectGuid::Empty)
Definition: PlayerQuest.cpp:1911
TeamId GetTeamId(bool original=false) const
Definition: Player.h:2059

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.

900{
902 return;
903 int32 object = GetObjectType(gameObject->GetGUID());
904 if (object < 0)
905 return;
906 switch (gameObject->GetEntry())
907 {
913 EventPlayerAssaultsPoint(source, object);
914 break;
919 EventPlayerDefendsPoint(source, object);
920 break;
921 default:
922 break;
923 }
924}
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:1816
void EventPlayerAssaultsPoint(Player *player, uint32 object)
Definition: BattlegroundAV.cpp:998
void EventPlayerDefendsPoint(Player *player, uint32 object)
Definition: BattlegroundAV.cpp:926

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

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
603{
604 uint32 object = GetObjectThroughNode(node);
605 LOG_DEBUG("bg.battleground", "bg_av: player destroyed point node {} object {}", node, object);
606
607 //despawn banner
609 DestroyNode(node);
611
612 TeamId ownerId = m_Nodes[node].OwnerId;
613 if (IsTower(node))
614 {
616 //despawn marshal
619 else
620 LOG_ERROR("bg.battleground", "BG_AV: playerdestroyedpoint: marshal {} doesn't exist", AV_CPLACE_A_MARSHAL_SOUTH + tmp);
621 //spawn destroyed aura
622 for (uint8 i = 0; i <= 9; i++)
624
626 RewardReputationToTeam(ownerId == TEAM_ALLIANCE ? 730 : 729, BG_AV_REP_TOWER, ownerId);
628
629 SpawnBGObject(static_cast<uint8>(BG_AV_OBJECT_TAURA_A_DUNBALDAR_SOUTH) + ownerId + (2 * tmp), RESPAWN_ONE_DAY);
630 SpawnBGObject(static_cast<uint8>(BG_AV_OBJECT_TFLAG_A_DUNBALDAR_SOUTH) + ownerId + (2 * tmp), RESPAWN_ONE_DAY);
631 }
632 else
633 {
634 if (ownerId == TEAM_ALLIANCE)
636 else
640 PopulateNode(node);
641 if (node == BG_AV_NODES_SNOWFALL_GRAVE) //snowfall eyecandy
642 {
643 for (uint8 i = 0; i < 4; i++)
644 {
647 }
648 }
649 }
650 //send a nice message to all :)
651 char buf[256];
652 if (IsTower(node))
654 else
656
658 if (creature)
659 YellToAll(creature, buf, LANG_UNIVERSAL);
660}
#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:965
@ LANG_BG_AV_TOWER_TAKEN
Definition: Language.h:962
uint32 GetObjectThroughNode(BG_AV_Nodes node)
Definition: BattlegroundAV.cpp:858
void UpdateScore(TeamId teamId, int16 points)
Definition: BattlegroundAV.cpp:270
void DestroyNode(BG_AV_Nodes node)
Definition: BattlegroundAV.cpp:1518

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.

1110{
1111 bool stateok;
1112 //graveyards
1114 {
1115 for (uint8 j = 1; j <= 3; j += 2)
1116 {
1117 //j=1=assaulted j=3=controled
1118 stateok = (m_Nodes[i].State == j);
1119 data << uint32(BG_AV_NodeWorldStates[i][GetWorldStateType(j, TEAM_ALLIANCE)]) << uint32((m_Nodes[i].OwnerId == TEAM_ALLIANCE && stateok) ? 1 : 0);
1120 data << uint32(BG_AV_NodeWorldStates[i][GetWorldStateType(j, TEAM_HORDE)]) << uint32((m_Nodes[i].OwnerId == TEAM_HORDE && stateok) ? 1 : 0);
1121 }
1122 }
1123
1124 //towers
1126 for (uint8 j = 1; j <= 3; j += 2)
1127 {
1128 //j=1=assaulted j=3=controled //i dont have j=2=destroyed cause destroyed is the same like enemy-team controll
1129 stateok = (m_Nodes[i].State == j || (m_Nodes[i].State == POINT_DESTROYED && j == 3));
1130 data << uint32(BG_AV_NodeWorldStates[i][GetWorldStateType(j, TEAM_ALLIANCE)]) << uint32((m_Nodes[i].OwnerId == TEAM_ALLIANCE && stateok) ? 1 : 0);
1131 data << uint32(BG_AV_NodeWorldStates[i][GetWorldStateType(j, TEAM_HORDE)]) << uint32((m_Nodes[i].OwnerId == TEAM_HORDE && stateok) ? 1 : 0);
1132 }
1133 if (m_Nodes[BG_AV_NODES_SNOWFALL_GRAVE].OwnerId == TEAM_NEUTRAL) //cause neutral teams aren't handled generic
1134 data << uint32(AV_SNOWFALL_N) << uint32(1);
1136 data << uint32(AV_Horde_Score) << uint32(m_Team_Scores[1]);
1137 if (GetStatus() == STATUS_IN_PROGRESS) //only if game started the teamscores are displayed
1138 {
1139 data << uint32(AV_SHOW_A_SCORE) << uint32(1);
1140 data << uint32(AV_SHOW_H_SCORE) << uint32(1);
1141 }
1142 else
1143 {
1144 data << uint32(AV_SHOW_A_SCORE) << uint32(0);
1145 data << uint32(AV_SHOW_H_SCORE) << uint32(0);
1146 }
1149}
@ 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:1151

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.

1201{
1202 GraveyardStruct const* entry = nullptr;
1203 float dist = 0;
1204 float minDist = 0;
1205 float x, y;
1206
1207 player->GetPosition(x, y);
1208
1209 GraveyardStruct const* pGraveyard = sGraveyard->GetGraveyard(BG_AV_GraveyardIds[player->GetTeamId() + 7]);
1210 minDist = (pGraveyard->x - x) * (pGraveyard->x - x) + (pGraveyard->y - y) * (pGraveyard->y - y);
1211
1213 if (m_Nodes[i].OwnerId == player->GetTeamId() && m_Nodes[i].State == POINT_CONTROLED)
1214 {
1215 entry = sGraveyard->GetGraveyard(BG_AV_GraveyardIds[i]);
1216 if (entry)
1217 {
1218 dist = (entry->x - x) * (entry->x - x) + (entry->y - y) * (entry->y - y);
1219 if (dist < minDist)
1220 {
1221 minDist = dist;
1222 pGraveyard = entry;
1223 }
1224 }
1225 }
1226 return pGraveyard;
1227}
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
1447{
1448 switch (node)
1449 {
1480 default:
1481 LOG_ERROR("bg.battleground", "tried to get name for node {}", node);
1482 break;
1483 }
1484
1485 return "Unknown";
1486}
@ 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:980
@ LANG_BG_AV_NODE_GRAVE_FROST
Definition: Language.h:984
@ LANG_BG_AV_NODE_TOWER_STONE
Definition: Language.h:979
@ LANG_BG_AV_NODE_TOWER_FROST_E
Definition: Language.h:985
@ LANG_BG_AV_NODE_GRAVE_STORMPIKE
Definition: Language.h:976
@ LANG_BG_AV_NODE_GRAVE_ICE
Definition: Language.h:982
@ LANG_BG_AV_NODE_TOWER_ICE
Definition: Language.h:981
@ LANG_BG_AV_NODE_TOWER_POINT
Definition: Language.h:983
@ LANG_BG_AV_NODE_TOWER_ICEWING
Definition: Language.h:977
@ LANG_BG_AV_NODE_TOWER_DUN_S
Definition: Language.h:974
@ LANG_BG_AV_NODE_GRAVE_STORM_AID
Definition: Language.h:973
@ LANG_BG_AV_NODE_TOWER_DUN_N
Definition: Language.h:975
@ LANG_BG_AV_NODE_GRAVE_FROST_HUT
Definition: Language.h:987
@ LANG_BG_AV_NODE_GRAVE_STONE
Definition: Language.h:978
@ LANG_BG_AV_NODE_TOWER_FROST_W
Definition: Language.h:986

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
837{
838 LOG_DEBUG("bg.battleground", "bg_AV getnodethroughobject {}", object);
840 return BG_AV_Nodes(object);
842 return BG_AV_Nodes(object - 11);
844 return BG_AV_Nodes(object - 7);
846 return BG_AV_Nodes(object - 22);
848 return BG_AV_Nodes(object - 33);
850 return BG_AV_Nodes(object - 29);
853 LOG_ERROR("bg.battleground", "BattlegroundAV: ERROR! GetPlace got a wrong object :(");
854 ABORT();
855 return BG_AV_Nodes(0);
856}
@ 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
859{
860 //this function is the counterpart to GetNodeThroughObject()
861 LOG_DEBUG("bg.battleground", "bg_AV GetObjectThroughNode {}", node);
862 if (m_Nodes[node].OwnerId == TEAM_ALLIANCE)
863 {
864 if (m_Nodes[node].State == POINT_ASSAULTED)
865 {
866 if (node <= BG_AV_NODES_FROSTWOLF_HUT)
867 return node + 11;
869 return node + 7;
870 }
871 else if (m_Nodes[node].State == POINT_CONTROLED)
873 return node;
874 }
875 else if (m_Nodes[node].OwnerId == TEAM_HORDE)
876 {
877 if (m_Nodes[node].State == POINT_ASSAULTED)
878 {
880 return node + 22;
881 }
882 else if (m_Nodes[node].State == POINT_CONTROLED)
883 {
884 if (node <= BG_AV_NODES_FROSTWOLF_HUT)
885 return node + 33;
887 return node + 29;
888 }
889 }
890 else if (m_Nodes[node].OwnerId == TEAM_NEUTRAL)
892 LOG_ERROR("bg.battleground", "BattlegroundAV: Error! GetPlaceNode couldn't resolve node {}", node);
893 ABORT();
894 return 0;
895}

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.

1634{
1636 return TEAM_ALLIANCE;
1637
1639}
uint32 GetTeamScore(TeamId teamId) const
Definition: Battleground.cpp:1855
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
1152{
1153 //neutral stuff cant get handled (currently its only snowfall)
1154 ASSERT(teamId != TEAM_NEUTRAL);
1155 //a_c a_a h_c h_a the positions in worldstate-array
1156 if (teamId == TEAM_ALLIANCE)
1157 {
1158 if (state == POINT_CONTROLED || state == POINT_DESTROYED)
1159 return 0;
1160 if (state == POINT_ASSAULTED)
1161 return 1;
1162 }
1163 if (teamId == TEAM_HORDE)
1164 {
1165 if (state == POINT_DESTROYED || state == POINT_CONTROLED)
1166 return 2;
1167 if (state == POINT_ASSAULTED)
1168 return 3;
1169 }
1170 LOG_ERROR("bg.battleground", "BG_AV: should update a strange worldstate state:{} team:{}", state, teamId);
1171 return 5; //this will crash the game, but i want to know if something is wrong here
1172}

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.

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

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.

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

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

◆ HandleKillUnit()

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

Reimplemented from Battleground.

78{
79 LOG_DEBUG("bg.battleground", "bg_av HandleKillUnit {}", unit->GetEntry());
81 return;
82 uint32 entry = unit->GetEntry();
83 /*
84 uint32 triggerSpawnID = 0;
85 if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_A_CAPTAIN])
86 triggerSpawnID = AV_CPLACE_TRIGGER16;
87 else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_A_BOSS])
88 triggerSpawnID = AV_CPLACE_TRIGGER17;
89 else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_H_CAPTAIN])
90 triggerSpawnID = AV_CPLACE_TRIGGER18;
91 else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_H_BOSS])
92 triggerSpawnID = AV_CPLACE_TRIGGER19;
93 */
95 {
96 CastSpellOnTeam(23658, TEAM_HORDE); //this is a spell which finishes a quest where a player has to kill the boss
101 }
102 else if (entry == BG_AV_CreatureInfo[AV_NPC_H_BOSS])
103 {
104 CastSpellOnTeam(23658, TEAM_ALLIANCE); //this is a spell which finishes a quest where a player has to kill the boss
109 }
110 else if (entry == BG_AV_CreatureInfo[AV_NPC_A_CAPTAIN])
111 {
112 if (!m_CaptainAlive[0])
113 {
114 LOG_ERROR("bg.battleground", "Killed a Captain twice, please report this bug, if you haven't done \".respawn\"");
115 return;
116 }
117 m_CaptainAlive[0] = false;
121 //spawn destroyed aura
122 for (uint8 i = 0; i <= 9; i++)
125 if (creature)
128 }
129 else if (entry == BG_AV_CreatureInfo[AV_NPC_H_CAPTAIN])
130 {
131 if (!m_CaptainAlive[1])
132 {
133 LOG_ERROR("bg.battleground", "Killed a Captain twice, please report this bug, if you haven't done \".respawn\"");
134 return;
135 }
136 m_CaptainAlive[1] = false;
140 //spawn destroyed aura
141 for (uint8 i = 0; i <= 9; i++)
144 if (creature)
147 }
149 {
153 }
155 {
159 }
160}
@ 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:991
@ LANG_BG_AV_A_CAPTAIN_DEAD
Definition: Language.h:992
void CastSpellOnTeam(uint32 spellId, TeamId teamId)
Definition: Battleground.cpp:696
void EndBattleground(TeamId winnerTeamId) override
Definition: BattlegroundAV.cpp:494
void ChangeMineOwner(uint8 mine, TeamId teamId, bool initial=false)
Definition: BattlegroundAV.cpp:662

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 
)
163{
165 return;//maybe we should log this, cause this must be a cheater or a big bug
166 TeamId teamId = player->GetTeamId();
167 //TODO add reputation, events (including quest not available anymore, next quest availabe, go/npc de/spawning)and maybe honor
168 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed", questid);
169 switch (questid)
170 {
175 m_Team_QuestStatus[teamId][0] += 20;
176 if (m_Team_QuestStatus[teamId][0] == 500 || m_Team_QuestStatus[teamId][0] == 1000 || m_Team_QuestStatus[teamId][0] == 1500) //25, 50, 75 turn ins
177 {
178 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed starting with unit upgrading..", questid);
180 if (m_Nodes[i].OwnerId == player->GetTeamId() && m_Nodes[i].State == POINT_CONTROLED)
181 {
183 PopulateNode(i);
184 //maybe this is bad, because it will instantly respawn all creatures on every grave..
185 }
186 }
187 break;
190 m_Team_QuestStatus[teamId][1]++;
191 RewardReputationToTeam(teamId, 1, teamId);
192 if (m_Team_QuestStatus[teamId][1] == 30)
193 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
194 break;
197 m_Team_QuestStatus[teamId][2]++;
198 RewardReputationToTeam(teamId, 1, teamId);
199 if (m_Team_QuestStatus[teamId][2] == 60)
200 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
201 break;
204 m_Team_QuestStatus[teamId][3]++;
205 RewardReputationToTeam(teamId, 1, teamId);
206 if (m_Team_QuestStatus[teamId][3] == 120)
207 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
208 break;
209 case AV_QUEST_A_BOSS1:
210 case AV_QUEST_H_BOSS1:
211 m_Team_QuestStatus[teamId][4] += 9; //you can turn in 10 or 1 item..
212 [[fallthrough]];
213 case AV_QUEST_A_BOSS2:
214 case AV_QUEST_H_BOSS2:
215 m_Team_QuestStatus[teamId][4]++;
216 if (m_Team_QuestStatus[teamId][4] >= 200)
217 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
218 break;
221 m_Team_QuestStatus[teamId][5]++;
222 if (m_Team_QuestStatus[teamId][5] == 28)
223 {
224 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
225
226 if (m_Team_QuestStatus[teamId][6] == 7)
227 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here - ground assault ready", questid);
228 }
229 break;
232 m_Team_QuestStatus[teamId][6]++;
233 if (m_Team_QuestStatus[teamId][6] == 7)
234 {
235 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
236
237 if (m_Team_QuestStatus[teamId][5] == 20)
238 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here - ground assault ready", questid);
239 }
240 break;
243 m_Team_QuestStatus[teamId][7]++;
244 if (m_Team_QuestStatus[teamId][7] == 25)
245 {
246 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
247
248 if (m_Team_QuestStatus[teamId][8] == 25)
249 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here - rider assault ready", questid);
250 }
251 break;
254 m_Team_QuestStatus[teamId][8]++;
255 if (m_Team_QuestStatus[teamId][8] == 25)
256 {
257 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here", questid);
258
259 if (m_Team_QuestStatus[teamId][7] == 25)
260 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed (need to implement some events here - rider assault ready", questid);
261 }
262 break;
263 default:
264 LOG_DEBUG("bg.battleground", "BG_AV Quest {} completed but is not interesting at all", questid);
265 return; //was no interesting quest at all
266 break;
267 }
268}
@ 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
1590{
1591 if (teamId == TEAM_ALLIANCE)
1592 {
1593 for (BG_AV_Nodes i = BG_AV_NODES_DUNBALDAR_SOUTH; i <= BG_AV_NODES_STONEHEART_BUNKER; ++i) // alliance towers controlled
1594 {
1595 if (m_Nodes[i].State == POINT_CONTROLED)
1596 {
1597 if (m_Nodes[i].OwnerId != TEAM_ALLIANCE)
1598 return false;
1599 }
1600 else
1601 return false;
1602 }
1603
1604 for (BG_AV_Nodes i = BG_AV_NODES_ICEBLOOD_TOWER; i <= BG_AV_NODES_FROSTWOLF_WTOWER; ++i) // horde towers destroyed
1605 if (m_Nodes[i].State != POINT_DESTROYED)
1606 return false;
1607
1608 return m_CaptainAlive[0];
1609 }
1610 else if (teamId == TEAM_HORDE)
1611 {
1612 for (BG_AV_Nodes i = BG_AV_NODES_ICEBLOOD_TOWER; i <= BG_AV_NODES_FROSTWOLF_WTOWER; ++i) // horde towers controlled
1613 {
1614 if (m_Nodes[i].State == POINT_CONTROLED)
1615 {
1616 if (m_Nodes[i].OwnerId != TEAM_HORDE)
1617 return false;
1618 }
1619 else
1620 return false;
1621 }
1622
1623 for (BG_AV_Nodes i = BG_AV_NODES_DUNBALDAR_SOUTH; i <= BG_AV_NODES_STONEHEART_BUNKER; ++i) // alliance towers destroyed
1624 if (m_Nodes[i].State != POINT_DESTROYED)
1625 return false;
1626
1627 return m_CaptainAlive[1];
1628 }
1629
1630 return false;
1631}

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
1581{
1582 for (auto mine : m_Mine_Owner)
1583 if (mine != teamId)
1584 return false;
1585
1586 return true;
1587}

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 
)
752{
753 if (GOId == BG_AV_OBJECTID_MINE_N)
754 return (m_Mine_Owner[AV_NORTH_MINE] == teamId);
755 if (GOId == BG_AV_OBJECTID_MINE_S)
756 return (m_Mine_Owner[AV_SOUTH_MINE] == teamId);
757 return true; //cause it's no mine'object it is ok if this is true
758}
@ 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
761{
762 TeamId ownerId = m_Nodes[node].OwnerId;
763
764 uint32 c_place = AV_CPLACE_DEFENSE_STORM_AID + (4 * node);
765 uint32 creatureid;
766 if (IsTower(node))
767 creatureid = (ownerId == TEAM_ALLIANCE) ? AV_NPC_A_TOWERDEFENSE : AV_NPC_H_TOWERDEFENSE;
768 else
769 {
770 if (m_Team_QuestStatus[ownerId][0] < 500)
771 creatureid = (ownerId == TEAM_ALLIANCE) ? AV_NPC_A_GRAVEDEFENSE0 : AV_NPC_H_GRAVEDEFENSE0;
772 else if (m_Team_QuestStatus[ownerId][0] < 1000)
773 creatureid = (ownerId == TEAM_ALLIANCE) ? AV_NPC_A_GRAVEDEFENSE1 : AV_NPC_H_GRAVEDEFENSE1;
774 else if (m_Team_QuestStatus[ownerId][0] < 1500)
775 creatureid = (ownerId == TEAM_ALLIANCE) ? AV_NPC_A_GRAVEDEFENSE2 : AV_NPC_H_GRAVEDEFENSE2;
776 else
777 creatureid = (ownerId == TEAM_ALLIANCE) ? AV_NPC_A_GRAVEDEFENSE3 : AV_NPC_H_GRAVEDEFENSE3;
778 //spiritguide
779 if (BgCreatures[node])
780 DelCreature(node);
781 if (!AddSpiritGuide(node, BG_AV_CreaturePos[node][0], BG_AV_CreaturePos[node][1], BG_AV_CreaturePos[node][2], BG_AV_CreaturePos[node][3], ownerId))
782 LOG_ERROR("bg.battleground", "AV: couldn't spawn spiritguide at node {}", node);
783 }
784 for (uint8 i = 0; i < 4; i++)
785 AddAVCreature(creatureid, c_place + i);
786
787 if (node >= BG_AV_NODES_MAX)//fail safe
788 return;
789 Creature* trigger = GetBgMap()->GetCreature(BgCreatures[node + 302]);//0-302 other creatures
790 if (!trigger)
791 {
792 trigger = AddCreature(WORLD_TRIGGER,
793 node + 302,
794 BG_AV_CreaturePos[node + 302][0],
795 BG_AV_CreaturePos[node + 302][1],
796 BG_AV_CreaturePos[node + 302][2],
797 BG_AV_CreaturePos[node + 302][3]);
798 }
799
800 //add bonus honor aura trigger creature when node is accupied
801 //cast bonus aura (+50% honor in 25yards)
802 //aura should only apply to players who have accupied the node, set correct faction for trigger
803 if (trigger)
804 {
805 if (ownerId != TEAM_ALLIANCE && ownerId != TEAM_HORDE)//node can be neutral, remove trigger
806 {
807 DelCreature(node + 302);
808 return;
809 }
811 trigger->CastSpell(trigger, SPELL_HONORABLE_DEFENDER_25Y, false);
812 }
813}
@ 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:178
@ FACTION_HORDE_GENERIC
Definition: SharedDefines.h:177
bool AddSpiritGuide(uint32 type, float x, float y, float z, float o, TeamId teamId)
Definition: Battleground.cpp:1593
BattlegroundMap * GetBgMap() const
Definition: Battleground.h:424
void SetFaction(uint32 faction)
Definition: Unit.cpp:10029
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:3293

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.

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

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.

535{
536 //TODO search more buffs
540}
@ 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:4835

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

◆ ResetBGSubclass()

void BattlegroundAV::ResetBGSubclass ( )
overridevirtual

Reimplemented from Battleground.

1553{
1554 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
1555 {
1556 for (uint8 j = 0; j < 9; j++)
1557 m_Team_QuestStatus[i][j] = 0;
1559 m_IsInformedNearVictory[i] = false;
1560 m_CaptainAlive[i] = true;
1561 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
1563 }
1564 for (BG_AV_Nodes i = BG_AV_NODES_FIRSTAID_STATION; i <= BG_AV_NODES_STONEHEART_GRAVE; ++i) //alliance graves
1565 InitNode(i, TEAM_ALLIANCE, false);
1566 for (BG_AV_Nodes i = BG_AV_NODES_DUNBALDAR_SOUTH; i <= BG_AV_NODES_STONEHEART_BUNKER; ++i) //alliance towers
1567 InitNode(i, TEAM_ALLIANCE, true);
1568 for (BG_AV_Nodes i = BG_AV_NODES_ICEBLOOD_GRAVE; i <= BG_AV_NODES_FROSTWOLF_HUT; ++i) //horde graves
1569 InitNode(i, TEAM_HORDE, false);
1570 for (BG_AV_Nodes i = BG_AV_NODES_ICEBLOOD_TOWER; i <= BG_AV_NODES_FROSTWOLF_WTOWER; ++i) //horde towers
1571 InitNode(i, TEAM_HORDE, true);
1572 InitNode(BG_AV_NODES_SNOWFALL_GRAVE, TEAM_NEUTRAL, false); //give snowfall neutral owner
1573
1575 for (uint16 i = 0; i < static_cast<uint16>(AV_CPLACE_MAX) + AV_STATICCPLACE_MAX; i++)
1576 if (BgCreatures[i])
1577 DelCreature(i);
1578}
#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
1184{
1185 ASSERT(mine == AV_NORTH_MINE || mine == AV_SOUTH_MINE);
1186
1187 uint8 owner = 1;
1188
1189 if (m_Mine_Owner[mine] == TEAM_ALLIANCE)
1190 owner = 0;
1191 else if (m_Mine_Owner[mine] == TEAM_HORDE)
1192 owner = 2;
1193
1194 for (uint8 i = 0; i < 3; ++i)
1195 UpdateWorldState(BG_AV_MineWorldStates[mine][i], 0); // Xinef: Clear data for consistency and buglessness
1196
1197 UpdateWorldState(BG_AV_MineWorldStates[mine][owner], 1);
1198}
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.

1230{
1231 // Create starting objects
1232
1233 //spawn node-objects
1235 {
1237 {
1238 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)
1239 || !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)
1240 || !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)
1241 || !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)
1242 //aura
1246 {
1247 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!2");
1248 return false;
1249 }
1250 }
1251 else //towers
1252 {
1253 if (i <= BG_AV_NODES_STONEHEART_BUNKER) //alliance towers
1254 {
1255 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)
1256 || !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)
1257 || !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)
1258 || !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)
1261 {
1262 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!3");
1263 return false;
1264 }
1265 }
1266 else //horde towers
1267 {
1268 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)
1269 || !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)
1270 || !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)
1271 || !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)
1274 {
1275 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!4");
1276 return false;
1277 }
1278 }
1279 for (uint8 j = 0; j <= 9; j++) //burning aura
1280 {
1282 {
1283 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!5.{}", i);
1284 return false;
1285 }
1286 }
1287 }
1288 }
1289 for (uint8 i = 0; i < 2; i++) //burning aura for buildings
1290 {
1291 for (uint8 j = 0; j <= 9; j++)
1292 {
1293 if (j < 5)
1294 {
1296 {
1297 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!6.{}", i);
1298 return false;
1299 }
1300 }
1301 else
1302 {
1304 {
1305 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!7.{}", i);
1306 return false;
1307 }
1308 }
1309 }
1310 }
1312 {
1314 {
1315 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some mine supplies Battleground not created!7.5.{}", i);
1316 return false;
1317 }
1318 }
1320 {
1322 {
1323 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some mine supplies Battleground not created!7.6.{}", i);
1324 return false;
1325 }
1326 }
1327
1329 {
1330 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!8");
1331 return false;
1332 }
1333 for (uint8 i = 0; i < 4; i++)
1334 {
1339 {
1340 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!9.{}", i);
1341 return false;
1342 }
1343 }
1344
1345 // Handpacked snowdrift, only during holiday
1348 {
1350 return false;
1351 }
1352
1353 // Quest banners
1355 {
1356 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!8");
1357 return false;
1358 }
1360 {
1361 LOG_ERROR("bg.battleground", "BatteGroundAV: Failed to spawn some object Battleground not created!8");
1362 return false;
1363 }
1364
1365 uint16 i;
1366 LOG_DEBUG("bg.battleground", "Alterac Valley: entering state STATUS_WAIT_JOIN ...");
1367 // Initial Nodes
1368 for (i = 0; i < BG_AV_OBJECT_MAX; i++)
1370
1372 {
1375 }
1376
1379
1381 {
1385 }
1386
1388 {
1390 SpawnBGObject(i + 16, RESPAWN_IMMEDIATELY); //aura
1391 }
1392
1394 {
1396 SpawnBGObject(i + 16, RESPAWN_IMMEDIATELY); //aura
1397 }
1398
1399 //snowfall and the doors
1402
1403 // Handpacked snowdrift, only during holiday
1407
1408 // Quest banners
1411
1412 //creatures
1413 LOG_DEBUG("bg.battleground", "BG_AV start poputlating nodes");
1415 {
1416 if (m_Nodes[i].OwnerId != TEAM_NEUTRAL)
1418 }
1419 //all creatures which don't get despawned through the script are static
1420 LOG_DEBUG("bg.battleground", "BG_AV: start spawning static creatures");
1421 for (i = 0; i < AV_STATICCPLACE_MAX; i++)
1423 //mainspiritguides:
1424 LOG_DEBUG("bg.battleground", "BG_AV: start spawning spiritguides creatures");
1427 //spawn the marshals (those who get deleted, if a tower gets destroyed)
1428 LOG_DEBUG("bg.battleground", "BG_AV: start spawning marshal creatures");
1432
1433 if (
1434 // alliance gates
1436 // horde gates
1438 {
1439 LOG_ERROR("sql.sql", "BatteGroundAV: Failed to spawn some object Battleground not created!1");
1440 return false;
1441 }
1442
1443 return true;
1444}
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:1910
@ HOLIDAY_FEAST_OF_WINTER_VEIL
Definition: SharedDefines.h:2717
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:1369

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.

469{
470 LOG_DEBUG("bg.battleground", "BG_AV: start spawning mine stuff");
475 for (uint8 mine = AV_NORTH_MINE; mine <= AV_SOUTH_MINE; mine++) //mine population
476 ChangeMineOwner(mine, TEAM_NEUTRAL, true);
477
480
483
484 // Achievement: The Alterac Blitz
486}
constexpr auto MINUTE
Definition: Common.h:56
#define AV_EVENT_START_BATTLE
Definition: BattlegroundAV.h:49
@ ACHIEVEMENT_TIMED_TYPE_EVENT
Definition: DBCEnums.h:116
void DoorOpen(uint32 type)
Definition: Battleground.cpp:1441
void StartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry)
Definition: Battleground.cpp:1849

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
1175{
1176 UpdateWorldState(BG_AV_NodeWorldStates[node][GetWorldStateType(m_Nodes[node].State, m_Nodes[node].OwnerId)], 1);
1177 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
1179 else
1180 UpdateWorldState(BG_AV_NodeWorldStates[node][GetWorldStateType(m_Nodes[node].PrevState, m_Nodes[node].PrevOwnerId)], 0);
1181}

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.

577{
578 if (!Battleground::UpdatePlayerScore(player, type, value, doAddHonor))
579 return false;
580
581 switch (type)
582 {
585 break;
588 break;
591 break;
594 break;
595 default:
596 break;
597 }
598
599 return true;
600}
@ 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:150
virtual bool UpdatePlayerScore(Player *player, uint32 type, uint32 value, bool doAddHonor=true)
Definition: Battleground.cpp:1308
void UpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1=0, uint32 miscValue2=0, Unit *unit=nullptr)
Definition: PlayerUpdates.cpp:2128

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 
)
271{
272 //note: to remove reinforcementpoints points must be negative, for adding reinforcements points must be positive
273 m_Team_Scores[teamId] += points;
274
276 if (points < 0)
277 {
278 if (m_Team_Scores[teamId] < 1)
279 {
280 m_Team_Scores[teamId] = 0;
282 }
283 else if (!m_IsInformedNearVictory[teamId] && m_Team_Scores[teamId] < SEND_MSG_NEAR_LOSE)
284 {
285 if (teamId == TEAM_ALLIANCE)
286 {
288 }
289 else
290 {
292 }
293
295 m_IsInformedNearVictory[teamId] = true;
296 }
297 }
298}
@ 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:3161
@ CHAT_MSG_BG_SYSTEM_HORDE
Definition: SharedDefines.h:3162
static TeamId GetOtherTeamId(TeamId teamId)
Definition: Battleground.cpp:1773
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