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

#include "Battlefield.h"

Inheritance diagram for BfGraveyard:
BfGraveyardWG

Public Member Functions

 BfGraveyard (Battlefield *Bf)
 
void GiveControlTo (TeamId team)
 
TeamId GetControlTeamId () const
 
float GetDistance (Player *player)
 
void Initialize (TeamId startcontrol, uint32 gy)
 
void SetSpirit (Creature *spirit, TeamId team)
 
void AddPlayer (ObjectGuid player_guid)
 
void RemovePlayer (ObjectGuid player_guid)
 
void Resurrect ()
 
void RelocateDeadPlayers ()
 
bool HasNpc (ObjectGuid guid)
 
bool HasPlayer (ObjectGuid guid) const
 
uint32 GetGraveyardId () const
 

Protected Attributes

TeamId m_ControlTeam
 
uint32 m_GraveyardId
 
ObjectGuid m_SpiritGuide [2]
 
GuidUnorderedSet m_ResurrectQueue
 
Battlefieldm_Bf
 

Detailed Description

Constructor & Destructor Documentation

◆ BfGraveyard()

BfGraveyard::BfGraveyard ( Battlefield Bf)
673{
674 m_Bf = battlefield;
675 m_GraveyardId = 0;
677 m_ResurrectQueue.clear();
678}
@ TEAM_NEUTRAL
Definition SharedDefines.h:762
uint32 m_GraveyardId
Definition Battlefield.h:197
GuidUnorderedSet m_ResurrectQueue
Definition Battlefield.h:199
Battlefield * m_Bf
Definition Battlefield.h:200
TeamId m_ControlTeam
Definition Battlefield.h:196

References m_Bf, m_ControlTeam, m_GraveyardId, m_ResurrectQueue, and TEAM_NEUTRAL.

Member Function Documentation

◆ AddPlayer()

void BfGraveyard::AddPlayer ( ObjectGuid  player_guid)
705{
706 if (!m_ResurrectQueue.count(playerGuid))
707 {
708 m_ResurrectQueue.insert(playerGuid);
709
710 if (Player* player = ObjectAccessor::FindPlayer(playerGuid))
711 player->CastSpell(player, SPELL_WAITING_FOR_RESURRECT, true);
712 }
713}
@ SPELL_WAITING_FOR_RESURRECT
Definition Battleground.h:138
Definition Player.h:1081
Player * FindPlayer(ObjectGuid const guid)
Definition ObjectAccessor.cpp:245

References ObjectAccessor::FindPlayer(), m_ResurrectQueue, and SPELL_WAITING_FOR_RESURRECT.

Referenced by Battlefield::AddPlayerToResurrectQueue().

◆ GetControlTeamId()

TeamId BfGraveyard::GetControlTeamId ( ) const
inline
152{ return m_ControlTeam; }

References m_ControlTeam.

◆ GetDistance()

float BfGraveyard::GetDistance ( Player player)
699{
700 const GraveyardStruct* safeLoc = sGraveyard->GetGraveyard(m_GraveyardId);
701 return player->GetDistance2d(safeLoc->x, safeLoc->y);
702}
#define sGraveyard
Definition GameGraveyard.h:74
float GetDistance2d(WorldObject const *obj) const
Definition Object.cpp:1274
Definition GameGraveyard.h:27
float x
Definition GameGraveyard.h:30
float y
Definition GameGraveyard.h:31

References WorldObject::GetDistance2d(), m_GraveyardId, sGraveyard, GraveyardStruct::x, and GraveyardStruct::y.

Referenced by Battlefield::GetClosestGraveyard().

◆ GetGraveyardId()

uint32 BfGraveyard::GetGraveyardId ( ) const
inline
193{ return m_GraveyardId; }

References m_GraveyardId.

Referenced by Battlefield::GetClosestGraveyard().

◆ GiveControlTo()

void BfGraveyard::GiveControlTo ( TeamId  team)
754{
755 m_ControlTeam = team;
756 // Teleport to other graveyard, player witch were on this graveyard
758}
void RelocateDeadPlayers()
Definition Battlefield.cpp:760

References m_ControlTeam, and RelocateDeadPlayers().

Referenced by WGWorkshop::GiveControlTo(), and WGWorkshop::UpdateGraveyardAndWorkshop().

◆ HasNpc()

bool BfGraveyard::HasNpc ( ObjectGuid  guid)
inline
177 {
178 if (!m_SpiritGuide[0] && !m_SpiritGuide[1])
179 return false;
180
181 // performance
182 /*if (!ObjectAccessor::FindUnit(m_SpiritGuide[0]) &&
183 !ObjectAccessor::FindUnit(m_SpiritGuide[1]))
184 return false;*/
185
186 return (m_SpiritGuide[0] == guid || m_SpiritGuide[1] == guid);
187 }
ObjectGuid m_SpiritGuide[2]
Definition Battlefield.h:198

References m_SpiritGuide.

◆ HasPlayer()

bool BfGraveyard::HasPlayer ( ObjectGuid  guid) const
inline
190{ return m_ResurrectQueue.find(guid) != m_ResurrectQueue.end(); }

References m_ResurrectQueue.

◆ Initialize()

void BfGraveyard::Initialize ( TeamId  startcontrol,
uint32  gy 
)
681{
682 m_ControlTeam = startControl;
683 m_GraveyardId = graveyardId;
684}

References m_ControlTeam, and m_GraveyardId.

Referenced by BattlefieldWG::SetupBattlefield().

◆ RelocateDeadPlayers()

