AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
OPvPCapturePointNA Class Reference

#include "OutdoorPvPNA.h"

Inheritance diagram for OPvPCapturePointNA:
OPvPCapturePoint

Public Member Functions

 OPvPCapturePointNA (OutdoorPvP *pvp)
 
bool Update (uint32 diff) override
 
void ChangeState () override
 
void SendChangePhase () override
 
void FillInitialWorldStates (WorldPacket &data) override
 
bool HandlePlayerEnter (Player *player) override
 
void HandlePlayerLeave (Player *player) override
 
bool HandleCustomSpell (Player *player, uint32 spellId, GameObject *go) override
 
int32 HandleOpenGo (Player *player, GameObject *go) override
 
uint32 GetAliveGuardsCount ()
 
TeamId GetControllingFaction () const
 
- Public Member Functions inherited from OPvPCapturePoint
 OPvPCapturePoint (OutdoorPvP *pvp)
 
virtual ~OPvPCapturePoint ()=default
 
virtual void FillInitialWorldStates (WorldPacket &)
 
void SendUpdateWorldState (uint32 field, uint32 value)
 
void SendObjectiveComplete (uint32 id, ObjectGuid guid=ObjectGuid::Empty)
 
virtual bool HandlePlayerEnter (Player *player)
 
virtual void HandlePlayerLeave (Player *player)
 
bool IsInsideObjective (Player *player) const
 
virtual bool HandleCustomSpell (Player *player, uint32 spellId, GameObject *go)
 
virtual int32 HandleOpenGo (Player *player, GameObject *go)
 
virtual bool Update (uint32 diff)
 
virtual void ChangeState ()=0
 
virtual void ChangeTeam (TeamId)
 
virtual void SendChangePhase ()
 
virtual bool HandleGossipOption (Player *player, Creature *creature, uint32 gossipId)
 
virtual bool CanTalkTo (Player *player, Creature *c, GossipMenuItems const &gso)
 
virtual bool HandleDropFlag (Player *player, uint32 spellId)
 
virtual void DeleteSpawns ()
 
void AddGO (uint32 type, ObjectGuid::LowType guid, uint32 entry=0)
 
void AddCre (uint32 type, ObjectGuid::LowType guid, uint32 entry=0)
 
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)
 
void SetSlider (float slider)
 
float GetSlider () const
 

Protected Member Functions

void FactionTakeOver (TeamId teamId)
 
void DeSpawnNPCs ()
 
void DeSpawnGOs ()
 
void SpawnNPCsForTeam (TeamId teamId)
 
void SpawnGOsForTeam (TeamId teamId)
 
void UpdateWyvernRoostWorldState (uint32 roost)
 
void UpdateHalaaWorldState ()
 
- Protected Member Functions inherited from OPvPCapturePoint
bool AddObject (uint32 type, uint32 entry, uint32 map, float x, float y, float z, float o, float rotation0, float rotation1, float rotation2, float rotation3)
 
bool AddCreature (uint32 type, uint32 entry, uint32 map, float x, float y, float z, float o, uint32 spawntimeDelay=0)
 
bool DelCreature (uint32 type)
 
bool DelObject (uint32 type)
 
bool DelCapturePoint ()
 

Private Attributes

bool m_capturable
 
uint32 m_GuardsAlive
 
TeamId m_ControllingFaction
 
uint32 m_WyvernStateNorth
 
uint32 m_WyvernStateSouth
 
uint32 m_WyvernStateEast
 
uint32 m_WyvernStateWest
 
uint32 m_HalaaState
 
uint32 m_RespawnTimer
 
uint32 m_GuardCheckTimer
 

Additional Inherited Members

- Public Attributes inherited from OPvPCapturePoint
ObjectGuid::LowType m_capturePointSpawnId {}
 
GameObject_capturePoint {}
 
- Protected Attributes inherited from OPvPCapturePoint
std::array< PlayerSet, 2 > _activePlayers
 
float _maxValue {}
 
float _minValue {}
 
float _maxSpeed {}
 
float _value {}
 
TeamId _team { TEAM_NEUTRAL }
 
ObjectiveStates _oldState { OBJECTIVESTATE_NEUTRAL }
 
ObjectiveStates _state { OBJECTIVESTATE_NEUTRAL }
 
uint32 _neutralValuePct {}
 
OutdoorPvP_pvp {}
 
std::unordered_map< uint32, ObjectGuid::LowType_objects
 
std::unordered_map< uint32, ObjectGuid::LowType_creatures
 
std::unordered_map< ObjectGuid::LowType, uint32_objectTypes
 
std::unordered_map< ObjectGuid::LowType, uint32_creatureTypes
 

Detailed Description

Constructor & Destructor Documentation

◆ OPvPCapturePointNA()

