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

#include "OutdoorPvPEP.h"

Inheritance diagram for OPvPCapturePointEP_PWT:
OPvPCapturePoint

Public Member Functions

 OPvPCapturePointEP_PWT (OutdoorPvP *pvp)
 
void ChangeState () override
 
void SendChangePhase () override
 
void FillInitialWorldStates (WorldPackets::WorldState::InitWorldStates &packet) override
 
bool HandlePlayerEnter (Player *player) override
 
void HandlePlayerLeave (Player *player) override
 
- Public Member Functions inherited from OPvPCapturePoint
 OPvPCapturePoint (OutdoorPvP *pvp)
 
virtual ~OPvPCapturePoint ()=default
 
void SendUpdateWorldState (uint32 field, uint32 value)
 
void SendObjectiveComplete (uint32 id, ObjectGuid guid=ObjectGuid::Empty)
 
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 ChangeTeam (TeamId)
 
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 SummonFlightMaster (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

TeamId m_FlightMasterSpawnedId
 
uint32 m_TowerState
 
- 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_PWT()

OPvPCapturePointEP_PWT::OPvPCapturePointEP_PWT ( OutdoorPvP pvp)
446{
449}
@ EP_PWT_FLAGS
Definition OutdoorPvPEP.h:70
const go_type EPCapturePoints[EP_TOWER_NUM]
Definition OutdoorPvPEP.h:82
@ EP_TS_N
Definition OutdoorPvPEP.h:127
@ EP_PWT
Definition OutdoorPvPEP.h:77
const go_type EPTowerFlags[EP_TOWER_NUM]
Definition OutdoorPvPEP.h:90
@ TEAM_NEUTRAL
Definition SharedDefines.h:773
uint32 m_TowerState
Definition OutdoorPvPEP.h:245
TeamId m_FlightMasterSpawnedId
Definition OutdoorPvPEP.h:243
Definition OutdoorPvP.h:91
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

References OPvPCapturePoint::AddObject(), EP_PWT, EP_PWT_FLAGS, EPCapturePoints, EPTowerFlags, and OPvPCapturePoint::SetCapturePointData().

Member Function Documentation

◆ ChangeState()

void OPvPCapturePointEP_PWT::ChangeState ( )
overridevirtual

Implements OPvPCapturePoint.

452{
453 // if changing from controlling alliance to horde or vice versa
455 {
456 _pvp->GetMap()->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_LOSE_PWT_A).c_str());
457 ((OutdoorPvPEP*)_pvp)->SetControlledState(EP_PWT, TEAM_NEUTRAL);
458 }
460 {
461 _pvp->GetMap()->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_LOSE_PWT_H).c_str());
462 ((OutdoorPvPEP*)_pvp)->SetControlledState(EP_PWT, TEAM_NEUTRAL);
463 }
464
465 uint32 artkit = 21;
466
467 switch (_state)
468 {
472 artkit = 2;
473 ((OutdoorPvPEP*)_pvp)->SetControlledState(EP_PWT, TEAM_ALLIANCE);
474 if (_oldState != _state)
475 _pvp->GetMap()->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_CAPTURE_PWT_A).c_str());
476 break;
480 artkit = 1;
481 ((OutdoorPvPEP*)_pvp)->SetControlledState(EP_PWT, TEAM_HORDE);
482 if (_oldState != _state)
483 _pvp->GetMap()->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_CAPTURE_PWT_H).c_str());
484 break;
489 break;
492 break;
497 break;
500 break;
505 break;
506 }
507
508 Map* map = sMapMgr->FindMap(0, 0);
509 auto bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_capturePointSpawnId);
510 for (auto itr = bounds.first; itr != bounds.second; ++itr)
511 itr->second->SetGoArtKit(artkit);
512
513 bounds = map->GetGameObjectBySpawnIdStore().equal_range(_objects[EP_PWT_FLAGS]);
514 for (auto itr = bounds.first; itr != bounds.second; ++itr)
515 itr->second->SetGoArtKit(artkit);
516
518
519 // complete quest objective
522}
std::uint32_t uint32
Definition Define.h:107
@ LANG_OPVP_EP_CAPTURE_PWT_A
Definition Language.h:1255
@ LANG_OPVP_EP_LOSE_PWT_H
Definition Language.h:1262
@ LANG_OPVP_EP_LOSE_PWT_A
Definition Language.h:1263
@ LANG_OPVP_EP_CAPTURE_PWT_H
Definition Language.h:1254
#define sMapMgr
Definition MapMgr.h:220
#define sObjectMgr
Definition ObjectMgr.h:1650
const uint32 EP_PWT_CM
Definition OutdoorPvPEP.h:37
const uint32 EP_GraveyardZone
Definition OutdoorPvPEP.h:28
@ EP_TS_A
Definition OutdoorPvPEP.h:132
@ EP_TS_N_A
Definition OutdoorPvPEP.h:128
@ EP_TS_N_H
Definition OutdoorPvPEP.h:129
@ EP_TS_H
Definition OutdoorPvPEP.h:133
@ EP_PWT_FLIGHTMASTER
Definition OutdoorPvPEP.h:61
@ 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
@ TEAM_ALLIANCE
Definition SharedDefines.h:771
@ TEAM_HORDE
Definition SharedDefines.h:772
Definition Map.h:163
void SendZoneText(uint32 zoneId, char const *text, WorldSession const *self=nullptr, TeamId teamId=TEAM_NEUTRAL) const
Send a System Message to all players in the zone (except self if mentioned)
Definition Map.cpp:2785
GameObjectBySpawnIdContainer & GetGameObjectBySpawnIdStore()
Definition Map.h:354
void SummonFlightMaster(TeamId teamId)
Definition OutdoorPvPEP.cpp:573
void UpdateTowerState()
Definition OutdoorPvPEP.cpp:545
ObjectiveStates _state
Definition OutdoorPvP.h:167
ObjectiveStates _oldState
Definition OutdoorPvP.h:166
ObjectGuid::LowType m_capturePointSpawnId
Definition OutdoorPvP.h:125
OutdoorPvP * _pvp
Definition OutdoorPvP.h:173
bool DelCreature(uint32 type)
Definition OutdoorPvP.cpp:151
std::unordered_map< uint32, ObjectGuid::LowType > _objects
Definition OutdoorPvP.h:178
void SendObjectiveComplete(uint32 id, ObjectGuid guid=ObjectGuid::Empty)
Definition OutdoorPvP.cpp:476
Definition OutdoorPvPEP.h:249
Map * GetMap() const
Definition OutdoorPvP.h:244

