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 ); };
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); }
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 ); };
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 ); };
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); }