# Get Best Target Point On Group

Grammar — Returns the best location to place and AOE attack on the group with the specified parameters (group, minHits, damageBase, minScore, radius, from, range, bonusAttribute)
FlagsNative | Function

Returns the best location to place an AOE attack on a group of units with the specified parameters.

# Arguments

  • unitgroup — Group
  • int — Min Hits
  • int — Damage Base
  • fixed — Min Score
  • fixed — Radius
  • point — From
  • fixed — Range
  • int — Bonus Attribute

Returns — point

native point AIBestTargetPoint(
	unitgroup group,
	int minHits,
	int damageBase,
	fixed minScore,
	fixed radius,
	point from,
	fixed range,
	int bonusAttri,
);

Category: AI Advanced / Tactical / Functions

# Examples

# campaigns/liberty.sc2campaign

TactCampAI.galaxy

// L69
AIBestTargetPoint(
    AIEffectGroup(player, c_EF_OdinBarrageArea, scanGroup),
    3, // min hits
    200, // damage base
    3.0, // min score 
    barrageRadius,
    UnitGetPosition(aiUnit),
    AIAbilityFixed(player, c_AB_OdinBarrage, c_fieldRange0)+3, 
    c_unitAttributeNone
)
// L375
AIBestTargetPoint(
    AIEffectGroup(player, c_EF_OmegaStormArea, scanGroup),
    3, // min hits
    40, // damage base
    3.0, // min score
    AIEffectFixed(player, c_EF_OmegaStormArea, c_fieldAreaRadius0),
    UnitGetPosition(aiUnit),
    AIAbilityFixed(player, c_AB_QoBOmegaStorm, c_fieldRange0), 
    c_unitAttributeNone
)
// L467
AIBestTargetPoint(
    statisGroup,
    5, // min hits
    40, // damage base
    3.5, // score
    AIEffectFixed(player, c_EF_BioStatis, c_fieldAreaRadius0),
    UnitGetPosition(aiUnit),
    range,
    c_unitAttributeNone
)
// L69
AIBestTargetPoint(
    AIEffectGroup(player, c_EF_OdinBarrageArea, scanGroup),
    3, // min hits
    200, // damage base
    3.0, // min score 
    barrageRadius,
    UnitGetPosition(aiUnit),
    AIAbilityFixed(player, c_AB_OdinBarrage, c_fieldRange0)+3, 
    c_unitAttributeNone
)
// L375
AIBestTargetPoint(
    AIEffectGroup(player, c_EF_OmegaStormArea, scanGroup),
    3, // min hits
    40, // damage base
    3.0, // min score
    AIEffectFixed(player, c_EF_OmegaStormArea, c_fieldAreaRadius0),
    UnitGetPosition(aiUnit),
    AIAbilityFixed(player, c_AB_QoBOmegaStorm, c_fieldRange0), 
    c_unitAttributeNone
)
// L467
AIBestTargetPoint(
    statisGroup,
    5, // min hits
    40, // damage base
    3.5, // score
    AIEffectFixed(player, c_EF_BioStatis, c_fieldAreaRadius0),
    UnitGetPosition(aiUnit),
    range,
    c_unitAttributeNone
)
// L852
AIBestTargetPoint(
    enemyGroup,
    2, // min hits
    20, // damage base
    1.5, // min score 
    AIEffectFixed(player, c_EF_QueenMPEnsnareArea, c_fieldAreaRadius0),
    UnitGetPosition(aiUnit),
    AIAbilityFixed(player, c_AB_QueenMPEnsnare, c_fieldRange0)+3,
    c_unitAttributeNone
)

# mods/core.sc2mod

TactProtAI.galaxy

// L134
AIBestTargetPoint(
    rangeEnemyGroup,
    6, // min hits
    1, // damage base
    6.0, // min score
    c_forceFieldRadius,
    UnitGetPosition(aiUnit),
    c_forceFieldRange, 
    c_unitAttributeNone
)
// L570
AIBestTargetPoint(
meleeEnemyGroup,
4, // min hits
1, // damage base
3.5, // min score
c_mtwRadius,
UnitGetPosition(aiUnit),
c_mtwRange, 
c_unitAttributeNone
)
// L687
AIBestTargetPoint(
    vortexGroup,
    5, // min hits
    250, // damage base
    4.5, // score
    AIEffectFixed(player, c_EF_VortexArea, c_fieldAreaRadius0) + 1.0,
    UnitGetPosition(aiUnit),
    AIAbilityFixed(player, c_AB_Vortex, c_fieldRange0),
    c_unitAttributeMassive
)
// L1738
AIBestTargetPoint(
    targetGroup,
    3, // min hits
    100, // damage base
    2.0, // min score
    AIEffectFixed(player, c_EF_PurificationNovaArea, c_fieldAreaRadius0),
    UnitGetPosition(aiUnit),
    10,
    c_unitAttributeNone
)
// L1795
AIBestTargetPoint(
    targetGroup,
    3, // min hits
    100, // damage base
    2.0, // min score
    AIEffectFixed(player, c_EF_PurificationNovaArea, c_fieldAreaRadius0),
    UnitGetPosition(aiUnit),
    5,
    c_unitAttributeNone
)

