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

#include "OutdoorPvPEP.h"

Inheritance diagram for OPvPCapturePointEP_NPT:
OPvPCapturePoint

Public Member Functions

 OPvPCapturePointEP_NPT (OutdoorPvP *pvp)
 
void ChangeState () override
 
void SendChangePhase () override
 
void FillInitialWorldStates (WorldPacket &data) override
 
bool HandlePlayerEnter (Player *player) override
 
void HandlePlayerLeave (Player *player) override
 
- 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 SummonGO (TeamId teamId)
 
void UpdateTowerState ()
 
- 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 ()
 

Protected Attributes

uint32 m_TowerState
 
TeamId m_SummonedGOSideId
 
- 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
 

Additional Inherited Members

- Public Attributes inherited from OPvPCapturePoint
ObjectGuid::LowType m_capturePointSpawnId {}
 
GameObject_capturePoint {}
 

Detailed Description

Constructor & Destructor Documentation

◆ OPvPCapturePointEP_NPT()

OPvPCapturePointEP_NPT::OPvPCapturePointEP_NPT ( OutdoorPvP pvp)
165{
168}
@ EP_NPT_FLAGS
Definition: OutdoorPvPEP.h:108
const go_type EPCapturePoints[EP_TOWER_NUM]
Definition: OutdoorPvPEP.h:123
@ EP_TS_N
Definition: OutdoorPvPEP.h:168
@ EP_NPT
Definition: OutdoorPvPEP.h:117
const go_type EPTowerFlags[EP_TOWER_NUM]
Definition: OutdoorPvPEP.h:131
@ TEAM_NEUTRAL
Definition: SharedDefines.h:762
Definition: OutdoorPvP.h:90
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
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_TowerState
Definition: OutdoorPvPEP.h:232
TeamId m_SummonedGOSideId
Definition: OutdoorPvPEP.h:234

References OPvPCapturePoint::AddObject(), EP_NPT, EP_NPT_FLAGS, EPCapturePoints, EPTowerFlags, and OPvPCapturePoint::SetCapturePointData().

Member Function Documentation

◆ ChangeState()

void OPvPCapturePointEP_NPT::ChangeState ( )
overridevirtual

Implements OPvPCapturePoint.

171{
172 // if changing from controlling alliance to horde or vice versa
174 {
175 sWorld->SendZoneText(EP_GraveYardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_LOSE_NPT_A));
176 ((OutdoorPvPEP*)_pvp)->SetControlledState(EP_NPT, TEAM_NEUTRAL);
177 }
179 {
180 sWorld->SendZoneText(EP_GraveYardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_LOSE_NPT_H));
181 ((OutdoorPvPEP*)_pvp)->SetControlledState(EP_NPT, TEAM_NEUTRAL);
182 }
183
184 uint32 artkit = 21;
185
186 switch (_state)
187 {
190 artkit = 2;
192 ((OutdoorPvPEP*)_pvp)->SetControlledState(EP_NPT, TEAM_ALLIANCE);
193 if (_oldState != _state) sWorld->SendZoneText(EP_GraveYardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_CAPTURE_NPT_A));
194 break;
197 artkit = 1;
199 ((OutdoorPvPEP*)_pvp)->SetControlledState(EP_NPT, TEAM_HORDE);
200 if (_oldState != _state) sWorld->SendZoneText(EP_GraveYardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_CAPTURE_NPT_H));
201 break;
206 break;
209 break;
214 break;
217 break;
222 break;
223 }
224
225 Map* map = sMapMgr->FindMap(0, 0);
226 auto bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_capturePointSpawnId);
227 for (auto itr = bounds.first; itr != bounds.second; ++itr)
228 itr->second->SetGoArtKit(artkit);
229
230 bounds = map->GetGameObjectBySpawnIdStore().equal_range(_objects[EP_NPT_FLAGS]);
231 for (auto itr = bounds.first; itr != bounds.second; ++itr)
232 itr->second->SetGoArtKit(artkit);
233
235
236 // complete quest objective
239}
std::uint32_t uint32
Definition: Define.h:107
@ EP_NPT_BUFF
Definition: OutdoorPvPEP.h:107
@ EP_TS_A
Definition: OutdoorPvPEP.h:173
@ EP_TS_N_A
Definition: OutdoorPvPEP.h:169
@ EP_TS_N_H
Definition: OutdoorPvPEP.h:170
@ EP_TS_H
Definition: OutdoorPvPEP.h:174
const uint32 EP_NPT_CM
Definition: OutdoorPvPEP.h:36
const uint32 EP_GraveYardZone
Definition: OutdoorPvPEP.h:28
@ TEAM_ALLIANCE
Definition: SharedDefines.h:760
@ TEAM_HORDE
Definition: SharedDefines.h:761
#define sMapMgr
Definition: MapMgr.h:219
#define sObjectMgr
Definition: ObjectMgr.h:1635
@ LANG_OPVP_EP_CAPTURE_NPT_A
Definition: Language.h:1236
@ LANG_OPVP_EP_LOSE_NPT_H
Definition: Language.h:1243
@ LANG_OPVP_EP_CAPTURE_NPT_H
Definition: Language.h:1235
@ LANG_OPVP_EP_LOSE_NPT_A
Definition: Language.h:1244
@ 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
#define sWorld
Definition: World.h:443
Definition: Map.h:311
GameObjectBySpawnIdContainer & GetGameObjectBySpawnIdStore()
Definition: Map.h:521
ObjectiveStates _state
Definition: OutdoorPvP.h:166
ObjectiveStates _oldState
Definition: OutdoorPvP.h:165
ObjectGuid::LowType m_capturePointSpawnId
Definition: OutdoorPvP.h:124
OutdoorPvP * _pvp
Definition: OutdoorPvP.h:172
std::unordered_map< uint32, ObjectGuid::LowType > _objects
Definition: OutdoorPvP.h:177
bool DelObject(uint32 type)
Definition: OutdoorPvP.cpp:193
void SendObjectiveComplete(uint32 id, ObjectGuid guid=ObjectGuid::Empty)
Definition: OutdoorPvP.cpp:476
void SummonGO(TeamId teamId)
Definition: OutdoorPvPEP.cpp:289
void UpdateTowerState()
Definition: OutdoorPvPEP.cpp:261
Definition: OutdoorPvPEP.h:290