OPvPCapturePointNA::OPvPCapturePointNA ( OutdoorPvP pvp)
205 :
209{
210 SetCapturePointData(182210, 530, -1572.57f, 7945.3f, -22.475f, 2.05949f, 0.0f, 0.0f, 0.857167f, 0.515038f);
211}
const uint32 NA_GUARD_CHECK_TIME
Definition: OutdoorPvPNA.h:45
@ HALAA_N
Definition: OutdoorPvPNA.h:242
const uint32 NA_RESPAWN_TIME
Definition: OutdoorPvPNA.h:43
@ TEAM_NEUTRAL
Definition: SharedDefines.h:762
Definition: OutdoorPvP.h:91
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:127
uint32 m_WyvernStateNorth
Definition: OutdoorPvPNA.h:297
uint32 m_RespawnTimer
Definition: OutdoorPvPNA.h:304
bool m_capturable
Definition: OutdoorPvPNA.h:291
uint32 m_HalaaState
Definition: OutdoorPvPNA.h:302
TeamId m_ControllingFaction
Definition: OutdoorPvPNA.h:295
uint32 m_WyvernStateWest
Definition: OutdoorPvPNA.h:300
uint32 m_WyvernStateEast
Definition: OutdoorPvPNA.h:299
uint32 m_GuardsAlive
Definition: OutdoorPvPNA.h:293
uint32 m_GuardCheckTimer
Definition: OutdoorPvPNA.h:306
uint32 m_WyvernStateSouth
Definition: OutdoorPvPNA.h:298

References OPvPCapturePoint::SetCapturePointData().

Member Function Documentation

◆ ChangeState()

void OPvPCapturePointNA::ChangeState ( )
overridevirtual

Implements OPvPCapturePoint.

575{
576 uint32 artkit = 21;
577 switch (_state)
578 {
581 break;
585 artkit = 2;
586 break;
590 artkit = 1;
591 break;
594 break;
597 break;
600 artkit = 2;
601 break;
604 artkit = 1;
605 break;
606 }
607
608 auto bounds = sMapMgr->FindMap(530, 0)->GetGameObjectBySpawnIdStore().equal_range(m_capturePointSpawnId);
609 for (auto itr = bounds.first; itr != bounds.second; ++itr)
610 itr->second->SetGoArtKit(artkit);
611
613}
std::uint32_t uint32
Definition: Define.h:108
#define sMapMgr
Definition: MapMgr.h:221
@ OBJECTIVESTATE_HORDE
Definition: OutdoorPvP.h:45
@ OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE
Definition: OutdoorPvP.h:47
@ OBJECTIVESTATE_ALLIANCE
Definition: OutdoorPvP.h:44
@ OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE
Definition: OutdoorPvP.h:46
@ OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE
Definition: OutdoorPvP.h:49
@ OBJECTIVESTATE_NEUTRAL
Definition: OutdoorPvP.h:43
@ OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE
Definition: OutdoorPvP.h:48
@ HALAA_N_A
Definition: OutdoorPvPNA.h:243
@ HALAA_H
Definition: OutdoorPvPNA.h:246
@ HALAA_A
Definition: OutdoorPvPNA.h:244
@ HALAA_N_H
Definition: OutdoorPvPNA.h:245
@ TEAM_ALLIANCE
Definition: SharedDefines.h:760
@ TEAM_HORDE
Definition: SharedDefines.h:761
ObjectiveStates _state
Definition: OutdoorPvP.h:167
ObjectGuid::LowType m_capturePointSpawnId
Definition: OutdoorPvP.h:125
void FactionTakeOver(TeamId teamId)
Definition: OutdoorPvPNA.cpp:137
void UpdateHalaaWorldState()
Definition: OutdoorPvPNA.cpp:625

References OPvPCapturePoint::_state, FactionTakeOver(), HALAA_A, HALAA_H, HALAA_N, HALAA_N_A, HALAA_N_H, OPvPCapturePoint::m_capturePointSpawnId, m_HalaaState, OBJECTIVESTATE_ALLIANCE, OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE, OBJECTIVESTATE_HORDE, OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE, OBJECTIVESTATE_NEUTRAL, OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE, OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE, sMapMgr, TEAM_ALLIANCE, TEAM_HORDE, and UpdateHalaaWorldState().

◆ DeSpawnGOs()

void OPvPCapturePointNA::DeSpawnGOs ( )
protected
130{
131 for (int i = 0; i < NA_CONTROL_GO_NUM; ++i)
132 {
133 DelObject(i);
134 }
135}
@ NA_CONTROL_GO_NUM
Definition: OutdoorPvPNA.h:105
bool DelObject(uint32 type)
Definition: OutdoorPvP.cpp:193

References OPvPCapturePoint::DelObject(), and NA_CONTROL_GO_NUM.

Referenced by FactionTakeOver().

◆ DeSpawnNPCs()

void OPvPCapturePointNA::DeSpawnNPCs ( )
protected
100{
101 for (int i = 0; i < NA_CONTROL_NPC_NUM; ++i)
102 DelCreature(i);
103}
@ NA_CONTROL_NPC_NUM
Definition: OutdoorPvPNA.h:181
bool DelCreature(uint32 type)
Definition: OutdoorPvP.cpp:151

References OPvPCapturePoint::DelCreature(), and NA_CONTROL_NPC_NUM.

Referenced by FactionTakeOver().

◆ FactionTakeOver()

