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

#include "OutdoorPvPZM.h"

Inheritance diagram for OPvPCapturePointZM_Graveyard:
OPvPCapturePoint

Public Member Functions

 OPvPCapturePointZM_Graveyard (OutdoorPvP *pvp)
 
bool Update (uint32 diff) override
 
void ChangeState () override
 
void FillInitialWorldStates (WorldPackets::WorldState::InitWorldStates &packet) override
 
void UpdateTowerState ()
 
int32 HandleOpenGo (Player *player, GameObject *go) override
 
void SetBeaconState (TeamId controlling_teamId)
 
bool HandleGossipOption (Player *player, Creature *creature, uint32 gossipid) override
 
bool HandleDropFlag (Player *player, uint32 spellId) override
 
bool CanTalkTo (Player *player, Creature *creature, GossipMenuItems const &gso) override
 
uint32 GetGraveyardState () const
 
- 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)
 
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 void ChangeTeam (TeamId)
 
virtual void SendChangePhase ()
 
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 Attributes

TeamId m_BothControllingFactionId
 
ObjectGuid m_FlagCarrierGUID
 
- 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
 

Private Attributes

uint32 m_GraveyardState
 

Additional Inherited Members

- Public Attributes inherited from OPvPCapturePoint
ObjectGuid::LowType m_capturePointSpawnId {}
 
GameObject_capturePoint {}
 
- 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 ()
 

Detailed Description

Constructor & Destructor Documentation

◆ OPvPCapturePointZM_Graveyard()

OPvPCapturePointZM_Graveyard::OPvPCapturePointZM_Graveyard ( OutdoorPvP pvp)
259 : OPvPCapturePoint(pvp)
260{
264 // add field scouts here
267 // add neutral banner
269}
const creature_type ZM_AllianceFieldScout
Definition OutdoorPvPZM.h:58
const go_type ZM_Banner_N
Definition OutdoorPvPZM.h:52
const creature_type ZM_HordeFieldScout
Definition OutdoorPvPZM.h:55
@ ZM_HORDE_FIELD_SCOUT
Definition OutdoorPvPZM.h:63
@ ZM_ALLIANCE_FIELD_SCOUT
Definition OutdoorPvPZM.h:62
@ ZM_GRAVEYARD_N
Definition OutdoorPvPZM.h:158
@ TEAM_NEUTRAL
Definition SharedDefines.h:762
uint32 m_GraveyardState
Definition OutdoorPvPZM.h:189
ObjectGuid m_FlagCarrierGUID
Definition OutdoorPvPZM.h:193
TeamId m_BothControllingFactionId
Definition OutdoorPvPZM.h:192
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 AddCreature(uint32 type, uint32 entry, uint32 map, float x, float y, float z, float o, uint32 spawntimeDelay=0)
Definition OutdoorPvP.cpp:116
void Clear()
Definition ObjectGuid.h:138
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
float x
Definition OutdoorPvP.h:57
uint32 map
Definition OutdoorPvP.h:56
uint32 entry
Definition OutdoorPvP.h:55
float o
Definition OutdoorPvP.h:60
float z
Definition OutdoorPvP.h:59
float rot3
Definition OutdoorPvP.h:64
float rot0
Definition OutdoorPvP.h:61
float rot1
Definition OutdoorPvP.h:62
float y
Definition OutdoorPvP.h:58
float rot2
Definition OutdoorPvP.h:63

References OPvPCapturePoint::AddCreature(), OPvPCapturePoint::AddObject(), ObjectGuid::Clear(), go_type::entry, creature_type::entry, m_BothControllingFactionId, m_FlagCarrierGUID, m_GraveyardState, go_type::map, creature_type::map, go_type::o, creature_type::o, go_type::rot0, go_type::rot1, go_type::rot2, go_type::rot3, TEAM_NEUTRAL, go_type::x, creature_type::x, go_type::y, creature_type::y, go_type::z, creature_type::z, ZM_ALLIANCE_FIELD_SCOUT, ZM_AllianceFieldScout, ZM_Banner_N, ZM_GRAVEYARD_N, ZM_HORDE_FIELD_SCOUT, and ZM_HordeFieldScout.

Member Function Documentation

◆ CanTalkTo()

bool OPvPCapturePointZM_Graveyard::CanTalkTo ( Player player,
Creature creature,
GossipMenuItems const &  gso 
)
overridevirtual

Reimplemented from OPvPCapturePoint.

341{
342 auto itr = _creatureTypes.find(c->GetSpawnId());
343 if (itr != _creatureTypes.end())
344 {
346 return true;
348 return true;
349 }
350 return false;
351}
@ ZM_GRAVEYARD_H
Definition OutdoorPvPZM.h:160
@ ZM_GRAVEYARD_A
Definition OutdoorPvPZM.h:159
@ TEAM_ALLIANCE
Definition SharedDefines.h:760
@ TEAM_HORDE
Definition SharedDefines.h:761
std::unordered_map< ObjectGuid::LowType, uint32 > _creatureTypes
Definition OutdoorPvP.h:181
TeamId GetTeamId(bool original=false) const
Definition Player.h:2116