References OPvPCapturePoint::_objects, OPvPCapturePoint::_oldState, OPvPCapturePoint::_pvp, OPvPCapturePoint::_state, OPvPCapturePoint::DelCreature(), EP_GraveyardZone, EP_PWT, EP_PWT_CM, EP_PWT_FLAGS, EP_PWT_FLIGHTMASTER, EP_TS_A, EP_TS_H, EP_TS_N, EP_TS_N_A, EP_TS_N_H, Map::GetGameObjectBySpawnIdStore(), OutdoorPvP::GetMap(), LANG_OPVP_EP_CAPTURE_PWT_A, LANG_OPVP_EP_CAPTURE_PWT_H, LANG_OPVP_EP_LOSE_PWT_A, LANG_OPVP_EP_LOSE_PWT_H, OPvPCapturePoint::m_capturePointSpawnId, m_FlightMasterSpawnedId, 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(), Map::SendZoneText(), sMapMgr, sObjectMgr, SummonFlightMaster(), TEAM_ALLIANCE, TEAM_HORDE, TEAM_NEUTRAL, and UpdateTowerState().

◆ FillInitialWorldStates()

void OPvPCapturePointEP_PWT::FillInitialWorldStates ( WorldPackets::WorldState::InitWorldStates packet)
overridevirtual

Reimplemented from OPvPCapturePoint.

536{
537 packet.Worldstates.reserve(5);
538 packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_A, (m_TowerState & EP_TS_A) != 0 ? 1 : 0);
539 packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_H, (m_TowerState & EP_TS_H) != 0 ? 1 : 0);
540 packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_N_A, (m_TowerState & EP_TS_N_A) != 0 ? 1 : 0);
541 packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_N_H, (m_TowerState & EP_TS_N_H) != 0 ? 1 : 0);
542 packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_N, (m_TowerState & EP_TS_N) != 0 ? 1 : 0);
543}
@ WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_N
Definition WorldStateDefines.h:365
@ WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_N_A
Definition WorldStateDefines.h:375
@ WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_A
Definition WorldStateDefines.h:376
@ WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_H
Definition WorldStateDefines.h:377
@ WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_N_H
Definition WorldStateDefines.h:366
std::vector< WorldStateInfo > Worldstates
Definition WorldStatePackets.h:46

References EP_TS_A, EP_TS_H, EP_TS_N, EP_TS_N_A, EP_TS_N_H, m_TowerState, WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_A, WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_H, WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_N, WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_N_A, WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_N_H, and WorldPackets::WorldState::InitWorldStates::Worldstates.

◆ HandlePlayerEnter()

bool OPvPCapturePointEP_PWT::HandlePlayerEnter ( Player player)
overridevirtual

Reimplemented from OPvPCapturePoint.

