Exemple #1
0
Unit* AscentScriptCreatureAI::GetBestUnitTarget( TargetFilter pTargetFilter, float pMinRange, float pMaxRange )
{
	//Build potential target list
	UnitArray TargetArray;
	if ( pTargetFilter & TargetFilter_Friendly )
	{
		for ( unordered_set< Object* >::iterator ObjectIter = _unit->GetInRangeSetBegin(); ObjectIter != _unit->GetInRangeSetEnd(); ++ObjectIter )
		{
			if ( IsValidUnitTarget( *ObjectIter, pTargetFilter, pMinRange, pMaxRange ) )
				TargetArray.push_back( TO_UNIT( *ObjectIter ) );
		};

		if ( IsValidUnitTarget( _unit, pTargetFilter ) )
			TargetArray.push_back( _unit );	//Also add self as possible friendly target
	}
	else
	{
		for ( unordered_set< Object* >::iterator ObjectIter = _unit->GetInRangeOppFactsSetBegin(); ObjectIter != _unit->GetInRangeOppFactsSetEnd(); ++ObjectIter )
		{
			if ( IsValidUnitTarget( *ObjectIter, pTargetFilter, pMinRange, pMaxRange ) )
				TargetArray.push_back( TO_UNIT( *ObjectIter ) );
		};
	};

	return ChooseBestTargetInArray( TargetArray, pTargetFilter );
};
Exemple #2
0
Unit* ArcScriptCreatureAI::GetBestPlayerTarget(TargetFilter pFilter)
{
	//Build potential target list
	UnitArray TargetArray;
	for( set<Player*>::iterator PlayerIter = _unit->GetInRangePlayerSetBegin(); PlayerIter != _unit->GetInRangePlayerSetEnd(); ++PlayerIter ) 
	{ 
		if( IsValidUnitTarget(*PlayerIter, pFilter) ) TargetArray.push_back(static_cast<Unit*>(*PlayerIter));
	}

	return ChooseBestTargetInArray(TargetArray, pFilter);
}
Exemple #3
0
Unit *MoonScriptCreatureAI::GetBestPlayerTarget( TargetFilters pTargetFilter, float pMinRange, float pMaxRange)
{
	//Build potential target list
	UnitArray TargetArray;
	for ( unordered_set< Player *>::iterator PlayerIter = _unit->GetInRangePlayerSetBegin(); PlayerIter != _unit->GetInRangePlayerSetEnd(); ++PlayerIter ) 
	{
		if ( IsValidUnitTarget( *PlayerIter, pTargetFilter, pMinRange, pMaxRange ) )
			TargetArray.push_back( TO_UNIT( *PlayerIter ) );
	};

	return ChooseBestTargetInArray( TargetArray, pTargetFilter );
};
Exemple #4
0
Unit *MoonScriptCreatureAI::GetBestUnitTarget( TargetFilters pTargetFilter, float pMinRange, float pMaxRange)
{
	//Build potential target list
	UnitArray TargetArray;
	if ( pTargetFilter & TargetFilter_Friendly )
	{
		for ( unordered_set< Object *>::iterator ObjectIter = _unit->GetInRangeSetBegin(); ObjectIter != _unit->GetInRangeSetEnd(); ++ObjectIter )
		{
			// Trololololo.......
			if( IsValidUnitTarget(*ObjectIter, pTargetFilter, pMinRange, pMaxRange) )
			{
				if(pTargetFilter & TargetFilter_ManaClass)
				{
					if(TO_UNIT(*ObjectIter)->GetPowerType() == POWER_TYPE_MANA)
						TargetArray.push_back( TO_UNIT( *ObjectIter ) );
				}
				else
					TargetArray.push_back( TO_UNIT( *ObjectIter ) );
			}
		};

		if ( IsValidUnitTarget( _unit, pTargetFilter ) )
			TargetArray.push_back( _unit );	//Also add self as possible friendly target
	}
	else
	{
		for ( unordered_set< Object *>::iterator ObjectIter = _unit->GetInRangeOppFactsSetBegin(); ObjectIter != _unit->GetInRangeOppFactsSetEnd(); ++ObjectIter )
		{
			// Problem, Dylan?
			if( IsValidUnitTarget(*ObjectIter, pTargetFilter, pMinRange, pMaxRange) )
			{
				if(pTargetFilter & TargetFilter_ManaClass)
				{
					if(TO_UNIT(*ObjectIter)->GetPowerType() == POWER_TYPE_MANA)
						TargetArray.push_back( TO_UNIT( *ObjectIter ) );
				}
				else
					TargetArray.push_back( TO_UNIT( *ObjectIter ) );
			}
		};
	};

	return ChooseBestTargetInArray( TargetArray, pTargetFilter );
};
Exemple #5
0
Unit* ArcScriptCreatureAI::GetBestUnitTarget(TargetFilter pFilter)
{
	//Build potential target list
	UnitArray TargetArray;
	if( pFilter & TargetFilter_Friendly )
	{
		for( std::set<Object*>::iterator ObjectIter = _unit->GetInRangeSetBegin(); ObjectIter != _unit->GetInRangeSetEnd(); ++ObjectIter )
		{
			if( IsValidUnitTarget(*ObjectIter, pFilter) ) TargetArray.push_back(static_cast<Unit*>(*ObjectIter));
		}
		if( IsValidUnitTarget(_unit, pFilter) ) TargetArray.push_back(_unit);	//Also add self as possible friendly target
	}
	else
	{
		for( std::set<Object*>::iterator ObjectIter = _unit->GetInRangeOppFactsSetBegin(); ObjectIter != _unit->GetInRangeOppFactsSetEnd(); ++ObjectIter )
		{
			if( IsValidUnitTarget(*ObjectIter, pFilter) ) TargetArray.push_back(static_cast<Unit*>(*ObjectIter));
		}
	}

	return ChooseBestTargetInArray(TargetArray, pFilter);
}