References OPvPCapturePoint::_creatureTypes, Creature::GetSpawnId(), Player::GetTeamId(), m_BothControllingFactionId, m_FlagCarrierGUID, m_GraveyardState, TEAM_ALLIANCE, TEAM_HORDE, ZM_ALLIANCE_FIELD_SCOUT, ZM_GRAVEYARD_A, ZM_GRAVEYARD_H, and ZM_HORDE_FIELD_SCOUT.

◆ ChangeState()

void OPvPCapturePointZM_Graveyard::ChangeState ( )
inlineoverridevirtual

Implements OPvPCapturePoint.

170{}

◆ FillInitialWorldStates()

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

Reimplemented from OPvPCapturePoint.

284{
285 packet.Worldstates.reserve(7);
293}
@ WORLD_STATE_OPVP_ZM_MAP_GRAVEYARD_N
Definition WorldStateDefines.h:431
@ WORLD_STATE_OPVP_ZM_MAP_HORDE_FLAG_READY
Definition WorldStateDefines.h:441
@ WORLD_STATE_OPVP_ZM_MAP_ALLIANCE_FLAG_READY
Definition WorldStateDefines.h:438
@ WORLD_STATE_OPVP_ZM_MAP_HORDE_FLAG_NOT_READY
Definition WorldStateDefines.h:440
@ WORLD_STATE_OPVP_ZM_MAP_ALLIANCE_FLAG_NOT_READY
Definition WorldStateDefines.h:439
@ WORLD_STATE_OPVP_ZM_MAP_GRAVEYARD_H
Definition WorldStateDefines.h:433
@ WORLD_STATE_OPVP_ZM_MAP_GRAVEYARD_A
Definition WorldStateDefines.h:432
std::vector< WorldStateInfo > Worldstates
Definition WorldStatePackets.h:46

References m_BothControllingFactionId, m_GraveyardState, TEAM_ALLIANCE, TEAM_HORDE, WORLD_STATE_OPVP_ZM_MAP_ALLIANCE_FLAG_NOT_READY, WORLD_STATE_OPVP_ZM_MAP_ALLIANCE_FLAG_READY, WORLD_STATE_OPVP_ZM_MAP_GRAVEYARD_A, WORLD_STATE_OPVP_ZM_MAP_GRAVEYARD_H, WORLD_STATE_OPVP_ZM_MAP_GRAVEYARD_N, WORLD_STATE_OPVP_ZM_MAP_HORDE_FLAG_NOT_READY, WORLD_STATE_OPVP_ZM_MAP_HORDE_FLAG_READY, WorldPackets::WorldState::InitWorldStates::Worldstates, ZM_GRAVEYARD_A, ZM_GRAVEYARD_H, and ZM_GRAVEYARD_N.

◆ GetGraveyardState()

uint32 OPvPCapturePointZM_Graveyard::GetGraveyardState ( ) const
395{
396 return m_GraveyardState;
397}

References m_GraveyardState.

Referenced by OutdoorPvPZM::HandlePlayerEnterZone().

◆ HandleDropFlag()

bool OPvPCapturePointZM_Graveyard::HandleDropFlag ( Player player,
uint32  spellId 
)
overridevirtual

Reimplemented from OPvPCapturePoint.

381{
382 switch (spellId)
383 {
386 return true;
389 return true;
390 }
391 return false;
392}
@ ZM_BATTLE_STANDARD_H
Definition OutdoorPvPZM.h:42
@ ZM_BATTLE_STANDARD_A
Definition OutdoorPvPZM.h:40

References ObjectGuid::Clear(), m_FlagCarrierGUID, ZM_BATTLE_STANDARD_A, and ZM_BATTLE_STANDARD_H.

◆ HandleGossipOption()

bool OPvPCapturePointZM_Graveyard::HandleGossipOption ( Player player,
Creature creature,
uint32  gossipid 
)
overridevirtual

Reimplemented from OPvPCapturePoint.