555{
557 {
559 uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
562 return true;
563 }
564 return false;
565}
@ WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_DISPLAY
Definition WorldStateDefines.h:384
@ WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_POS
Definition WorldStateDefines.h:385
@ WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_N
Definition WorldStateDefines.h:386
phase
Definition boss_skadi.cpp:99
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
void SendUpdateWorldState(uint32 variable, uint32 value) const
Definition PlayerUpdates.cpp:2226

References OPvPCapturePoint::_maxValue, OPvPCapturePoint::_neutralValuePct, OPvPCapturePoint::_value, OPvPCapturePoint::HandlePlayerEnter(), Player::SendUpdateWorldState(), WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_DISPLAY, WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_N, and WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_POS.

◆ HandlePlayerLeave()

void OPvPCapturePointEP_PWT::HandlePlayerLeave ( Player player)
overridevirtual

◆ SendChangePhase()

void OPvPCapturePointEP_PWT::SendChangePhase ( )
overridevirtual

Reimplemented from OPvPCapturePoint.

525{
526 // send this too, sometimes the slider disappears, dunno why :(
528 // send these updates to only the ones in this objective
529 uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
531 // send this too, sometimes it resets :S
533}
void SendUpdateWorldState(uint32 field, uint32 value)
Definition OutdoorPvP.cpp:465

References OPvPCapturePoint::_maxValue, OPvPCapturePoint::_neutralValuePct, OPvPCapturePoint::_value, OPvPCapturePoint::SendUpdateWorldState(), WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_DISPLAY, WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_N, and WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_POS.

◆ SummonFlightMaster()

void OPvPCapturePointEP_PWT::SummonFlightMaster ( TeamId  teamId)
protected
574{
575 if (m_FlightMasterSpawnedId != teamId)
576 {
580 /*
581 // sky - we need update gso code
582
583 Creature* c = HashMapHolder<Creature>::Find(_creatures[EP_PWT_FLIGHTMASTER]);
584 //Spawn flight master as friendly to capturing team
585 c->SetUInt32Value(GAMEOBJECT_FACTION, (teamId == TEAM_ALLIANCE ? 55 : 68));
586 if (c)
587 {
588 GossipOption gso;
589 gso.Action = GOSSIP_OPTION_OUTDOORPVP;
590 gso.GossipId = 0;
591 gso.OptionText.assign(sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_FLIGHT_NPT));
592 gso.Id = 50;
593 gso.Icon = 0;
594 gso.NpcFlag = 0;
595 gso.BoxMoney = 0;
596 gso.Coded = false;
597 c->addGossipOption(gso);
598
599 gso.Action = GOSSIP_OPTION_OUTDOORPVP;
600 gso.GossipId = 0;
601 gso.OptionText.assign(sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_FLIGHT_EWT));
602 gso.Id = 50;
603 gso.Icon = 0;
604 gso.NpcFlag = 0;
605 gso.BoxMoney = 0;
606 gso.Coded = false;
607 c->addGossipOption(gso);
608
609 gso.Action = GOSSIP_OPTION_OUTDOORPVP;
610 gso.GossipId = 0;
611 gso.OptionText.assign(sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_FLIGHT_CGT));
612 gso.Id = 50;
613 gso.Icon = 0;
614 gso.NpcFlag = 0;
615 gso.BoxMoney = 0;
616 gso.Coded = false;
617 c->addGossipOption(gso);
618 }
619 */
620 }
621}
const creature_type EP_PWT_FlightMaster
Definition OutdoorPvPEP.h:137
bool AddCreature(uint32 type, uint32 entry, uint32 map, float x, float y, float z, float o, uint32 spawntimeDelay=0)
Definition OutdoorPvP.cpp:116
float y
Definition OutdoorPvP.h:73
float x
Definition OutdoorPvP.h:72
uint32 entry
Definition OutdoorPvP.h:70
float o
Definition OutdoorPvP.h:75
uint32 map
Definition OutdoorPvP.h:71
float z
Definition OutdoorPvP.h:74

References OPvPCapturePoint::AddCreature(), OPvPCapturePoint::DelCreature(), creature_type::entry, EP_PWT_FLIGHTMASTER, EP_PWT_FlightMaster, m_FlightMasterSpawnedId, creature_type::map, creature_type::o, creature_type::x, creature_type::y, and creature_type::z.

Referenced by ChangeState().

◆ UpdateTowerState()

Member Data Documentation

◆ m_FlightMasterSpawnedId

TeamId OPvPCapturePointEP_PWT::m_FlightMasterSpawnedId
protected

Referenced by ChangeState(), and SummonFlightMaster().

◆ m_TowerState

uint32 OPvPCapturePointEP_PWT::m_TowerState
protected

The documentation for this class was generated from the following files: