TrinityCore
Loading...
Searching...
No Matches
BattlefieldWG.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 BATTLEFIELD_WG_
19#define BATTLEFIELD_WG_
20
21#include "Battlefield.h"
22
23class Group;
24class BattlefieldWG;
26
32
33typedef std::vector<BfWGGameObjectBuilding*> GameObjectBuildingVect;
34typedef std::vector<WintergraspWorkshop*> WorkshopVect;
35
79
94
114
122
123/*#########################
124 *####### Graveyards ######
125 *#########################*/
126
128{
129 public:
131
132 void SetTextId(uint32 textId) { m_GossipTextId = textId; }
133 uint32 GetTextId() const { return m_GossipTextId; }
134
135 protected:
137};
138
150
161
177
178/* ######################### *
179 * WintergraspCapturePoint *
180 * ######################### */
181
183{
184 public:
186
187 void HandleContestedEventHorde([[maybe_unused]] GameObject* controlZone) override;
188 void HandleContestedEventAlliance([[maybe_unused]] GameObject* controlZone) override;
189 void HandleProgressEventHorde([[maybe_unused]] GameObject* controlZone) override;
190 void HandleProgressEventAlliance([[maybe_unused]] GameObject* controlZone) override;
191
192 protected:
194};
195
196/* ######################### *
197 * WinterGrasp Battlefield *
198 * ######################### */
199
201{
202 public:
211 void OnBattleStart() override;
212
222 void OnBattleEnd(bool endByTimer) override;
223
228 void OnStartGrouping() override;
229
238 void OnPlayerJoinWar(Player* player) override;
239
245 void OnPlayerLeaveWar(Player* player) override;
246
251 void OnPlayerLeaveZone(Player* player) override;
252
259 void OnPlayerEnterZone(Player* player) override;
260
265 void OnCreatureCreate(Creature* creature) override;
266
271 void OnCreatureRemove(Creature* creature) override;
272
276 void OnGameObjectCreate(GameObject* go) override;
277
282 void BrokenWallOrTower(TeamId team, BfWGGameObjectBuilding* building);
283
289
296
297 void DoCompleteOrIncrementAchievement(uint32 achievement, Player* player, uint8 incrementNumber = 1) override;
298
299 void RemoveAurasFromPlayer(Player* player);
300
304 bool SetupBattlefield() override;
305
308
310 void SetRelic(ObjectGuid relicGUID) { m_titansRelicGUID = relicGUID; }
311
314
316 void SetRelicInteractible(bool allow) { m_isRelicInteractible = allow; }
317
319 void UpdateCounterVehicle(bool init);
320
321 void HandleKill(Player* killer, Unit* victim) override;
322 void OnUnitDeath(Unit* unit) override;
323 void HandlePromotion(Player* killer, Unit* killed);
324 void PromotePlayer(Player* killer);
325
326 void UpdateTenacity();
327 void ProcessEvent(WorldObject* obj, uint32 eventId, WorldObject* invoker) override;
328
329 bool FindAndRemoveVehicleFromList(Unit* vehicle);
330
331 // returns the graveyardId in the specified area.
332 uint8 GetSpiritGraveyardId(uint32 areaId) const;
333
334 uint32 GetData(uint32 data) const override;
335
336 protected:
338
340
343
346
349
351};
352
362
376
387
397
404
406{
407 // Invisible Stalker
434
441
446
450
474
475// ********************************************************************
476// * Structs using for Building, Graveyard, Workshop *
477// ********************************************************************
478
479// Structure for different buildings that can be destroyed during battle
481{
482private:
483 // WG object
485
486 // Linked gameobject
488
489 // the team that controls this point
491
494
496
498
499 // GameObject associations
501
502 // Creature associations
507
508public:
510 void Init(GameObject* go);
511
512 ObjectGuid const& GetGUID() const { return _buildGUID; }
513
514 void Rebuild();
515 void RebuildGate();
516
517 // Called when associated gameobject is damaged
518 void Damaged();
519
520 // Called when associated gameobject is destroyed
521 void Destroyed();
522
523 void UpdateCreatureAndGo();
524
525 void UpdateTurretAttack(bool disable);
526};
527
528// Structure for the 6 workshop
530{
531private:
532 BattlefieldWG* _wg; // Pointer to wintergrasp
535 TeamId _teamControl; // Team witch control the workshop
536
538
539public:
541
542 uint8 GetId() const;
544
545 // Called on change faction in CapturePoint class
546 void GiveControlTo(TeamId teamId, bool init = false);
547
549};
550
551#endif
WGGossipText
@ BATTLEFIELD_WG_GOSSIPTEXT_GY_HORDE
@ BATTLEFIELD_WG_GOSSIPTEXT_GY_SW
@ BATTLEFIELD_WG_GOSSIPTEXT_GY_SE
@ BATTLEFIELD_WG_GOSSIPTEXT_GY_NE
@ BATTLEFIELD_WG_GOSSIPTEXT_GY_NW
@ BATTLEFIELD_WG_GOSSIPTEXT_GY_ALLIANCE
@ BATTLEFIELD_WG_GOSSIPTEXT_GY_KEEP
WintergraspGameObjectBuildingType
@ BATTLEFIELD_WG_OBJECTTYPE_DOOR
@ BATTLEFIELD_WG_OBJECTTYPE_TOWER
@ BATTLEFIELD_WG_OBJECTTYPE_KEEP_TOWER
@ BATTLEFIELD_WG_OBJECTTYPE_WALL
@ BATTLEFIELD_WG_OBJECTTYPE_DOOR_LAST
@ BATTLEFIELD_WG_OBJECTTYPE_TITANRELIC
WintergraspNpcs
@ NPC_WINTERGRASP_SIEGE_ENGINE_HORDE
@ NPC_WINTERGRASP_CATAPULT
@ NPC_WINTERGRASP_DEMOLISHER
@ NPC_WINTERGRASP_TOWER_CANNON
@ BATTLEFIELD_WG_NPC_GUARD_H
@ NPC_DWARVEN_SPIRIT_GUIDE
@ NPC_TAUNKA_SPIRIT_GUIDE
@ BATTLEFIELD_WG_NPC_STALKER
@ BATTLEFIELD_WG_NPC_GUARD_A
@ NPC_WINTERGRASP_SIEGE_ENGINE_ALLIANCE
WintergraspTowerIds
@ BATTLEFIELD_WG_TOWER_WINTER_S_EDGE
@ BATTLEFIELD_WG_TOWER_SHADOWSIGHT
@ BATTLEFIELD_WG_TOWER_FORTRESS_SE
@ BATTLEFIELD_WG_TOWER_FORTRESS_NW
@ BATTLEFIELD_WG_TOWER_FLAMEWATCH
@ BATTLEFIELD_WG_TOWER_FORTRESS_NE
@ BATTLEFIELD_WG_TOWER_FORTRESS_SW
WintergraspSpells
@ SPELL_HORDE_FLAG
@ SPELL_GREATEST_HONOR
@ SPELL_ESSENCE_OF_WINTERGRASP
@ SPELL_VICTORY_AURA
@ SPELL_WINTERGRASP_RESTRICTED_FLIGHT_AREA
@ SPELL_RECRUIT
@ SPELL_TELEPORT_FORTRESS
@ SPELL_TENACITY
@ SPELL_ALLIANCE_CONTROLS_FACTORY_PHASE_SHIFT
@ SPELL_HORDE_CONTROLS_FACTORY_PHASE_SHIFT
@ SPELL_GRAB_PASSENGER
@ SPELL_TELEPORT_BRIDGE
@ SPELL_HORDE_CONTROL_PHASE_SHIFT
@ SPELL_VICTORY_REWARD
@ SPELL_CORPORAL
@ SPELL_GREATER_HONOR
@ SPELL_TELEPORT_DALARAN
@ SPELL_DAMAGED_BUILDING
@ SPELL_GREAT_HONOR
@ SPELL_ALLIANCE_CONTROL_PHASE_SHIFT
@ SPELL_WINTERGRASP_WATER
@ SPELL_INTACT_BUILDING
@ SPELL_DESTROYED_TOWER
@ SPELL_SPIRITUAL_IMMUNITY
@ SPELL_ALLIANCE_FLAG
@ SPELL_DEFEAT_REWARD
@ SPELL_TENACITY_VEHICLE
@ SPELL_LIEUTENANT
@ SPELL_DAMAGED_TOWER
@ SPELL_TOWER_CONTROL
WintergraspTeamControl
@ BATTLEFIELD_WG_TEAM_HORDE
@ BATTLEFIELD_WG_TEAM_NEUTRAL
@ BATTLEFIELD_WG_TEAM_ALLIANCE
std::vector< BfWGGameObjectBuilding * > GameObjectBuildingVect
WintergraspQuests
@ QUEST_CREDIT_TOWERS_DESTROYED
@ QUEST_VICTORY_WINTERGRASP_A
@ QUEST_CREDIT_DEFEND_SIEGE
@ QUEST_VICTORY_WINTERGRASP_H
WintergraspGameObject
@ GO_WINTERGRASP_FACTORY_BANNER_SW
@ GO_WINTERGRASP_FORTRESS_TOWER_3
@ GO_WINTERGRASP_FORTRESS_TOWER_2
@ GO_WINTERGRASP_FLAMEWATCH_TOWER
@ GO_WINTERGRASP_FORTRESS_TOWER_4
@ GO_WINTERGRASP_SHADOWSIGHT_TOWER
@ GO_WINTERGRASP_FACTORY_BANNER_NW
@ GO_WINTERGRASP_FACTORY_BANNER_NE
@ GO_WINTERGRASP_TITAN_S_RELIC
@ GO_WINTERGRASP_FORTRESS_TOWER_1
@ GO_WINTERGRASP_FACTORY_BANNER_SE
@ GO_WINTERGRASP_FORTRESS_GATE
@ GO_WINTERGRASP_WINTER_S_EDGE_TOWER
@ GO_WINTERGRASP_VAULT_GATE
@ GO_WINTERGRASP_KEEP_COLLISION_WALL
WGGraveyardId
@ BATTLEFIELD_WG_GY_WORKSHOP_NE
@ BATTLEFIELD_WG_GY_KEEP
@ BATTLEFIELD_WG_GRAVEYARD_MAX
@ BATTLEFIELD_WG_GY_WORKSHOP_SW
@ BATTLEFIELD_WG_GY_WORKSHOP_SE
@ BATTLEFIELD_WG_GY_HORDE
@ BATTLEFIELD_WG_GY_WORKSHOP_NW
@ BATTLEFIELD_WG_GY_ALLIANCE
WintergraspAchievements
@ ACHIEVEMENTS_WG_TOWER_CANNON_KILL
@ ACHIEVEMENTS_STONE_KEEPER_1000
@ ACHIEVEMENTS_DESTRUCTION_DERBY_A
@ ACHIEVEMENTS_WIN_WG
@ ACHIEVEMENTS_WG_GNOMESLAUGHTER
@ ACHIEVEMENTS_STONE_KEEPER_50
@ ACHIEVEMENTS_DESTRUCTION_DERBY_H
@ ACHIEVEMENTS_STONE_KEEPER_100
@ ACHIEVEMENTS_WIN_WG_TIMER_10
@ ACHIEVEMENTS_WIN_WG_100
@ ACHIEVEMENTS_STONE_KEEPER_250
@ ACHIEVEMENTS_WG_MASTER_H
@ ACHIEVEMENTS_WG_RANGER
@ ACHIEVEMENTS_WG_MASTER_A
@ ACHIEVEMENTS_STONE_KEEPER_500
@ ACHIEVEMENTS_WG_TOWER_DESTROY
WintergraspText
@ BATTLEFIELD_WG_TEXT_WESTSPARK_ATTACK_HORDE
@ BATTLEFIELD_WG_TEXT_WESTSPARK_CAPTURE_HORDE
@ BATTLEFIELD_WG_TEXT_FORTRESS_DEFEND_HORDE
@ BATTLEFIELD_WG_TEXT_RANK_CORPORAL
@ BATTLEFIELD_WG_TEXT_SUNKEN_RING_CAPTURE_ALLIANCE
@ BATTLEFIELD_WG_TEXT_SUNKEN_RING_ATTACK_HORDE
@ BATTLEFIELD_WG_TEXT_EASTSPARK_CAPTURE_HORDE
@ BATTLEFIELD_WG_TEXT_WESTSPARK_ATTACK_ALLIANCE
@ BATTLEFIELD_WG_TEXT_EASTERN_TOWER_DESTROY
@ BATTLEFIELD_WG_TEXT_BROKEN_TEMPLE_ATTACK_ALLIANCE
@ BATTLEFIELD_WG_TEXT_BROKEN_TEMPLE_CAPTURE_ALLIANCE
@ BATTLEFIELD_WG_TEXT_WESTERN_TOWER_DAMAGE
@ BATTLEFIELD_WG_TEXT_START_BATTLE
@ BATTLEFIELD_WG_TEXT_EASTSPARK_ATTACK_HORDE
@ BATTLEFIELD_WG_TEXT_EASTSPARK_CAPTURE_ALLIANCE
@ BATTLEFIELD_WG_TEXT_RANK_FIRST_LIEUTENANT
@ BATTLEFIELD_WG_TEXT_NE_KEEPTOWER_DAMAGE
@ BATTLEFIELD_WG_TEXT_BROKEN_TEMPLE_CAPTURE_HORDE
@ BATTLEFIELD_WG_TEXT_FORTRESS_CAPTURE_ALLIANCE
@ BATTLEFIELD_WG_TEXT_SE_KEEPTOWER_DAMAGE
@ BATTLEFIELD_WG_TEXT_EASTERN_TOWER_DAMAGE
@ BATTLEFIELD_WG_TEXT_SE_KEEPTOWER_DESTROY
@ BATTLEFIELD_WG_TEXT_NW_KEEPTOWER_DESTROY
@ BATTLEFIELD_WG_TEXT_START_GROUPING
@ BATTLEFIELD_WG_TEXT_SUNKEN_RING_ATTACK_ALLIANCE
@ BATTLEFIELD_WG_TEXT_SW_KEEPTOWER_DESTROY
@ BATTLEFIELD_WG_TEXT_SUNKEN_RING_CAPTURE_HORDE
@ BATTLEFIELD_WG_TEXT_WESTSPARK_CAPTURE_ALLIANCE
@ BATTLEFIELD_WG_TEXT_EASTSPARK_ATTACK_ALLIANCE
@ BATTLEFIELD_WG_TEXT_NE_KEEPTOWER_DESTROY
@ BATTLEFIELD_WG_TEXT_FORTRESS_DEFEND_ALLIANCE
@ BATTLEFIELD_WG_TEXT_SOUTHERN_TOWER_DESTROY
@ BATTLEFIELD_WG_TEXT_NW_KEEPTOWER_DAMAGE
@ BATTLEFIELD_WG_TEXT_FORTRESS_CAPTURE_HORDE
@ BATTLEFIELD_WG_TEXT_SW_KEEPTOWER_DAMAGE
@ BATTLEFIELD_WG_TEXT_BROKEN_TEMPLE_ATTACK_HORDE
@ BATTLEFIELD_WG_TEXT_SOUTHERN_TOWER_DAMAGE
@ BATTLEFIELD_WG_TEXT_WESTERN_TOWER_DESTROY
WintergraspData
@ BATTLEFIELD_WG_MAPID
@ BATTLEFIELD_WG_DATA_VEHICLE_A
@ BATTLEFIELD_WG_DATA_MAX_VEHICLE_A
@ BATTLEFIELD_WG_DATA_MAX
@ BATTLEFIELD_WG_DATA_DAMAGED_TOWER_DEF
@ BATTLEFIELD_WG_DATA_VEHICLE_H
@ BATTLEFIELD_WG_DATA_BROKEN_TOWER_ATT
@ BATTLEFIELD_WG_DATA_MAX_VEHICLE_H
@ BATTLEFIELD_WG_DATA_DAMAGED_TOWER_ATT
@ BATTLEFIELD_WG_DATA_BROKEN_TOWER_DEF
WintergraspGameObjectState
@ BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_DAMAGE
@ BATTLEFIELD_WG_OBJECTSTATE_NONE
@ BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_DESTROY
@ BATTLEFIELD_WG_OBJECTSTATE_HORDE_DESTROY
@ BATTLEFIELD_WG_OBJECTSTATE_NEUTRAL_DESTROY
@ BATTLEFIELD_WG_OBJECTSTATE_NEUTRAL_INTACT
@ BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_INTACT
@ BATTLEFIELD_WG_OBJECTSTATE_HORDE_INTACT
@ BATTLEFIELD_WG_OBJECTSTATE_NEUTRAL_DAMAGE
@ BATTLEFIELD_WG_OBJECTSTATE_HORDE_DAMAGE
WintergraspWorkshopIds
@ BATTLEFIELD_WG_WORKSHOP_SE
@ BATTLEFIELD_WG_WORKSHOP_KEEP_WEST
@ BATTLEFIELD_WG_WORKSHOP_KEEP_EAST
@ BATTLEFIELD_WG_WORKSHOP_NW
@ BATTLEFIELD_WG_WORKSHOP_SW
@ BATTLEFIELD_WG_WORKSHOP_NE
std::vector< WintergraspWorkshop * > WorkshopVect
uint8_t uint8
Definition Define.h:156
uint32_t uint32
Definition Define.h:154
std::unordered_set< ObjectGuid > GuidUnorderedSet
Definition ObjectGuid.h:435
std::vector< ObjectGuid > GuidVector
Definition ObjectGuid.h:434
uint8 constexpr PVP_TEAMS_COUNT
ObjectGuid m_titansRelicGUID
uint32 m_tenacityStack
void OnPlayerLeaveZone(Player *player) override
Called when player left the WG zone.
void OnUnitDeath(Unit *unit) override
GuidVector DefenderPortalList[PVP_TEAMS_COUNT]
void RemoveAurasFromPlayer(Player *player)
void UpdateCounterVehicle(bool init)
void OnBattleEnd(bool endByTimer) override
Called when battle end.
void OnStartGrouping() override
Called when grouping starts (15 minutes before battlestart)
GameObject * GetRelic()
Return pointer to relic object.
WorkshopVect Workshops
void ProcessEvent(WorldObject *obj, uint32 eventId, WorldObject *invoker) override
void PromotePlayer(Player *killer)
void OnPlayerLeaveWar(Player *player) override
Called when player left the battle.
void UpdateVehicleCountWG()
void SetRelicInteractible(bool allow)
Define if player can interact with the relic.
bool SetupBattlefield() override
Called when battlefield is setup, at server start.
void UpdatedDestroyedTowerCount(TeamId team)
Called when tower is broken.
void BrokenWallOrTower(TeamId team, BfWGGameObjectBuilding *building)
Called when a wall/tower is broken.
void OnBattleStart() override
Called when the battle start.
GuidUnorderedSet m_vehicles[PVP_TEAMS_COUNT]
void OnPlayerEnterZone(Player *player) override
Called when player enters in WG zone.
bool m_isRelicInteractible
bool CanInteractWithRelic()
Check if players can interact with the relic (Only if the last door has been broken)
void UpdateDamagedTowerCount(TeamId team)
Called when a tower is damaged.
GameObjectBuildingVect BuildingsInZone
void SetRelic(ObjectGuid relicGUID)
Define relic object.
void OnCreatureRemove(Creature *creature) override
Called when a creature is removed.
void OnPlayerJoinWar(Player *player) override
Called when player accept invite to join battle.
void OnCreatureCreate(Creature *creature) override
Called when a creature is created.
bool FindAndRemoveVehicleFromList(Unit *vehicle)
uint8 GetSpiritGraveyardId(uint32 areaId) const
void HandleKill(Player *killer, Unit *victim) override
Called when a Unit is kill in battlefield zone.
void OnGameObjectCreate(GameObject *go) override
Called when a gameobject is created.
uint32 GetData(uint32 data) const override
void DoCompleteOrIncrementAchievement(uint32 achievement, Player *player, uint8 incrementNumber=1) override
GuidVector CanonList
void HandlePromotion(Player *killer, Unit *killed)
TeamId m_tenacityTeam
GameObject * GetGameObject(ObjectGuid guid)
Battlefield(Map *map)
Constructor.
void SetTextId(uint32 textId)
uint32 GetTextId() const
uint32 m_GossipTextId
Definition Group.h:205
Definition Unit.h:635
void HandleContestedEventAlliance(GameObject *controlZone) override
void HandleProgressEventHorde(GameObject *controlZone) override
WintergraspWorkshop * m_Workshop
void HandleProgressEventAlliance(GameObject *controlZone) override
void HandleContestedEventHorde(GameObject *controlZone) override
GuidVector m_CreatureBottomList[PVP_TEAMS_COUNT]
StaticWintergraspTowerInfo const * _staticTowerInfo
void UpdateTurretAttack(bool disable)
void Init(GameObject *go)
WintergraspGameObjectState _state
ObjectGuid const & GetGUID() const
WintergraspGameObjectBuildingType _type
GuidVector m_TowerCannonBottomList
GuidVector m_CreatureTopList[PVP_TEAMS_COUNT]
GuidVector m_GameObjectList[PVP_TEAMS_COUNT]
BattlefieldWG * _wg
WintergraspGameObjectState _state
void GiveControlTo(TeamId teamId, bool init=false)
StaticWintergraspWorkshopInfo const * _staticInfo
TeamId GetTeamControl() const