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 ()
 
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 ()
 

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
 
GameObjectm_capturePoint
 
- Protected Attributes inherited from OPvPCapturePoint
PlayerSet m_activePlayers [2]
 
float m_maxValue
 
float m_minValue
 
float m_maxSpeed
 
float m_value
 
TeamId m_team
 
ObjectiveStates m_OldState
 
ObjectiveStates m_State
 
uint32 m_neutralValuePct
 
OutdoorPvPm_PvP
 
std::map< uint32, ObjectGuid::LowTypem_Objects
 
std::map< uint32, ObjectGuid::LowTypem_Creatures
 
std::map< ObjectGuid::LowType, uint32m_ObjectTypes
 
std::map< ObjectGuid::LowType, uint32m_CreatureTypes
 

Detailed Description

Constructor & Destructor Documentation

◆ OPvPCapturePointNA()

OPvPCapturePointNA::OPvPCapturePointNA ( OutdoorPvP pvp)
204 :
208{
209 SetCapturePointData(182210, 530, -1572.57f, 7945.3f, -22.475f, 2.05949f, 0.0f, 0.0f, 0.857167f, 0.515038f);
210}
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:734
Definition: OutdoorPvP.h:89
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:115
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.

574{
575 uint32 artkit = 21;
576 switch (m_State)
577 {
580 break;
584 artkit = 2;
585 break;
589 artkit = 1;
590 break;
593 break;
596 break;
599 artkit = 2;
600 break;
603 artkit = 1;
604 break;
605 }
606
607 auto bounds = sMapMgr->FindMap(530, 0)->GetGameObjectBySpawnIdStore().equal_range(m_capturePointSpawnId);
608 for (auto itr = bounds.first; itr != bounds.second; ++itr)
609 itr->second->SetGoArtKit(artkit);
610
612}
std::uint32_t uint32
Definition: Define.h:108
#define sMapMgr
Definition: MapMgr.h:221
@ OBJECTIVESTATE_HORDE
Definition: OutdoorPvP.h:44
@ OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE
Definition: OutdoorPvP.h:46
@ OBJECTIVESTATE_ALLIANCE
Definition: OutdoorPvP.h:43
@ OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE
Definition: OutdoorPvP.h:45
@ OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE
Definition: OutdoorPvP.h:48
@ OBJECTIVESTATE_NEUTRAL
Definition: OutdoorPvP.h:42
@ OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE
Definition: OutdoorPvP.h:47
@ 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:732
@ TEAM_HORDE
Definition: SharedDefines.h:733
ObjectiveStates m_State
Definition: OutdoorPvP.h:179
ObjectGuid::LowType m_capturePointSpawnId
Definition: OutdoorPvP.h:131
void FactionTakeOver(TeamId teamId)
Definition: OutdoorPvPNA.cpp:136
void UpdateHalaaWorldState()
Definition: OutdoorPvPNA.cpp:624

References FactionTakeOver(), HALAA_A, HALAA_H, HALAA_N, HALAA_N_A, HALAA_N_H, OPvPCapturePoint::m_capturePointSpawnId, m_HalaaState, OPvPCapturePoint::m_State, 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
129{
130 for (int i = 0; i < NA_CONTROL_GO_NUM; ++i)
131 {
132 DelObject(i);
133 }
134}
@ NA_CONTROL_GO_NUM
Definition: OutdoorPvPNA.h:105
bool DelObject(uint32 type)
Definition: OutdoorPvP.cpp:178

References OPvPCapturePoint::DelObject(), and NA_CONTROL_GO_NUM.

Referenced by FactionTakeOver().

◆ DeSpawnNPCs()

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

References OPvPCapturePoint::DelCreature(), and NA_CONTROL_NPC_NUM.

Referenced by FactionTakeOver().

◆ FactionTakeOver()

void OPvPCapturePointNA::FactionTakeOver ( TeamId  teamId)
protected
137{
141 sWorld->SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_NA_LOSE_A));
143 sWorld->SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_NA_LOSE_H));
144
145 m_ControllingFaction = teamId;
148 DeSpawnGOs();
149 DeSpawnNPCs();
150 SpawnGOsForTeam(teamId);
151 SpawnNPCsForTeam(teamId);
153 m_capturable = false;
154 this->UpdateHalaaWorldState();
155 if (teamId == TEAM_ALLIANCE)
156 {
165 sWorld->SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_NA_CAPTURE_A));
166 }
167 else
168 {
177 sWorld->SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_NA_CAPTURE_H));
178 }
183}
#define sObjectMgr
Definition: ObjectMgr.h:1640
#define sGraveyard
Definition: GameGraveyard.h:75
@ LANG_OPVP_NA_CAPTURE_A
Definition: Language.h:1230
@ LANG_OPVP_NA_LOSE_A
Definition: Language.h:1232
@ LANG_OPVP_NA_LOSE_H
Definition: Language.h:1231
@ LANG_OPVP_NA_CAPTURE_H
Definition: Language.h:1229
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:451
OutdoorPvP * m_PvP
Definition: OutdoorPvP.h:185
void TeamApplyBuff(TeamId teamId, uint32 spellId, uint32 spellId2=0, Player *sameMapPlr=nullptr)
Definition: OutdoorPvP.cpp:620
void SendUpdateWorldState(uint32 field, uint32 value)
Definition: OutdoorPvP.cpp:411
void UpdateWyvernRoostWorldState(uint32 roost)
Definition: OutdoorPvPNA.cpp:633
void DeSpawnNPCs()
Definition: OutdoorPvPNA.cpp:98
void SpawnNPCsForTeam(TeamId teamId)
Definition: OutdoorPvPNA.cpp:85
void SpawnGOsForTeam(TeamId teamId)
Definition: OutdoorPvPNA.cpp:104
void DeSpawnGOs()
Definition: OutdoorPvPNA.cpp:128

