TrinityCore
BattlegroundSA.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef __BATTLEGROUNDSA_H
19#define __BATTLEGROUNDSA_H
20
21#include "Battleground.h"
22#include "Object.h"
23
25{
32};
33
35{
36 // alliance is defender
40 // horde is defender
44};
45
47{
48 GO_SEAFORIUM_BOMB_H = 194086, // Used by horde players
49 GO_SEAFORIUM_BOMB_A = 190753, // Used by alliance players
52
55
58
61
65
72};
73
75{
79};
80
82{
93};
94
96{
97 // Kanrethad
100
101 // Rigger Sparklight / Gorgril Rigspark
103
104 // World Trigger
124
126{
136
140
147
151
153
158};
159
161{
165 BG_SA_BOAT_TWO_A = 193185
167
169{
170 1732,
171 1735,
172};
173
175{
176 West,
177 East,
178 Central
179};
180
182{
185
189
190enum class DefenseLine
191{
192 First,
193 Second,
194 Third,
195 Last
196};
197
199{
205};
206
208{
215};
216
218{
221};
222
224{
227
230{
231 public:
232 BattlegroundSA(BattlegroundTemplate const* battlegroundTemplate);
234
240 void PostUpdateImpl(uint32 diff) override;
241
242 /* inherited from BattlegroundClass */
244 void AddPlayer(Player* player, BattlegroundQueueTypeId queueId) override;
246 bool SetupBattleground() override;
247 void Reset() override;
249 void HandleKillUnit(Creature* creature, Unit* killer) override;
251 void ProcessEvent(WorldObject* /*obj*/, uint32 /*eventId*/, WorldObject* /*invoker*/ = nullptr) override;
253 void TitanRelicActivated(Player* clicker);
254
256 GateInfo const* GetGate(uint32 entry)
257 {
258 for (GateInfo const& gate : Gates)
259 if (gate.GameObjectId == entry)
260 return &gate;
261
262 return nullptr;
263 }
264
266 void EndBattleground(Team winner) override;
267
269 void RemovePlayer(Player* player, ObjectGuid guid, uint32 team) override;
270
271 void OnGameObjectCreate(GameObject* gameobject) override;
272 void DoAction(uint32 actionId, WorldObject* source, WorldObject* target) override;
273 void OnCreatureCreate(Creature* creature) override;
274
275 void OnMapSet(BattlegroundMap* map) override;
276 uint32 GetData(uint32 dataId) const override;
277 private:
278
284 bool ResetObjs();
286 void StartShips();
291 void TeleportPlayers() const;
292 void TeleportToEntrancePosition(Player* player) const;
299 void DestroyGate(Player* player, GameObject* go) override;
311 void ToggleTimer();
312
314 void SendTransportInit(Player* player);
316 void SendTransportsRemove(Player* player);
317
318 bool IsGateDestroyed(GateInfo const* gateInfo) const;
319
320 void HandleCaptureGraveyardAction(GameObject* graveyardBanner, Player* player);
321
322 void MakeObjectsInteractable(DefenseLine defenseLine);
323
324 Creature* FindKanrethad() const;
325
326 void EndRound();
327
330
351
352 // [team][boat_idx]
353 std::array<std::array<ObjectGuid, 2 /*BOAT_COUNT*/>, PVP_TEAMS_COUNT> _boatGUIDs;
354 std::array<GuidUnorderedSet, PVP_TEAMS_COUNT> _staticBombGUIDs; // bombs ready to be picked up
355 GuidUnorderedSet _dynamicBombGUIDs; // bombs thrown by players, ready to explode/disarm
356
364};
365#endif
StrandOfTheAncientSharedActions
@ ACTION_SOTA_CAPTURE_GRAVEYARD
GateInfo const Gates[]
StrandOfTheAncientsGraveyard
BG_SA_Timers
@ BG_SA_BOAT_START
@ BG_SA_WARMUPLENGTH
@ BG_SA_ROUNDLENGTH
BG_SA_GateState
@ BG_SA_HORDE_GATE_DAMAGED
@ BG_SA_ALLIANCE_GATE_OK
@ BG_SA_HORDE_GATE_DESTROYED
@ BG_SA_ALLIANCE_GATE_DESTROYED
@ BG_SA_HORDE_GATE_OK
@ BG_SA_ALLIANCE_GATE_DAMAGED
BG_SA_Status
@ BG_SA_ROUND_ONE
@ BG_SA_NOT_STARTED
@ BG_SA_ROUND_TWO
@ BG_SA_SECOND_WARMUP
@ BG_SA_BONUS_ROUND
@ BG_SA_WARMUP
BG_SA_Boat
@ BG_SA_BOAT_ONE_H
@ BG_SA_BOAT_TWO_H
@ BG_SA_BOAT_ONE_A
@ BG_SA_BOAT_TWO_A
StrandOfTheAncientsGameObjects
@ GO_GRAVEYARD_WEST_H
@ GO_CHAMBER_OF_ANCIENT_RELICS
@ GO_GATE_OF_THE_YELLOW_MOON
@ GO_GATE_OF_THE_BLUE_SAPPHIRE
@ GO_GATE_OF_THE_RED_SUN
@ GO_GRAVEYARD_CENTRAL_A
@ GO_GRAVEYARD_WEST_A
@ GO_COLLISION_DOOR
@ GO_TITAN_RELIC_H
@ GO_GRAVEYARD_CENTRAL_H
@ GO_GATE_OF_THE_PURPLE_AMETHYST
@ GO_SEAFORIUM_CHARGE_A
@ GO_SEAFORIUM_BOMB_A
@ GO_GRAVEYARD_EAST_A
@ GO_SEAFORIUM_BOMB_H
@ GO_GRAVEYARD_EAST_H
@ GO_SEAFORIUM_CHARGE_H
@ GO_TITAN_RELIC_A
@ GO_GATE_OF_THE_GREEN_EMERALD
SATexts
@ TEXT_YELLOW_GATE_DESTROYED
@ TEXT_EAST_GRAVEYARD_CAPTURED_A
@ TEXT_PURPLE_GATE_DESTROYED
@ TEXT_PURPLE_GATE_UNDER_ATTACK
@ TEXT_RED_GATE_DESTROYED
@ TEXT_GREEN_GATE_UNDER_ATTACK
@ TEXT_ANCIENT_GATE_UNDER_ATTACK
@ TEXT_ROUND_1_FINISHED
@ TEXT_SPARKLIGHT_RIGSPARK_SPAWN
@ TEXT_SOUTH_GRAVEYARD_CAPTURED_A
@ TEXT_ROUND_STARTED
@ TEXT_RED_GATE_UNDER_ATTACK
@ TEXT_ANCIENT_GATE_DESTROYED
@ TEXT_WEST_GRAVEYARD_CAPTURED_A
@ TEXT_GREEN_GATE_DESTROYED
@ TEXT_WEST_GRAVEYARD_CAPTURED_H
@ TEXT_EAST_GRAVEYARD_CAPTURED_H
@ TEXT_YELLOW_GATE_UNDER_ATTACK
@ TEXT_SOUTH_GRAVEYARD_CAPTURED_H
@ TEXT_BLUE_GATE_DESTROYED
@ TEXT_BLUE_GATE_UNDER_ATTACK
SASounds
@ SOUND_DEFEAT_ALLIANCE
@ SOUND_WALL_DESTROYED_HORDE
@ SOUND_VICTORY_HORDE
@ SOUND_DEFEAT_HORDE
@ SOUND_WALL_ATTACKED_HORDE
@ SOUND_GRAVEYARD_TAKEN_ALLIANCE
@ SOUND_WALL_DESTROYED_ALLIANCE
@ SOUND_VICTORY_ALLIANCE
@ SOUND_GRAVEYARD_TAKEN_HORDE
@ SOUND_WALL_ATTACKED_ALLIANCE
uint32 const BG_SA_Factions[2]
SAWorldStates
@ BG_SA_DESTROYED_HORDE_VEHICLES
@ BG_SA_TIMER
@ BG_SA_ENABLE_TIMER
@ BG_SA_ANCIENT_GATEWS
@ BG_SA_LEFT_ATT_TOKEN_ALL
@ BG_SA_PURPLE_GATEWS
@ BG_SA_RED_GATEWS
@ BG_SA_BLUE_GATEWS
@ BG_SA_CENTER_GY_ALLIANCE
@ BG_SA_ATTACKER_TEAM
@ BG_SA_RIGHT_ATT_TOKEN_HRD
@ BG_SA_LEFT_GY_ALLIANCE
@ BG_SA_RIGHT_ATT_TOKEN_ALL
@ BG_SA_YELLOW_GATEWS
@ BG_SA_LEFT_GY_HORDE
@ BG_SA_ALLIANCE_DEFENCE_TOKEN
@ BG_SA_DESTROYED_ALLIANCE_VEHICLES
@ BG_SA_RIGHT_GY_ALLIANCE
@ BG_SA_HORDE_DEFENCE_TOKEN
@ BG_SA_LEFT_ATT_TOKEN_HRD
@ BG_SA_CENTER_GY_HORDE
@ BG_SA_GREEN_GATEWS
@ BG_SA_RIGHT_GY_HORDE
@ BG_SA_ALLY_ATTACKS
@ BG_SA_HORDE_ATTACKS
@ BG_SA_BONUS_TIMER
DefenseLine
BG_SA_BroadcastTexts
@ BG_SA_TEXT_ROUND_TWO_START_ONE_MINUTE
@ BG_SA_TEXT_ALLIANCE_CAPTURED_TITAN_PORTAL
@ BG_SA_TEXT_ROUND_TWO_START_HALF_MINUTE
@ BG_SA_TEXT_HORDE_CAPTURED_TITAN_PORTAL
@ IN_MILLISECONDS
Definition: Common.h:35
uint8_t uint8
Definition: Define.h:144
uint32_t uint32
Definition: Define.h:142
std::unordered_set< ObjectGuid > GuidUnorderedSet
Definition: ObjectGuid.h:396
TeamId
uint8 constexpr PVP_TEAMS_COUNT
Team
Class for manage Strand of Ancient battleground.
bool TimerEnabled
used for know we are in timer phase or not (used for worldstate update)
GateInfo const * GetGate(uint32 entry)
Return GateInfo, relative to bg data, according to gameobject entry.
void SendTransportInit(Player *player)
Send packet to player for create boats (client part)
void ToggleTimer()
Switch on/off timer worldstate.
BG_SA_Status Status
Statu of battle (Start or not, and what round)
void PostUpdateImpl(uint32 diff) override
Called every time for update battle data -Update timer -Round switch.
TeamId Attackers
Id of attacker team.
uint32 EndRoundTimer
Max time of round.
BattlegroundSA(BattlegroundTemplate const *battlegroundTemplate)
bool SignaledRoundTwo
for know if warning about second round start has been sent
void TeleportPlayers() const
Called between the two round -Teleport all players to good location.
uint32 GetData(uint32 dataId) const override
std::array< GuidUnorderedSet, PVP_TEAMS_COUNT > _staticBombGUIDs
void Reset() override
Creature * FindKanrethad() const
void RemovePlayer(Player *player, ObjectGuid guid, uint32 team) override
Called when a player leave battleground.
void OnCreatureCreate(Creature *creature) override
void OnMapSet(BattlegroundMap *map) override
bool SignaledRoundTwoHalfMin
for know if warning about second round start has been sent
ObjectGuid _graveyardCentral
ObjectGuid _collisionDoorGUID
void DestroyGate(Player *player, GameObject *go) override
Called when a gate is destroy -Give honor to player witch destroy it -Update worldstate -Delete gameo...
BG_SA_RoundScore RoundScores[2]
Score of each round.
uint32 UpdateWaitTimer
5secs before starting the 1min countdown for second round
void EndBattleground(Team winner) override
Called on battleground ending.
void DoAction(uint32 actionId, WorldObject *source, WorldObject *target) override
std::array< std::array< ObjectGuid, 2 >, PVP_TEAMS_COUNT > _boatGUIDs
void HandleCaptureGraveyardAction(GameObject *graveyardBanner, Player *player)
void MakeObjectsInteractable(DefenseLine defenseLine)
void OnGameObjectCreate(GameObject *gameobject) override
bool SetupBattleground() override
Called for ini battleground, after that the first player be entered.
bool ShipsStarted
For know if boats has start moving or not yet.
bool InitSecondRound
for know if second round has been init
ObjectGuid _graveyardWest
bool IsGateDestroyed(GateInfo const *gateInfo) const
bool ResetObjs()
Called on setup and between the two round -Delete all gameobject / creature -Respawn all gameobject /...
void AddPlayer(Player *player, BattlegroundQueueTypeId queueId) override
Called when a player join battle.
void CaptureGraveyard(StrandOfTheAncientsGraveyard graveyard, TeamId teamId)
Called when a graveyard is capture -Update spiritguide -Update gameobject (flag) -Update Worldstate -...
GuidUnorderedSet _dynamicBombGUIDs
void TeleportToEntrancePosition(Player *player) const
ObjectGuid _graveyardEast
void TitanRelicActivated(Player *clicker)
Called when a player clicked on relic.
void StartShips()
Called for start ship movement.
void ProcessEvent(WorldObject *, uint32, WorldObject *=nullptr) override
Called when someone activates an event.
void SendTransportsRemove(Player *player)
Send packet to player for destroy boats (client part)
ObjectGuid _kanrethadGUID
void HandleKillUnit(Creature *creature, Unit *killer) override
Called when a player kill a unit in bg.
ObjectGuid _titanRelicGUID
GuidUnorderedSet _gateGUIDs
uint32 TotalTime
Totale elapsed time of current round.
Definition: Unit.h:627
uint8 DamagedText
DefenseLine LineOfDefense
uint32 WorldState
uint32 GameObjectId
uint8 DestroyedText