void OPvPCapturePointNA::FactionTakeOver ( TeamId  teamId)
protected
138{
142 sWorld->SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_NA_LOSE_A));
144 sWorld->SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_NA_LOSE_H));
145
146 m_ControllingFaction = teamId;
149 DeSpawnGOs();
150 DeSpawnNPCs();
151 SpawnGOsForTeam(teamId);
152 SpawnNPCsForTeam(teamId);
154 m_capturable = false;
155 this->UpdateHalaaWorldState();
156 if (teamId == TEAM_ALLIANCE)
157 {
166 sWorld->SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_NA_CAPTURE_A));
167 }
168 else
169 {
178 sWorld->SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_NA_CAPTURE_H));
179 }
184}
#define sObjectMgr
Definition: ObjectMgr.h:1640
#define sGraveyard
Definition: GameGraveyard.h:75
@ LANG_OPVP_NA_CAPTURE_A
Definition: Language.h:1239
@ LANG_OPVP_NA_LOSE_A
Definition: Language.h:1241
@ LANG_OPVP_NA_LOSE_H
Definition: Language.h:1240
@ LANG_OPVP_NA_CAPTURE_H
Definition: Language.h:1238
const uint32 NA_HALAA_GRAVEYARD
Definition: OutdoorPvPNA.h:39
const uint32 NA_GUARDS_MAX
Definition: OutdoorPvPNA.h:35
@ WYVERN_NEU_HORDE
Definition: OutdoorPvPNA.h:234
@ WYVERN_NEU_ALLIANCE
Definition: OutdoorPvPNA.h:235
@ NA_ROOST_W
Definition: OutdoorPvPNA.h:91
@ NA_ROOST_E
Definition: OutdoorPvPNA.h:93
@ NA_ROOST_N
Definition: OutdoorPvPNA.h:92
@ NA_ROOST_S
Definition: OutdoorPvPNA.h:90
const uint32 NA_HALAA_GRAVEYARD_ZONE
Definition: OutdoorPvPNA.h:41
@ NA_CAPTURE_BUFF
Definition: OutdoorPvPNA.h:29
@ NA_UI_ALLIANCE_GUARDS_SHOW
Definition: OutdoorPvPNA.h:50
@ NA_UI_HORDE_GUARDS_SHOW
Definition: OutdoorPvPNA.h:49
@ NA_UI_GUARDS_LEFT
Definition: OutdoorPvPNA.h:52
#define sWorld
Definition: World.h:447
OutdoorPvP * _pvp
Definition: OutdoorPvP.h:173
void TeamApplyBuff(TeamId teamId, uint32 spellId, uint32 spellId2=0, Player *sameMapPlr=nullptr)
Definition: OutdoorPvP.cpp:671
void SendUpdateWorldState(uint32 field, uint32 value)
Definition: OutdoorPvP.cpp:457
void UpdateWyvernRoostWorldState(uint32 roost)
Definition: OutdoorPvPNA.cpp:634
void DeSpawnNPCs()
Definition: OutdoorPvPNA.cpp:99
void SpawnNPCsForTeam(TeamId teamId)
Definition: OutdoorPvPNA.cpp:86
void SpawnGOsForTeam(TeamId teamId)
Definition: OutdoorPvPNA.cpp:105
void DeSpawnGOs()
Definition: OutdoorPvPNA.cpp:129

References OPvPCapturePoint::_pvp, DeSpawnGOs(), DeSpawnNPCs(), LANG_OPVP_NA_CAPTURE_A, LANG_OPVP_NA_CAPTURE_H, LANG_OPVP_NA_LOSE_A, LANG_OPVP_NA_LOSE_H, m_capturable, m_ControllingFaction, m_GuardsAlive, m_WyvernStateEast, m_WyvernStateNorth, m_WyvernStateSouth, m_WyvernStateWest, NA_CAPTURE_BUFF, NA_GUARDS_MAX, NA_HALAA_GRAVEYARD, NA_HALAA_GRAVEYARD_ZONE, NA_ROOST_E, NA_ROOST_N, NA_ROOST_S, NA_ROOST_W, NA_UI_ALLIANCE_GUARDS_SHOW, NA_UI_GUARDS_LEFT, NA_UI_HORDE_GUARDS_SHOW, OutdoorPvP::SendUpdateWorldState(), sGraveyard, sObjectMgr, SpawnGOsForTeam(), SpawnNPCsForTeam(), sWorld, TEAM_ALLIANCE, TEAM_HORDE, TEAM_NEUTRAL, OutdoorPvP::TeamApplyBuff(), UpdateHalaaWorldState(), UpdateWyvernRoostWorldState(), WYVERN_NEU_ALLIANCE, and WYVERN_NEU_HORDE.

Referenced by ChangeState(), and Update().

◆ FillInitialWorldStates()

void OPvPCapturePointNA::FillInitialWorldStates ( WorldPacket data)
overridevirtual

Reimplemented from OPvPCapturePoint.