# mods/core.sc2mod

TactTerrAI.galaxy

// L123
AIBestTargetPoint(
    AIEffectGroup(player, c_EF_BombardmentArea, scanGroup),
    3, // min hits
    150, // damage base
    3.0, // min score 
    barrageRadius,
    UnitGetPosition(aiUnit),
    AIAbilityFixed(player, c_AB_Bombardment, c_fieldRange0)+3, 
    c_unitAttributeNone
)
// L1355
AIBestTargetPoint(
    AIWeaponGroup(player, c_WE_AutoTurret, scanGroup),
    2, // min hits
    40, // damage base
    minScore, // min score
    AIWeaponFixed(player, c_WE_AutoTurret, c_fieldRange),
    UnitGetPosition(aiUnit),
    AIAbilityFixed(player, c_AB_AutoTurret, c_fieldRange0), 
    c_unitAttributeNone
)
// L1809
AIBestTargetPoint(
    targetGroupGround,
    minHits, // min hits
    80, // damage base
    minScore, // min score
    AIEffectFixed(player, c_EF_LiberatorAGSearch, c_fieldAreaRadius0),
    UnitGetPosition(aiUnit),
    10,
    c_unitAttributeNone
)

# mods/core.sc2mod

TactZergAI.galaxy

// L222
AIBestTargetPoint(
    AIEffectGroup(player, c_EF_ViperCloudSearch, rangedGroup),
    5, // min hits
    10, // damage base
    4.5, // min score 
    AIEffectFixed(player, c_EF_ViperCloudSearch, c_fieldAreaRadius0),
    UnitGetPosition(aiUnit),
    AIAbilityFixed(player, c_AB_ViperBlindingCloud, c_fieldRange0)+3,
    c_unitAttributeNone
)
// L314
AIBestTargetPoint(
    airGroup,
    1, // min hits
    50, // damage base
    0.5, // min score 
    AIEffectFixed(player, c_EF_ParasticBombArea, c_fieldAreaRadius0),
    UnitGetPosition(aiUnit),
    AIAbilityFixed(player, c_AB_ParasiticBomb, c_fieldRange0)+3,
    c_unitAttributeNone
)
// L537
AIBestTargetPoint(
    AIEffectGroup(player, c_EF_FungalGrowthSearch, enemyGroup),
    5, // min hits
    30, // damage base
    3.5, // min score
    AIEffectFixed(player, c_EF_FungalGrowthSearch, c_fieldAreaRadius0),
    UnitGetPosition(aiUnit),
    AIUnitFixed(player, c_ZU_Infestor, c_fieldSightRange), 
    c_unitAttributeNone
)

# mods/novastoryassets.sc2mod

MapScript.galaxy

// L720
AIBestTargetPoint(lv_nearbyValidUnits, 0, 200, 0.0, 5.0, UnitGetPosition(lp_rocketBarrageUnit), 14.0, 0)
// L1118
AIBestTargetPoint(lv_nearbyValidUnits, 0, 250, 0.0, 2.5, UnitGetPosition(lp_xanthos), 10.0, 0)
// L720
AIBestTargetPoint(lv_nearbyValidUnits, 0, 200, 0.0, 5.0, UnitGetPosition(lp_rocketBarrageUnit), 14.0, 0)
// L1118
AIBestTargetPoint(lv_nearbyValidUnits, 0, 250, 0.0, 2.5, UnitGetPosition(lp_xanthos), 10.0, 0)

# mods/starcoop/starcoop.sc2mod

LibCOMU.galaxy

