All pastes #250180 Raw Edit

Anonymous

public text v1 · immutable
#250180 ·published 2006-11-16 18:19 UTC
rendered paste body
bool Unit::SortTargets()
{
	if(GetTypeId() == TYPEID_PLAYER)
		return false;

	DEBUG_LOG("Start victim sorting ");
	for(HateList::iterator iter = m_hateList.begin(); iter != m_hateList.end(); iter++)
	{
		if(iter->UnitGuid)
		{
			Unit* unit = ObjectAccessor::Instance().GetUnit(*this, iter->UnitGuid);
			if(!unit || ((Creature*)this)->IsOutOfThreatArea(unit))
			{
				DEBUG_LOG("1");
				m_offlineList.push_back(Hostil(iter->UnitGuid, iter->Threat));
				m_hateList.erase(iter);
				DEBUG_LOG("2");
			}
		}
	}

    DEBUG_LOG("Threat list sorting complite");
	if(IsHateOfflineListEmpty()) //if HateOfflineList is empty after ThreatList filtering
		return true;

	for(HateOfflineList::iterator itr = m_offlineList.begin(); itr != m_offlineList.end(); itr++)
	{
		if(itr->UnitGuid)
		{
			Unit* unit = ObjectAccessor::Instance().GetUnit(*this, itr->UnitGuid);
			if(unit && !((Creature*)this)->IsOutOfThreatArea(unit))
			{
				RestoreVictimInHateList(unit);
				m_hateList.push_back(Hostil(itr->UnitGuid, itr->Threat));
				m_offlineList.erase(itr);
			}
		}
	}

	DEBUG_LOG("Stop victim sorting ");
	if(IsThreatListEmpty()) //if no one in ThreatList after HateOfflineList filtering
		return false;

	return true;
}