250{
252 {
253 data << NA_UI_HORDE_GUARDS_SHOW << uint32(0);
255 }
257 {
258 data << NA_UI_HORDE_GUARDS_SHOW << uint32(1);
260 }
261 else
262 {
263 data << NA_UI_HORDE_GUARDS_SHOW << uint32(0);
265 }
266
269
271 data << NA_UI_TOWER_SLIDER_POS << uint32(50);
272 data << NA_UI_TOWER_SLIDER_N << uint32(100);
273
278
283
288
293
297 data << NA_MAP_HALAA_HORDE << uint32(bool(m_HalaaState & HALAA_H));
299}
@ WYVERN_ALLIANCE
Definition: OutdoorPvPNA.h:237
@ WYVERN_HORDE
Definition: OutdoorPvPNA.h:236
@ NA_MAP_HALAA_NEU_A
Definition: OutdoorPvPNA.h:79
@ NA_MAP_WYVERN_SOUTH_NEU_H
Definition: OutdoorPvPNA.h:63
@ NA_MAP_HALAA_HORDE
Definition: OutdoorPvPNA.h:81
@ NA_MAP_WYVERN_NORTH_NEU_A
Definition: OutdoorPvPNA.h:59
@ NA_UI_TOWER_SLIDER_DISPLAY
Definition: OutdoorPvPNA.h:54
@ NA_MAP_HALAA_NEUTRAL
Definition: OutdoorPvPNA.h:78
@ NA_MAP_WYVERN_WEST_NEU_A
Definition: OutdoorPvPNA.h:69
@ NA_MAP_WYVERN_SOUTH_NEU_A
Definition: OutdoorPvPNA.h:64
@ NA_MAP_WYVERN_WEST_H
Definition: OutdoorPvPNA.h:70
@ NA_MAP_WYVERN_NORTH_NEU_H
Definition: OutdoorPvPNA.h:58
@ NA_MAP_HALAA_ALLIANCE
Definition: OutdoorPvPNA.h:82
@ NA_MAP_WYVERN_EAST_H
Definition: OutdoorPvPNA.h:75
@ NA_MAP_WYVERN_SOUTH_A
Definition: OutdoorPvPNA.h:66
@ NA_UI_TOWER_SLIDER_N
Definition: OutdoorPvPNA.h:56
@ NA_UI_GUARDS_MAX
Definition: OutdoorPvPNA.h:51
@ NA_MAP_WYVERN_EAST_A
Definition: OutdoorPvPNA.h:76
@ NA_UI_TOWER_SLIDER_POS
Definition: OutdoorPvPNA.h:55
@ NA_MAP_WYVERN_NORTH_H
Definition: OutdoorPvPNA.h:60
@ NA_MAP_WYVERN_WEST_A
Definition: OutdoorPvPNA.h:71
@ NA_MAP_WYVERN_EAST_NEU_A
Definition: OutdoorPvPNA.h:74
@ NA_MAP_WYVERN_EAST_NEU_H
Definition: OutdoorPvPNA.h:73
@ NA_MAP_HALAA_NEU_H
Definition: OutdoorPvPNA.h:80
@ NA_MAP_WYVERN_WEST_NEU_H
Definition: OutdoorPvPNA.h:68
@ NA_MAP_WYVERN_NORTH_A
Definition: OutdoorPvPNA.h:61
@ NA_MAP_WYVERN_SOUTH_H
Definition: OutdoorPvPNA.h:65

References HALAA_A, HALAA_H, HALAA_N, HALAA_N_A, HALAA_N_H, m_ControllingFaction, m_GuardsAlive, m_HalaaState, m_WyvernStateEast, m_WyvernStateNorth, m_WyvernStateSouth, m_WyvernStateWest, NA_GUARDS_MAX, NA_MAP_HALAA_ALLIANCE, NA_MAP_HALAA_HORDE, NA_MAP_HALAA_NEU_A, NA_MAP_HALAA_NEU_H, NA_MAP_HALAA_NEUTRAL, NA_MAP_WYVERN_EAST_A, NA_MAP_WYVERN_EAST_H, NA_MAP_WYVERN_EAST_NEU_A, NA_MAP_WYVERN_EAST_NEU_H, NA_MAP_WYVERN_NORTH_A, NA_MAP_WYVERN_NORTH_H, NA_MAP_WYVERN_NORTH_NEU_A, NA_MAP_WYVERN_NORTH_NEU_H, NA_MAP_WYVERN_SOUTH_A, NA_MAP_WYVERN_SOUTH_H, NA_MAP_WYVERN_SOUTH_NEU_A, NA_MAP_WYVERN_SOUTH_NEU_H, NA_MAP_WYVERN_WEST_A, NA_MAP_WYVERN_WEST_H, NA_MAP_WYVERN_WEST_NEU_A, NA_MAP_WYVERN_WEST_NEU_H, NA_UI_ALLIANCE_GUARDS_SHOW, NA_UI_GUARDS_LEFT, NA_UI_GUARDS_MAX, NA_UI_HORDE_GUARDS_SHOW, NA_UI_TOWER_SLIDER_DISPLAY, NA_UI_TOWER_SLIDER_N, NA_UI_TOWER_SLIDER_POS, TEAM_ALLIANCE, TEAM_HORDE, WYVERN_ALLIANCE, WYVERN_HORDE, WYVERN_NEU_ALLIANCE, and WYVERN_NEU_HORDE.

Referenced by OutdoorPvPNA::FillInitialWorldStates().

◆ GetAliveGuardsCount()

