18 #ifndef OREGON_GRIDNOTIFIERS_H 19 #define OREGON_GRIDNOTIFIERS_H 76 i_creature(c), i_radius(radius) {}
89 i_map(map), cell(c), p(pair), i_radius(radius) {}
113 iter->GetSource()->Update(i_timeDiff);
118 updateObjects<Player>(m);
122 updateObjects<Creature>(m);
126 updateObjects<GameObject>(m);
130 updateObjects<DynamicObject>(m);
134 updateObjects<Corpse>(m);
146 : i_source(src), i_message(msg), i_phaseMask(src->GetPhaseMask()), i_distSq(dist* dist)
147 , team((own_team_only && src->GetTypeId() ==
TYPEID_PLAYER) ? ((
Player*)src)->GetTeam() : 0)
158 if (plr == i_source || (team && plr->
GetTeam() != team))
165 session->SendPacket(i_message);
195 void VisitHelper(
Unit* target);
202 template<
class Check>
220 template<
class Check>
249 if (itr->GetSource()->InSamePhase(i_phaseMask))
250 i_do(itr->GetSource());
256 if (itr->GetSource()->InSamePhase(i_phaseMask))
257 i_do(itr->GetSource());
262 if (itr->GetSource()->InSamePhase(i_phaseMask))
263 i_do(itr->GetSource());
269 if (itr->GetSource()->InSamePhase(i_phaseMask))
270 i_do(itr->GetSource());
276 if (itr->GetSource()->InSamePhase(i_phaseMask))
277 i_do(itr->GetSource());
285 template<
class Check>
300 template<
class Check>
314 template<
class Check>
321 GameObjectListSearcher(
WorldObject const* searcher, std::list<GameObject*>& objects, Check& check) : i_phaseMask(searcher->GetPhaseMask()), i_objects(objects), i_check(check) {}
331 template<
class Check>
338 UnitSearcher(
WorldObject const* searcher,
Unit*& result, Check& check) : i_phaseMask(searcher->GetPhaseMask()), i_object(result), i_check(check) {}
347 template<
class Check>
363 template<
class Check>
370 UnitListSearcher(
WorldObject const* searcher, std::list<Unit*>& objects, Check& check) : i_phaseMask(searcher->GetPhaseMask()), i_objects(objects), i_check(check) {}
380 template<
class Check>
395 template<
class Check>
409 template<
class Check>
416 CreatureListSearcher(
WorldObject const* searcher, std::list<Creature*>& objects, Check& check) : i_phaseMask(searcher->GetPhaseMask()), i_objects(objects), i_check(check) {}
430 : i_phaseMask(searcher->GetPhaseMask()), i_do(_do) {}
435 i_do(itr->GetSource());
443 template<
class Check>
457 template<
class Check>
465 : i_phaseMask(searcher->GetPhaseMask()), i_objects(objects), i_check(check) {}
483 i_do(itr->GetSource());
497 : i_searcher(searcher), i_dist(_dist), i_do(_do) {}
502 if (itr->GetSource()->InSamePhase(i_searcher) && itr->GetSource()->IsWithinDist(i_searcher, i_dist))
503 i_do(itr->GetSource());
521 return i_funit->IsWithinDistInMap(u, i_range);
523 bool operator()(
Corpse* u);
530 return i_funit->IsWithinDistInMap(u, i_range);
532 template<
class NOT_INTERESTED>
bool operator()(NOT_INTERESTED*)
591 i_range = i_obj.GetDistance(go);
615 if (go->
GetGoType() == i_type && i_obj.IsWithinDistInMap(go, i_range))
617 i_range = i_obj.GetDistance(go);
642 if (go->
GetEntry() == i_entry && i_obj.IsWithinDistInMap(go, i_range))
644 i_range = i_obj.GetDistance(go);
701 if (u->
IsAlive() && u->
IsInCombat() && !i_obj->IsHostileTo(u) && i_obj->IsWithinDistInMap(u, i_range) &&
717 if (u->
IsAlive() && u->
IsInCombat() && i_obj->IsFriendlyTo(u) && i_obj->IsWithinDistInMap(u, i_range) &&
734 if (u->
IsAlive() && i_obj->IsWithinDistInMap(u, i_range) && !i_funit->IsFriendlyTo(u))
763 return i_obj->IsWithinDistInMap(u, i_range) && !i_funit->IsFriendlyTo(u);
807 if (u->
IsAlive() && i_obj->IsWithinDistInMap(u, i_range))
825 (i_funit->IsInCombatWith(u) || i_funit->IsHostileTo(u)) && i_obj->CanSeeOrDetect(u))
827 i_range = i_obj->GetDistance(u);
846 : i_obj(obj), i_funit(funit), i_range(range)
848 Unit const* check = i_funit;
860 if (!i_funit->IsValidAttackTarget(u))
863 return u->
IsInMap(i_obj) && u->
InSamePhase(i_obj) && i_obj->IsWithinDistInMap(u, i_range);
877 : i_funit(funit), i_enemy(enemy), i_range(range)
919 m_range = (dist == 0 ? 9999 : dist);
923 if (!me->IsWithinDistInMap(u, m_range))
926 if (!me->IsValidAttackTarget(u))
932 m_range = me->GetDistance(u);
948 m_range = (dist == 0.f ? 9999.f : dist);
949 m_force = (dist == 0.f ?
false :
true);
953 if (!me->IsWithinDistInMap(u, m_range))
956 if (!me->CanSeeOrDetect(u))
961 if (!me->IsValidAttackTarget(u))
964 else if (!me->canStartAttack(u,
false))
967 m_range = me->GetDistance(u);
995 if (!_me->IsValidAttackTarget(u))
1014 : i_funit(funit), i_enemy(enemy), i_range(range)
1026 if (!i_funit->IsWithinDistInMap(u, i_range))
1030 if (!i_funit->IsWithinLOSInMap(u))
1045 : i_obj(obj), i_enemy(enemy), i_range(range) {}
1051 i_range = i_obj->GetDistance(u);
1074 : i_obj(obj), i_entry(entry), i_alive(alive), i_range(range) {}
1078 if (u->
GetEntry() == i_entry && u->
IsAlive() == i_alive && i_obj.IsWithinDistInMap(u, i_range))
1080 i_range = i_obj.GetDistance(u);
1105 if (_reqAlive && !u->
IsAlive())
1108 if (!i_obj->IsWithinDistInMap(u, i_range))
1123 : i_obj(obj), i_range(range) {}
1127 if (i_obj.IsWithinDistInMap(u, i_range))
1129 i_range = i_obj.GetDistance(u);
1149 return m_pObject->IsWithinDistInMap(pGo, m_fRange,
false) && m_pObject->InSamePhase(pGo);
1177 if ((!m_uiEntry || pGo->
GetEntry() == m_uiEntry) && m_pObject->IsWithinDist(pGo, m_fRange,
false))
1194 if ((!m_uiEntry || pUnit->
GetEntry() == m_uiEntry) && m_pObject->IsWithinDist(pUnit, m_fRange,
false))
1213 if (!pPlayer->
IsGameMaster() && pPlayer->
IsAlive() && !pUnit->IsWithinDist(pPlayer, fRange,
false))
1230 return (object->
GetTypeId() == _typeId) == _equals;
1241 template<
class Builder>
1249 for (
uint32 i = 0; i < i_data_cache.size(); ++i)
1250 delete i_data_cache[i];
1252 void operator()(
Player* p);
1260 template<
class Builder>
1269 for (
size_t i = 0; i < i_data_cache.size(); ++i)
1270 for (
int j = 0; j < i_data_cache[i].size(); ++j)
1271 delete i_data_cache[i][j];
1273 void operator()(
Player* p);
uint32 GetCreatureTypeMask() const
UnitListSearcher(WorldObject const *searcher, std::list< Unit * > &objects, Check &check)
uint32 const CREATURE_TYPEMASK_HUMANOID_OR_UNDEAD
GameObjectListSearcher(WorldObject const *searcher, std::list< GameObject * > &objects, Check &check)
PlayerDistWorker(WorldObject const *searcher, float _dist, Do &_do)
std::list< Player * > & i_objects
float GetLastRange() const
void Visit(GridRefManager< NOT_INTERESTED > &)
GameObjectWithDbGUIDCheck(WorldObject const &, uint32 db_guid)
void Visit(GridRefManager< NOT_INTERESTED > &)
float GetLastRange() const
std::list< GameObject * > & i_objects
NearestAttackableUnitInObjectRangeCheck(WorldObject const *obj, Unit const *funit, float range)
void Visit(GridRefManager< T > &)
GameObjectSearcher(WorldObject const *searcher, GameObject *&result, Check &check)
AnyUnitInObjectRangeCheck(WorldObject const *obj, float range)
ObjectUpdater(const uint32 &diff)
uint32 GetMaxHealth() const
bool operator()(GameObject *go)
NearestHostileUnitInAttackDistanceCheck(Creature const *creature, float dist=0.f)
WorldObjectListSearcher(WorldObject const *searcher, std::list< WorldObject * > &objects, Check &check)
uint32 GetFaction() const
void Visit(GameObjectMapType &m)
uint32 GetDBTableGUIDLow() const
void Visit(CreatureMapType &m)
AllCreaturesOfEntryInRange(const WorldObject *pObject, uint32 uiEntry, float fMaxRange)
void Visit(CorpseMapType &)
void Visit(GridRefManager< NOT_INTERESTED > &)
AnyUnfriendlyUnitInObjectRangeCheck(WorldObject const *obj, Unit const *funit, float range)
NearestGameObjectTypeInObjectRangeCheck(WorldObject const &obj, GameobjectTypes type, float range)
GameObjectLastSearcher(WorldObject const *searcher, GameObject *&result, Check &check)
void Visit(CorpseMapType &m)
void Visit(GridRefManager< NOT_INTERESTED > &)
CallOfHelpCreatureInRangeDo(Unit *funit, Unit *enemy, float range)
NearestPlayerInObjectRangeCheck(WorldObject const &obj, float range)
void Visit(GridRefManager< NOT_INTERESTED > &)
const WorldObject * m_pObject
void Visit(GridRefManager< NOT_INTERESTED > &)
AllFriendlyCreaturesInGrid(Unit const *obj)
void Visit(GridRefManager< NOT_INTERESTED > &)
MostHPMissingInRange(Unit const *obj, float range, uint32 hp)
NearestCreatureEntryWithLiveStateInObjectRangeCheck(WorldObject const &obj, uint32 entry, bool alive, float range)
void operator()(Creature *u) const
bool operator()(WorldObject *object)
void Visit(GameObjectMapType &m)
AnyFriendlyUnitInObjectRangeCheck(WorldObject const *obj, Unit const *funit, float range, bool playerOnly=false)
float GetLastRange() const
void Visit(GridRefManager< SKIP > &)
bool operator()(Creature *u)
bool IsWithinLOSInMap(const WorldObject *obj) const
FriendlyMissingBuffInRange(Unit const *obj, float range, uint32 spellid)
AnyAoETargetUnitInObjectRangeCheck(WorldObject const *obj, Unit const *funit, float range)
void updateObjects(GridRefManager< T > &m)
LocalizedPacketListDo(Builder &builder)
WorldObject const & i_obj
bool IsGameMaster() const
bool operator()(Creature *u)
void Visit(GridRefManager< T > &)
WorldObject const & i_obj
bool operator()(Player *u)
bool operator()(GameObject const *go) const
void Visit(GridRefManager< NOT_INTERESTED > &)
void operator()(WorldObject *) const
void Visit(PlayerMapType &)
AllGameObjectsWithEntryInRange(const WorldObject *pObject, uint32 uiEntry, float fMaxRange)
uint32 GetCreatureType() const
PlayerListSearcher(WorldObject const *searcher, std::list< Player * > &objects, Check &check)
void Visit(PlayerMapType &m)
float GetLastRange() const
std::set< Unit * > i_visibleNow
bool operator()(NOT_INTERESTED *)
UnitSearcher(WorldObject const *searcher, Unit *&result, Check &check)
void Visit(GridRefManager< NOT_INTERESTED > &)
void Visit(CreatureMapType &m)
void Visit(DynamicObjectMapType &m)
WorldObject const & i_obj
WorldObject const * i_searcher
bool CanAssistTo(const Unit *u, const Unit *enemy, bool checkfaction=true) const
DelayedUnitRelocation(Cell &c, CellCoord &pair, Map &map, float radius)
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true) const
const WorldObject * m_pObject
bool operator()(Creature *u)
uint64 GetCharmerOrOwnerGUID() const
void Visit(GridRefManager< T > &)
VisibleNotifier(Player &player)
NearestHostileUnitInAggroRangeCheck(Creature const *creature, bool useLOS=false)
WorldObject const * i_obj
std::vector< WorldPacket * > i_data_cache
DynamicObject & i_dynobject
void Visit(GridRefManager< T > &)
bool operator()(Creature *u)
CreatureRelocationNotifier(Creature &c, float radius)
void Visit(PlayerMapType &m)
bool operator()(GameObject *go)
const WorldObject * m_pObject
void operator()(GameObject *u) const
std::list< Unit * > & i_objects
float GetLastRange() const
void Visit(GridRefManager< NOT_INTERESTED > &)
MessageDistDeliverer(WorldObject *src, WorldPacket *msg, float dist, bool own_team_only=false)
VisibleChangesNotifier(WorldObject &object)
std::list< WorldObject * > & i_objects
void Visit(PlayerMapType &m)
LocalizedPacketDo(Builder &builder)
WorldObject const & i_obj
float GetLastRange() const
WorldObjectSearcher(WorldObject const *searcher, WorldObject *&result, Check &check)
void Visit(GridRefManager< NOT_INTERESTED > &)
DynamicObjectUpdater(DynamicObject &dynobject, Unit *caster)
bool operator()(Player *u)
WorldObject const * i_obj
void Visit(GridRefManager< NOT_INTERESTED > &)
void Visit(GridRefManager< NOT_INTERESTED > &)
WorldObject const * i_obj
void Visit(GridRefManager< T > &)
bool operator()(GameObject *go)
NearestHostileUnitCheck(Creature const *creature, float dist=0, bool playerOnly=false)
ObjectTypeIdCheck(TypeID typeId, bool equals)
bool IsFriendlyTo(Unit const *unit) const
void Visit(GridRefManager< NOT_INTERESTED > &)
void Visit(GridRefManager< NOT_INTERESTED > &)
WorldObject const & i_obj
bool IsInMap(const WorldObject *obj) const
struct GameObjectInfo::@59::@82 fishinghole
Player::ClientGUIDs vis_guids
AIRelocationNotifier(Unit &unit)
WorldObject const * i_obj
std::vector< WorldPacketList > i_data_cache
PlayerRelocationNotifier(Player &player)
AnyAssistCreatureInRangeCheck(Unit *funit, Unit *enemy, float range)
void SendPacket(Player *plr)
void Visit(GridRefManager< T > &m)
void Visit(GridRefManager< NOT_INTERESTED > &)
WorldObjectWorker(WorldObject const *searcher, Do const &_do)
CreatureListSearcher(WorldObject const *searcher, std::list< Creature * > &objects, Check &check)
AnyPlayerInObjectRangeCheck(WorldObject const *obj, float range, bool reqAlive=true)
bool operator()(GameObject *go) const
struct GameObjectInfo::@59::@68 spellFocus
void Respawn(bool force=false)
NearestGameObjectEntryInObjectRangeCheck(WorldObject const &obj, uint32 entry, float range)
CreatureWorker(WorldObject const *searcher, Do &_do)
UnitLastSearcher(WorldObject const *searcher, Unit *&result, Check &check)
bool HaveAtClient(WorldObject const *u) const
GameobjectTypes GetGoType() const
void Visit(PlayerMapType &m)
bool operator()(Creature *u)
CreatureLastSearcher(WorldObject const *searcher, Creature *&result, Check &check)
PlayerAtMinimumRangeAway(Unit const *unit, float fMinRange)
PlayerSearcher(WorldObject const *searcher, Player *&result, Check &check)
CreatureWithDbGUIDCheck(WorldObject const *, uint32 lowguid)
GameObjectInfo const * GetGOInfo() const
float GetLastRange() const
AnyUnfriendlyNoTotemUnitInObjectRangeCheck(WorldObject const *obj, Unit const *funit, float range)
WorldObject const * i_obj
GridUpdater(GridType &grid, uint32 diff)
bool IsHostileTo(Unit const *unit) const
PlayerWorker(WorldObject const *searcher, Do &_do)
bool HasUnitState(const uint32 f) const
std::set< uint64 > ClientGUIDs
FriendlyCCedInRange(Unit const *obj, float range)
void Visit(GridRefManager< NOT_INTERESTED > &)
WorldSession * GetSession() const
uint32 GetDBTableGUIDLow() const
AllWorldObjectsInRange(const WorldObject *pObject, float fMaxRange)
std::vector< WorldPacket * > WorldPacketList
NearestGameObjectFishingHole(WorldObject const &obj, float range)
std::list< Creature * > & i_objects
CannibalizeObjectCheck(Unit *funit, float range)
bool operator()(Player *u)
bool InSamePhase(uint32 phasemask) const
WorldObject const * i_obj
void Visit(CreatureMapType &m)
WorldObject const * i_obj
void operator()(Creature *u)
void Visit(DynamicObjectMapType &m)
virtual void AttackStart(Unit *)
bool isTargetableForAttack(bool checkFakeDeath=true) const
void Visit(GridRefManager< T > &m)
CreatureSearcher(WorldObject const *searcher, Creature *&result, Check &check)
NearestAssistCreatureInCreatureRangeCheck(Creature *obj, Unit *enemy, float range)
GameObjectFocusCheck(Unit const *unit, uint32 focusId)
void Visit(CorpseMapType &m)
bool HasAura(uint32 spellId, uint8 effIndex=0) const
void operator()(Corpse *) const