References OPvPCapturePoint::_objects, OPvPCapturePoint::_oldState, OPvPCapturePoint::_pvp, OPvPCapturePoint::_state, OPvPCapturePoint::DelObject(), EP_GraveYardZone, EP_NPT, EP_NPT_BUFF, EP_NPT_CM, EP_NPT_FLAGS, EP_TS_A, EP_TS_H, EP_TS_N, EP_TS_N_A, EP_TS_N_H, Map::GetGameObjectBySpawnIdStore(), LANG_OPVP_EP_CAPTURE_NPT_A, LANG_OPVP_EP_CAPTURE_NPT_H, LANG_OPVP_EP_LOSE_NPT_A, LANG_OPVP_EP_LOSE_NPT_H, OPvPCapturePoint::m_capturePointSpawnId, m_SummonedGOSideId, m_TowerState, OBJECTIVESTATE_ALLIANCE, OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE, OBJECTIVESTATE_HORDE, OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE, OBJECTIVESTATE_NEUTRAL, OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE, OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE, OPvPCapturePoint::SendObjectiveComplete(), sMapMgr, sObjectMgr, SummonGO(), sWorld, TEAM_ALLIANCE, TEAM_HORDE, TEAM_NEUTRAL, and UpdateTowerState().

◆ FillInitialWorldStates()

void OPvPCapturePointEP_NPT::FillInitialWorldStates ( WorldPacket data)
overridevirtual

Reimplemented from OPvPCapturePoint.

253{
254 data << EP_NPT_A << uint32(bool(m_TowerState & EP_TS_A));
255 data << EP_NPT_H << uint32(bool(m_TowerState & EP_TS_H));
256 data << EP_NPT_N_A << uint32(bool(m_TowerState & EP_TS_N_A));
257 data << EP_NPT_N_H << uint32(bool(m_TowerState & EP_TS_N_H));
258 data << EP_NPT_N << uint32(bool(m_TowerState & EP_TS_N));
259}
@ EP_NPT_A
Definition: OutdoorPvPEP.h:63
@ EP_NPT_N
Definition: OutdoorPvPEP.h:60
@ EP_NPT_N_H
Definition: OutdoorPvPEP.h:62
@ EP_NPT_H
Definition: OutdoorPvPEP.h:64
@ EP_NPT_N_A
Definition: OutdoorPvPEP.h:61

References EP_NPT_A, EP_NPT_H, EP_NPT_N, EP_NPT_N_A, EP_NPT_N_H, EP_TS_A, EP_TS_H, EP_TS_N, EP_TS_N_A, EP_TS_N_H, and m_TowerState.

◆ HandlePlayerEnter()

bool OPvPCapturePointEP_NPT::HandlePlayerEnter ( Player player)
overridevirtual

Reimplemented from OPvPCapturePoint.

