Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
BattlegroundAB.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_BATTLEGROUNDAB_H
7#define SF_BATTLEGROUNDAB_H
8
9#include "Battleground.h"
10
12{
19 /*
20 BG_AB_OP_STABLE_ICON = 1842, //Stable map icon (NONE)
21 BG_AB_OP_STABLE_STATE_ALIENCE = 1767, //Stable map state (ALIENCE)
22 BG_AB_OP_STABLE_STATE_HORDE = 1768, //Stable map state (HORDE)
23 BG_AB_OP_STABLE_STATE_CON_ALI = 1769, //Stable map state (CON ALIENCE)
24 BG_AB_OP_STABLE_STATE_CON_HOR = 1770, //Stable map state (CON HORDE)
25 BG_AB_OP_FARM_ICON = 1845, //Farm map icon (NONE)
26 BG_AB_OP_FARM_STATE_ALIENCE = 1772, //Farm state (ALIENCE)
27 BG_AB_OP_FARM_STATE_HORDE = 1773, //Farm state (HORDE)
28 BG_AB_OP_FARM_STATE_CON_ALI = 1774, //Farm state (CON ALIENCE)
29 BG_AB_OP_FARM_STATE_CON_HOR = 1775, //Farm state (CON HORDE)
30
31 BG_AB_OP_BLACKSMITH_ICON = 1846, //Blacksmith map icon (NONE)
32 BG_AB_OP_BLACKSMITH_STATE_ALIENCE = 1782, //Blacksmith map state (ALIENCE)
33 BG_AB_OP_BLACKSMITH_STATE_HORDE = 1783, //Blacksmith map state (HORDE)
34 BG_AB_OP_BLACKSMITH_STATE_CON_ALI = 1784, //Blacksmith map state (CON ALIENCE)
35 BG_AB_OP_BLACKSMITH_STATE_CON_HOR = 1785, //Blacksmith map state (CON HORDE)
36 BG_AB_OP_LUMBERMILL_ICON = 1844, //Lumber Mill map icon (NONE)
37 BG_AB_OP_LUMBERMILL_STATE_ALIENCE = 1792, //Lumber Mill map state (ALIENCE)
38 BG_AB_OP_LUMBERMILL_STATE_HORDE = 1793, //Lumber Mill map state (HORDE)
39 BG_AB_OP_LUMBERMILL_STATE_CON_ALI = 1794, //Lumber Mill map state (CON ALIENCE)
40 BG_AB_OP_LUMBERMILL_STATE_CON_HOR = 1795, //Lumber Mill map state (CON HORDE)
41 BG_AB_OP_GOLDMINE_ICON = 1843, //Gold Mine map icon (NONE)
42 BG_AB_OP_GOLDMINE_STATE_ALIENCE = 1787, //Gold Mine map state (ALIENCE)
43 BG_AB_OP_GOLDMINE_STATE_HORDE = 1788, //Gold Mine map state (HORDE)
44 BG_AB_OP_GOLDMINE_STATE_CON_ALI = 1789, //Gold Mine map state (CON ALIENCE
45 BG_AB_OP_GOLDMINE_STATE_CON_HOR = 1790, //Gold Mine map state (CON HORDE)
46 */
47};
48
49const uint32 BG_AB_OP_NODESTATES[5] = { 1767, 1782, 1772, 1792, 1787 };
50
51const uint32 BG_AB_OP_NODEICONS[5] = { 1842, 1846, 1845, 1844, 1843 };
52
53/* Note: code uses that these IDs follow each other */
55{
56 BG_AB_OBJECTID_NODE_BANNER_0 = 180087, // Stables banner
57 BG_AB_OBJECTID_NODE_BANNER_1 = 180088, // Blacksmith banner
58 BG_AB_OBJECTID_NODE_BANNER_2 = 180089, // Farm banner
59 BG_AB_OBJECTID_NODE_BANNER_3 = 180090, // Lumber mill banner
60 BG_AB_OBJECTID_NODE_BANNER_4 = 180091 // Gold mine banner
61};
62
95
96/* Object id templates from DB */
111
116
122
123/* do NOT change the order, else wrong behaviour */
139
150
160
166
167#define BG_AB_NotABBGWeekendHonorTicks 260
168#define BG_AB_ABBGWeekendHonorTicks 160
169#define BG_AB_NotABBGWeekendReputationTicks 160
170#define BG_AB_ABBGWeekendReputationTicks 120
171
172#define AB_EVENT_START_BATTLE 9158 // Achievement: Let's Get This Done
173
174// x, y, z, o
176{
177 {1166.785f, 1200.132f, -56.70859f, 0.9075713f}, // stables
178 {977.0156f, 1046.616f, -44.80923f, -2.600541f}, // blacksmith
179 {806.1821f, 874.2723f, -55.99371f, -2.303835f}, // farm
180 {856.1419f, 1148.902f, 11.18469f, -2.303835f}, // lumber mill
181 {1146.923f, 848.1782f, -110.917f, -0.7330382f} // gold mine
182};
183
184// x, y, z, o, rot0, rot1, rot2, rot3
185const float BG_AB_DoorPositions[2][8] =
186{
187 {1284.597f, 1281.167f, -15.97792f, 0.7068594f, 0.012957f, -0.060288f, 0.344959f, 0.93659f},
188 {708.0903f, 708.4479f, -17.8342f, -2.391099f, 0.050291f, 0.015127f, 0.929217f, -0.365784f}
189};
190
191// Tick intervals and given points: case 0, 1, 2, 3, 4, 5 captured nodes
192const uint32 BG_AB_TickIntervals[6] = { 0, 12000, 9000, 6000, 3000, 1000 };
193const uint32 BG_AB_TickPoints[6] = { 0, 10, 10, 10, 10, 30 };
194
195// WorldSafeLocs ids for 5 nodes, and for ally, and horde starting location
196const uint32 BG_AB_GraveyardIds[BG_AB_ALL_NODES_COUNT] = { 895, 894, 893, 897, 896, 898, 899 };
197
198// x, y, z, o
200{
201 {1185.71f, 1185.24f, -56.36f, 2.56f}, // stables
202 {990.75f, 1008.18f, -42.60f, 2.43f}, // blacksmith
203 {817.66f, 843.34f, -56.54f, 3.01f}, // farm
204 {807.46f, 1189.16f, 11.92f, 5.44f}, // lumber mill
205 {1146.62f, 816.94f, -98.49f, 6.14f} // gold mine
206};
207
208// x, y, z, o
210{
211 {1200.03f, 1171.09f, -56.47f, 5.15f}, // stables
212 {1017.43f, 960.61f, -42.95f, 4.88f}, // blacksmith
213 {833.00f, 793.00f, -57.25f, 5.27f}, // farm
214 {775.17f, 1206.40f, 15.79f, 1.90f}, // lumber mill
215 {1207.48f, 787.00f, -83.36f, 5.51f}, // gold mine
216 {1354.05f, 1275.48f, -11.30f, 4.77f}, // alliance starting base
217 {714.61f, 646.15f, -10.87f, 4.34f} // horde starting base
218};
219
226
234
236{
237public:
240
241 void AddPlayer(Player* player) OVERRIDE;
244 void RemovePlayer(Player* player, uint64 guid, uint32 team) OVERRIDE;
245 void HandleAreaTrigger(Player* Source, uint32 Trigger) OVERRIDE;
247 void Reset() OVERRIDE;
248 void EndBattleground(uint32 winner);
250
251 /* Scorekeeping */
252 void UpdatePlayerScore(Player* Source, uint32 type, uint32 value, bool doAddHonor = true) OVERRIDE;
253
255
256 /* Nodes occupying */
257 void EventPlayerClickedOnFlag(Player* source, GameObject* target_obj) OVERRIDE;
258
259 /* achievement req. */
261 bool CheckAchievementCriteriaMeet(uint32 /*criteriaId*/, Player const* /*player*/, Unit const* /*target*/ = NULL, uint32 /*miscvalue1*/ = 0) OVERRIDE;
262
264private:
265 void PostUpdateImpl(uint32 diff) OVERRIDE;
266 /* Gameobject spawning/despawning */
267 void _CreateBanner(uint8 node, uint8 type, uint8 teamIndex, bool delay);
268 void _DelBanner(uint8 node, uint8 type, uint8 teamIndex);
269 void _SendNodeUpdate(uint8 node);
270
271 /* Creature spawning/despawning */
273 void _NodeOccupied(uint8 node, Team team);
274 void _NodeDeOccupied(uint8 node);
275
277
278 /* Nodes info:
279 0: neutral
280 1: ally contested
281 2: horde contested
282 3: ally occupied
283 4: horde occupied */
294 // need for achievements
296};
297#endif
#define BG_TEAMS_COUNT
const uint32 BG_AB_TickPoints[6]
BG_AB_ObjectType
@ BG_AB_OBJECT_REGENBUFF_BLACKSMITH
@ BG_AB_OBJECT_REGENBUFF_FARM
@ BG_AB_OBJECT_BANNER_HORDE
@ BG_AB_OBJECT_SPEEDBUFF_GOLD_MINE
@ BG_AB_OBJECT_REGENBUFF_LUMBER_MILL
@ BG_AB_OBJECT_BANNER_ALLY
@ BG_AB_OBJECT_GATE_A
@ BG_AB_OBJECT_AURA_HORDE
@ BG_AB_OBJECT_SPEEDBUFF_FARM
@ BG_AB_OBJECT_BERSERKBUFF_BLACKSMITH
@ BG_AB_OBJECT_MAX
@ BG_AB_OBJECT_SPEEDBUFF_BLACKSMITH
@ BG_AB_OBJECT_GATE_H
@ BG_AB_OBJECT_BERSERKBUFF_FARM
@ BG_AB_OBJECT_REGENBUFF_GOLD_MINE
@ BG_AB_OBJECT_BANNER_NEUTRAL
@ BG_AB_OBJECT_SPEEDBUFF_LUMBER_MILL
@ BG_AB_OBJECT_BANNER_CONT_H
@ BG_AB_OBJECT_BERSERKBUFF_STABLES
@ BG_AB_OBJECT_BERSERKBUFF_GOLD_MINE
@ BG_AB_OBJECT_SPEEDBUFF_STABLES
@ BG_AB_OBJECT_BANNER_CONT_A
@ BG_AB_OBJECT_AURA_ALLY
@ BG_AB_OBJECT_BERSERKBUFF_LUMBER_MILL
@ BG_AB_OBJECT_REGENBUFF_STABLES
@ BG_AB_OBJECT_AURA_CONTESTED
const float BG_AB_BuffPositions[BG_AB_DYNAMIC_NODES_COUNT][4]
BG_AB_NodeStatus
@ BG_AB_NODE_TYPE_OCCUPIED
@ BG_AB_NODE_STATUS_ALLY_CONTESTED
@ BG_AB_NODE_STATUS_ALLY_OCCUPIED
@ BG_AB_NODE_STATUS_HORDE_OCCUPIED
@ BG_AB_NODE_STATUS_HORDE_CONTESTED
@ BG_AB_NODE_TYPE_NEUTRAL
@ BG_AB_NODE_TYPE_CONTESTED
const uint32 BG_AB_TickIntervals[6]
const float BG_AB_DoorPositions[2][8]
const uint32 BG_AB_GraveyardIds[BG_AB_ALL_NODES_COUNT]
BG_AB_ObjectTypes
@ BG_AB_OBJECTID_BANNER_CONT_A
@ BG_AB_OBJECTID_BANNER_A
@ BG_AB_OBJECTID_AURA_A
@ BG_AB_OBJECTID_BANNER_H
@ BG_AB_OBJECTID_AURA_C
@ BG_AB_OBJECTID_AURA_H
@ BG_AB_OBJECTID_GATE_A
@ BG_AB_OBJECTID_BANNER_CONT_H
@ BG_AB_OBJECTID_GATE_H
BG_AB_BattlegroundNodes
@ BG_AB_NODE_BLACKSMITH
@ BG_AB_NODE_STABLES
@ BG_AB_ALL_NODES_COUNT
@ BG_AB_NODE_LUMBER_MILL
@ BG_AB_DYNAMIC_NODES_COUNT
@ BG_AB_NODE_FARM
@ BG_AB_SPIRIT_HORDE
@ BG_AB_NODE_GOLD_MINE
@ BG_AB_SPIRIT_ALIANCE
const float BG_AB_SpiritGuidePos[BG_AB_ALL_NODES_COUNT][4]
const uint32 BG_AB_OP_NODEICONS[5]
BG_AB_NodeObjectId
@ BG_AB_OBJECTID_NODE_BANNER_3
@ BG_AB_OBJECTID_NODE_BANNER_4
@ BG_AB_OBJECTID_NODE_BANNER_2
@ BG_AB_OBJECTID_NODE_BANNER_1
@ BG_AB_OBJECTID_NODE_BANNER_0
BG_AB_Timers
@ BG_AB_FLAG_CAPTURING_TIME
BG_AB_Objectives
@ AB_OBJECTIVE_ASSAULT_BASE
@ AB_OBJECTIVE_DEFEND_BASE
const uint32 BG_AB_OP_NODESTATES[5]
BG_AB_WorldStates
@ BG_AB_OP_RESOURCES_ALLY
@ BG_AB_OP_RESOURCES_MAX
@ BG_AB_OP_OCCUPIED_BASES_HORDE
@ BG_AB_OP_RESOURCES_HORDE
@ BG_AB_OP_RESOURCES_WARNING
@ BG_AB_OP_OCCUPIED_BASES_ALLY
BG_AB_Score
@ BG_AB_WARNING_NEAR_VICTORY_SCORE
@ BG_AB_MAX_TEAM_SCORE
const float BG_AB_NodePositions[BG_AB_DYNAMIC_NODES_COUNT][4]
BG_AB_Sounds
@ BG_AB_SOUND_NODE_CAPTURED_HORDE
@ BG_AB_SOUND_NODE_ASSAULTED_ALLIANCE
@ BG_AB_SOUND_NEAR_VICTORY
@ BG_AB_SOUND_NODE_ASSAULTED_HORDE
@ BG_AB_SOUND_NODE_CLAIMED
@ BG_AB_SOUND_NODE_CAPTURED_ALLIANCE
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
bool SetupBattleground() OVERRIDE
void RemovePlayer(Player *player, uint64 guid, uint32 team) OVERRIDE
void _NodeOccupied(uint8 node, Team team)
int32 _GetNodeNameId(uint8 node)
void Reset() OVERRIDE
void UpdatePlayerScore(Player *Source, uint32 type, uint32 value, bool doAddHonor=true) OVERRIDE
bool m_TeamScores500Disadvantage[BG_TEAMS_COUNT]
bool CheckAchievementCriteriaMeet(uint32, Player const *, Unit const *=NULL, uint32=0) OVERRIDE
void _SendNodeUpdate(uint8 node)
bool IsAllNodesControlledByTeam(uint32 team) const OVERRIDE
void FillInitialWorldStates(WorldStateBuilder &builder) OVERRIDE
uint32 m_NodeTimers[BG_AB_DYNAMIC_NODES_COUNT]
uint32 m_lastTick[BG_TEAMS_COUNT]
uint8 m_Nodes[BG_AB_DYNAMIC_NODES_COUNT]
void AddPlayer(Player *player) OVERRIDE
void _CreateBanner(uint8 node, uint8 type, uint8 teamIndex, bool delay)
void StartingEventCloseDoors() OVERRIDE
void _DelBanner(uint8 node, uint8 type, uint8 teamIndex)
uint32 m_ReputationScoreTics[BG_TEAMS_COUNT]
void StartingEventOpenDoors() OVERRIDE
uint8 m_prevNodes[BG_AB_DYNAMIC_NODES_COUNT]
void PostUpdateImpl(uint32 diff) OVERRIDE
Post-update hook.
uint32 m_HonorScoreTics[BG_TEAMS_COUNT]
void _NodeDeOccupied(uint8 node)
void HandleAreaTrigger(Player *Source, uint32 Trigger) OVERRIDE
BG_AB_BannerTimer m_BannerTimers[BG_AB_DYNAMIC_NODES_COUNT]
WorldSafeLocsEntry const * GetClosestGraveYard(Player *player) OVERRIDE
void EventPlayerClickedOnFlag(Player *source, GameObject *target_obj) OVERRIDE
void EndBattleground(uint32 winner)
uint32 GetPrematureWinner() OVERRIDE
Definition Unit.h:1367