// L1958
AIBestTargetPoint(UnitGroupFilterAlliance(lp_nearByUnits, lp_owner, c_unitAllianceEnemy, 0), 3, lv_abilityDamage, lv_score, lv_abilityAoE, UnitGetPosition(lp_aIUnit), lv_abilityRange, c_unitAttributeNone)
// L1996
AIBestTargetPoint(UnitGroupFilterAlliance(lp_nearByUnits, lp_owner, c_unitAllianceEnemy, 0), 1, lv_abilityDamage, lv_score, lv_abilityAoE, UnitGetPosition(lp_aIUnit), lv_abilityRange, c_unitAttributeNone)
// L2118
AIBestTargetPoint(lv_enemiesNearby, 4, FixedToInt(lv_abilityDamage), lv_score, lv_abilityAoE, UnitGetPosition(lp_aIUnit), lv_abilityRange, c_unitAttributeNone)
// L2218
AIBestTargetPoint(UnitGroupFilterAlliance(lp_nearByUnits, lp_owner, c_unitAllianceEnemy, 0), 2, lv_abilityDamage, lv_score, lv_abilityAoE, UnitGetPosition(lp_aIUnit), lv_abilityRange, c_unitAttributeNone)
// L2285
AIBestTargetPoint(UnitGroupFilterAlliance(lp_nearByUnits, lp_owner, c_unitAllianceEnemy, 0), 3, lv_abilityDamage, lv_score, lv_abilityAoE, UnitGetPosition(lp_aIUnit), lv_abilityRange, c_unitAttributeNone)
// L2405
AIBestTargetPoint(lv_enemiesNearby, 4, lv_abilityDamage, lv_score, lv_abilityRadius, UnitGetPosition(lp_aIUnit), lv_abilityRange, c_unitAttributeStructure)
// L2444
AIBestTargetPoint(lv_canidates, 3, lv_abilityDamage, lv_score, lv_abilityRadius, UnitGetPosition(lp_aIUnit), lv_abilityRange, c_unitAttributeNone)

# mods/starcoop/starcoop.sc2mod

TactCampAI.galaxy

// L36
AIBestTargetPoint(
	plagueGroup,
	5,		// min hits
	300,	// base damage
	4.5,	// score
	AIEffectFixed(player, c_EF_PlagueArea, c_fieldAreaRadius0) + 1.0,
	UnitGetPosition(aiUnit),
	AIAbilityFixed(player, c_AB_Plague, c_fieldRange0),
	c_unitAttributeNone
)
// L83
AIBestTargetPoint(
    AIEffectGroup(player, c_EF_DefilerDarkSwarm, nearbyAlliedUnits),
    5, // min hits
    10, // damage base
    4.5, // min score 
    AIEffectFixed(player, c_EF_DefilerDarkSwarm, c_fieldAreaRadius0),
    UnitGetPosition(aiUnit),
    AIAbilityFixed(player, c_AB_DefilerDarkSwarm, c_fieldRange0)+3,
    c_unitAttributeNone
)
// L228
AIBestTargetPoint(
    enemyGroup,
    2, // min hits
    20, // damage base
    1.5, // min score 
    AIEffectFixed(player, c_EF_QueenMPEnsnareArea, c_fieldAreaRadius0),
    UnitGetPosition(aiUnit),
    AIAbilityFixed(player, c_AB_QueenMPEnsnare, c_fieldRange0)+3,
    c_unitAttributeNone
)
// L419
AIBestTargetPoint(
    AIEffectGroup(player, c_EF_OdinBarrageArea, scanGroup),
    3, // min hits
    200, // damage base
    3.0, // min score 
    barrageRadius,
    UnitGetPosition(aiUnit),
    AIAbilityFixed(player, c_AB_OdinBarrage, c_fieldRange0)+3, 
    c_unitAttributeNone
)
// L731
AIBestTargetPoint(
    AIEffectGroup(player, c_EF_OmegaStormArea, scanGroup),
    3, // min hits
    40, // damage base
    3.0, // min score
    AIEffectFixed(player, c_EF_OmegaStormArea, c_fieldAreaRadius0),
    UnitGetPosition(aiUnit),
    AIAbilityFixed(player, c_AB_QoBOmegaStorm, c_fieldRange0), 
    c_unitAttributeNone
)
// L823
AIBestTargetPoint(
    statisGroup,
    5, // min hits
    40, // damage base
    3.5, // score
    AIEffectFixed(player, c_EF_BioStatis, c_fieldAreaRadius0),
    UnitGetPosition(aiUnit),
    range,
    c_unitAttributeNone
)
// L1205
AIBestTargetPoint(
    AIEffectGroup(player, c_EF_PsiStormArea, scanGroup),
    1, // min hits
    40, // damage base
    3.0, // min score 
    barrageRadius,
    UnitGetPosition(aiUnit),
    AIAbilityFixed(player, c_AB_HybridPsiStorm, c_fieldRange0)+3, 
    c_unitAttributeNone
)
// L1487
AIBestTargetPoint(
    AIEffectGroup(player, c_EF_OdinBarrageArea, scanGroup),
    3, // min hits
    200, // damage base
    3.0, // min score 
    barrageRadius,
    UnitGetPosition(aiUnit),
    AIAbilityFixed(player, c_AB_OdinMKIIBarrage, c_fieldRange0)+3, 
    c_unitAttributeNone
)

# mods/starcoop/starcoop.sc2mod

TactProtAI.galaxy