uint32 OPvPCapturePointNA::GetAliveGuardsCount ( )
46{
47 uint32 cnt = 0;
48 for (auto itr = _creatures.begin(); itr != _creatures.end(); ++itr)
49 {
50 switch (itr->first)
51 {
52 case NA_NPC_GUARD_01:
53 case NA_NPC_GUARD_02:
54 case NA_NPC_GUARD_03:
55 case NA_NPC_GUARD_04:
56 case NA_NPC_GUARD_05:
57 case NA_NPC_GUARD_06:
58 case NA_NPC_GUARD_07:
59 case NA_NPC_GUARD_08:
60 case NA_NPC_GUARD_09:
61 case NA_NPC_GUARD_10:
62 case NA_NPC_GUARD_11:
63 case NA_NPC_GUARD_12:
64 case NA_NPC_GUARD_13:
65 case NA_NPC_GUARD_14:
66 case NA_NPC_GUARD_15:
67 {
68 auto bounds = _pvp->GetMap()->GetCreatureBySpawnIdStore().equal_range(itr->second);
69 for (auto itr2 = bounds.first; itr2 != bounds.second; ++itr2)
70 if (itr2->second->IsAlive())
71 ++cnt;
72 break;
73 }
74 default:
75 break;
76 }
77 }
78 return cnt;
79}
@ NA_NPC_GUARD_10
Definition: OutdoorPvPNA.h:174
@ NA_NPC_GUARD_14
Definition: OutdoorPvPNA.h:178
@ NA_NPC_GUARD_03
Definition: OutdoorPvPNA.h:167
@ NA_NPC_GUARD_12
Definition: OutdoorPvPNA.h:176
@ NA_NPC_GUARD_09
Definition: OutdoorPvPNA.h:173
@ NA_NPC_GUARD_11
Definition: OutdoorPvPNA.h:175
@ NA_NPC_GUARD_07
Definition: OutdoorPvPNA.h:171
@ NA_NPC_GUARD_05
Definition: OutdoorPvPNA.h:169
@ NA_NPC_GUARD_08
Definition: OutdoorPvPNA.h:172
@ NA_NPC_GUARD_02
Definition: OutdoorPvPNA.h:166
@ NA_NPC_GUARD_01
Definition: OutdoorPvPNA.h:165
@ NA_NPC_GUARD_13
Definition: OutdoorPvPNA.h:177
@ NA_NPC_GUARD_06
Definition: OutdoorPvPNA.h:170
@ NA_NPC_GUARD_15
Definition: OutdoorPvPNA.h:179
@ NA_NPC_GUARD_04
Definition: OutdoorPvPNA.h:168
CreatureBySpawnIdContainer & GetCreatureBySpawnIdStore()
Definition: Map.h:519
std::unordered_map< uint32, ObjectGuid::LowType > _creatures
Definition: OutdoorPvP.h:179
Map * GetMap() const
Definition: OutdoorPvP.h:244

References OPvPCapturePoint::_creatures, OPvPCapturePoint::_pvp, Map::GetCreatureBySpawnIdStore(), OutdoorPvP::GetMap(), NA_NPC_GUARD_01, NA_NPC_GUARD_02, NA_NPC_GUARD_03, NA_NPC_GUARD_04, NA_NPC_GUARD_05, NA_NPC_GUARD_06, NA_NPC_GUARD_07, NA_NPC_GUARD_08, NA_NPC_GUARD_09, NA_NPC_GUARD_10, NA_NPC_GUARD_11, NA_NPC_GUARD_12, NA_NPC_GUARD_13, NA_NPC_GUARD_14, and NA_NPC_GUARD_15.

Referenced by Update().

◆ GetControllingFaction()

TeamId OPvPCapturePointNA::GetControllingFaction ( ) const

◆ HandleCustomSpell()

bool OPvPCapturePointNA::HandleCustomSpell ( Player player,
uint32  spellId,
GameObject go 
)
overridevirtual

Reimplemented from OPvPCapturePoint.

339{
340 std::vector<uint32> nodes;
341 nodes.resize(2);
342 bool retval = false;
343 switch (spellId)
344 {
347 nodes[1] = FlightPathEndNodes[NA_ROOST_N];
348 player->ActivateTaxiPathTo(nodes);
350 player->UpdatePvP(true, true);
351 retval = true;
352 break;
355 nodes[1] = FlightPathEndNodes[NA_ROOST_S];
356 player->ActivateTaxiPathTo(nodes);
358 player->UpdatePvP(true, true);
359 retval = true;
360 break;
363 nodes[1] = FlightPathEndNodes[NA_ROOST_W];
364 player->ActivateTaxiPathTo(nodes);
366 player->UpdatePvP(true, true);
367 retval = true;
368 break;
371 nodes[1] = FlightPathEndNodes[NA_ROOST_E];
372 player->ActivateTaxiPathTo(nodes);
374 player->UpdatePvP(true, true);
375 retval = true;
376 break;
377 default:
378 break;
379 }
380
381 if (retval)
382 {
383 //Adding items
384 uint32 noSpaceForCount = 0;
385
386 // check space and find places
387 ItemPosCountVec dest;
388
389 int32 count = 10;
390 uint32 itemid = 24538;
391 // bomb id count
392 InventoryResult msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemid, count, &noSpaceForCount);
393 if (msg != EQUIP_ERR_OK) // convert to possible store amount
394 count -= noSpaceForCount;
395
396 if (count == 0 || dest.empty()) // can't add any
397 {
398 return true;
399 }
400
401 Item* item = player->StoreNewItem(dest, itemid, true);
402
403 if (count > 0 && item)
404 {
405 player->SendNewItem(item, count, true, false);
406 }
407
408 return true;
409 }
410 return false;
411}
std::int32_t int32
Definition: Define.h:104
InventoryResult
Definition: Item.h:40
@ EQUIP_ERR_OK
Definition: Item.h:41
std::vector< ItemPosCount > ItemPosCountVec
Definition: Player.h:772
@ PLAYER_FLAGS_IN_PVP
Definition: Player.h:484
@ NULL_BAG
Definition: Unit.h:210
@ NULL_SLOT
Definition: Unit.h:211
@ NA_SPELL_FLY_SOUTH
Definition: OutdoorPvPNA.h:113
@ NA_SPELL_FLY_WEST
Definition: OutdoorPvPNA.h:114
@ NA_SPELL_FLY_EAST
Definition: OutdoorPvPNA.h:116
@ NA_SPELL_FLY_NORTH
Definition: OutdoorPvPNA.h:115
const uint32 FlightPathEndNodes[FLIGHT_NODES_NUM]
Definition: OutdoorPvPNA.h:109
const uint32 FlightPathStartNodes[FLIGHT_NODES_NUM]
Definition: OutdoorPvPNA.h:108
Definition: Item.h:214
void SetPlayerFlag(PlayerFlags flags)
Definition: Player.h:1101
void UpdatePvP(bool state, bool _override=false)
Definition: PlayerUpdates.cpp:1484
bool ActivateTaxiPathTo(std::vector< uint32 > const &nodes, Creature *npc=nullptr, uint32 spellid=1)
Definition: Player.cpp:10149
void SendNewItem(Item *item, uint32 count, bool received, bool created, bool broadcast=false, bool sendChatMessage=true)
Definition: PlayerStorage.cpp:4770
Item * StoreNewItem(ItemPosCountVec const &pos, uint32 item, bool update, int32 randomPropertyId=0)
Definition: PlayerStorage.cpp:2546
InventoryResult CanStoreNewItem(uint8 bag, uint8 slot, ItemPosCountVec &dest, uint32 item, uint32 count, uint32 *no_space_count=nullptr) const
Definition: Player.h:1260