271{
273 {
275 uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
278 return true;
279 }
280 return false;
281}
phase
Definition: boss_skadi.cpp:103
@ EP_UI_TOWER_SLIDER_DISPLAY
Definition: OutdoorPvPEP.h:87
@ EP_UI_TOWER_SLIDER_POS
Definition: OutdoorPvPEP.h:88
@ EP_UI_TOWER_SLIDER_N
Definition: OutdoorPvPEP.h:89
void SendUpdateWorldState(uint32 variable, uint32 value) const
Definition: PlayerUpdates.cpp:2196
uint32 _neutralValuePct
Definition: OutdoorPvP.h:169
float _maxValue
Definition: OutdoorPvP.h:153
virtual bool HandlePlayerEnter(Player *player)
Definition: OutdoorPvP.cpp:34
float _value
Definition: OutdoorPvP.h:160

References OPvPCapturePoint::_maxValue, OPvPCapturePoint::_neutralValuePct, OPvPCapturePoint::_value, EP_UI_TOWER_SLIDER_DISPLAY, EP_UI_TOWER_SLIDER_N, EP_UI_TOWER_SLIDER_POS, OPvPCapturePoint::HandlePlayerEnter(), and Player::SendUpdateWorldState().

◆ HandlePlayerLeave()

void OPvPCapturePointEP_NPT::HandlePlayerLeave ( Player player)
overridevirtual

Reimplemented from OPvPCapturePoint.

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

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

◆ SendChangePhase()

void OPvPCapturePointEP_NPT::SendChangePhase ( )
overridevirtual

Reimplemented from OPvPCapturePoint.

242{
243 // send this too, sometimes the slider disappears, dunno why :(
245 // send these updates to only the ones in this objective
246 uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
248 // send this too, sometimes it resets :S
250}
void SendUpdateWorldState(uint32 field, uint32 value)
Definition: OutdoorPvP.cpp:465

References OPvPCapturePoint::_maxValue, OPvPCapturePoint::_neutralValuePct, OPvPCapturePoint::_value, EP_UI_TOWER_SLIDER_DISPLAY, EP_UI_TOWER_SLIDER_N, EP_UI_TOWER_SLIDER_POS, and OPvPCapturePoint::SendUpdateWorldState().

◆ SummonGO()

void OPvPCapturePointEP_NPT::SummonGO ( TeamId  teamId)
protected
290{
291 if (m_SummonedGOSideId != teamId)
292 {
293 m_SummonedGOSideId = teamId;
296 Map* map = sMapMgr->FindMap(0, 0);
297 auto bounds = map->GetGameObjectBySpawnIdStore().equal_range(_objects[EP_NPT_BUFF]);
298 for (auto itr = bounds.first; itr != bounds.second; ++itr)
299 if (GameObject* go = itr->second)
300 go->SetUInt32Value(GAMEOBJECT_FACTION, (teamId == TEAM_ALLIANCE ? 84 : 83));
301 }
302}
const go_type EP_NPT_LordaeronShrine
Definition: OutdoorPvPEP.h:181
@ GAMEOBJECT_FACTION
Definition: UpdateFields.h:402
Definition: GameObject.h:120
float x
Definition: OutdoorPvP.h:56
uint32 map
Definition: OutdoorPvP.h:55
uint32 entry
Definition: OutdoorPvP.h:54
float o
Definition: OutdoorPvP.h:59
float z
Definition: OutdoorPvP.h:58
float rot3
Definition: OutdoorPvP.h:63
float rot0
Definition: OutdoorPvP.h:60
float rot1
Definition: OutdoorPvP.h:61
float y
Definition: OutdoorPvP.h:57
float rot2
Definition: OutdoorPvP.h:62

References OPvPCapturePoint::_objects, OPvPCapturePoint::AddObject(), OPvPCapturePoint::DelObject(), go_type::entry, EP_NPT_BUFF, EP_NPT_LordaeronShrine, GAMEOBJECT_FACTION, Map::GetGameObjectBySpawnIdStore(), m_SummonedGOSideId, go_type::map, go_type::o, go_type::rot0, go_type::rot1, go_type::rot2, go_type::rot3, sMapMgr, TEAM_ALLIANCE, go_type::x, go_type::y, and go_type::z.

Referenced by ChangeState().

◆ UpdateTowerState()

void OPvPCapturePointEP_NPT::UpdateTowerState ( )
protected

Member Data Documentation

◆ m_SummonedGOSideId

TeamId OPvPCapturePointEP_NPT::m_SummonedGOSideId
protected

Referenced by ChangeState(), and SummonGO().

◆ m_TowerState

uint32 OPvPCapturePointEP_NPT::m_TowerState
protected