References 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, OPvPCapturePoint::m_PvP, 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.

249{
251 {
252 data << NA_UI_HORDE_GUARDS_SHOW << uint32(0);
254 }
256 {
257 data << NA_UI_HORDE_GUARDS_SHOW << uint32(1);
259 }
260 else
261 {
262 data << NA_UI_HORDE_GUARDS_SHOW << uint32(0);
264 }
265
268
270 data << NA_UI_TOWER_SLIDER_POS << uint32(50);
271 data << NA_UI_TOWER_SLIDER_N << uint32(100);
272
277
282
287
292
296 data << NA_MAP_HALAA_HORDE << uint32(bool(m_HalaaState & HALAA_H));
298}
@ 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 ( )
45{
46 uint32 cnt = 0;
47 for (std::map<uint32, ObjectGuid::LowType>::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 {
67 auto bounds = m_PvP->GetMap()->GetCreatureBySpawnIdStore().equal_range(itr->second);
68 for (auto itr2 = bounds.first; itr2 != bounds.second; ++itr2)
69 if (itr2->second->IsAlive())
70 ++cnt;
71 break;
72 }
73 default:
74 break;
75 }
76 }
77 return cnt;
78}
@ 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:518
std::map< uint32, ObjectGuid::LowType > m_Creatures
Definition: OutdoorPvP.h:190
Map * GetMap() const
Definition: OutdoorPvP.h:259

References Map::GetCreatureBySpawnIdStore(), OutdoorPvP::GetMap(), OPvPCapturePoint::m_Creatures, OPvPCapturePoint::m_PvP, 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.

338{
339 std::vector<uint32> nodes;
340 nodes.resize(2);
341 bool retval = false;
342 switch (spellId)
343 {
346 nodes[1] = FlightPathEndNodes[NA_ROOST_N];
347 player->ActivateTaxiPathTo(nodes);
349 player->UpdatePvP(true, true);
350 retval = true;
351 break;
354 nodes[1] = FlightPathEndNodes[NA_ROOST_S];
355 player->ActivateTaxiPathTo(nodes);
357 player->UpdatePvP(true, true);
358 retval = true;
359 break;
362 nodes[1] = FlightPathEndNodes[NA_ROOST_W];
363 player->ActivateTaxiPathTo(nodes);
365 player->UpdatePvP(true, true);
366 retval = true;
367 break;
370 nodes[1] = FlightPathEndNodes[NA_ROOST_E];
371 player->ActivateTaxiPathTo(nodes);
373 player->UpdatePvP(true, true);
374 retval = true;
375 break;
376 default:
377 break;
378 }
379
380 if (retval)
381 {
382 //Adding items
383 uint32 noSpaceForCount = 0;
384
385 // check space and find places
386 ItemPosCountVec dest;
387
388 int32 count = 10;
389 uint32 itemid = 24538;
390 // bomb id count
391 InventoryResult msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemid, count, &noSpaceForCount);
392 if (msg != EQUIP_ERR_OK) // convert to possible store amount
393 count -= noSpaceForCount;
394
395 if (count == 0 || dest.empty()) // can't add any
396 {
397 return true;
398 }
399
400 Item* item = player->StoreNewItem(dest, itemid, true);
401
402 if (count > 0 && item)
403 {
404 player->SendNewItem(item, count, true, false);
405 }
406
407 return true;
408 }
409 return false;
410}
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:1091
void UpdatePvP(bool state, bool _override=false)
Definition: PlayerUpdates.cpp:1481
bool ActivateTaxiPathTo(std::vector< uint32 > const &nodes, Creature *npc=nullptr, uint32 spellid=1)
Definition: Player.cpp:10128
void SendNewItem(Item *item, uint32 count, bool received, bool created, bool broadcast=false, bool sendChatMessage=true)
Definition: PlayerStorage.cpp:4776
Item * StoreNewItem(ItemPosCountVec const &pos, uint32 item, bool update, int32 randomPropertyId=0)
Definition: PlayerStorage.cpp:2552
InventoryResult CanStoreNewItem(uint8 bag, uint8 slot, ItemPosCountVec &dest, uint32 item, uint32 count, uint32 *no_space_count=nullptr) const
Definition: Player.h:1248

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.

