6#ifndef SF_THREATMANAGER
7#define SF_THREATMANAGER
24#define THREAT_UPDATE_INTERVAL 1 * IN_MILLISECONDS
196 float getThreat(
Unit* victim,
bool alsoSearchOfflineList =
false);
221 template<
class PREDICATE>
void resetAggro(PREDICATE predicate)
224 if (threatList.empty())
227 for (ThreatContainer::StorageType::iterator itr = threatList.begin(); itr != threatList.end(); ++itr)
@ SPELL_SCHOOL_MASK_NORMAL
void updateOnlineStatus()
HostileReference(Unit *refUnit, ThreatManager *threatManager, float threat)
void setOnlineOfflineState(bool isOnline)
bool operator==(const HostileReference &hostileRef) const
void sourceObjectDestroyLink()
void targetObjectBuildLink()
void addTempThreat(float threat)
HostileReference * next()
void setAccessibleState(bool isAccessible)
void setTempThreat(float threat)
bool isAccessible() const
void addThreat(float modThreat)
uint64 getUnitGuid() const
void fireStatusChanged(ThreatRefStatusChangeEvent &threatRefStatusChangeEvent)
void addThreatPercent(int32 percent)
void targetObjectDestroyLink()
float getTempThreatModifier() const
float iTempThreatModifier
void setThreat(float threat)
Reference< TO, FROM > * next()
bool operator()(HostileReference const *a, HostileReference const *b) const
ThreatOrderPred(bool ascending=false)
HostileReference * getReferenceByTarget(Unit *victim) const
void setDirty(bool isDirty)
HostileReference * addThreat(Unit *victim, float threat)
friend class ThreatManager
HostileReference * getMostHated() const
void modifyThreatPercent(Unit *victim, int32 percent)
std::list< HostileReference * > StorageType
StorageType const & getThreatList() const
void addReference(HostileReference *hostileRef)
HostileReference * selectNextVictim(Creature *attacker, HostileReference *currentVictim) const
void remove(HostileReference *hostileRef)
ThreatContainer & getOnlineContainer()
ThreatManager(Unit *owner)
void tauntFadeOut(Unit *taunter)
float getThreat(Unit *victim, bool alsoSearchOfflineList=false)
void setDirty(bool isDirty)
HostileReference * getCurrentVictim() const
ThreatContainer::StorageType const & getThreatList() const
ThreatContainer iThreatOfflineContainer
ThreatContainer iThreatContainer
void modifyThreatPercent(Unit *victim, int32 percent)
HostileReference * iCurrentVictim
void addThreat(Unit *victim, float threat, SpellSchoolMask schoolMask=SPELL_SCHOOL_MASK_NORMAL, SpellInfo const *threatSpell=NULL)
void setCurrentVictim(HostileReference *hostileRef)
bool isThreatListEmpty() const
void processThreatEvent(ThreatRefStatusChangeEvent *threatRefStatusChangeEvent)
void tauntApply(Unit *taunter)
void _addThreat(Unit *victim, float threat)
void resetAggro(PREDICATE predicate)
ThreatContainer::StorageType const & getOfflineThreatList() const
friend class HostileReference
bool isNeedUpdateToClient(uint32 time)
void doAddThreat(Unit *victim, float threat)
ThreatContainer & getOfflineContainer()