Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
BattlegroundWS.h
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#ifndef SF_BATTLEGROUNDWS_H
7#define SF_BATTLEGROUNDWS_H
8
9#include "Battleground.h"
10
19
30
32{
35 BG_WS_SPELL_WARSONG_FLAG_PICKED = 61266, // fake spell, does not exist but used as timer start event
38 BG_WS_SPELL_SILVERWING_FLAG_PICKED = 61265, // fake spell, does not exist but used as timer start event
41};
42
56
79
97
105
113
121
127
133
134#define WS_EVENT_START_BATTLE 8563
135
143
145{
146public:
147 /* Construction */
150
151 /* inherited from BattlegroundClass */
152 void AddPlayer(Player* player) OVERRIDE;
155
156 /* BG Flags */
158 {
159 if (team == TEAM_ALLIANCE || team == TEAM_HORDE)
160 return m_FlagKeepers[team];
161 return 0;
162 }
166 bool IsHordeFlagPickedup() const { return m_FlagKeepers[TEAM_HORDE] != 0; }
167 void RespawnFlag(uint32 Team, bool captured);
170
171 /* Battleground Events */
173 void EventPlayerClickedOnFlag(Player* player, GameObject* target_obj) OVERRIDE;
174 void EventPlayerCapturedFlag(Player* player);
175
176 void RemovePlayer(Player* player, uint64 guid, uint32 team) OVERRIDE;
177 void HandleAreaTrigger(Player* player, uint32 trigger) OVERRIDE;
178 void HandleKillPlayer(Player* player, Player* killer) OVERRIDE;
180 void Reset() OVERRIDE;
181 void EndBattleground(uint32 winner);
183
184 void UpdateFlagState(uint32 team, uint32 value);
186 void UpdateTeamScore(uint32 team);
187 void UpdatePlayerScore(Player* player, uint32 type, uint32 value, bool doAddHonor = true) OVERRIDE;
189 {
190 if (team == TEAM_ALLIANCE || team == TEAM_HORDE)
191 m_DroppedFlagGUID[team] = guid;
192 }
193
196
197 /* Scorekeeping */
201
203
204 /* Achievements*/
205 bool CheckAchievementCriteriaMeet(uint32 criteriaId, Player const* source, Unit const* target = NULL, uint32 miscvalue1 = 0) OVERRIDE;
206
207private:
208 uint64 m_FlagKeepers[2]; // 0 - alliance, 1 - horde
210 uint8 _flagState[2]; // for checking flag state
213 uint32 _lastFlagCaptureTeam; // Winner is based on this if score is equal
214
220 uint8 _flagDebuffState; // 0 - no debuffs, 1 - focused assault, 2 - brutal assault
222
223 void PostUpdateImpl(uint32 diff) OVERRIDE;
224};
225#endif
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_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
std::int32_t int32
Definition Define.h:73
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
std::uint64_t uint64
Definition Define.h:76
@ TEAM_ALLIANCE
@ TEAM_HORDE
static TeamId GetTeamIndexByTeamId(uint32 Team)
int32 m_TeamScores[BG_TEAMS_COUNT]
void FillInitialWorldStates(WorldStateBuilder &builder) OVERRIDE
WorldSafeLocsEntry const * GetClosestGraveYard(Player *player) OVERRIDE
void HandleAreaTrigger(Player *player, uint32 trigger) OVERRIDE
int32 _flagsDropTimer[2]
void AddPoint(uint32 TeamID, uint32 Points=1)
bool IsHordeFlagPickedup() const
void UpdateTeamScore(uint32 team)
uint32 GetPrematureWinner() OVERRIDE
void AddPlayer(Player *player) OVERRIDE
uint64 m_DroppedFlagGUID[2]
bool IsAllianceFlagPickedup() const
uint32 m_ReputationCapture
void UpdatePlayerScore(Player *player, uint32 type, uint32 value, bool doAddHonor=true) OVERRIDE
void StartingEventCloseDoors() OVERRIDE
void RemovePoint(uint32 TeamID, uint32 Points=1)
void SetLastFlagCapture(uint32 team)
void StartingEventOpenDoors() OVERRIDE
void SetDroppedFlagGUID(uint64 guid, int32 team=-1) OVERRIDE
void UpdateFlagState(uint32 team, uint32 value)
void Reset() OVERRIDE
bool CheckAchievementCriteriaMeet(uint32 criteriaId, Player const *source, Unit const *target=NULL, uint32 miscvalue1=0) OVERRIDE
uint64 GetDroppedFlagGUID(uint32 TeamID) const
void EventPlayerClickedOnFlag(Player *player, GameObject *target_obj) OVERRIDE
void RespawnFlag(uint32 Team, bool captured)
bool SetupBattleground() OVERRIDE
void EventPlayerDroppedFlag(Player *player) OVERRIDE
void SetAllianceFlagPicker(uint64 guid)
uint64 m_FlagKeepers[2]
void SetHordeFlagPicker(uint64 guid)
void PostUpdateImpl(uint32 diff) OVERRIDE
Post-update hook.
uint32 _lastFlagCaptureTeam
void EventPlayerCapturedFlag(Player *player)
void EndBattleground(uint32 winner)
void HandleKillPlayer(Player *player, Player *killer) OVERRIDE
void RemovePlayer(Player *player, uint64 guid, uint32 team) OVERRIDE
uint8 GetFlagState(uint32 team) const
void RespawnFlagAfterDrop(uint32 Team)
uint64 GetFlagPickerGUID(int32 team) const OVERRIDE
void SetTeamPoint(uint32 TeamID, uint32 Points=0)
Definition Unit.h:1367