354{
355 auto itr = _creatureTypes.find(creature->GetSpawnId());
356 if (itr != _creatureTypes.end())
357 {
358 // if the flag is already taken, then return
360 return true;
361
362 if (itr->second == ZM_ALLIANCE_FIELD_SCOUT)
363 {
364 creature->CastSpell(player, ZM_BATTLE_STANDARD_A, true);
365 m_FlagCarrierGUID = player->GetGUID();
366 }
367 else if (itr->second == ZM_HORDE_FIELD_SCOUT)
368 {
369 creature->CastSpell(player, ZM_BATTLE_STANDARD_H, true);
370 m_FlagCarrierGUID = player->GetGUID();
371 }
372
375 return true;
376 }
377 return false;
378}
ObjectGuid::LowType GetSpawnId() const
Definition Creature.h:65
void UpdateTowerState()
Definition OutdoorPvPZM.cpp:271
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:112
void SendCloseGossip()
Definition GossipDef.cpp:239
PlayerMenu * PlayerTalkClass
Definition Player.h:2247
SpellCastResult CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=nullptr, AuraEffect const *triggeredByAura=nullptr, ObjectGuid originalCaster=ObjectGuid::Empty)
Definition Unit.cpp:1178

References OPvPCapturePoint::_creatureTypes, Unit::CastSpell(), Object::GetGUID(), Creature::GetSpawnId(), m_FlagCarrierGUID, Player::PlayerTalkClass, PlayerMenu::SendCloseGossip(), UpdateTowerState(), ZM_ALLIANCE_FIELD_SCOUT, ZM_BATTLE_STANDARD_A, ZM_BATTLE_STANDARD_H, and ZM_HORDE_FIELD_SCOUT.

◆ HandleOpenGo()

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

Reimplemented from OPvPCapturePoint.

223{
224 int32 retval = OPvPCapturePoint::HandleOpenGo(player, go);
225 if (retval >= 0)
226 {
228 {
230 sWorldSessionMgr->SendZoneText(ZM_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_ZM_LOSE_GY_H));
232 DelObject(0); // only one gotype is used in the whole outdoor pvp, no need to call it a constant
234 sGraveyard->RemoveGraveyardLink(ZM_GRAVEYARD_ID, ZM_GRAVEYARD_ZONE, TEAM_HORDE); // rem gy
235 sGraveyard->AddGraveyardLink(ZM_GRAVEYARD_ID, ZM_GRAVEYARD_ZONE, TEAM_ALLIANCE, false); // add gy
238 sWorldSessionMgr->SendZoneText(ZM_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_ZM_CAPTURE_GY_A));
239 }
241 {
243 sWorldSessionMgr->SendZoneText(ZM_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_ZM_LOSE_GY_A));
245 DelObject(0); // only one gotype is used in the whole outdoor pvp, no need to call it a constant
247 sGraveyard->RemoveGraveyardLink(ZM_GRAVEYARD_ID, ZM_GRAVEYARD_ZONE, TEAM_ALLIANCE); // rem gy
248 sGraveyard->AddGraveyardLink(ZM_GRAVEYARD_ID, ZM_GRAVEYARD_ZONE, TEAM_HORDE, false); // add gy
251 sWorldSessionMgr->SendZoneText(ZM_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_ZM_CAPTURE_GY_H));
252 }
254 }
255 return retval;
256}
std::int32_t int32
Definition Define.h:103
#define sGraveyard
Definition GameGraveyard.h:74
@ LANG_OPVP_ZM_CAPTURE_GY_A
Definition Language.h:1219
@ LANG_OPVP_ZM_LOSE_GY_A
Definition Language.h:1225
@ LANG_OPVP_ZM_LOSE_GY_H
Definition Language.h:1224
@ LANG_OPVP_ZM_CAPTURE_GY_H
Definition Language.h:1218
#define sObjectMgr
Definition ObjectMgr.h:1636
const uint32 ZM_GRAVEYARD_ZONE
Definition OutdoorPvPZM.h:30
const go_type ZM_Banner_H
Definition OutdoorPvPZM.h:51
const go_type ZM_Banner_A
Definition OutdoorPvPZM.h:50
@ ZM_CAPTURE_BUFF
Definition OutdoorPvPZM.h:38
const uint32 ZM_GRAVEYARD_ID
Definition OutdoorPvPZM.h:33
#define sWorldSessionMgr
Definition WorldSessionMgr.h:110
OutdoorPvP * _pvp
Definition OutdoorPvP.h:173
virtual int32 HandleOpenGo(Player *player, GameObject *go)
Definition OutdoorPvP.cpp:611
bool DelObject(uint32 type)
Definition OutdoorPvP.cpp:193
void TeamApplyBuff(TeamId teamId, uint32 spellId, uint32 spellId2=0, Player *sameMapPlr=nullptr)
Definition OutdoorPvP.cpp:670
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint8 reqEffMask=0) const
Definition Unit.cpp:5753
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Definition Unit.cpp:4941

