AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
Acore::MostHPMissingGroupInRange Class Reference

#include "GridNotifiers.h"

Public Member Functions

 MostHPMissingGroupInRange (Unit const *obj, float range, uint32 hp)
 
bool operator() (Unit *u)
 

Private Attributes

Unit const * i_obj
 
float i_range
 
uint32 i_hp
 

Detailed Description

Constructor & Destructor Documentation

◆ MostHPMissingGroupInRange()

Acore::MostHPMissingGroupInRange::MostHPMissingGroupInRange ( Unit const *  obj,
float  range,
uint32  hp 
)
inline
1477: i_obj(obj), i_range(range), i_hp(hp) {}
float i_range
Definition: GridNotifiers.h:1519
Unit const * i_obj
Definition: GridNotifiers.h:1518
uint32 i_hp
Definition: GridNotifiers.h:1520

Member Function Documentation

◆ operator()()

bool Acore::MostHPMissingGroupInRange::operator() ( Unit u)
inline
1480 {
1481 if (i_obj == u)
1482 {
1483 return false;
1484 }
1485
1486 Player* player = nullptr;
1487 if (u->GetTypeId() == TYPEID_PLAYER)
1488 {
1489 player = u->ToPlayer();
1490 }
1491
1492 else if (u->IsPet() && u->GetOwner())
1493 {
1494 player = u->GetOwner()->ToPlayer();
1495 }
1496
1497 if (!player)
1498 {
1499 return false;
1500 }
1501
1502 Group* group = player->GetGroup();
1503 if (!group || !group->IsMember(i_obj->IsPet() ? i_obj->GetOwnerGUID() : i_obj->GetGUID()))
1504 {
1505 return false;
1506 }
1507
1508 if (u->IsAlive() && !i_obj->IsHostileTo(u) && i_obj->IsWithinDistInMap(u, i_range) && u->GetMaxHealth() - u->GetHealth() > i_hp)
1509 {
1510 i_hp = u->GetMaxHealth() - u->GetHealth();
1511 return true;
1512 }
1513
1514 return false;
1515 }
@ TYPEID_PLAYER
Definition: ObjectGuid.h:38
Player * ToPlayer()
Definition: Object.h:195
TypeID GetTypeId() const
Definition: Object.h:121
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:106
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true, bool useBoundingRadius=true) const
Definition: Object.cpp:1321
Definition: Player.h:1046
Group * GetGroup()
Definition: Player.h:2418
Unit * GetOwner() const
Definition: Unit.cpp:10560
bool IsPet() const
Definition: Unit.h:1413
uint32 GetMaxHealth() const
Definition: Unit.h:1441
bool IsAlive() const
Definition: Unit.h:1808
uint32 GetHealth() const
Definition: Unit.h:1440
ObjectGuid GetOwnerGUID() const
Definition: Unit.h:1814
bool IsHostileTo(Unit const *unit) const
Definition: Unit.cpp:10209
Definition: Group.h:168
bool IsMember(ObjectGuid guid) const
Definition: Group.cpp:2275

References Player::GetGroup(), Object::GetGUID(), Unit::GetHealth(), Unit::GetMaxHealth(), Unit::GetOwner(), Unit::GetOwnerGUID(), Object::GetTypeId(), i_hp, i_obj, i_range, Unit::IsAlive(), Unit::IsHostileTo(), Group::IsMember(), Unit::IsPet(), WorldObject::IsWithinDistInMap(), Object::ToPlayer(), and TYPEID_PLAYER.

Member Data Documentation

◆ i_hp

uint32 Acore::MostHPMissingGroupInRange::i_hp
private

Referenced by operator()().

◆ i_obj

Unit const* Acore::MostHPMissingGroupInRange::i_obj
private

Referenced by operator()().

◆ i_range

float Acore::MostHPMissingGroupInRange::i_range
private

Referenced by operator()().