References Player::ActivateTaxiPathTo(), Player::CanStoreNewItem(), EQUIP_ERR_OK, FlightPathEndNodes, FlightPathStartNodes, NA_ROOST_E, NA_ROOST_N, NA_ROOST_S, NA_ROOST_W, NA_SPELL_FLY_EAST, NA_SPELL_FLY_NORTH, NA_SPELL_FLY_SOUTH, NA_SPELL_FLY_WEST, NULL_BAG, NULL_SLOT, PLAYER_FLAGS_IN_PVP, Player::SendNewItem(), Player::SetPlayerFlag(), Player::StoreNewItem(), and Player::UpdatePvP().

◆ HandleOpenGo()

int32 OPvPCapturePointNA::HandleOpenGo ( Player player,
GameObject go 
)
overridevirtual

Reimplemented from OPvPCapturePoint.

414{
415 int32 retval = OPvPCapturePoint::HandleOpenGo(player, go);
416 if (retval >= 0)
417 {
418 const go_type* gos = nullptr;
420 gos = AllianceControlGOs;
422 gos = HordeControlGOs;
423 else
424 return -1;
425
426 int32 del = -1;
427 int32 del2 = -1;
428 int32 add = -1;
429 int32 add2 = -1;
430
431 switch (retval)
432 {
435 add = NA_ROOST_S;
436 add2 = NA_BOMB_WAGON_S;
439 else
442 break;
445 add = NA_ROOST_N;
446 add2 = NA_BOMB_WAGON_N;
449 else
452 break;
455 add = NA_ROOST_W;
456 add2 = NA_BOMB_WAGON_W;
459 else
462 break;
465 add = NA_ROOST_E;
466 add2 = NA_BOMB_WAGON_E;
469 else
472 break;
473 case NA_BOMB_WAGON_S:
474 del = NA_BOMB_WAGON_S;
475 del2 = NA_ROOST_S;
479 else
482 break;
483 case NA_BOMB_WAGON_N:
484 del = NA_BOMB_WAGON_N;
485 del2 = NA_ROOST_N;
489 else
492 break;
493 case NA_BOMB_WAGON_W:
494 del = NA_BOMB_WAGON_W;
495 del2 = NA_ROOST_W;
499 else
502 break;
503 case NA_BOMB_WAGON_E:
504 del = NA_BOMB_WAGON_E;
505 del2 = NA_ROOST_E;
509 else
512 break;
513 default:
514 return -1;
515 break;
516 }
517
518 if (del > -1)
519 DelObject(del);
520
521 if (del2 > -1)
522 DelObject(del2);
523
524 if (add > -1)
525 AddObject(add, gos[add].entry, 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);
526
527 if (add2 > -1)
528 AddObject(add2, gos[add2].entry, 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);
529
530 return retval;
531 }
532 return -1;
533}
const go_type HordeControlGOs[NA_CONTROL_GO_NUM]
Definition: OutdoorPvPNA.h:120
@ NA_BOMB_WAGON_E
Definition: OutdoorPvPNA.h:98
@ NA_DESTROYED_ROOST_S
Definition: OutdoorPvPNA.h:100
@ NA_BOMB_WAGON_N
Definition: OutdoorPvPNA.h:97
@ NA_BOMB_WAGON_W
Definition: OutdoorPvPNA.h:96
@ NA_DESTROYED_ROOST_E
Definition: OutdoorPvPNA.h:103
@ NA_BOMB_WAGON_S
Definition: OutdoorPvPNA.h:95
@ NA_DESTROYED_ROOST_N
Definition: OutdoorPvPNA.h:102
@ NA_DESTROYED_ROOST_W
Definition: OutdoorPvPNA.h:101
const go_type AllianceControlGOs[NA_CONTROL_GO_NUM]
Definition: OutdoorPvPNA.h:139
Definition: OutdoorPvP.h:54
bool AddObject(uint32 type, uint32 entry, uint32 map, float x, float y, float z, float o, float rotation0, float rotation1, float rotation2, float rotation3)
Definition: OutdoorPvP.cpp:105
virtual int32 HandleOpenGo(Player *player, GameObject *go)
Definition: OutdoorPvP.cpp:612

