TrinityCore
Loading...
Searching...
No Matches
BattlegroundWS.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 __BATTLEGROUNDWS_H
19#define __BATTLEGROUNDWS_H
20
21#include "Battleground.h"
22#include "BattlegroundScore.h"
23
32
49
60
62{
65 BG_WS_SPELL_WARSONG_FLAG_PICKED = 61266, // fake spell, does not exist but used as timer start event
68 BG_WS_SPELL_SILVERWING_FLAG_PICKED = 61265, // fake spell, does not exist but used as timer start event
71};
72
86
109
127
135
143
151
157
163
164#define WS_EVENT_START_BATTLE 8563
165
167{
168 friend class BattlegroundWS;
169
170 protected:
172
173 void UpdateScore(uint32 type, uint32 value) override
174 {
175 switch (type)
176 {
177 case SCORE_FLAG_CAPTURES: // Flags captured
178 FlagCaptures += value;
179 break;
180 case SCORE_FLAG_RETURNS: // Flags returned
181 FlagReturns += value;
182 break;
183 default:
185 break;
186 }
187 }
188
190
191 uint32 GetAttr1() const override { return FlagCaptures; }
192 uint32 GetAttr2() const override { return FlagReturns; }
193
196};
197
199{
200 public:
201 /* Construction */
204
205 /* inherited from BattlegroundClass */
206 void AddPlayer(Player* player) override;
207 void StartingEventCloseDoors() override;
208 void StartingEventOpenDoors() override;
209
210 /* BG Flags */
211 ObjectGuid GetFlagPickerGUID(int32 team) const override
212 {
213 if (team == TEAM_ALLIANCE || team == TEAM_HORDE)
214 return m_FlagKeepers[team];
215 return ObjectGuid::Empty;
216 }
221 void RespawnFlag(uint32 Team, bool captured);
224
225 /* Battleground Events */
226 void EventPlayerDroppedFlag(Player* player) override;
227 void EventPlayerClickedOnFlag(Player* player, GameObject* target_obj) override;
228 void EventPlayerCapturedFlag(Player* player);
230
231 void RemovePlayer(Player* player, ObjectGuid guid, uint32 team) override;
232 void HandleAreaTrigger(Player* player, uint32 trigger) override;
233 void HandleKillPlayer(Player* player, Player* killer) override;
234 bool SetupBattleground() override;
235 void Reset() override;
236 void EndBattleground(uint32 winner) override;
237 WorldSafeLocsEntry const* GetClosestGraveyard(Player* player) override;
238
239 void UpdateFlagState(uint32 team, uint32 value);
241 void UpdateTeamScore(uint32 team);
242 bool UpdatePlayerScore(Player* player, uint32 type, uint32 value, bool doAddHonor = true) override;
243 void SetDroppedFlagGUID(ObjectGuid guid, int32 team = -1) override
244 {
245 if (team == TEAM_ALLIANCE || team == TEAM_HORDE)
246 m_DroppedFlagGUID[team] = guid;
247 }
248
251
252 /* Scorekeeping */
256
257 uint32 GetPrematureWinner() override;
258
259 /* Achievements*/
260 bool CheckAchievementCriteriaMeet(uint32 criteriaId, Player const* source, Unit const* target = nullptr, uint32 miscvalue1 = 0) override;
261
262 private:
263 ObjectGuid m_FlagKeepers[2]; // 0 - alliance, 1 - horde
265 uint8 _flagState[2]; // for checking flag state
268 uint32 _lastFlagCaptureTeam; // Winner is based on this if score is equal
269
275 uint8 _flagDebuffState; // 0 - no debuffs, 1 - focused assault, 2 - brutal assault
277
278 void PostUpdateImpl(uint32 diff) override;
279};
280#endif
@ SCORE_FLAG_CAPTURES
@ SCORE_FLAG_RETURNS
BG_WS_FlagState
@ BG_WS_FLAG_STATE_ON_GROUND
@ BG_WS_FLAG_STATE_ON_PLAYER
@ BG_WS_FLAG_STATE_WAIT_RESPAWN
@ BG_WS_FLAG_STATE_ON_BASE
BG_WS_ObjectTypes
@ BG_WS_OBJECT_A_FLAG
@ BG_WS_OBJECT_DOOR_H_3
@ BG_WS_OBJECT_DOOR_A_5
@ BG_WS_OBJECT_DOOR_A_4
@ BG_WS_OBJECT_MAX
@ BG_WS_OBJECT_BERSERKBUFF_1
@ BG_WS_OBJECT_DOOR_H_1
@ BG_WS_OBJECT_REGENBUFF_2
@ BG_WS_OBJECT_DOOR_A_1
@ BG_WS_OBJECT_DOOR_A_2
@ BG_WS_OBJECT_H_FLAG
@ BG_WS_OBJECT_SPEEDBUFF_1
@ BG_WS_OBJECT_DOOR_H_4
@ BG_WS_OBJECT_DOOR_H_2
@ BG_WS_OBJECT_DOOR_A_6
@ BG_WS_OBJECT_REGENBUFF_1
@ BG_WS_OBJECT_SPEEDBUFF_2
@ BG_WS_OBJECT_DOOR_A_3
@ BG_WS_OBJECT_BERSERKBUFF_2
BG_WS_SpellId
@ BG_WS_SPELL_SILVERWING_FLAG_PICKED
@ BG_WS_SPELL_WARSONG_FLAG
@ BG_WS_SPELL_BRUTAL_ASSAULT
@ BG_WS_SPELL_SILVERWING_FLAG_DROPPED
@ BG_WS_SPELL_FOCUSED_ASSAULT
@ BG_WS_SPELL_WARSONG_FLAG_PICKED
@ BG_WS_SPELL_WARSONG_FLAG_DROPPED
@ BG_WS_SPELL_SILVERWING_FLAG
BG_WS_CreatureTypes
@ BG_CREATURES_MAX_WS
@ WS_SPIRIT_MAIN_HORDE
@ WS_SPIRIT_MAIN_ALLIANCE
BG_WS_Sound
@ BG_WS_SOUND_FLAG_PLACED
@ BG_WS_SOUND_FLAG_CAPTURED_HORDE
@ BG_WS_SOUND_FLAGS_RESPAWNED
@ BG_WS_SOUND_FLAG_CAPTURED_ALLIANCE
@ BG_WS_SOUND_HORDE_FLAG_PICKED_UP
@ BG_WS_SOUND_ALLIANCE_FLAG_PICKED_UP
@ BG_WS_SOUND_FLAG_RETURNED
BG_WS_Objectives
@ WS_OBJECTIVE_RETURN_FLAG
@ WS_OBJECTIVE_CAPTURE_FLAG
BG_WS_CarrierDebuffs
@ WS_SPELL_BRUTAL_ASSAULT
@ WS_SPELL_FOCUSED_ASSAULT
BG_WS_BroadcastTexts
@ BG_WS_TEXT_START_HALF_MINUTE
@ BG_WS_TEXT_HORDE_FLAG_PICKED_UP
@ BG_WS_TEXT_ALLIANCE_FLAG_DROPPED
@ BG_WS_TEXT_ALLIANCE_FLAG_RETURNED
@ BG_WS_TEXT_ALLIANCE_FLAG_PICKED_UP
@ BG_WS_TEXT_CAPTURED_HORDE_FLAG
@ BG_WS_TEXT_BATTLE_HAS_BEGUN
@ BG_WS_TEXT_CAPTURED_ALLIANCE_FLAG
@ BG_WS_TEXT_HORDE_FLAG_DROPPED
@ BG_WS_TEXT_START_ONE_MINUTE
@ BG_WS_TEXT_HORDE_FLAG_RETURNED
@ BG_WS_TEXT_FLAGS_PLACED
BG_WS_ObjectEntry
@ BG_OBJECT_H_FLAG_GROUND_WS_ENTRY
@ BG_OBJECT_DOOR_A_4_WS_ENTRY
@ BG_OBJECT_DOOR_A_1_WS_ENTRY
@ BG_OBJECT_DOOR_A_3_WS_ENTRY
@ BG_OBJECT_DOOR_A_6_WS_ENTRY
@ BG_OBJECT_DOOR_H_2_WS_ENTRY
@ BG_OBJECT_A_FLAG_GROUND_WS_ENTRY
@ BG_OBJECT_DOOR_H_4_WS_ENTRY
@ BG_OBJECT_DOOR_H_1_WS_ENTRY
@ BG_OBJECT_DOOR_A_2_WS_ENTRY
@ BG_OBJECT_DOOR_A_5_WS_ENTRY
@ BG_OBJECT_DOOR_H_3_WS_ENTRY
@ BG_OBJECT_A_FLAG_WS_ENTRY
@ BG_OBJECT_H_FLAG_WS_ENTRY
BG_WS_TimerOrScore
@ BG_WS_FLAG_RESPAWN_TIME
@ BG_WS_SPELL_FORCE_TIME
@ BG_WS_FLAG_DROP_TIME
@ BG_WS_MAX_TEAM_SCORE
@ BG_WS_SPELL_BRUTAL_TIME
BG_WS_WorldStates
@ BG_WS_STATE_TIMER
@ BG_WS_FLAG_UNK_ALLIANCE
@ BG_WS_FLAG_UNK_HORDE
@ BG_WS_FLAG_CAPTURES_MAX
@ BG_WS_FLAG_STATE_HORDE
@ BG_WS_FLAG_STATE_ALLIANCE
@ BG_WS_FLAG_CAPTURES_HORDE
@ BG_WS_STATE_TIMER_ACTIVE
@ BG_WS_FLAG_CAPTURES_ALLIANCE
BG_WS_Graveyards
@ WS_GRAVEYARD_FLAGROOM_ALLIANCE
@ WS_GRAVEYARD_MAIN_ALLIANCE
@ WS_GRAVEYARD_FLAGROOM_HORDE
@ WS_GRAVEYARD_MAIN_HORDE
uint8_t uint8
Definition Define.h:135
int32_t int32
Definition Define.h:129
uint32_t uint32
Definition Define.h:133
@ TEAM_ALLIANCE
@ TEAM_HORDE
void EventPlayerClickedOnFlag(Player *player, GameObject *target_obj) override
int32 _flagsDropTimer[2]
void AddPoint(uint32 TeamID, uint32 Points=1)
bool IsHordeFlagPickedup() const
void UpdateTeamScore(uint32 team)
WorldSafeLocsEntry const * GetClosestGraveyard(Player *player) override
void StartingEventCloseDoors() override
void SetDroppedFlagGUID(ObjectGuid guid, int32 team=-1) override
ObjectGuid m_DroppedFlagGUID[2]
ObjectGuid GetDroppedFlagGUID(uint32 TeamID)
bool IsAllianceFlagPickedup() const
uint32 m_ReputationCapture
void RemovePoint(uint32 TeamID, uint32 Points=1)
void HandleKillPlayer(Player *player, Player *killer) override
void SetLastFlagCapture(uint32 team)
void Reset() override
void UpdateFlagState(uint32 team, uint32 value)
void SetAllianceFlagPicker(ObjectGuid guid)
void RespawnFlag(uint32 Team, bool captured)
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates &packet) override
bool SetupBattleground() override
bool UpdatePlayerScore(Player *player, uint32 type, uint32 value, bool doAddHonor=true) override
ObjectGuid GetFlagPickerGUID(int32 team) const override
bool CheckAchievementCriteriaMeet(uint32 criteriaId, Player const *source, Unit const *target=nullptr, uint32 miscvalue1=0) override
ObjectGuid m_FlagKeepers[2]
void EndBattleground(uint32 winner) override
uint32 _lastFlagCaptureTeam
void EventPlayerCapturedFlag(Player *player)
void PostUpdateImpl(uint32 diff) override
Post-update hook.
void RemovePlayer(Player *player, ObjectGuid guid, uint32 team) override
uint8 GetFlagState(uint32 team)
void SetHordeFlagPicker(ObjectGuid guid)
void HandleFlagRoomCapturePoint(int32 team)
void StartingEventOpenDoors() override
void AddPlayer(Player *player) override
void RespawnFlagAfterDrop(uint32 Team)
uint32 GetPrematureWinner() override
void HandleAreaTrigger(Player *player, uint32 trigger) override
void SetTeamPoint(uint32 TeamID, uint32 Points=0)
void EventPlayerDroppedFlag(Player *player) override
static TeamId GetTeamIndexByTeamId(uint32 Team)
int32 m_TeamScores[PVP_TEAMS_COUNT]
static ObjectGuid const Empty
Definition ObjectGuid.h:140
bool IsEmpty() const
Definition ObjectGuid.h:172
Definition Unit.h:769
virtual void UpdateScore(uint32 type, uint32 value)
uint32 GetAttr2() const override
BattlegroundWGScore(ObjectGuid playerGuid)
void BuildObjectivesBlock(WorldPackets::Battleground::PVPLogData_Player &playerData) override
void UpdateScore(uint32 type, uint32 value) override
uint32 GetAttr1() const override