# Tactical AI Filter Range
Grammar — Tactical AI Filter - limit search radius in filter to radius around aroundUnit
Flags —Native
|Action
Sets the specified AI Filter to only include units within the specified range of the specified unit. Use this and the other “Tactical AI Filter” actions to set up an AI Filter, which can then be used in a “Tactical AI Filter - Run” function to filter a unit group.
# Arguments
aifilter
— Filterunit
— AroundUnitfixed
— Radius
Returns — void
native void AISetFilterRange(
aifilter filter,
unit center,
fixed radius,
);
# Related
Category: AI Advanced / Filters / Actions
- Tactical AI Filter Alliance —
void
— AISetFilterAlliance - Tactical AI Filter Markers —
void
— AISetFilterMarker - Tactical AI Filter Remove Self —
void
— AISetFilterSelf - Tactical AI Filter Range —
void
— AISetFilterRange - Tactical AI Filter In Combat —
void
— AISetFilterInCombat - Tactical AI Filter Melee —
void
— AISetFilterMelee - Tactical AI Filter Life —
void
— AISetFilterLife - Tactical AI Filter Life Lost —
void
— AISetFilterLifeLost - Tactical AI Filter Life Sort Reference —
void
— AISetFilterLifeSortReference - Tactical AI Filter Life Modifier —
void
— AISetFilterLifeMod - Tactical AI Filter Life Per Marker —
void
— AISetFilterLifePerMarker - Tactical AI Filter Movement Plane —
void
— AISetFilterPlane - Tactical AI Filter Unit Filter —
void
— AISetFilterBits - Tactical AI Filter Shields —
void
— AISetFilterShields - Tactical AI Filter Energy —
void
— AISetFilterEnergy
# Examples
campaigns/liberty.sc2campaign — base.sc2data/TriggerLibs/Tactical/TactCampAI.galaxy:561
AISetFilterBits(filter, UnitFilterStr(AIAbilityStr(player, c_AB_ConsumeDNA, c_fieldFilters)));
AISetFilterAlliance(filter, c_playerGroupEnemy);
AISetFilterRange(filter, aiUnit, AIAbilityFixed(player, c_AB_ConsumeDNA, c_fieldRange0));
AISetFilterLifeSortReference(filter, damage, damage*c_distanceFromDamage);
campaigns/liberty.sc2campaign — base.sc2data/TriggerLibs/Tactical/TactCampAI.galaxy:662
AISetFilterAlliance(filter, c_playerGroupEnemy);
AISetFilterBits(filter, UnitFilterStr("Structure;Construction,Missile,Self,Stasis,Dead,Hidden,Invulnerable"));
AISetFilterRange(filter, aiUnit, AIAbilityFixed(player, c_AB_PlasmaBlast, c_fieldRange0));
// Prefer buildings that attack us on hard/insane.
campaigns/liberty.sc2campaign — base.sc2maps/maps/campaign/ttosh03a.sc2map/MapScript.galaxy:467
AISetFilterAlliance(lv_snipeFilter, c_playerGroupEnemy);
AISetFilterBits(lv_snipeFilter, libNtve_gf_ConvertTargetFilterStringToUnitFilter(CatalogFieldValueGet(c_gameCatalogAbil, "Snipe", "TargetFilters[" + IntToString(0) + "]", lp_owner)));
AISetFilterRange(lv_snipeFilter, lp_ghost, (StringToFixed(CatalogFieldValueGet(c_gameCatalogAbil, "Snipe", "Range[" + IntToString(0) + "]", lp_owner)) + 1.0));
AISetFilterLifePerMarker(lv_snipeFilter, StringToFixed(CatalogFieldValueGet(c_gameCatalogEffect, "SnipeDamage", "Amount", lp_owner)), lv_snipeMarker);
lp_candidates = AIGetFilterGroup(lv_snipeFilter, lp_candidates);
campaigns/liberty.sc2campaign/base.sc2maps/maps/campaign/ttosh03a.sc2map — MapScript.galaxy:467
AISetFilterAlliance(lv_snipeFilter, c_playerGroupEnemy);
AISetFilterBits(lv_snipeFilter, libNtve_gf_ConvertTargetFilterStringToUnitFilter(CatalogFieldValueGet(c_gameCatalogAbil, "Snipe", "TargetFilters[" + IntToString(0) + "]", lp_owner)));
AISetFilterRange(lv_snipeFilter, lp_ghost, (StringToFixed(CatalogFieldValueGet(c_gameCatalogAbil, "Snipe", "Range[" + IntToString(0) + "]", lp_owner)) + 1.0));
AISetFilterLifePerMarker(lv_snipeFilter, StringToFixed(CatalogFieldValueGet(c_gameCatalogEffect, "SnipeDamage", "Amount", lp_owner)), lv_snipeMarker);
lp_candidates = AIGetFilterGroup(lv_snipeFilter, lp_candidates);
campaigns/swarm.sc2campaign — base.sc2data/TriggerLibs/Tactical/TactCampAI.galaxy:561
AISetFilterBits(filter, UnitFilterStr(AIAbilityStr(player, c_AB_ConsumeDNA, c_fieldFilters)));
AISetFilterAlliance(filter, c_playerGroupEnemy);
AISetFilterRange(filter, aiUnit, AIAbilityFixed(player, c_AB_ConsumeDNA, c_fieldRange0));
AISetFilterLifeSortReference(filter, damage, damage*c_distanceFromDamage);
campaigns/swarm.sc2campaign — base.sc2data/TriggerLibs/Tactical/TactCampAI.galaxy:662
AISetFilterAlliance(filter, c_playerGroupEnemy);
AISetFilterBits(filter, UnitFilterStr("Structure;Construction,Missile,Self,Stasis,Dead,Hidden,Invulnerable"));
AISetFilterRange(filter, aiUnit, AIAbilityFixed(player, c_AB_PlasmaBlast, c_fieldRange0));
// Prefer buildings that attack us on hard/insane.
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactProtAI.galaxy:513
filter = AIFilter(player);
AISetFilterInCombat(filter, c_onlyInCombat);
AISetFilterRange(filter, unitToCheck, nearbyRange);
nearbyEnemies = AIGetFilterGroup(filter, scanGroup);
numEnemies = UnitGroupCount(nearbyEnemies, c_unitCountAll);
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactProtAI.galaxy:812
AISetFilterAlliance(filter, c_playerGroupEnemy);
AISetFilterBits(filter, UnitFilterStr(AIAbilityStr(player, c_AB_Feedback, c_fieldTargetFiltersAB)));
AISetFilterRange(filter, aiUnit, AIAbilityFixed(player, c_AB_Feedback, c_fieldRange0) + 1);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
AISetFilterEnergy(filter, minEnergy, c_noMax);
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:50
AISetFilterAlliance(filter, c_playerGroupEnemy);
AISetFilterBits(filter, UnitFilterStr(AIAbilityStr(player, c_AB_250mmStrikeCannons, c_fieldTargetFiltersAB)));
AISetFilterRange(filter, aiUnit, AIAbilityFixed(player, c_AB_250mmStrikeCannons, c_fieldRange0));
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
AISetFilterLife(filter, c_minCannonDamage, c_noMax);
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:216
AISetFilterAlliance(filterAI, c_playerGroupEnemy);
AISetFilterBits(filterAI, UnitFilterStr(AIAbilityStr(player, c_AB_Snipe, c_fieldTargetFiltersAB)));
AISetFilterRange(filterAI, aiUnit, AIAbilityFixed(player, c_AB_Snipe, c_fieldRange0) + 1);
AISetFilterLifePerMarker(filterAI, damage, mark);
AISetFilterLifeSortReference(filterAI, damage, damage*c_distanceFromDamage);
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:276
AISetFilterAlliance(filterAI, c_playerGroupEnemy);
AISetFilterBits(filterAI, UnitFilterStr(AIAbilityStr(player, c_AB_SteadyTargeting, c_fieldTargetFiltersAB)));
AISetFilterRange(filterAI, aiUnit, AIAbilityFixed(player, c_AB_SteadyTargeting, c_fieldRange0) + 1);
AISetFilterLifePerMarker(filterAI, damage, mark);
AISetFilterLifeSortReference(filterAI, damage, damage*c_distanceFromDamage);
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:1644
// Look for a new target
filter = AIFilter(player);
AISetFilterRange(filter, aiUnit, AIAbilityFixed(player, c_AB_LockOn, c_fieldRange0));
if (airOnly == true) {
AISetFilterPlane(filter, c_planeAir);
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactZergAI.galaxy:491
AISetFilterAlliance(filter, c_playerGroupEnemy);
AISetFilterBits(filter, UnitFilterStr(AIAbilityStr(player, c_AB_NeuralParasite, c_fieldTargetFiltersAB)));
AISetFilterRange(filter, aiUnit, AIAbilityFixed(player, c_AB_NeuralParasite, c_fieldRange0) + 1);
AISetFilterLife(filter, c_neuralParasiteMinVitality, c_noMax);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactZergAI.galaxy:597
AISetFilterAlliance(filter, c_playerGroupEnemy);
AISetFilterBits(filter, UnitFilterStr(AIWeaponStr(player, c_WE_InfestedTerran, c_fieldTargetFilters)));
AISetFilterRange(filter, aiUnit, AIAbilityFixed(player, c_AB_InfestedTerrans, c_fieldRange0) + 1);
AISetFilterLife(filter, c_noMin, c_noMax);
targetGroup = AIGetFilterGroup(filter, scanGroup);
mods/starcoop/starcoop.sc2mod — base.sc2data/LibCOMU.galaxy:2040
AISetFilterAlliance(lv_canidatesFilter, c_playerGroupEnemy);
AISetFilterBits(lv_canidatesFilter, UnitFilter((1 << c_targetFilterVisible), 0, (1 << c_targetFilterStructure) | (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32)) | (1 << (c_targetFilterHallucination - 32)) | (1 << (c_targetFilterInvulnerable - 32)) | (1 << (c_targetFilterSummoned - 32))));
AISetFilterRange(lv_canidatesFilter, lp_aIUnit, lv_abilityRange);
AISetFilterLifeSortReference(lv_canidatesFilter, 100.0, 50);
lv_canidates = AIGetFilterGroup(lv_canidatesFilter, lp_nearByUnits);
mods/starcoop/starcoop.sc2mod — base.sc2data/LibCOMU.galaxy:2136
AISetFilterAlliance(lv_targetFilter2, c_playerGroupEnemy);
AISetFilterBits(lv_targetFilter2, UnitFilter((1 << c_targetFilterVisible), 0, (1 << c_targetFilterStructure) | (1 << c_targetFilterMissile) | (1 << c_targetFilterBuried), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32)) | (1 << (c_targetFilterHallucination - 32)) | (1 << (c_targetFilterInvulnerable - 32))));
AISetFilterRange(lv_targetFilter2, lp_aIUnit, lv_abilityRange);
AISetFilterLifeSortReference(lv_targetFilter2, lv_abilityDamage, (lv_abilityDamage * 0.2));
lv_canidates = AIGetFilterGroup(lv_targetFilter2, lp_nearByUnits);
mods/starcoop/starcoop.sc2mod — base.sc2data/LibCOMU.galaxy:2187
AISetFilterPlane(lv_targetFilter2, c_planeGround);
AISetFilterBits(lv_targetFilter2, UnitFilter((1 << c_targetFilterVisible), 0, (1 << c_targetFilterStructure) | (1 << c_targetFilterMissile) | (1 << c_targetFilterBuried), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32)) | (1 << (c_targetFilterHallucination - 32)) | (1 << (c_targetFilterInvulnerable - 32))));
AISetFilterRange(lv_targetFilter2, lp_aIUnit, 10.0);
AISetFilterLifeSortReference(lv_targetFilter2, 160.0, 40);
lv_canidates = AIGetFilterGroup(lv_targetFilter2, lp_nearByUnits);
mods/starcoop/starcoop.sc2mod — base.sc2data/LibCOMU.galaxy:2332
AISetFilterLifeSortReference(lv_canidatesFilter, lv_slashDamage, (lv_slashDamage * 0.2));
if ((UnitAbilityGetCooldown(lp_aIUnit, "MutatorAmonZeratulBlink", "Abil/MutatorAmonZeratulBlink") <= 0.0)) {
AISetFilterRange(lv_canidatesFilter, lp_aIUnit, lv_blinkDistance);
lv_canidates = AIGetFilterGroup(lv_canidatesFilter, lv_enemyUnitsNearby);
if ((UnitGroupCount(lv_canidates, c_unitCountAlive) > 0)) {
mods/starcoop/starcoop.sc2mod — base.sc2data/LibCOMU.galaxy:2342
if ((UnitOrderHasAbil(lp_aIUnit, "MutatorAmonShadowBlade") == false) && (UnitAbilityGetCooldown(lp_aIUnit, "MutatorAmonShadowBlade", "Abil/MutatorAmonShadowBlade") <= 0.0)) {
AISetFilterRange(lv_canidatesFilter, lp_aIUnit, 1.0);
lv_canidates = AIGetFilterGroup(lv_canidatesFilter, lv_enemyUnitsNearby);
if ((UnitGroupCount(lv_canidates, c_unitCountAlive) > 0)) {
mods/starcoop/starcoop.sc2mod — base.sc2data/LibCOMU.galaxy:2428
AISetFilterLife(lv_primalSlashTargetFilter, lv_abilityDamage, 524287.0);
AISetFilterPlane(lv_primalSlashTargetFilter, c_planeGround);
AISetFilterRange(lv_primalSlashTargetFilter, lp_aIUnit, lv_abilityRadius);
lv_canidates = AIGetFilterGroup(lv_primalSlashTargetFilter, lv_enemiesNearby);
if ((UnitGroupCount(lv_canidates, c_unitCountAlive) > 0)) {
mods/starcoop/starcoop.sc2mod — base.sc2data/LibCOMU.galaxy:4518
AISetFilterAlliance(lv_enemyNearbyFilter, c_playerGroupEnemy);
AISetFilterBits(lv_enemyNearbyFilter, UnitFilter((1 << c_targetFilterVisible), 0, (1 << c_targetFilterMissile) | (1 << c_targetFilterUncommandable), (1 << (c_targetFilterStasis - 32)) | (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32)) | (1 << (c_targetFilterHallucination - 32)) | (1 << (c_targetFilterInvulnerable - 32))));
AISetFilterRange(lv_enemyNearbyFilter, lp_aIUnit, (UnitGetPropertyFixed(lp_aIUnit, c_unitPropRadius, c_unitPropNormal) + 1.0));
lv_enemyUnitsNearby = AIGetFilterGroup(lv_enemyNearbyFilter, lp_nearByUnits);
if ((UnitGroupCount(lv_enemyUnitsNearby, c_unitCountAlive) <= 0)) {
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactCampAI.galaxy:917
AISetFilterBits(filter, UnitFilterStr(AIAbilityStr(player, c_AB_ConsumeDNA, c_fieldFilters)));
AISetFilterAlliance(filter, c_playerGroupEnemy);
AISetFilterRange(filter, aiUnit, AIAbilityFixed(player, c_AB_ConsumeDNA, c_fieldRange0));
AISetFilterLifeSortReference(filter, damage, damage*c_distanceFromDamage);
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactCampAI.galaxy:992
AISetFilterBits(filter, UnitFilterStr(AIAbilityStr(player, c_AB_ConsumeDNA, c_fieldTargetFiltersAB)));
AISetFilterAlliance(filter, c_playerGroupEnemy);
AISetFilterRange(filter, aiUnit, (AIAbilityFixed(player, c_AB_ConsumeDNA, c_fieldRange0))-1);
AISetFilterLifeSortReference(filter, damage, damage*c_distanceFromDamage);
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactCampAI.galaxy:1106
AISetFilterAlliance(filter, c_playerGroupEnemy);
AISetFilterBits(filter, UnitFilterStr("-;Construction,Missile,Self,Stasis,Dead,Hidden,Invulnerable"));
AISetFilterRange(filter, aiUnit, AIAbilityFixed(player, "HybridDominatorVoidPlasmaBlast", c_fieldRange0));
damage = AIEffectFixed(player, c_EF_PlasmaBlastDamage, c_fieldAmount);
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactCampAI.galaxy:1386
AISetFilterAlliance(filter, c_playerGroupEnemy);
AISetFilterBits(filter, UnitFilterStr("Structure;Construction,Missile,Self,Stasis,Dead,Hidden,Invulnerable"));
AISetFilterRange(filter, aiUnit, AIAbilityFixed(player, c_AB_HybridPhaseShift, c_fieldRange0));
// Prefer buildings that attack us on hard/insane.
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:55
AISetFilterAlliance(filter, c_playerGroupEnemy);
AISetFilterBits(filter, UnitFilterStr(AIAbilityStr(player, c_AB_250mmStrikeCannons, c_fieldTargetFiltersAB)));
AISetFilterRange(filter, aiUnit, AIAbilityFixed(player, c_AB_250mmStrikeCannons, c_fieldRange0));
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
AISetFilterLife(filter, c_minCannonDamage, c_noMax);
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:218
AISetFilterAlliance(filterAI, c_playerGroupEnemy);
AISetFilterBits(filterAI, UnitFilterStr("Biological,Visible;Heroic,Self,Structure,Destructible,Stasis,Dead,Hidden,Invulnerable"));
AISetFilterRange(filterAI, aiUnit, AIAbilityFixed(player, c_AB_Snipe, c_fieldRange0) + 1);
AISetFilterLifePerMarker(filterAI, damage, mark);
AISetFilterLifeSortReference(filterAI, damage, damage*c_distanceFromDamage);
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:268
AISetFilterAlliance(filterAI, c_playerGroupEnemy);
AISetFilterBits(filterAI, UnitFilterStr(AIAbilityStr(player, c_AB_SteadyTargeting, c_fieldTargetFiltersAB)));
AISetFilterRange(filterAI, aiUnit, AIAbilityFixed(player, c_AB_SteadyTargeting, c_fieldRange0) + 1);
AISetFilterLifePerMarker(filterAI, damage, mark);
AISetFilterLifeSortReference(filterAI, damage, damage*c_distanceFromDamage);
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:1591
// Look for a new target
filter = AIFilter(player);
AISetFilterRange(filter, aiUnit, AIAbilityFixed(player, c_AB_LockOn, c_fieldRange0));
if (airOnly == true) {
AISetFilterPlane(filter, c_planeAir);
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactZergAI.galaxy:702
AISetFilterAlliance(filter, c_playerGroupEnemy);
AISetFilterBits(filter, UnitFilterStr(AIAbilityStr(player, c_AB_NeuralParasite, c_fieldTargetFiltersAB)));
AISetFilterRange(filter, aiUnit, AIAbilityFixed(player, c_AB_NeuralParasite, c_fieldRange0) + 1);
AISetFilterLife(filter, c_neuralParasiteMinVitality, c_noMax);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactZergAI.galaxy:808
AISetFilterAlliance(filter, c_playerGroupEnemy);
AISetFilterBits(filter, UnitFilterStr(AIWeaponStr(player, c_WE_InfestedTerran, c_fieldTargetFilters)));
AISetFilterRange(filter, aiUnit, AIAbilityFixed(player, c_AB_InfestedTerrans, c_fieldRange0) + 1);
AISetFilterLife(filter, c_noMin, c_noMax);
targetGroup = AIGetFilterGroup(filter, scanGroup);
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactZergAI.galaxy:1618
AISetFilterPlane(filter, c_planeGround);
AISetFilterAlliance(filter, c_playerGroupEnemy);
AISetFilterRange(filter, aiUnit, AIWeaponFixed(player, c_WE_LurkerMP, c_fieldRange0) - 1);
validTargets = AIGetFilterGroup(filter, scanGroup);
mods/warcoop/warclassicsystem.sc2mod — base.sc2data/TriggerLibs/Tactical/TacticalAIWar3.galaxy:142
//AISetFilterAlliance(filter, c_playerGroupEnemy);
AISetFilterBits(filter, UnitFilterStr(AIAbilityStr(player, c_AB_LightningShield, c_fieldTargetFiltersAB)));
AISetFilterRange(filter, aiUnit, AIAbilityFixed(player, c_AB_LightningShield, c_fieldRange0));
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
targetGroup = AIGetFilterGroup(filter, scanGroup);
mods/warcoop/warclassicsystem.sc2mod — base.sc2data/TriggerLibs/Tactical/TacticalAIWar3.galaxy:156
AISetFilterAlliance(filter, c_playerGroupEnemy);
AISetFilterBits(filter, uf);
AISetFilterRange(filter, aiUnit, range+3);
AISetFilterLife(filter, 0, maxlife);
AISetFilterLifeMod(filter, c_unitAttributeHeroic,damage*C_spellScaleHeroic-damage);
mods/warcoop/warclassicsystem.sc2mod — base.sc2data/TriggerLibs/Tactical/TacticalAIWar3.galaxy:440
if(chaos){
AISetFilterRange(filter, aiUnit, range);
AISetFilterLife(filter, c_noMin, c_noMax);
AISetFilterLifeMod(filter, c_unitAttributeHeroic,-100);
mods/warcoop/warclassicsystem.sc2mod — base.sc2data/TriggerLibs/Tactical/TacticalAIWar3.galaxy:445
}else{
AISetFilterBits(filter, UnitFilterStr("Summoned;Player,Ally,Neutral"));
AISetFilterRange(filter, aiUnit, range);
}
targetGroup = AIGetFilterGroup(filter, scanGroup);
mods/warcoop/warclassicsystem.sc2mod — base.sc2data/TriggerLibs/WarClassicTactical.galaxy:350
lv_radius = libNtve_gf_CatalogFieldValueGetAsReal(c_gameCatalogEffect, (((lp_abil) + "@Search")), "AreaArray[" + IntToString(0) + "].Radius", lp_owner);
lv_radius += UnitGetPropertyFixed(lp_aIUnit, c_unitPropRadius, c_unitPropCurrent);
AISetFilterRange(lv_rangeFilter, lp_aIUnit, lv_radius);
lv_unitsInRange = AIGetFilterGroup(lv_rangeFilter, lp_nearByUnits);
AISetFilterAlliance(lv_enemyNearbyFilter, c_playerGroupEnemy);
mods/warcoop/warclassicsystem.sc2mod — base.sc2data/TriggerLibs/WarClassicTactical.galaxy:552
lv_range = libGAwT_gf_AIEffectAbilRange(lp_owner, lp_aIUnit, lp_abil, lv_level, true);
lv_heal = libGAwT_gf_AIAbilAccumlatedAmount(lp_owner, lp_aIUnit, lp_abil, lv_level, "Heal");
AISetFilterRange(lv_rangeUnitFilter, lp_aIUnit, lv_range);
AISetFilterSelf(lv_rangeUnitFilter, lv_itUnit);
AISetFilterBits(lv_rangeUnitFilter, libGAwT_gf_AIEffectAbilTargetUnitFilter(lp_owner, lp_aIUnit, lp_abil, lv_level));