References OPvPCapturePoint::AddObject(), AllianceControlGOs, OPvPCapturePoint::DelObject(), OPvPCapturePoint::HandleOpenGo(), HordeControlGOs, m_ControllingFaction, m_WyvernStateEast, m_WyvernStateNorth, m_WyvernStateSouth, m_WyvernStateWest, NA_BOMB_WAGON_E, NA_BOMB_WAGON_N, NA_BOMB_WAGON_S, NA_BOMB_WAGON_W, NA_DESTROYED_ROOST_E, NA_DESTROYED_ROOST_N, NA_DESTROYED_ROOST_S, NA_DESTROYED_ROOST_W, NA_ROOST_E, NA_ROOST_N, NA_ROOST_S, NA_ROOST_W, TEAM_ALLIANCE, TEAM_HORDE, UpdateWyvernRoostWorldState(), WYVERN_ALLIANCE, WYVERN_HORDE, WYVERN_NEU_ALLIANCE, and WYVERN_NEU_HORDE.

◆ HandlePlayerEnter()

bool OPvPCapturePointNA::HandlePlayerEnter ( Player player)
overridevirtual

Reimplemented from OPvPCapturePoint.

187{
189 {
191 uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
194 return true;
195 }
196 return false;
197}
phase
Definition: boss_skadi.cpp:103
void SendUpdateWorldState(uint32 variable, uint32 value) const
Definition: PlayerUpdates.cpp:2197
uint32 _neutralValuePct
Definition: OutdoorPvP.h:170
float _maxValue
Definition: OutdoorPvP.h:154
virtual bool HandlePlayerEnter(Player *player)
Definition: OutdoorPvP.cpp:34
float _value
Definition: OutdoorPvP.h:161

References OPvPCapturePoint::_maxValue, OPvPCapturePoint::_neutralValuePct, OPvPCapturePoint::_value, OPvPCapturePoint::HandlePlayerEnter(), NA_UI_TOWER_SLIDER_DISPLAY, NA_UI_TOWER_SLIDER_N, NA_UI_TOWER_SLIDER_POS, and Player::SendUpdateWorldState().

◆ HandlePlayerLeave()

void OPvPCapturePointNA::HandlePlayerLeave ( Player player)
overridevirtual

Reimplemented from OPvPCapturePoint.

200{
203}
virtual void HandlePlayerLeave(Player *player)
Definition: OutdoorPvP.cpp:46

References OPvPCapturePoint::HandlePlayerLeave(), NA_UI_TOWER_SLIDER_DISPLAY, and Player::SendUpdateWorldState().

◆ SendChangePhase()

void OPvPCapturePointNA::SendChangePhase ( )
overridevirtual

Reimplemented from OPvPCapturePoint.

616{
617 // send this too, sometimes the slider disappears, dunno why :(
619 // send these updates to only the ones in this objective
620 uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
623}
void SendUpdateWorldState(uint32 field, uint32 value)
Definition: OutdoorPvP.cpp:466

References OPvPCapturePoint::_maxValue, OPvPCapturePoint::_neutralValuePct, OPvPCapturePoint::_value, NA_UI_TOWER_SLIDER_DISPLAY, NA_UI_TOWER_SLIDER_N, NA_UI_TOWER_SLIDER_POS, and OPvPCapturePoint::SendUpdateWorldState().

◆ SpawnGOsForTeam()

void OPvPCapturePointNA::SpawnGOsForTeam ( TeamId  teamId)
protected
106{
107 const go_type* gos = nullptr;
108 if (teamId == TEAM_ALLIANCE)
109 gos = AllianceControlGOs;
110 else if (teamId == TEAM_HORDE)
111 gos = HordeControlGOs;
112 else
113 return;
114 for (int i = 0; i < NA_CONTROL_GO_NUM; ++i)
115 {
116 if (i == NA_ROOST_S ||
117 i == NA_ROOST_W ||
118 i == NA_ROOST_N ||
119 i == NA_ROOST_E ||
120 i == NA_BOMB_WAGON_S ||
121 i == NA_BOMB_WAGON_W ||
122 i == NA_BOMB_WAGON_N ||
123 i == NA_BOMB_WAGON_E)
124 continue; // roosts and bomb wagons are spawned when someone uses the matching destroyed roost
125 AddObject(i, gos[i].entry, 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);
126 }
127}

References OPvPCapturePoint::AddObject(), AllianceControlGOs, HordeControlGOs, NA_BOMB_WAGON_E, NA_BOMB_WAGON_N, NA_BOMB_WAGON_S, NA_BOMB_WAGON_W, NA_CONTROL_GO_NUM, NA_ROOST_E, NA_ROOST_N, NA_ROOST_S, NA_ROOST_W, TEAM_ALLIANCE, and TEAM_HORDE.

Referenced by FactionTakeOver().

◆ SpawnNPCsForTeam()

void OPvPCapturePointNA::SpawnNPCsForTeam ( TeamId  teamId)
protected
87{
88 const creature_type* creatures = nullptr;
89 if (teamId == TEAM_ALLIANCE)
91 else if (teamId == TEAM_HORDE)
93 else
94 return;
95 for (int i = 0; i < NA_CONTROL_NPC_NUM; ++i)
96 AddCreature(i, creatures[i].entry, creatures[i].map, creatures[i].x, creatures[i].y, creatures[i].z, creatures[i].o, 1000000);
97}
creatures
Definition: boss_prince_malchezaar.cpp:51
const creature_type AllianceControlNPCs[NA_CONTROL_NPC_NUM]
Definition: OutdoorPvPNA.h:208
const creature_type HordeControlNPCs[NA_CONTROL_NPC_NUM]
Definition: OutdoorPvPNA.h:184
Definition: OutdoorPvP.h:69
bool AddCreature(uint32 type, uint32 entry, uint32 map, float x, float y, float z, float o, uint32 spawntimeDelay=0)
Definition: OutdoorPvP.cpp:116