413{
414 int32 retval = OPvPCapturePoint::HandleOpenGo(player, go);
415 if (retval >= 0)
416 {
417 const go_type* gos = nullptr;
419 gos = AllianceControlGOs;
421 gos = HordeControlGOs;
422 else
423 return -1;
424
425 int32 del = -1;
426 int32 del2 = -1;
427 int32 add = -1;
428 int32 add2 = -1;
429
430 switch (retval)
431 {
434 add = NA_ROOST_S;
435 add2 = NA_BOMB_WAGON_S;
438 else
441 break;
444 add = NA_ROOST_N;
445 add2 = NA_BOMB_WAGON_N;
448 else
451 break;
454 add = NA_ROOST_W;
455 add2 = NA_BOMB_WAGON_W;
458 else
461 break;
464 add = NA_ROOST_E;
465 add2 = NA_BOMB_WAGON_E;
468 else
471 break;
472 case NA_BOMB_WAGON_S:
473 del = NA_BOMB_WAGON_S;
474 del2 = NA_ROOST_S;
478 else
481 break;
482 case NA_BOMB_WAGON_N:
483 del = NA_BOMB_WAGON_N;
484 del2 = NA_ROOST_N;
488 else
491 break;
492 case NA_BOMB_WAGON_W:
493 del = NA_BOMB_WAGON_W;
494 del2 = NA_ROOST_W;
498 else
501 break;
502 case NA_BOMB_WAGON_E:
503 del = NA_BOMB_WAGON_E;
504 del2 = NA_ROOST_E;
508 else
511 break;
512 default:
513 return -1;
514 break;
515 }
516
517 if (del > -1)
518 DelObject(del);
519
520 if (del2 > -1)
521 DelObject(del2);
522
523 if (add > -1)
524 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);
525
526 if (add2 > -1)
527 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);
528
529 return retval;
530 }
531 return -1;
532}
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:53
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:93
virtual int32 HandleOpenGo(Player *player, GameObject *go)
Definition: OutdoorPvP.cpp:567

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.

186{
188 {
190 uint32 phase = (uint32)ceil((m_value + m_maxValue) / (2 * m_maxValue) * 100.0f);
193 return true;
194 }
195 return false;
196}
phase
Definition: boss_skadi.cpp:102
void SendUpdateWorldState(uint32 variable, uint32 value) const
Definition: PlayerUpdates.cpp:2194
float m_value
Definition: OutdoorPvP.h:173
uint32 m_neutralValuePct
Definition: OutdoorPvP.h:182
float m_maxValue
Definition: OutdoorPvP.h:166
virtual bool HandlePlayerEnter(Player *player)
Definition: OutdoorPvP.cpp:36

References OPvPCapturePoint::HandlePlayerEnter(), OPvPCapturePoint::m_maxValue, OPvPCapturePoint::m_neutralValuePct, OPvPCapturePoint::m_value, 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.

199{
202}
virtual void HandlePlayerLeave(Player *player)
Definition: OutdoorPvP.cpp:47

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

◆ SendChangePhase()

void OPvPCapturePointNA::SendChangePhase ( )
overridevirtual

Reimplemented from OPvPCapturePoint.

615{
616 // send this too, sometimes the slider disappears, dunno why :(
618 // send these updates to only the ones in this objective
619 uint32 phase = (uint32)ceil((m_value + m_maxValue) / (2 * m_maxValue) * 100.0f);
622}
void SendUpdateWorldState(uint32 field, uint32 value)
Definition: OutdoorPvP.cpp:420

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

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
86{
87 const creature_type* creatures = nullptr;
88 if (teamId == TEAM_ALLIANCE)
90 else if (teamId == TEAM_HORDE)
92 else
93 return;
94 for (int i = 0; i < NA_CONTROL_NPC_NUM; ++i)
95 AddCreature(i, creatures[i].entry, creatures[i].map, creatures[i].x, creatures[i].y, creatures[i].z, creatures[i].o, 1000000);
96}
creatures
Definition: boss_prince_malchezaar.cpp:49
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:68
bool AddCreature(uint32 type, uint32 entry, uint32 map, float x, float y, float z, float o, uint32 spawntimedelay=0)
Definition: OutdoorPvP.cpp:104

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.

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

References FactionTakeOver(), GetAliveGuardsCount(), OPvPCapturePoint::m_activePlayers, m_capturable, m_ControllingFaction, m_GuardCheckTimer, m_GuardsAlive, OPvPCapturePoint::m_PvP, 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
634{
635 switch (roost)
636 {
637 case NA_ROOST_S:
642 break;
643 case NA_ROOST_N:
648 break;
649 case NA_ROOST_W:
654 break;
655 case NA_ROOST_E:
660 break;
661 }
662}

References OPvPCapturePoint::m_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