OregonCore  revision 3611e8a-git
Your Favourite TBC server
OutdoorPvPNA.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of the OregonCore 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 #include "OutdoorPvPNA.h"
19 #include "Player.h"
20 #include "ObjectMgr.h"
21 #include "OutdoorPvPMgr.h"
22 #include "WorldPacket.h"
23 #include "Language.h"
24 #include "World.h"
25 
27 {
29  m_obj = NULL;
30 }
31 
33 {
34  if (killed->GetTypeId() == TYPEID_PLAYER && player->GetTeam() != killed->ToPlayer()->GetTeam())
35  {
36  player->KilledMonsterCredit(NA_CREDIT_MARKER, 0); // 0 guid, btw it isn't even used in killedmonster function :S
37  if (player->GetTeam() == ALLIANCE)
38  player->CastSpell(player, NA_KILL_TOKEN_ALLIANCE, true);
39  else
40  player->CastSpell(player, NA_KILL_TOKEN_HORDE, true);
41  }
42 }
43 
45 {
46  uint32 cnt = 0;
47  for (std::map<uint32, uint64>::iterator itr = m_Creatures.begin(); itr != m_Creatures.end(); ++itr)
48  {
49  switch (itr->first)
50  {
51  case NA_NPC_GUARD_01:
52  case NA_NPC_GUARD_02:
53  case NA_NPC_GUARD_03:
54  case NA_NPC_GUARD_04:
55  case NA_NPC_GUARD_05:
56  case NA_NPC_GUARD_06:
57  case NA_NPC_GUARD_07:
58  case NA_NPC_GUARD_08:
59  case NA_NPC_GUARD_09:
60  case NA_NPC_GUARD_10:
61  case NA_NPC_GUARD_11:
62  case NA_NPC_GUARD_12:
63  case NA_NPC_GUARD_13:
64  case NA_NPC_GUARD_14:
65  case NA_NPC_GUARD_15:
66  if (Creature const* const cr = HashMapHolder<Creature>::Find(itr->second))
67  if (cr->IsAlive())
68  ++cnt;
69  break;
70  default:
71  break;
72  }
73  }
74  return cnt;
75 }
76 
78 {
79  return m_ControllingFaction;
80 }
81 
83 {
84  const creature_type* creatures = NULL;
85  if (team == ALLIANCE)
86  creatures = AllianceControlNPCs;
87  else if (team == HORDE)
88  creatures = HordeControlNPCs;
89  else
90  return;
91  for (int i = 0; i < NA_CONTROL_NPC_NUM; ++i)
92  AddCreature(i, creatures[i].entry, creatures[i].teamval, creatures[i].map, creatures[i].x, creatures[i].y, creatures[i].z, creatures[i].o, 1000000);
93 }
94 
96 {
97  for (int i = 0; i < NA_CONTROL_NPC_NUM; ++i)
98  DelCreature(i);
99 }
100 
102 {
103  const go_type* gos = NULL;
104  if (team == ALLIANCE)
105  gos = AllianceControlGOs;
106  else if (team == HORDE)
107  gos = HordeControlGOs;
108  else
109  return;
110  for (int i = 0; i < NA_CONTROL_GO_NUM; ++i)
111  {
112  if (i == NA_ROOST_S ||
113  i == NA_ROOST_W ||
114  i == NA_ROOST_N ||
115  i == NA_ROOST_E ||
116  i == NA_BOMB_WAGON_S ||
117  i == NA_BOMB_WAGON_W ||
118  i == NA_BOMB_WAGON_N ||
119  i == NA_BOMB_WAGON_E)
120  continue; // roosts and bomb wagons are spawned when someone uses the matching destroyed roost
121  AddObject(i, gos[i].entry, 0, gos[i].map, gos[i].x, gos[i].y, gos[i].z, gos[i].o, gos[i].rot0, gos[i].rot1, gos[i].rot2, gos[i].rot3);
122  }
123 }
124 
126 {
127  for (int i = 0; i < NA_CONTROL_GO_NUM; ++i)
128  DelObject(i);
129 }
130 
132 {
133  if (m_ControllingFaction)
134  sObjectMgr.RemoveGraveYardLink(NA_HALAA_GRAVEYARD, NA_HALAA_GRAVEYARD_ZONE, m_ControllingFaction, false);
135  if (m_ControllingFaction == ALLIANCE)
136  sWorld.SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr.GetOregonStringForDBCLocale(LANG_OPVP_NA_LOSE_A));
137  else if (m_ControllingFaction == HORDE)
138  sWorld.SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr.GetOregonStringForDBCLocale(LANG_OPVP_NA_LOSE_H));
139 
140  m_ControllingFaction = team;
141  if (m_ControllingFaction)
142  sObjectMgr.AddGraveYardLink(NA_HALAA_GRAVEYARD, NA_HALAA_GRAVEYARD_ZONE, m_ControllingFaction, false);
143  DeSpawnGOs();
144  DeSpawnNPCs();
145  SpawnGOsForTeam(team);
146  SpawnNPCsForTeam(team);
147  m_GuardsAlive = NA_GUARDS_MAX;
148  m_capturable = false;
149  this->UpdateHalaaWorldState();
150  if (team == ALLIANCE)
151  {
152  m_WyvernStateSouth = WYVERN_NEU_HORDE;
153  m_WyvernStateNorth = WYVERN_NEU_HORDE;
154  m_WyvernStateEast = WYVERN_NEU_HORDE;
155  m_WyvernStateWest = WYVERN_NEU_HORDE;
156  m_PvP->TeamApplyBuff(TEAM_ALLIANCE, NA_CAPTURE_BUFF);
157  m_PvP->SendUpdateWorldState(NA_UI_HORDE_GUARDS_SHOW, 0);
158  m_PvP->SendUpdateWorldState(NA_UI_ALLIANCE_GUARDS_SHOW, 1);
159  m_PvP->SendUpdateWorldState(NA_UI_GUARDS_LEFT, m_GuardsAlive);
160  sWorld.SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr.GetOregonStringForDBCLocale(LANG_OPVP_NA_CAPTURE_A));
161  }
162  else
163  {
164  m_WyvernStateSouth = WYVERN_NEU_ALLIANCE;
165  m_WyvernStateNorth = WYVERN_NEU_ALLIANCE;
166  m_WyvernStateEast = WYVERN_NEU_ALLIANCE;
167  m_WyvernStateWest = WYVERN_NEU_ALLIANCE;
168  m_PvP->TeamApplyBuff(TEAM_HORDE, NA_CAPTURE_BUFF);
169  m_PvP->SendUpdateWorldState(NA_UI_HORDE_GUARDS_SHOW, 1);
170  m_PvP->SendUpdateWorldState(NA_UI_ALLIANCE_GUARDS_SHOW, 0);
171  m_PvP->SendUpdateWorldState(NA_UI_GUARDS_LEFT, m_GuardsAlive);
172  sWorld.SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr.GetOregonStringForDBCLocale(LANG_OPVP_NA_CAPTURE_H));
173  }
174  UpdateWyvernRoostWorldState(NA_ROOST_S);
175  UpdateWyvernRoostWorldState(NA_ROOST_N);
176  UpdateWyvernRoostWorldState(NA_ROOST_W);
177  UpdateWyvernRoostWorldState(NA_ROOST_E);
178 }
179 
181 {
183  {
185  uint32 phase = (uint32)ceil((m_value + m_maxValue) / (2 * m_maxValue) * 100.0f);
187  player->SendUpdateWorldState(NA_UI_TOWER_SLIDER_N, m_neutralValuePct);
188  return true;
189  }
190  return false;
191 }
192 
194 {
197 }
198 
200  OPvPCapturePoint(pvp), m_capturable(true), m_GuardsAlive(0), m_ControllingFaction(0),
201  m_WyvernStateNorth(0), m_WyvernStateSouth(0), m_WyvernStateEast(0), m_WyvernStateWest(0),
202  m_HalaaState(HALAA_N), m_RespawnTimer(NA_RESPAWN_TIME), m_GuardCheckTimer(NA_GUARD_CHECK_TIME)
203 {
204  SetCapturePointData(182210, 530, -1572.57f, 7945.3f, -22.475f, 2.05949f, 0.0f, 0.0f, 0.857167f, 0.515038f);
205 }
206 
208 {
209  // m_TypeId = OUTDOOR_PVP_NA; _MUST_ be set in ctor, because of spawns cleanup
210  // add the zones affected by the pvp buff
211  RegisterZone(NA_BUFF_ZONE);
212 
213  // halaa
214  m_obj = new OPvPCapturePointNA(this);
215 
216  AddCapturePoint(m_obj);
217  return true;
218 }
219 
221 {
222  // add buffs
223  if (player->GetTeam() == m_obj->GetControllingFaction())
224  player->CastSpell(player, NA_CAPTURE_BUFF, true);
225  OutdoorPvP::HandlePlayerEnterZone(player, zone);
226 }
227 
229 {
230  // remove buffs
232  OutdoorPvP::HandlePlayerLeaveZone(player, zone);
233 }
234 
236 {
237  m_obj->FillInitialWorldStates(data);
238 }
239 
241 {
243  {
244  data << NA_UI_HORDE_GUARDS_SHOW << uint32(0);
245  data << NA_UI_ALLIANCE_GUARDS_SHOW << uint32(1);
246  }
247  else if (m_ControllingFaction == HORDE)
248  {
249  data << NA_UI_HORDE_GUARDS_SHOW << uint32(1);
250  data << NA_UI_ALLIANCE_GUARDS_SHOW << uint32(0);
251  }
252  else
253  {
254  data << NA_UI_HORDE_GUARDS_SHOW << uint32(0);
255  data << NA_UI_ALLIANCE_GUARDS_SHOW << uint32(0);
256  }
257 
258  data << NA_UI_GUARDS_MAX << NA_GUARDS_MAX;
260 
261  data << NA_UI_TOWER_SLIDER_DISPLAY << uint32(0);
262  data << NA_UI_TOWER_SLIDER_POS << uint32(50);
263  data << NA_UI_TOWER_SLIDER_N << uint32(100);
264 
269 
270  data << NA_MAP_WYVERN_SOUTH_NEU_H << uint32((m_WyvernStateSouth & WYVERN_NEU_HORDE) != 0);
271  data << NA_MAP_WYVERN_SOUTH_NEU_A << uint32((m_WyvernStateSouth & WYVERN_NEU_ALLIANCE) != 0);
272  data << NA_MAP_WYVERN_SOUTH_H << uint32((m_WyvernStateSouth & WYVERN_HORDE) != 0);
273  data << NA_MAP_WYVERN_SOUTH_A << uint32((m_WyvernStateSouth & WYVERN_ALLIANCE) != 0);
274 
275  data << NA_MAP_WYVERN_WEST_NEU_H << uint32((m_WyvernStateWest & WYVERN_NEU_HORDE) != 0);
276  data << NA_MAP_WYVERN_WEST_NEU_A << uint32((m_WyvernStateWest & WYVERN_NEU_ALLIANCE) != 0);
277  data << NA_MAP_WYVERN_WEST_H << uint32((m_WyvernStateWest & WYVERN_HORDE) != 0);
278  data << NA_MAP_WYVERN_WEST_A << uint32((m_WyvernStateWest & WYVERN_ALLIANCE) != 0);
279 
280  data << NA_MAP_WYVERN_EAST_NEU_H << uint32((m_WyvernStateEast & WYVERN_NEU_HORDE) != 0);
281  data << NA_MAP_WYVERN_EAST_NEU_A << uint32((m_WyvernStateEast & WYVERN_NEU_ALLIANCE) != 0);
282  data << NA_MAP_WYVERN_EAST_H << uint32((m_WyvernStateEast & WYVERN_HORDE) != 0);
283  data << NA_MAP_WYVERN_EAST_A << uint32((m_WyvernStateEast & WYVERN_ALLIANCE) != 0);
284 
285  data << NA_MAP_HALAA_NEUTRAL << uint32((m_HalaaState & HALAA_N) != 0);
286  data << NA_MAP_HALAA_NEU_A << uint32((m_HalaaState & HALAA_N_A) != 0);
287  data << NA_MAP_HALAA_NEU_H << uint32((m_HalaaState & HALAA_N_H) != 0);
288  data << NA_MAP_HALAA_HORDE << uint32((m_HalaaState & HALAA_H) != 0);
289  data << NA_MAP_HALAA_ALLIANCE << uint32((m_HalaaState & HALAA_A) != 0);
290 }
291 
293 {
322 }
323 
325 {
326  return m_obj->Update(diff);
327 }
328 
330 {
331  std::vector<uint32> nodes;
332  nodes.resize(2);
333  bool retval = false;
334  switch (spellId)
335  {
336  case NA_SPELL_FLY_NORTH:
337  nodes[0] = FlightPathStartNodes[NA_ROOST_N];
338  nodes[1] = FlightPathEndNodes[NA_ROOST_N];
339  player->ActivateTaxiPathTo(nodes);
341  player->UpdatePvP(true, true);
342  retval = true;
343  break;
344  case NA_SPELL_FLY_SOUTH:
345  nodes[0] = FlightPathStartNodes[NA_ROOST_S];
346  nodes[1] = FlightPathEndNodes[NA_ROOST_S];
347  player->ActivateTaxiPathTo(nodes);
349  player->UpdatePvP(true, true);
350  retval = true;
351  break;
352  case NA_SPELL_FLY_WEST:
353  nodes[0] = FlightPathStartNodes[NA_ROOST_W];
354  nodes[1] = FlightPathEndNodes[NA_ROOST_W];
355  player->ActivateTaxiPathTo(nodes);
357  player->UpdatePvP(true, true);
358  retval = true;
359  break;
360  case NA_SPELL_FLY_EAST:
361  nodes[0] = FlightPathStartNodes[NA_ROOST_E];
362  nodes[1] = FlightPathEndNodes[NA_ROOST_E];
363  player->ActivateTaxiPathTo(nodes);
365  player->UpdatePvP(true, true);
366  retval = true;
367  break;
368  default:
369  break;
370  }
371 
372  if (retval)
373  {
374  //Adding items
375  uint32 noSpaceForCount = 0;
376 
377  // check space and find places
378  ItemPosCountVec dest;
379 
380  int32 count = 10;
381  uint32 itemid = 24538;
382  // bomb id count
383  uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemid, count, &noSpaceForCount);
384  if (msg != EQUIP_ERR_OK) // convert to possible store amount
385  count -= noSpaceForCount;
386 
387  if (count == 0 || dest.empty()) // can't add any
388  return true;
389 
390  Item* item = player->StoreNewItem(dest, itemid, true);
391 
392  if (count > 0 && item)
393  player->SendNewItem(item, count, true, false);
394 
395  return true;
396  }
397  return false;
398 }
399 
401 {
402  int32 retval = OPvPCapturePoint::HandleOpenGo(player, guid);
403  if (retval >= 0)
404  {
405  const go_type* gos = NULL;
407  gos = AllianceControlGOs;
408  else if (m_ControllingFaction == HORDE)
409  gos = HordeControlGOs;
410  else
411  return -1;
412 
413  int32 del = -1;
414  int32 del2 = -1;
415  int32 add = -1;
416  int32 add2 = -1;
417 
418  switch (retval)
419  {
421  del = NA_DESTROYED_ROOST_S;
422  add = NA_ROOST_S;
423  add2 = NA_BOMB_WAGON_S;
426  else
429  break;
431  del = NA_DESTROYED_ROOST_N;
432  add = NA_ROOST_N;
433  add2 = NA_BOMB_WAGON_N;
436  else
439  break;
441  del = NA_DESTROYED_ROOST_W;
442  add = NA_ROOST_W;
443  add2 = NA_BOMB_WAGON_W;
446  else
449  break;
451  del = NA_DESTROYED_ROOST_E;
452  add = NA_ROOST_E;
453  add2 = NA_BOMB_WAGON_E;
456  else
459  break;
460  case NA_BOMB_WAGON_S:
461  del = NA_BOMB_WAGON_S;
462  del2 = NA_ROOST_S;
463  add = NA_DESTROYED_ROOST_S;
466  else
469  break;
470  case NA_BOMB_WAGON_N:
471  del = NA_BOMB_WAGON_N;
472  del2 = NA_ROOST_N;
473  add = NA_DESTROYED_ROOST_N;
476  else
479  break;
480  case NA_BOMB_WAGON_W:
481  del = NA_BOMB_WAGON_W;
482  del2 = NA_ROOST_W;
483  add = NA_DESTROYED_ROOST_W;
486  else
489  break;
490  case NA_BOMB_WAGON_E:
491  del = NA_BOMB_WAGON_E;
492  del2 = NA_ROOST_E;
493  add = NA_DESTROYED_ROOST_E;
496  else
499  break;
500  default:
501  return -1;
502  break;
503  }
504 
505  if (del > -1)
506  DelObject(del);
507 
508  if (del2 > -1)
509  DelObject(del2);
510 
511  if (add > -1)
512  AddObject(add, gos[add].entry, 0, gos[add].map, gos[add].x, gos[add].y, gos[add].z, gos[add].o, gos[add].rot0, gos[add].rot1, gos[add].rot2, gos[add].rot3);
513 
514  if (add2 > -1)
515  AddObject(add2, gos[add2].entry, 0, gos[add2].map, gos[add2].x, gos[add2].y, gos[add2].z, gos[add2].o, gos[add2].rot0, gos[add2].rot1, gos[add2].rot2, gos[add2].rot3);
516 
517  return retval;
518  }
519  return -1;
520 }
521 
523 {
524  // let the controlling faction advance in phase
525  bool capturable = false;
526  if (m_ControllingFaction == ALLIANCE && m_activePlayers[0].size() > m_activePlayers[1].size())
527  capturable = true;
528  else if (m_ControllingFaction == HORDE && m_activePlayers[0].size() < m_activePlayers[1].size())
529  capturable = true;
530 
531  if (m_GuardCheckTimer < diff)
532  {
534  uint32 cnt = GetAliveGuardsCount();
535  if (cnt != m_GuardsAlive)
536  {
537  m_GuardsAlive = cnt;
538  if (m_GuardsAlive == 0)
539  m_capturable = true;
540  // update the guard count for the players in zone
542  }
543  }
544  else m_GuardCheckTimer -= diff;
545 
546  if (m_capturable || capturable)
547  {
548  if (m_RespawnTimer < diff)
549  {
550  // if the guards have been killed, then the challenger has one hour to take over halaa.
551  // in case they fail to do it, the guards are respawned, and they have to start again.
555  }
556  else m_RespawnTimer -= diff;
557 
558  return OPvPCapturePoint::Update(diff);
559  }
560  return false;
561 }
562 
564 {
565  uint32 artkit = 21;
566  switch (m_State)
567  {
570  break;
574  artkit = 2;
575  break;
579  artkit = 1;
580  break;
583  break;
586  break;
589  artkit = 2;
590  break;
593  artkit = 1;
594  break;
595  }
596 
597  if (m_capturePoint)
598  m_capturePoint->SetGoArtKit(artkit);
599 
601 }
602 
604 {
605  // send this too, sometimes the slider disappears, dunno why :(
607  // send these updates to only the ones in this objective
608  uint32 phase = (uint32)ceil((m_value + m_maxValue) / (2 * m_maxValue) * 100.0f);
611 }
612 
614 {
620 }
621 
623 {
624  switch (roost)
625  {
626  case NA_ROOST_S:
631  break;
632  case NA_ROOST_N:
637  break;
638  case NA_ROOST_W:
643  break;
644  case NA_ROOST_E:
649  break;
650  }
651 }
652 
const uint32 NA_GUARDS_MAX
Definition: OutdoorPvPNA.h:35
bool ActivateTaxiPathTo(std::vector< uint32 > const &nodes, uint32 mount_id=0, Creature *npc=NULL)
Definition: Player.cpp:17717
virtual void HandlePlayerEnterZone(Player *plr, uint32 zone)
Definition: OutdoorPvP.cpp:237
uint32 m_ControllingFaction
Definition: OutdoorPvPNA.h:298
OutdoorPvP * m_PvP
Definition: OutdoorPvP.h:159
void KilledMonsterCredit(uint32 entry, uint64 guid=0)
Definition: Player.cpp:13867
void FactionTakeOver(uint32 team)
void SendUpdateWorldState(uint32 Field, uint32 Value)
Definition: Player.cpp:7713
virtual void HandlePlayerLeave(Player *plr)
Definition: OutdoorPvP.cpp:48
const uint32 NA_BUFF_ZONE
Definition: OutdoorPvPNA.h:37
const uint32 NA_HALAA_GRAVEYARD_ZONE
Definition: OutdoorPvPNA.h:41
bool DelObject(uint32 type)
Definition: OutdoorPvP.cpp:175
bool HandlePlayerEnter(Player *plr)
const uint32 NA_CREDIT_MARKER
Definition: OutdoorPvPNA.h:33
bool AddObject(uint32 type, uint32 entry, uint32 artKit, uint32 map, float x, float y, float z, float o, float rotation0, float rotation1, float rotation2, float rotation3)
Definition: OutdoorPvP.cpp:94
void UpdatePvP(bool state, bool override=false)
Definition: Player.cpp:18356
ACE_INT32 int32
Definition: Define.h:67
void SendNewItem(Item *item, uint32 count, bool received, bool created, bool broadcast=false)
Definition: Player.cpp:12144
bool SetCapturePointData(uint32 entry, uint32 map, float x, float y, float z, float o=0, float rotation0=0, float rotation1=0, float rotation2=0, float rotation3=0)
Definition: OutdoorPvP.cpp:116
Item * StoreNewItem(ItemPosCountVec const &pos, uint32 item, bool update, int32 randomPropertyId=0)
Definition: Player.cpp:10277
void FillInitialWorldStates(WorldPacket &data)
void SetFlag(uint16 index, uint32 newFlag)
Definition: Object.cpp:985
virtual int32 HandleOpenGo(Player *plr, uint64 guid)
Definition: OutdoorPvP.cpp:531
#define sObjectMgr
Definition: ObjectMgr.h:1285
void FillInitialWorldStates(WorldPacket &data)
Player * ToPlayer()
Definition: Object.h:386
uint8 CanStoreNewItem(uint8 bag, uint8 slot, ItemPosCountVec &dest, uint32 item, uint32 count, uint32 *no_space_count=NULL) const
Definition: Player.h:1147
void RemoveAurasDueToSpell(uint32 spellId, Aura *except=NULL)
Definition: Unit.cpp:4316
virtual bool Update(uint32 diff)
Definition: OutdoorPvP.cpp:265
const uint32 FlightPathEndNodes[FLIGHT_NODES_NUM]
Definition: OutdoorPvPNA.h:109
uint8 GetTypeId() const
Definition: Object.h:204
PlayerSet m_activePlayers[2]
Definition: OutdoorPvP.h:143
void SpawnGOsForTeam(uint32 team)
ACE_UINT8 uint8
Definition: Define.h:73
const uint32 NA_GUARD_CHECK_TIME
Definition: OutdoorPvPNA.h:45
const go_type HordeControlGOs[NA_CONTROL_GO_NUM]
Definition: OutdoorPvPNA.h:120
Definition: Unit.h:297
void HandlePlayerEnterZone(Player *plr, uint32 zone)
void HandlePlayerLeaveZone(Player *plr, uint32 zone)
Definition: Item.h:196
void CastSpell(Unit *Victim, uint32 spellId, bool triggered, Item *castItem=NULL, Aura *triggeredByAura=NULL, uint64 originalCaster=0)
Definition: Unit.cpp:1174
OPvPCapturePointNA(OutdoorPvP *pvp)
void SendUpdateWorldState(uint32 field, uint32 value)
Definition: OutdoorPvP.cpp:391
void HandleKillImpl(Player *plr, Unit *killed)
GameObject * m_capturePoint
Definition: OutdoorPvP.h:126
const uint32 FlightPathStartNodes[FLIGHT_NODES_NUM]
Definition: OutdoorPvPNA.h:108
bool Update(uint32 diff)
uint32 GetControllingFaction() const
virtual void HandlePlayerLeaveZone(Player *plr, uint32 zone)
Definition: OutdoorPvP.cpp:242
void SpawnNPCsForTeam(uint32 team)
bool HandleCustomSpell(Player *plr, uint32 spellId, GameObject *go)
std::vector< ItemPosCount > ItemPosCountVec
Definition: Player.h:605
ACE_UINT64 uint64
Definition: Define.h:70
uint32 m_neutralValuePct
Definition: OutdoorPvP.h:156
OPvPCapturePointNA * m_obj
Definition: OutdoorPvPNA.h:333
bool SetupOutdoorPvP()
const creature_type HordeControlNPCs[NA_CONTROL_NPC_NUM]
Definition: OutdoorPvPNA.h:184
uint32 m_TypeId
Definition: OutdoorPvP.h:234
int32 HandleOpenGo(Player *plr, uint64 guid)
const uint32 NA_RESPAWN_TIME
Definition: OutdoorPvPNA.h:43
const creature_type AllianceControlNPCs[NA_CONTROL_NPC_NUM]
Definition: OutdoorPvPNA.h:208
void UpdateWyvernRoostWorldState(uint32 roost)
uint32 GetTeam() const
Definition: Player.h:2075
uint32 GetAliveGuardsCount()
virtual bool HandlePlayerEnter(Player *plr)
Definition: OutdoorPvP.cpp:37
void HandlePlayerLeave(Player *plr)
#define sWorld
Definition: World.h:860
void SendRemoveWorldStates(Player *plr)
ACE_UINT32 uint32
Definition: Define.h:71
true
Definition: Log.cpp:534
void SendUpdateWorldState(uint32 field, uint32 value)
Definition: OutdoorPvP.cpp:384
Definition: Unit.h:884
const uint32 NA_HALAA_GRAVEYARD
Definition: OutdoorPvPNA.h:39
Definition: Player.h:922
bool Update(uint32 diff)
ObjectiveStates m_State
Definition: OutdoorPvP.h:154
void SetGoArtKit(uint32 artkit)
Definition: GameObject.cpp:964
const go_type AllianceControlGOs[NA_CONTROL_GO_NUM]
Definition: OutdoorPvPNA.h:139