# Tactical AI Filter Markers
Grammar — Tactical AI Filter - Remove from filter all units that have less than min or more than max of marker
Flags —Native
|Action
If a “marker per life” has not been set then a counting marker may be used. A counting marker ensures the indicated range of tactical AI markers exist on a candidate or else the unit will be filtered out. A range of 0 to 1 will prevent more than one unit from casting on the same target at the same time.
# Arguments
aifilter
— Filterint
— Minint
— Maxmarker
— Marker
Returns — void
native void AISetFilterMarker(
aifilter filter,
int min,
int max,
marker m,
);
# 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/void.sc2campaign — base.sc2data/TriggerLibs/Tactical/TactCampAI.galaxy:845
AISetFilterBehaviorCount(filter, c_noBehaviorMin, c_noBehaviorMax, c_AB_QueenMPEnsnare);
//AISetFilterLifePerMarker(filter, damage, mark);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
enemyGroup = AIGetFilterGroup(filter, scanGroup);
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactProtAI.galaxy:813
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/TactProtAI.galaxy:1564
AISetFilterAlliance(filter, c_playerGroupEnemy);
AISetFilterBehaviorCount(filter, c_noBehaviorMin, c_noBehaviorMax, c_BF_Disintegration);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
AISetFilterBits(filter, UnitFilterStr(AIAbilityStr(player, c_AB_Disintegration, c_fieldTargetFiltersAB)));
AISetFilterLife(filter, c_aiDisintegrationMinDamage, c_noMax);
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:51
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);
AISetFilterLifeSortReference(filter, damage, damage*c_distanceFromDamage);
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:1168
AISetFilterAlliance(filter, c_playerGroupAlly);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
AISetFilterSelf(filter, aiUnit);
targetGroup = AIGetFilterGroup(filter, targetGroup);
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:1188
AISetFilterAlliance(filter, c_playerGroupAlly);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
AISetFilterSelf(filter, aiUnit);
targetGroup = AIGetFilterGroup(filter, targetGroup);
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:1236
damage = AIEffectFixed(player, c_EF_SeekerDamage, c_fieldAmount);
AISetFilterLife(filter, damage*c_minDamageFraction, c_noMax);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
AISetFilterLifeSortReference(filter, damage, damage*c_distanceFromDamage);
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactZergAI.galaxy:34
filter = AIFilter(player);
AISetFilterAlliance(filter, c_playerGroupAlly);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
AISetFilterLifeLost(filter, AIEffectFixed(player, c_EF_Transfusion, c_fieldEffectChange0) - 20, c_noMax);
group = AIGetFilterGroup(filter, group);
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactZergAI.galaxy:311
AISetFilterPlane(filter, c_planeAir);
AISetFilterBehaviorCount(filter, c_noBehaviorMin, c_noBehaviorMax, c_BF_ViperParasiticBomb);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
airGroup = AIGetFilterGroup(filter, scanGroup);
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactZergAI.galaxy:493
AISetFilterRange(filter, aiUnit, AIAbilityFixed(player, c_AB_NeuralParasite, c_fieldRange0) + 1);
AISetFilterLife(filter, c_neuralParasiteMinVitality, c_noMax);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
AISetFilterCanAttackEnemy(filter, enemyGroundCount, enemyAirCount);
targetGroup = AIGetFilterGroup(filter, scanGroup);
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactZergAI.galaxy:503
//
filter = AIFilter(player);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, gameMark);
targetGroup = AIGetFilterGroup(filter, targetGroup);
if (targetGroup == null) {
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactZergAI.galaxy:534
filter = AIFilter(player);
AISetFilterBehaviorCount(filter, c_noBehaviorMin, c_noBehaviorMax, c_BF_FungalGrowth);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, gameMark);
enemyGroup = AIGetFilterGroup(filter, scanGroup);
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactZergAI.galaxy:965
AISetFilterAlliance(filter, c_playerGroupEnemy);
AISetFilterBehaviorCount(filter, c_noBehaviorMin, c_noBehaviorMax, c_BF_Contaminate);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
AISetFilterBits(filter, UnitFilterStr(AIAbilityStr(player, c_AB_Contaminate, c_fieldTargetFiltersAB)));
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactZergAI.galaxy:1038
AISetFilterLife(filter, minVitality, c_noMax);
AISetFilterBehaviorCount(filter, c_noBehaviorMin, c_noBehaviorMax, c_BF_Corruption);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
AISetFilterBits(filter, UnitFilterStr(AIAbilityStr(player, c_AB_Corruption, c_fieldTargetFiltersAB)));
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactCampAI.galaxy:80
AISetFilterPlane(filter, c_planeGround);
AISetFilterBehaviorCount(filter, c_noBehaviorMin, c_noBehaviorMax, c_BF_DefilerDarkSwarm);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
nearbyAlliedUnits = AIGetFilterGroup(filter, nearbyAlliedUnits);
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactCampAI.galaxy:221
AISetFilterBehaviorCount(filter, c_noBehaviorMin, c_noBehaviorMax, c_AB_QueenMPEnsnare);
//AISetFilterLifePerMarker(filter, damage, mark);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
enemyGroup = AIGetFilterGroup(filter, scanGroup);
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactCampAI.galaxy:1655
filter = AIFilter(player);
AISetFilterAlliance(filter, c_playerGroupAlly);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
AISetFilterLifeLost(filter, AIEffectFixed(player, c_EF_Transfusion, c_fieldEffectChange0) - 20, c_noMax);
group = AIGetFilterGroup(filter, group);
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactProtAI.galaxy:1558
AISetFilterAlliance(filter, c_playerGroupEnemy);
AISetFilterBehaviorCount(filter, c_noBehaviorMin, c_noBehaviorMax, c_BF_Disintegration);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
AISetFilterBits(filter, UnitFilterStr(AIAbilityStr(player, c_AB_Disintegration, c_fieldTargetFiltersAB)));
AISetFilterLife(filter, c_aiDisintegrationMinDamage, c_noMax);
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:56
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);
AISetFilterLifeSortReference(filter, damage, damage*c_distanceFromDamage);
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:1141
AISetFilterAlliance(filter, c_playerGroupAlly);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
AISetFilterSelf(filter, aiUnit);
targetGroup = AIGetFilterGroup(filter, targetGroup);
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:1161
AISetFilterAlliance(filter, c_playerGroupAlly);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
AISetFilterSelf(filter, aiUnit);
targetGroup = AIGetFilterGroup(filter, targetGroup);
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:1208
damage = AIEffectFixed(player, c_EF_SeekerDamage, c_fieldAmount);
AISetFilterLife(filter, damage*c_minDamageFraction, c_noMax);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
AISetFilterLifeSortReference(filter, damage, damage*c_distanceFromDamage);
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactZergAI.galaxy:32
filter = AIFilter(player);
AISetFilterAlliance(filter, c_playerGroupAlly);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
AISetFilterLifeLost(filter, AIEffectFixed(player, c_EF_Transfusion, c_fieldEffectChange0) - 20, c_noMax);
group = AIGetFilterGroup(filter, group);
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactZergAI.galaxy:383
AISetFilterPlane(filter, c_planeAir);
AISetFilterBehaviorCount(filter, c_noBehaviorMin, c_noBehaviorMax, c_BF_ViperParasiticBomb);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
airGroup = AIGetFilterGroup(filter, scanGroup);
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactZergAI.galaxy:704
AISetFilterRange(filter, aiUnit, AIAbilityFixed(player, c_AB_NeuralParasite, c_fieldRange0) + 1);
AISetFilterLife(filter, c_neuralParasiteMinVitality, c_noMax);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
AISetFilterCanAttackEnemy(filter, enemyGroundCount, enemyAirCount);
targetGroup = AIGetFilterGroup(filter, scanGroup);
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactZergAI.galaxy:714
//
filter = AIFilter(player);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, gameMark);
targetGroup = AIGetFilterGroup(filter, targetGroup);
if (targetGroup == null) {
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactZergAI.galaxy:745
filter = AIFilter(player);
AISetFilterBehaviorCount(filter, c_noBehaviorMin, c_noBehaviorMax, c_BF_FungalGrowth);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, gameMark);
enemyGroup = AIGetFilterGroup(filter, scanGroup);
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactZergAI.galaxy:1174
AISetFilterAlliance(filter, c_playerGroupEnemy);
AISetFilterBehaviorCount(filter, c_noBehaviorMin, c_noBehaviorMax, c_BF_Contaminate);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
AISetFilterBits(filter, UnitFilterStr(AIAbilityStr(player, c_AB_Contaminate, c_fieldTargetFiltersAB)));
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactZergAI.galaxy:1247
AISetFilterLife(filter, minVitality, c_noMax);
AISetFilterBehaviorCount(filter, c_noBehaviorMin, c_noBehaviorMax, c_BF_Corruption);
AISetFilterMarker(filter, c_noMarkersMin, c_noMarkersMax, mark);
AISetFilterBits(filter, UnitFilterStr(AIAbilityStr(player, c_AB_Corruption, c_fieldTargetFiltersAB)));
mods/warcoop/warclassicsystem.sc2mod — base.sc2data/TriggerLibs/Tactical/TacticalAIWar3.galaxy:143
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);
if (targetGroup == null) {
mods/warcoop/warclassicsystem.sc2mod — base.sc2data/TriggerLibs/Tactical/TacticalAIWar3.galaxy:192
unitgroup targets;
//Killable Filters Marker;
AISetFilterMarker(filterKillable, c_noMarkersMin, c_noMarkersMax, mark);
AISetFilterMarker(filterKillableBonus, c_noMarkersMin, c_noMarkersMax, mark);
//UnKillable Filters Marker;
mods/warcoop/warclassicsystem.sc2mod — base.sc2data/TriggerLibs/Tactical/TacticalAIWar3.galaxy:193
//Killable Filters Marker;
AISetFilterMarker(filterKillable, c_noMarkersMin, c_noMarkersMax, mark);
AISetFilterMarker(filterKillableBonus, c_noMarkersMin, c_noMarkersMax, mark);
//UnKillable Filters Marker;
AISetFilterLifePerMarker(filter, damage, mark);