References OPvPCapturePoint::_pvp, OPvPCapturePoint::AddObject(), OPvPCapturePoint::DelObject(), go_type::entry, OPvPCapturePoint::HandleOpenGo(), Unit::HasAura(), LANG_OPVP_ZM_CAPTURE_GY_A, LANG_OPVP_ZM_CAPTURE_GY_H, LANG_OPVP_ZM_LOSE_GY_A, LANG_OPVP_ZM_LOSE_GY_H, m_GraveyardState, go_type::map, go_type::o, Unit::RemoveAurasDueToSpell(), go_type::rot0, go_type::rot1, go_type::rot2, go_type::rot3, sGraveyard, sObjectMgr, sWorldSessionMgr, TEAM_ALLIANCE, TEAM_HORDE, OutdoorPvP::TeamApplyBuff(), UpdateTowerState(), go_type::x, go_type::y, go_type::z, ZM_Banner_A, ZM_Banner_H, ZM_BATTLE_STANDARD_A, ZM_BATTLE_STANDARD_H, ZM_CAPTURE_BUFF, ZM_GRAVEYARD_A, ZM_GRAVEYARD_H, ZM_GRAVEYARD_ID, and ZM_GRAVEYARD_ZONE.

◆ SetBeaconState()

void OPvPCapturePointZM_Graveyard::SetBeaconState ( TeamId  controlling_teamId)
296{
297 // nothing to do here
298 if (m_BothControllingFactionId == controlling_factionId)
299 return;
300 m_BothControllingFactionId = controlling_factionId;
301
302 switch (controlling_factionId)
303 {
304 case TEAM_ALLIANCE:
305 // if ally already controls the gy and taken back both beacons, return, nothing to do for us
307 return;
308 // ally doesn't control the gy, but controls the side beacons -> add gossip option, add neutral banner
309 break;
310 case TEAM_HORDE:
311 // if horde already controls the gy and taken back both beacons, return, nothing to do for us
313 return;
314 // horde doesn't control the gy, but controls the side beacons -> add gossip option, add neutral banner
315 break;
316 default:
317 // if the graveyard is not neutral, then leave it that way
318 // if the graveyard is neutral, then we have to dispel the buff from the flag carrier
320 {
321 // gy was neutral, thus neutral banner was spawned, it is possible that someone was taking the flag to the gy
323 {
324 // remove flag from carrier, reset flag carrier guid
326 if (p)
327 {
330 }
332 }
333 }
334 break;
335 }
336 // send worldstateupdate
338}
Definition Player.h:1081
Player * FindPlayer(ObjectGuid const guid)
Definition ObjectAccessor.cpp:245

References ObjectGuid::Clear(), ObjectAccessor::FindPlayer(), m_BothControllingFactionId, m_FlagCarrierGUID, m_GraveyardState, Unit::RemoveAurasDueToSpell(), TEAM_ALLIANCE, TEAM_HORDE, UpdateTowerState(), ZM_BATTLE_STANDARD_A, ZM_BATTLE_STANDARD_H, ZM_GRAVEYARD_A, ZM_GRAVEYARD_H, and ZM_GRAVEYARD_N.

Referenced by OutdoorPvPZM::Update().

◆ Update()

bool OPvPCapturePointZM_Graveyard::Update ( uint32  diff)
overridevirtual

Reimplemented from OPvPCapturePoint.

216{
217 bool retval = _state != _oldState;
219 return retval;
220}
ObjectiveStates _state
Definition OutdoorPvP.h:167
ObjectiveStates _oldState
Definition OutdoorPvP.h:166

References OPvPCapturePoint::_oldState, and OPvPCapturePoint::_state.

◆ UpdateTowerState()

void OPvPCapturePointZM_Graveyard::UpdateTowerState ( )

References OPvPCapturePoint::_pvp, m_BothControllingFactionId, m_GraveyardState, OutdoorPvP::SendUpdateWorldState(), TEAM_ALLIANCE, TEAM_HORDE, WORLD_STATE_OPVP_ZM_MAP_ALLIANCE_FLAG_NOT_READY, WORLD_STATE_OPVP_ZM_MAP_ALLIANCE_FLAG_READY, WORLD_STATE_OPVP_ZM_MAP_GRAVEYARD_A, WORLD_STATE_OPVP_ZM_MAP_GRAVEYARD_H, WORLD_STATE_OPVP_ZM_MAP_GRAVEYARD_N, WORLD_STATE_OPVP_ZM_MAP_HORDE_FLAG_NOT_READY, WORLD_STATE_OPVP_ZM_MAP_HORDE_FLAG_READY, ZM_GRAVEYARD_A, ZM_GRAVEYARD_H, and ZM_GRAVEYARD_N.

Referenced by HandleGossipOption(), HandleOpenGo(), and SetBeaconState().

Member Data Documentation

◆ m_BothControllingFactionId

TeamId OPvPCapturePointZM_Graveyard::m_BothControllingFactionId
protected

◆ m_FlagCarrierGUID

ObjectGuid OPvPCapturePointZM_Graveyard::m_FlagCarrierGUID
protected

◆ m_GraveyardState


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