References OPvPCapturePoint::AddCreature(), AllianceControlNPCs, HordeControlNPCs, NA_CONTROL_NPC_NUM, TEAM_ALLIANCE, and TEAM_HORDE.

Referenced by FactionTakeOver().

◆ Update()

bool OPvPCapturePointNA::Update ( uint32  diff)
overridevirtual

Reimplemented from OPvPCapturePoint.

536{
537 // let the controlling faction advance in phase
538 bool capturable = false;
539 if (m_ControllingFaction == TEAM_ALLIANCE && _activePlayers[0].size() > _activePlayers[1].size())
540 capturable = true;
541 else if (m_ControllingFaction == TEAM_HORDE && _activePlayers[0].size() < _activePlayers[1].size())
542 capturable = true;
543
544 if (m_GuardCheckTimer < diff)
545 {
548 if (cnt != m_GuardsAlive)
549 {
550 m_GuardsAlive = cnt;
551 if (m_GuardsAlive == 0)
552 m_capturable = true;
553 // update the guard count for the players in zone
555 }
556 }
557 else m_GuardCheckTimer -= diff;
558
559 if (m_capturable || capturable)
560 {
561 if (m_RespawnTimer < diff)
562 {
563 // if the guards have been killed, then the challenger has one hour to take over halaa.
564 // in case they fail to do it, the guards are respawned, and they have to start again.
568 }
569 else m_RespawnTimer -= diff;
570 }
571 return OPvPCapturePoint::Update(diff);
572}
virtual bool Update(uint32 diff)
Definition: OutdoorPvP.cpp:317
std::array< PlayerSet, 2 > _activePlayers
Definition: OutdoorPvP.h:151
uint32 GetAliveGuardsCount()
Definition: OutdoorPvPNA.cpp:45

References OPvPCapturePoint::_activePlayers, OPvPCapturePoint::_pvp, FactionTakeOver(), GetAliveGuardsCount(), m_capturable, m_ControllingFaction, m_GuardCheckTimer, m_GuardsAlive, m_RespawnTimer, NA_GUARD_CHECK_TIME, NA_RESPAWN_TIME, NA_UI_GUARDS_LEFT, OutdoorPvP::SendUpdateWorldState(), TEAM_ALLIANCE, TEAM_HORDE, and OPvPCapturePoint::Update().

Referenced by OutdoorPvPNA::Update().

◆ UpdateHalaaWorldState()

◆ UpdateWyvernRoostWorldState()

void OPvPCapturePointNA::UpdateWyvernRoostWorldState ( uint32  roost)
protected
635{
636 switch (roost)
637 {
638 case NA_ROOST_S:
643 break;
644 case NA_ROOST_N:
649 break;
650 case NA_ROOST_W:
655 break;
656 case NA_ROOST_E:
661 break;
662 }
663}

References OPvPCapturePoint::_pvp, m_WyvernStateEast, m_WyvernStateNorth, m_WyvernStateSouth, m_WyvernStateWest, NA_MAP_WYVERN_EAST_A, NA_MAP_WYVERN_EAST_H, NA_MAP_WYVERN_EAST_NEU_A, NA_MAP_WYVERN_EAST_NEU_H, NA_MAP_WYVERN_NORTH_A, NA_MAP_WYVERN_NORTH_H, NA_MAP_WYVERN_NORTH_NEU_A, NA_MAP_WYVERN_NORTH_NEU_H, NA_MAP_WYVERN_SOUTH_A, NA_MAP_WYVERN_SOUTH_H, NA_MAP_WYVERN_SOUTH_NEU_A, NA_MAP_WYVERN_SOUTH_NEU_H, NA_MAP_WYVERN_WEST_A, NA_MAP_WYVERN_WEST_H, NA_MAP_WYVERN_WEST_NEU_A, NA_MAP_WYVERN_WEST_NEU_H, NA_ROOST_E, NA_ROOST_N, NA_ROOST_S, NA_ROOST_W, OutdoorPvP::SendUpdateWorldState(), WYVERN_ALLIANCE, WYVERN_HORDE, WYVERN_NEU_ALLIANCE, and WYVERN_NEU_HORDE.

Referenced by FactionTakeOver(), and HandleOpenGo().

Member Data Documentation

◆ m_capturable

bool OPvPCapturePointNA::m_capturable
private

Referenced by FactionTakeOver(), and Update().

◆ m_ControllingFaction

TeamId OPvPCapturePointNA::m_ControllingFaction
private

◆ m_GuardCheckTimer

uint32 OPvPCapturePointNA::m_GuardCheckTimer
private

Referenced by Update().

◆ m_GuardsAlive

uint32 OPvPCapturePointNA::m_GuardsAlive
private

◆ m_HalaaState

uint32 OPvPCapturePointNA::m_HalaaState
private

◆ m_RespawnTimer

uint32 OPvPCapturePointNA::m_RespawnTimer
private

Referenced by Update().

◆ m_WyvernStateEast

uint32 OPvPCapturePointNA::m_WyvernStateEast
private

◆ m_WyvernStateNorth

uint32 OPvPCapturePointNA::m_WyvernStateNorth
private

◆ m_WyvernStateSouth

uint32 OPvPCapturePointNA::m_WyvernStateSouth
private

◆ m_WyvernStateWest

uint32 OPvPCapturePointNA::m_WyvernStateWest
private