Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
BattlegroundBFG.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_BATTLEGROUNDBFG_H
7#define SF_BATTLEGROUNDBFG_H
8
9#include "Battleground.h"
10#include "Object.h"
11
39
40const uint32 GILNEAS_BG_OP_NODESTATES[3] = { 1767, 1772, 1782 };
41
42const uint32 GILNEAS_BG_OP_NODEICONS[3] = { 1842, 1845, 1846 };
43
45{
46 GILNEAS_BG_OBJECTID_NODE_BANNER_0 = 208779, // Lighthouse banner
47 GILNEAS_BG_OBJECTID_NODE_BANNER_1 = 208780, // Waterworks banner
48 GILNEAS_BG_OBJECTID_NODE_BANNER_2 = 208781, // Mines banner
49};
50
77
94
99
105
119
130
140
146
147#define GILNEAS_BG_NotBGWeekendHonorTicks 260
148#define GILNEAS_BG_BGWeekendHonorTicks 160
149#define GILNEAS_BG_NotBGWeekendRepTicks 160
150#define GILNEAS_BG_BGWeekendRepTicks 120
151
152#define BG_EVENT_START_BATTLE 9158
153
155{
156 {1057.790f, 1278.285f, 3.1500f, 1.945662f}, // Lighthouse
157 {980.0446f, 948.7411f, 12.650f, 5.904071f}, // Waterworks
158 {1251.010f, 958.2685f, 5.6000f, 5.892280f} // Mine
159};
160
161// x, y, z, o, rot0, rot1, rot2, rot3
162const float GILNEAS_BG_DoorPositions[4][8] =
163{
164 {918.160f, 1336.75f, 27.6299f, 2.87927f, 0.0f, 0.0f, 0.983231f, 0.182367f},
165 {918.160f, 1336.75f, 26.6299f, 2.87927f, 0.0f, 0.0f, 0.983231f, 0.182367f},
166 {1396.15f, 977.014f, 7.43169f, 6.27043f, 0.0f, 0.0f, 0.006378f, -0.99998f},
167 {1396.15f, 977.014f, 0.33169f, 6.27043f, 0.0f, 0.0f, 0.006378f, -0.99998f}
168};
169
170const uint32 GILNEAS_BG_TickIntervals[4] = { 0, 12000, 6000, 1000 };
171const uint32 GILNEAS_BG_TickPoints[4] = { 0, 10, 10, 30 };
172
173const uint32 GILNEAS_BG_GraveyardIds[GILNEAS_BG_ALL_NODES_COUNT] = { 1736, 1738, 1735, 1740, 1739 };
174
175// x, y, z, o
177{
178 {1034.82f, 1335.58f, 12.0095f, 5.15f}, // Lighthouse
179 {1252.23f, 836.547f, 27.7895f, 1.60f}, // Waterworks
180 {887.578f, 937.337f, 23.7737f, 0.45f}, // Mine
181 {908.274f, 1338.60f, 27.6449f, 5.95f}, // Alliance
182 {1401.38f, 977.125f, 7.44215f, 3.04f} // Horde
183};
184
186{
187 {1063.57f, 1313.42f, 4.91f, 4.14f}, // Lighthouse
188 {961.830f, 977.03f, 14.15f, 4.55f}, // Waterworks
189 {1193.09f, 1017.46f, 7.98f, 0.24f} // Mine
190};
191
198
206
208{
209public:
212
213 void AddPlayer(Player* player) OVERRIDE;
216 void RemovePlayer(Player* player, uint64 guid, uint32 team) OVERRIDE;
217 void HandleAreaTrigger(Player* Source, uint32 Trigger) OVERRIDE;
219 void Reset() OVERRIDE;
220 void EndBattleground(uint32 winner);
222
223 /* Scorekeeping */
224 void UpdatePlayerScore(Player* Source, uint32 type, uint32 value, bool doAddHonor = true) OVERRIDE;
225
227
228 /* Nodes occupying */
229 void EventPlayerClickedOnFlag(Player* source, GameObject* target_obj) OVERRIDE;
230
231 /* achievement req. */
233 bool CheckAchievementCriteriaMeet(uint32 /*criteriaId*/, Player const* /*player*/, Unit const* /*target*/ = NULL, uint32 /*miscvalue1*/ = 0) OVERRIDE;
234
236private:
237 void PostUpdateImpl(uint32 diff) OVERRIDE;
238 /* Gameobject spawning/despawning */
239 void _CreateBanner(uint8 node, uint8 type, uint8 teamIndex, bool delay);
240 void _DelBanner(uint8 node, uint8 type, uint8 teamIndex);
241 void _SendNodeUpdate(uint8 node);
242
243 /* Creature spawning/despawning */
245 void _NodeOccupied(uint8 node, Team team);
246 void _NodeDeOccupied(uint8 node);
247
249 /* Nodes info:
250 0: neutral
251 1: ally contested
252 2: horde contested
253 3: ally occupied
254 4: horde occupied */
265 // need for achievements
267};
268
269#endif
#define BG_TEAMS_COUNT
GILNEAS_BG_Sounds
@ GILNEAS_BG_SOUND_NODE_CAPTURED_HORDE
@ GILNEAS_BG_SOUND_NODE_ASSAULTED_ALLIANCE
@ GILNEAS_BG_SOUND_NODE_CLAIMED
@ GILNEAS_BG_SOUND_NODE_ASSAULTED_HORDE
@ GILNEAS_BG_SOUND_NODE_CAPTURED_ALLIANCE
@ GILNEAS_BG_SOUND_NEAR_VICTORY
const float GILNEAS_BG_BuffPositions[GILNEAS_BG_DYNAMIC_NODES_COUNT][4]
GILNEAS_BG_ObjectType
@ GILNEAS_BG_OBJECT_BANNER_NEUTRAL
@ GILNEAS_BG_OBJECT_AURA_CONTESTED
@ GILNEAS_BG_OBJECT_SPEEDBUFF_LIGHTHOUSE
@ GILNEAS_BG_OBJECT_GATE_H_2
@ GILNEAS_BG_OBJECT_BANNER_HORDE
@ GILNEAS_BG_OBJECT_BANNER_ALLY
@ GILNEAS_BG_OBJECT_REGENBUFF_LIGHTHOUSE
@ GILNEAS_BG_OBJECT_REGENBUFF_MINE
@ GILNEAS_BG_OBJECT_GATE_A_2
@ GILNEAS_BG_OBJECT_GATE_A_1
@ GILNEAS_BG_OBJECT_BERSERKBUFF_LIGHTHOUSE
@ GILNEAS_BG_OBJECT_SPEEDBUFF_MINE
@ GILNEAS_BG_OBJECT_AURA_HORDE
@ GILNEAS_BG_OBJECT_BANNER_CONT_H
@ GILNEAS_BG_OBJECT_BANNER_CONT_A
@ GILNEAS_BG_OBJECT_AURA_ALLY
@ GILNEAS_BG_OBJECT_GATE_H_1
@ GILNEAS_BG_OBJECT_MAX
@ GILNEAS_BG_OBJECT_BERSERKBUFF_MINE
@ GILNEAS_BG_OBJECT_REGENBUFF_WATERWORKS
@ GILNEAS_BG_OBJECT_SPEEDBUFF_WATERWORKS
@ GILNEAS_BG_OBJECT_BERSERKBUFF_WATERWORKS
const float GILNEAS_BG_DoorPositions[4][8]
const uint32 GILNEAS_BG_GraveyardIds[GILNEAS_BG_ALL_NODES_COUNT]
const uint32 GILNEAS_BG_OP_NODESTATES[3]
GILNEAS_BG_NodeObjectId
@ GILNEAS_BG_OBJECTID_NODE_BANNER_1
@ GILNEAS_BG_OBJECTID_NODE_BANNER_0
@ GILNEAS_BG_OBJECTID_NODE_BANNER_2
const float GILNEAS_BG_NodePositions[GILNEAS_BG_DYNAMIC_NODES_COUNT][4]
const uint32 GILNEAS_BG_OP_NODEICONS[3]
const uint32 GILNEAS_BG_TickPoints[4]
GILNEAS_BG_Objectives
@ BG_OBJECTIVE_ASSAULT_BASE
@ BG_OBJECTIVE_DEFEND_BASE
GILNEAS_BG_Timers
@ GILNEAS_BG_FLAG_CAPTURING_TIME
const float GILNEAS_BG_SpiritGuidePos[GILNEAS_BG_ALL_NODES_COUNT][4]
GILNEAS_BG_BattlegroundNodes
@ GILNEAS_BG_DYNAMIC_NODES_COUNT
@ GILNEAS_BG_SPIRIT_ALIANCE
@ GILNEAS_BG_NODE_MINE
@ GILNEAS_BG_NODE_WATERWORKS
@ GILNEAS_BG_NODE_LIGHTHOUSE
@ GILNEAS_BG_ALL_NODES_COUNT
@ GILNEAS_BG_SPIRIT_HORDE
GILNEAS_BG_ObjectTypes
@ GILNEAS_BG_OBJECTID_BANNER_CONT_H
@ GILNEAS_BG_OBJECTID_AURA_C
@ GILNEAS_BG_OBJECTID_GATE_H_1
@ GILNEAS_BG_OBJECTID_AURA_A
@ GILNEAS_BG_OBJECTID_AURA_H
@ GILNEAS_BG_OBJECTID_BANNER_A
@ GILNEAS_BG_OBJECTID_BANNER_H
@ GILNEAS_BG_OBJECTID_GATE_A_1
@ GILNEAS_BG_OBJECTID_BANNER_CONT_A
@ GILNEAS_BG_OBJECTID_GATE_A_2
@ GILNEAS_BG_OBJECTID_GATE_H_2
GILNEAS_BG_NodeStatus
@ GILNEAS_BG_NODE_TYPE_NEUTRAL
@ GILNEAS_BG_NODE_STATUS_HORDE_CONTESTED
@ GILNEAS_BG_NODE_TYPE_CONTESTED
@ GILNEAS_BG_NODE_STATUS_HORDE_OCCUPIED
@ GILNEAS_BG_NODE_STATUS_ALLY_CONTESTED
@ GILNEAS_BG_NODE_TYPE_OCCUPIED
@ GILNEAS_BG_NODE_STATUS_ALLY_OCCUPIED
GILNEAS_BG_WorldStates
@ GILNEAS_BG_OP_MINE_STATE_HORDE
@ GILNEAS_BG_OP_WATERWORKS_STATE_ALLIANCE
@ GILNEAS_BG_OP_WATERWORKS_ICON
@ GILNEAS_BG_OP_LIGHTHOUSE_STATE_ALLIANCE
@ GILNEAS_BG_OP_RESOURCES_HORDE
@ GILNEAS_BG_OP_OCCUPIED_BASES_HORDE
@ GILNEAS_BG_OP_LIGHTHOUSE_STATE_CON_ALI
@ GILNEAS_BG_OP_LIGHTHOUSE_STATE_HORDE
@ GILNEAS_BG_OP_RESOURCES_ALLY
@ GILNEAS_BG_OP_MINE_STATE_CON_HOR
@ GILNEAS_BG_OP_MINE_STATE_ALLIANCE
@ GILNEAS_BG_OP_MINE_STATE_CON_ALI
@ GILNEAS_BG_OP_LIGHTHOUSE_STATE_CON_HOR
@ GILNEAS_BG_OP_MINE_ICON
@ GILNEAS_BG_OP_LIGHTHOUSE_ICON
@ GILNEAS_BG_OP_RESOURCES_MAX
@ GILNEAS_BG_OP_RESOURCES_WARNING
@ GILNEAS_BG_OP_OCCUPIED_BASES_ALLY
@ GILNEAS_BG_OP_WATERWORKS_STATE_HORDE
@ GILNEAS_BG_OP_WATERWORKS_STATE_CON_HOR
@ GILNEAS_BG_OP_WATERWORKS_STATE_CON_ALI
const uint32 GILNEAS_BG_TickIntervals[4]
GILNEAS_BG_Score
@ GILNEAS_BG_WARNING_NEAR_VICTORY_SCORE
@ GILNEAS_BG_MAX_TEAM_SCORE
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
void RemovePlayer(Player *player, uint64 guid, uint32 team) OVERRIDE
void StartingEventOpenDoors() OVERRIDE
bool IsAllNodesControlledByTeam(uint32 team) const OVERRIDE
bool SetupBattleground() OVERRIDE
bool m_TeamScores500Disadvantage[BG_TEAMS_COUNT]
void StartingEventCloseDoors() OVERRIDE
void _SendNodeUpdate(uint8 node)
uint32 m_NodeTimers[GILNEAS_BG_DYNAMIC_NODES_COUNT]
uint8 m_Nodes[GILNEAS_BG_DYNAMIC_NODES_COUNT]
uint32 m_ReputationScoreTics[BG_TEAMS_COUNT]
bool CheckAchievementCriteriaMeet(uint32, Player const *, Unit const *=NULL, uint32=0) OVERRIDE
void Reset() OVERRIDE
void _NodeDeOccupied(uint8 node)
void PostUpdateImpl(uint32 diff) OVERRIDE
Post-update hook.
WorldSafeLocsEntry const * GetClosestGraveYard(Player *player) OVERRIDE
void _CreateBanner(uint8 node, uint8 type, uint8 teamIndex, bool delay)
void EndBattleground(uint32 winner)
void _DelBanner(uint8 node, uint8 type, uint8 teamIndex)
void FillInitialWorldStates(WorldStateBuilder &builder) OVERRIDE
uint8 m_prevNodes[GILNEAS_BG_DYNAMIC_NODES_COUNT]
void AddPlayer(Player *player) OVERRIDE
void HandleAreaTrigger(Player *Source, uint32 Trigger) OVERRIDE
void UpdatePlayerScore(Player *Source, uint32 type, uint32 value, bool doAddHonor=true) OVERRIDE
void _NodeOccupied(uint8 node, Team team)
GILNEAS_BG_BannerTimer m_BannerTimers[GILNEAS_BG_DYNAMIC_NODES_COUNT]
int32 _GetNodeNameId(uint8 node)
uint32 m_HonorScoreTics[BG_TEAMS_COUNT]
uint32 GetPrematureWinner() OVERRIDE
void EventPlayerClickedOnFlag(Player *source, GameObject *target_obj) OVERRIDE
uint32 m_lastTick[BG_TEAMS_COUNT]
Definition Unit.h:1367