// L136
AIBestTargetPoint(
    rangeEnemyGroup,
    6, // min hits
    1, // damage base
    6.0, // min score
    c_forceFieldRadius,
    UnitGetPosition(aiUnit),
    c_forceFieldRange, 
    c_unitAttributeNone
)
// L552
AIBestTargetPoint(
meleeEnemyGroup,
4, // min hits
1, // damage base
3.5, // min score
c_mtwRadius,
UnitGetPosition(aiUnit),
c_mtwRange, 
c_unitAttributeNone
)
// L665
AIBestTargetPoint(
    vortexGroup,
    5, // min hits
    250, // damage base
    4.5, // score
    AIEffectFixed(player, c_EF_VortexArea, c_fieldAreaRadius0) + 1.0,
    UnitGetPosition(aiUnit),
    AIAbilityFixed(player, c_AB_Vortex, c_fieldRange0),
    c_unitAttributeMassive
)
// L1727
AIBestTargetPoint(
    targetGroup,
    3, // min hits
    100, // damage base
    2.0, // min score
    AIEffectFixed(player, c_EF_PurificationNovaArea, c_fieldAreaRadius0),
    UnitGetPosition(aiUnit),
    10,
    c_unitAttributeNone
)
// L1784
AIBestTargetPoint(
    targetGroup,
    3, // min hits
    100, // damage base
    2.0, // min score
    AIEffectFixed(player, c_EF_PurificationNovaArea, c_fieldAreaRadius0),
    UnitGetPosition(aiUnit),
    5,
    c_unitAttributeNone
)

# mods/starcoop/starcoop.sc2mod

TactTerrAI.galaxy

// L126
AIBestTargetPoint(
    AIEffectGroup(player, c_EF_BombardmentArea, scanGroup),
    3, // min hits
    150, // damage base
    3.0, // min score 
    barrageRadius,
    UnitGetPosition(aiUnit),
    AIAbilityFixed(player, c_AB_Bombardment, c_fieldRange0)+3, 
    c_unitAttributeNone
)
// L1327
AIBestTargetPoint(
    AIWeaponGroup(player, c_WE_AutoTurret, scanGroup),
    2, // min hits
    40, // damage base
    minScore, // min score
    AIWeaponFixed(player, c_WE_AutoTurret, c_fieldRange),
    UnitGetPosition(aiUnit),
    AIAbilityFixed(player, c_AB_AutoTurret, c_fieldRange0), 
    c_unitAttributeNone
)
// L1763
AIBestTargetPoint(
    targetGroupGround,
    minHits, // min hits
    80, // damage base
    minScore, // min score
    AIEffectFixed(player, c_EF_LiberatorAGSearch, c_fieldAreaRadius0),
    UnitGetPosition(aiUnit),
    10,
    c_unitAttributeNone
)

# mods/starcoop/starcoop.sc2mod

TactZergAI.galaxy

// L260
AIBestTargetPoint(
    AIEffectGroup(player, c_EF_ViperDisablingCloudSearch, rangedGroup),
    5, // min hits
    10, // damage base
    4.5, // min score 
    AIEffectFixed(player, c_EF_ViperDisablingCloudSearch, c_fieldAreaRadius0),
    UnitGetPosition(aiUnit),
    AIAbilityFixed(player, c_AB_ViperDisablingCloud, c_fieldRange0)+3,
    c_unitAttributeNone
)
// L299
AIBestTargetPoint(
    AIEffectGroup(player, c_EF_ViperCloudSearch, rangedGroup),
    5, // min hits
    10, // damage base
    4.5, // min score 
    AIEffectFixed(player, c_EF_ViperCloudSearch, c_fieldAreaRadius0),
    UnitGetPosition(aiUnit),
    AIAbilityFixed(player, c_AB_ViperBlindingCloud, c_fieldRange0)+3,
    c_unitAttributeNone
)
// L386
AIBestTargetPoint(
    airGroup,
    1, // min hits
    50, // damage base
    0.5, // min score 
    AIEffectFixed(player, c_EF_ParasticBombArea, c_fieldAreaRadius0),
    UnitGetPosition(aiUnit),
    AIAbilityFixed(player, c_AB_ParasiticBomb, c_fieldRange0)+3,
    c_unitAttributeNone
)
// L748
AIBestTargetPoint(
    AIEffectGroup(player, c_EF_FungalGrowthSearch, enemyGroup),
    5, // min hits
    30, // damage base
    3.5, // min score
    AIEffectFixed(player, c_EF_FungalGrowthSearch, c_fieldAreaRadius0),
    UnitGetPosition(aiUnit),
    AIUnitFixed(player, c_ZU_Infestor, c_fieldSightRange), 
    c_unitAttributeNone
)