void BfGraveyard::RelocateDeadPlayers ( )
761{
762 GraveyardStruct const* closestGrave = nullptr;
763 for (GuidUnorderedSet::const_iterator itr = m_ResurrectQueue.begin(); itr != m_ResurrectQueue.end(); ++itr)
764 {
765 Player* player = ObjectAccessor::FindPlayer(*itr);
766 if (!player)
767 continue;
768
769 if (closestGrave)
770 player->TeleportTo(player->GetMapId(), closestGrave->x, closestGrave->y, closestGrave->z, player->GetOrientation());
771 else
772 {
773 closestGrave = m_Bf->GetClosestGraveyard(player);
774 if (closestGrave)
775 player->TeleportTo(player->GetMapId(), closestGrave->x, closestGrave->y, closestGrave->z, player->GetOrientation());
776 }
777 }
778}
GraveyardStruct const * GetClosestGraveyard(Player *player)
Definition Battlefield.cpp:603
bool TeleportTo(uint32 mapid, float x, float y, float z, float orientation, uint32 options=0, Unit *target=nullptr, bool newInstance=false)
Definition Player.cpp:1338
uint32 GetMapId() const
Definition Position.h:280
float z
Definition GameGraveyard.h:32
float GetOrientation() const
Definition Position.h:124

References ObjectAccessor::FindPlayer(), Battlefield::GetClosestGraveyard(), WorldLocation::GetMapId(), Position::GetOrientation(), m_Bf, m_ResurrectQueue, Player::TeleportTo(), GraveyardStruct::x, GraveyardStruct::y, and GraveyardStruct::z.

Referenced by GiveControlTo().

◆ RemovePlayer()

void BfGraveyard::RemovePlayer ( ObjectGuid  player_guid)
716{
717 m_ResurrectQueue.erase(m_ResurrectQueue.find(playerGuid));
718
719 if (Player* player = ObjectAccessor::FindPlayer(playerGuid))
720 player->RemoveAurasDueToSpell(SPELL_WAITING_FOR_RESURRECT);
721}

References ObjectAccessor::FindPlayer(), m_ResurrectQueue, and SPELL_WAITING_FOR_RESURRECT.

◆ Resurrect()

void BfGraveyard::Resurrect ( )
724{
725 if (m_ResurrectQueue.empty())
726 return;
727
728 for (GuidUnorderedSet::const_iterator itr = m_ResurrectQueue.begin(); itr != m_ResurrectQueue.end(); ++itr)
729 {
730 // Get player object from his guid
731 Player* player = ObjectAccessor::FindPlayer(*itr);
732 if (!player)
733 continue;
734
735 // Check if the player is in world and on the good graveyard
736 if (player->IsInWorld())
738 spirit->CastSpell(spirit, SPELL_SPIRIT_HEAL, true);
739
740 // Resurect player
741 player->CastSpell(player, SPELL_RESURRECTION_VISUAL, true);
742 player->ResurrectPlayer(1.0f);
743 player->CastSpell(player, 6962, true);
744 player->CastSpell(player, SPELL_SPIRIT_HEAL_MANA, true);
745
746 player->SpawnCorpseBones(false);
747 }
748
749 m_ResurrectQueue.clear();
750}
@ SPELL_SPIRIT_HEAL
Definition Battleground.h:140
@ SPELL_SPIRIT_HEAL_MANA
Definition Battleground.h:144
@ SPELL_RESURRECTION_VISUAL
Definition Battleground.h:141
bool IsInWorld() const
Definition Object.h:107
void SpawnCorpseBones(bool triggerSave=true)
Definition Player.cpp:4715
void ResurrectPlayer(float restore_percent, bool applySickness=false)
Definition Player.cpp:4499
Definition Unit.h:636
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
Creature * GetCreature(WorldObject const &u, ObjectGuid const guid)
Definition ObjectAccessor.cpp:210

References Unit::CastSpell(), ObjectAccessor::FindPlayer(), ObjectAccessor::GetCreature(), Object::IsInWorld(), m_ControlTeam, m_ResurrectQueue, m_SpiritGuide, Player::ResurrectPlayer(), Player::SpawnCorpseBones(), SPELL_RESURRECTION_VISUAL, SPELL_SPIRIT_HEAL, and SPELL_SPIRIT_HEAL_MANA.

◆ SetSpirit()

void BfGraveyard::SetSpirit ( Creature spirit,
TeamId  team 
)
687{
688 if (!spirit)
689 {
690 LOG_ERROR("bg.battlefield", "BfGraveyard::SetSpirit: Invalid Spirit.");
691 return;
692 }
693
694 m_SpiritGuide[team] = spirit->GetGUID();
696}
#define LOG_ERROR(filterType__,...)
Definition Log.h:157
@ REACT_PASSIVE
Definition Unit.h:548
void SetReactState(ReactStates state)
A creature can have 3 ReactStates : Agressive, Passive, Neutral.
Definition Creature.h:95
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:112

References Object::GetGUID(), LOG_ERROR, m_SpiritGuide, REACT_PASSIVE, and Creature::SetReactState().

Member Data Documentation

◆ m_Bf

Battlefield* BfGraveyard::m_Bf
protected

◆ m_ControlTeam

TeamId BfGraveyard::m_ControlTeam
protected

◆ m_GraveyardId

uint32 BfGraveyard::m_GraveyardId
protected

◆ m_ResurrectQueue

GuidUnorderedSet BfGraveyard::m_ResurrectQueue
protected

◆ m_SpiritGuide

ObjectGuid BfGraveyard::m_SpiritGuide[2]
protected

Referenced by HasNpc(), Resurrect(), and SetSpirit().


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