Difference between revisions of "Conditions and actions"
(→Basics) |
|||
(23 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
− | |||
− | |||
== Basics == | == Basics == | ||
[[File:Actions vs conditions.png|thumb|A target can be shared between action and condition nodes.]] | [[File:Actions vs conditions.png|thumb|A target can be shared between action and condition nodes.]] | ||
+ | |||
+ | [[File:Inverted condition.png|thumb|The invert checkbox only inverts the condition and not the result of the entire node. There is no selected enemy (Step 2) therefore "is carrying a resource" and "is not carrying a resource" makes no difference.]] | ||
+ | |||
+ | [[File:Condition any enemy resource.jpg|thumb|The invert checkbox only inverts the condition and not the result of the entire node. Both enemies are selected by the any selector in step 3. Therefore both conditions "is carrying a resource" and "is not carrying a resource" are evaluated valid.]] | ||
Both condition nodes and action nodes are mainly defined by a target and share almost the same evaluation process: | Both condition nodes and action nodes are mainly defined by a target and share almost the same evaluation process: | ||
Line 12: | Line 14: | ||
|valign="top" |1.||{{C}} colspan="2"|'''Get all the entities''' of the <code>target type</code>. | |valign="top" |1.||{{C}} colspan="2"|'''Get all the entities''' of the <code>target type</code>. | ||
|- | |- | ||
− | |valign="top" |2.||{{C}} colspan="2"|'''Remove all entities not matching''' the <code>target filters</code>. If there is not a single entity left the node is considered invalid. | + | |valign="top" |2.||{{C}} colspan="2"|'''Remove all entities not matching''' the <code>target filters</code>. If there is not a single entity left the node is considered invalid except for counting conditions that check the target count. |
|- | |- | ||
− | |valign="top" rowspan="2"|3.||{{C}} colspan="2"|'''Select the best remaining entity''' according to the <code>target selector</code>. | + | |valign="top" rowspan="2"|3.||{{C}} colspan="2"|'''Select the best remaining entity''' according to the <code>target selector</code>. The <code>any</code> and <code>all</code> selectors are special cases where all remaining entities are selected instead. |
|- | |- | ||
− | |The <code> | + | | |
− | + | |valign="top"|The <code>all</code> selector can only be used for moving, fleeing, tagging and untagging.<br>The <code>any</code> selector cannot be used for action nodes. | |
|- | |- | ||
|valign="top" rowspan="3"|4. | |valign="top" rowspan="3"|4. | ||
− | |'''Check the condition on the selected entity.''' | + | |valign="top"|'''Check the condition on the selected entity.''' The invert checkbox {{Tooltip|only inverts this condition and not the result of the entire node|See an example to the right.}}. |
− | |'''Execute the action on the selected entity.''' | + | |valign="top"|'''Execute the action on the selected entity.''' |
|- | |- | ||
− | |<code>Any</code> selector: Check if the condition is valid for at least one of the remaining entities. | + | |valign="top"|<code>Any</code> selector: Check if the condition is valid for at least one of the remaining entities. |
− | |When moving or fleeing the | + | |valign="top"|When moving or fleeing the <code>all</code> selector results in moving to or fleeing from the {{Tooltip|average position|There are thoughts of using the weighted average position instead.}}[https://forum.gladiabots.com/viewtopic.php?f=2&t=950] of all remaining entities. |
|- | |- | ||
− | |<code>All</code> selector: Check if the condition is valid for all of the remaining entities. | + | |valign="top"|<code>All</code> selector: Check if the condition is valid for all of the remaining entities. |
− | |When tagging or untagging the | + | |valign="top"|When tagging or untagging the <code>all</code> selector results in tagging or untagging all remaining entities. |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
|} | |} | ||
{{Information|Condition nodes: Checking the condition is the very last step after filtering and selecting took place.}} | {{Information|Condition nodes: Checking the condition is the very last step after filtering and selecting took place.}} | ||
− | == | + | == Target filters == |
− | + | Multiple filters from the same filter category are connected either with '''''OR''''' or with '''''AND''''' between them. | |
− | + | * If there are separate dots on the left of each filter from the same filter category, the filters are joined with '''''OR''''' within that filter category. | |
− | + | ** Example: In the filter category '''bot class''' filters are connected with '''''OR'''''. If the enemy is Assault class '''''OR''''' Machine gun class. | |
− | + | * If there is a line and a single dot on the left of all filters from the same filter category, the filters are joined with '''''AND''''' within that filter category. | |
− | + | ** Example: In the filter category '''tag''' filters are connected with '''''AND'''''. If the enemy is tagged 1 '''''AND''''' not tagged 2. | |
− | The | + | The different filter categories are always connected with '''''AND''''' between them. |
− | + | * Example: The enemy satisfies the '''bot class''' filters '''''AND''''' the '''tag''' filters. | |
− | + | ||
− | + | ||
− | + | ||
− | [[File: | + | [[File:Target filters and or.png|thumb|none|800px|Yellow: In the filter category '''bot class''' filters are connected with '''''OR''''' (indicated by separate dots).<br>Orange: In the filter category '''tag''' filters are connected with '''''AND''''' (indicated by a line and a single dot).<br>Blue: The different filter categories are always connected with '''''AND''''' between them.]] |
− | + | == Target selectors == | |
− | + | The following target selectors are valid for the different target types. As there is only one entity of the myself target type there is no need of a target selector in this case. | |
− | + | {|class="wikitable" | |
− | + | |{{dark}} colspan="2"|Selectors||{{dark}}|[[File:Targets_Self.png]] Myself | |
− | + | |{{dark}}|[[File:Targets_Ally.png]] Ally||{{dark}}|[[File:Targets_Enemy.png]] Enemy | |
− | + | |{{dark}}|[[File:Targets_Allybase.png]] Ally base||{{dark}}|[[File:Targets_Enemybase.png]] Enemy base | |
− | + | |{{dark}}|[[File:Targets_Resource.png]] Resource | |
− | + | |- | |
− | + | |{{dark}}|Distance from me | |
− | + | |{{dark}}|[[File:Selectors_ClosestToMe.png]]{{Tooltip| |Closest to me}} [[File:Selectors_FurthestFromMe.png]]{{Tooltip| |Furthest from me}} | |
− | + | |{{I}}||{{X}}||{{X}}||{{X}}||{{X}}||{{X}} | |
− | + | |- | |
− | + | |{{dark}}|Distance from arena borders | |
− | + | |{{dark}}|[[File:Selectors_ClosestToArenaBorders.png]]{{Tooltip| |Closest to arena borders}} [[File:Selectors_FurthestFromArenaBorders.png]]{{Tooltip| |Furthest from arena borders}} | |
− | + | |{{I}}||{{X}}||{{X}}||{{X}}||{{X}}||{{X}} | |
− | + | |- | |
+ | |{{dark}}|Health | ||
+ | |{{dark}}|[[File:Selectors_WeakestHealth.png]]{{Tooltip| |Weakest health}} [[File:Selectors_WeakestHealthRatio.png]]{{Tooltip| |Weakest health ratio}} [[File:Selectors_StrongestHealth.png]]{{Tooltip| |Strongest health}} [[File:Selectors_StrongestHealthRatio.png]]{{Tooltip| |Strongest health ratio}} | ||
+ | |{{I}}||{{X}}||{{X}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}}|Shield | ||
+ | |{{dark}}|[[File:Selectors_WeakestShield.png]]{{Tooltip| |Weakest shield}} [[File:Selectors_WeakestShieldRatio.png]]{{Tooltip| |Weakest shield ratio}} [[File:Selectors_StrongestShield.png]]{{Tooltip| |Strongest shield}} [[File:Selectors_StrongestShieldRatio.png]]{{Tooltip| |Strongest shield ratio}} | ||
+ | |{{I}}||{{X}}||{{X}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}}|Health plus shield | ||
+ | |{{dark}}|[[File:Selectors_WeakestHealthPlusShield.png]]{{Tooltip| |Weakest health plus shield}} [[File:Selectors_StrongestHealthPlusShield.png]]{{Tooltip| |Strongest health plus shield}} | ||
+ | |{{I}}||{{X}}||{{X}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}}|Misc | ||
+ | |{{dark}}|[[File:Selectors_Any.png]]{{Tooltip| |Any}} [[File:Selectors_All.png]]{{Tooltip| |All}} | ||
+ | |{{I}}||{{X}}||{{X}}||{{X}}||{{X}}||{{X}} | ||
+ | |- | ||
+ | |} | ||
− | + | === Weakest/strongest and weakest/strongest ratio === | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | < | + | If a Sniper has 2700 of 3000 shield remaining (90%) and a Machine gun has 3900 of 5000 shield remaining (78%) weakest shield would select the Sniper (2700 < 3900), weakest shield ratio would select the Machine gun (78% < 90%). |
+ | === Entity selection process in case of identical attributes === | ||
− | -- | + | The entity selection process sorts the remaining entities using the following comparison rules and keeps the first one. |
+ | |||
+ | {|class="wikitable" | ||
+ | !Closest!!Furthest | ||
+ | |- | ||
+ | |'''Closest to me''' | ||
+ | # Closest to self first | ||
+ | # In case of equality: Lowest distance from center of the map first. | ||
+ | # In case of equality: Lowest distance from horizontal axis first. | ||
+ | # In case of equality: Lowest distance from vertical axis first. | ||
+ | # In case of equality: Lowest [[Maps#Instantiation_order|instantiation order]] first. | ||
+ | |'''Furthest from me''' | ||
+ | # Furthest from self first | ||
+ | # In case of equality: Lowest distance from center of the map first. | ||
+ | # In case of equality: Lowest distance from horizontal axis first. | ||
+ | # In case of equality: Lowest distance from vertical axis first. | ||
+ | # In case of equality: Lowest [[Maps#Instantiation_order|instantiation order]] first. | ||
+ | |- | ||
+ | |'''Closest to arena borders''' | ||
+ | # Closest to arena borders first | ||
+ | # In case of equality: Lowest distance from center of the map first. | ||
+ | # In case of equality: Lowest distance from horizontal axis first. | ||
+ | # In case of equality: Lowest distance from vertical axis first. | ||
+ | # In case of equality: Lowest [[Maps#Instantiation_order|instantiation order]] first. | ||
+ | |'''Furthest from arena borders''' | ||
+ | # Furthest from arena borders first | ||
+ | # In case of equality: Lowest distance from center of the map first. | ||
+ | # In case of equality: Lowest distance from horizontal axis first. | ||
+ | # In case of equality: Lowest distance from vertical axis first. | ||
+ | # In case of equality: Lowest [[Maps#Instantiation_order|instantiation order]] first. | ||
+ | |- | ||
+ | !Weakest!!Strongest | ||
+ | |- | ||
+ | |'''Weakest health''' | ||
+ | # Weakest health first | ||
+ | # In case of equality: Weakest health ratio first | ||
+ | # In case of equality: Compare like '''closest to me''' | ||
+ | |'''Strongest health''' | ||
+ | # Strongest health first | ||
+ | # In case of equality: Strongest health ratio first | ||
+ | # In case of equality: Compare like '''closest to me''' | ||
+ | |- | ||
+ | |'''Weakest health ratio''' | ||
+ | # Weakest health ratio first | ||
+ | # In case of equality: Weakest health first | ||
+ | # In case of equality: Compare like '''closest to me''' | ||
+ | |'''Strongest health ratio''' | ||
+ | # Strongest health ratio first | ||
+ | # In case of equality: Strongest health first | ||
+ | # In case of equality: Compare like '''closest to me''' | ||
+ | |- | ||
+ | |'''Weakest shield''' | ||
+ | # Weakest shield first | ||
+ | # In case of equality: Weakest shield ratio first | ||
+ | # In case of equality: Compare like '''closest to me''' | ||
+ | |'''Strongest shield''' | ||
+ | # Strongest shield first | ||
+ | # In case of equality: Strongest shield ratio first | ||
+ | # In case of equality: Compare like '''closest to me''' | ||
+ | |- | ||
+ | |'''Weakest shield ratio''' | ||
+ | # Weakest shield ratio first | ||
+ | # In case of equality: Weakest shield first | ||
+ | # In case of equality: Compare like '''closest to me''' | ||
+ | |'''Strongest shield ratio''' | ||
+ | # Strongest shield ratio first | ||
+ | # In case of equality: Strongest shield first | ||
+ | # In case of equality: Compare like '''closest to me''' | ||
+ | |- | ||
+ | |'''Weakest health plus shield''' | ||
+ | # Weakest health plus shield first | ||
+ | # In case of equality: Compare like '''closest to me''' | ||
+ | |'''Strongest health plus shield''' | ||
+ | # Strongest health plus shield first | ||
+ | # In case of equality: Compare like '''closest to me''' | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | == Actions == | ||
+ | |||
+ | The following target types are valid for the different actions. | ||
+ | |||
+ | {|class="wikitable" | ||
+ | |{{dark}} colspan="2"|Actions||{{dark}}|[[File:Targets_Self.png]] Myself | ||
+ | |{{dark}}|[[File:Targets_Ally.png]] Ally||{{dark}}|[[File:Targets_Enemy.png]] Enemy | ||
+ | |{{dark}}|[[File:Targets_Allybase.png]] Ally base||{{dark}}|[[File:Targets_Enemybase.png]] Enemy base | ||
+ | |{{dark}}|[[File:Targets_Resource.png]] Resource | ||
+ | |- | ||
+ | |{{dark}} rowspan="2"|Move | ||
+ | |{{dark}}|[[File:Actions_move.png]]{{Tooltip| |Move toward}} [[File:Actions_flee.png]]{{Tooltip| |Flee from}} | ||
+ | |{{I}}||{{X}}||{{X}}||{{X}}||{{X}}||{{X}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Actions_Idle.png]]{{Tooltip| |Flee from}} | ||
+ | |{{I}}||{{I}}||{{I}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}}|Attack | ||
+ | |{{dark}}|[[File:Actions_attack.png]]{{Tooltip| |Attack}} | ||
+ | |{{I}}||{{I}}||{{X}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}} rowspan="3"|Resource | ||
+ | |{{dark}}|[[File:Actions_grab.png]]{{Tooltip| |Catch}} | ||
+ | |{{I}}||{{I}}||{{I}}||{{I}}||{{I}}||{{X}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Actions_score.png]]{{Tooltip| |Secure resource to}} | ||
+ | |{{I}}||{{I}}||{{I}}||{{X}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Actions_DropResource.png]]{{Tooltip| |Drop resource}} | ||
+ | |{{I}}||{{I}}||{{I}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}} rowspan="3"|Tag | ||
+ | |{{dark}}|[[File:Actions_ExclusiveBotTag1.png]]{{Tooltip| |Tag 1}} [[File:Actions_ExclusiveBotTag2.png]]{{Tooltip| |Tag 2}} [[File:Actions_ExclusiveBotTag3.png]]{{Tooltip| |Tag 3}} [[File:Actions_ExclusiveBotTag4.png]]{{Tooltip| |Tag 4}} [[File:Actions_ExclusiveBotTag5.png]]{{Tooltip| |Tag 5}} | ||
+ | |{{X}}||{{X}}||{{X}}||{{X}}||{{X}}||{{X}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Actions_BotTag1.png]]{{Tooltip| |Add tag 1}} [[File:Actions_BotTag2.png]]{{Tooltip| |Add tag 2}} [[File:Actions_BotTag3.png]]{{Tooltip| |Add tag 3}} [[File:Actions_BotTag4.png]]{{Tooltip| |Add tag 4}} [[File:Actions_BotTag5.png]]{{Tooltip| |Add tag 5}} | ||
+ | |{{X}}||{{X}}||{{X}}||{{X}}||{{X}}||{{X}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Actions_BotUntag1.png]]{{Tooltip| |Untag 1}} [[File:Actions_BotUntag2.png]]{{Tooltip| |Untag 2}} [[File:Actions_BotUntag3.png]]{{Tooltip| |Untag 3}} [[File:Actions_BotUntag4.png]]{{Tooltip| |Untag 4}} [[File:Actions_BotUntag5.png]]{{Tooltip| |Untag 5}} | ||
+ | |{{X}}||{{X}}||{{X}}||{{X}}||{{X}}||{{X}} | ||
+ | |- | ||
+ | |{{dark}} rowspan="3"|Team tag | ||
+ | |{{dark}}|[[File:Actions_ExclusiveTeamTagA.png]]{{Tooltip| |Team tag A}} [[File:Actions_ExclusiveTeamTagB.png]]{{Tooltip| |Team tag B}} [[File:Actions_ExclusiveTeamTagC.png]]{{Tooltip| |Team tag C}} [[File:Actions_ExclusiveTeamTagD.png]]{{Tooltip| |Team tag D}} [[File:Actions_ExclusiveTeamTagE.png]]{{Tooltip| |Team tag E}} | ||
+ | |{{X}}||{{X}}||{{X}}||{{X}}||{{X}}||{{X}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Actions_TeamTagA.png]]{{Tooltip| |Add team tag A}} [[File:Actions_TeamTagB.png]]{{Tooltip| |Add team tag B}} [[File:Actions_TeamTagC.png]]{{Tooltip| |Add team tag C}} [[File:Actions_TeamTagD.png]]{{Tooltip| |Add team tag D}} [[File:Actions_TeamTagE.png]]{{Tooltip| |Add team tag E}} | ||
+ | |{{X}}||{{X}}||{{X}}||{{X}}||{{X}}||{{X}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Actions_TeamUntagA.png]]{{Tooltip| |Team untag A}} [[File:Actions_TeamUntagB.png]]{{Tooltip| |Team untag B}} [[File:Actions_TeamUntagC.png]]{{Tooltip| |Team untag C}} [[File:Actions_TeamUntagD.png]]{{Tooltip| |Team untag D}} [[File:Actions_TeamUntagE.png]]{{Tooltip| |Team untag E}} | ||
+ | |{{X}}||{{X}}||{{X}}||{{X}}||{{X}}||{{X}} | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | == Conditions and filters == | ||
+ | |||
+ | The following filters are valid for the different target types. They are used for both: Conditions and filters. | ||
+ | |||
+ | {|class="wikitable" | ||
+ | |{{dark}} colspan="2"|Filters||{{dark}}|[[File:Targets_Self.png]] Myself | ||
+ | |{{dark}}|[[File:Targets_Ally.png]] Ally||{{dark}}|[[File:Targets_Enemy.png]] Enemy | ||
+ | |{{dark}}|[[File:Targets_Allybase.png]] Ally base||{{dark}}|[[File:Targets_Enemybase.png]] Enemy base | ||
+ | |{{dark}}|[[File:Targets_Resource.png]] Resource | ||
+ | |- | ||
+ | |{{dark}} rowspan="7"|Counting | ||
+ | |{{dark}}|[[File:Conditions_Counting_Exists.png]]{{Tooltip| |Exists}} | ||
+ | |{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Conditions_Counting_X1.png]]{{Tooltip| |Equals 1}} [[File:Conditions_Counting_X2.png]]{{Tooltip| |Equals 2}} [[File:Conditions_Counting_X3.png]]{{Tooltip| |Equals 3}} [[File:Conditions_Counting_X4.png]]{{Tooltip| |Equals 4}} [[File:Conditions_Counting_X5.png]]{{Tooltip| |Equals 5}} | ||
+ | |{{I}}||{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Conditions_Counting_X6.png]]{{Tooltip| |Equals 6}} [[File:Conditions_Counting_X7.png]]{{Tooltip| |Equals 7}} [[File:Conditions_Counting_X8.png]]{{Tooltip| |Equals 8}} [[File:Conditions_Counting_X9.png]]{{Tooltip| |Equals 9}} [[File:Conditions_Counting_X10.png]]{{Tooltip| |Equals 10}} | ||
+ | |{{I}}||{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Conditions_Counting_GE1.png]]{{Tooltip| |Greater equal 1}} [[File:Conditions_Counting_GE2.png]]{{Tooltip| |Greater equal 2}} [[File:Conditions_Counting_GE3.png]]{{Tooltip| |Greater equal 3}} [[File:Conditions_Counting_GE4.png]]{{Tooltip| |Greater equal 4}} [[File:Conditions_Counting_GE5.png]]{{Tooltip| |Greater equal 5}} | ||
+ | |{{I}}||{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Conditions_Counting_GE6.png]]{{Tooltip| |Greater equal 6}} [[File:Conditions_Counting_GE7.png]]{{Tooltip| |Greater equal 7}} [[File:Conditions_Counting_GE8.png]]{{Tooltip| |Greater equal 8}} [[File:Conditions_Counting_GE9.png]]{{Tooltip| |Greater equal 9}} [[File:Conditions_Counting_GE10.png]]{{Tooltip| |Greater equal 10}} | ||
+ | |{{I}}||{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Conditions_Counting_LE1.png]]{{Tooltip| |Less equal 1}} [[File:Conditions_Counting_LE2.png]]{{Tooltip| |Less equal 2}} [[File:Conditions_Counting_LE3.png]]{{Tooltip| |Less equal 3}} [[File:Conditions_Counting_LE4.png]]{{Tooltip| |Less equal 4}} [[File:Conditions_Counting_LE5.png]]{{Tooltip| |Less equal 5}} | ||
+ | |{{I}}||{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Conditions_Counting_LE6.png]]{{Tooltip| |Less equal 6}} [[File:Conditions_Counting_LE7.png]]{{Tooltip| |Less equal 7}} [[File:Conditions_Counting_LE8.png]]{{Tooltip| |Less equal 8}} [[File:Conditions_Counting_LE9.png]]{{Tooltip| |Less equal 9}} [[File:Conditions_Counting_LE10.png]]{{Tooltip| |Less equal 10}} | ||
+ | |{{I}}||{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}} | ||
+ | |- | ||
+ | |{{dark}}|Distance from me | ||
+ | |{{dark}}|[[File:Conditions_DistanceFromMe_ShortRange.png]]{{Tooltip| |At short range from me}} [[File:Conditions_DistanceFromMe_MediumRange.png]]{{Tooltip| |At medium range from me}} [[File:Conditions_DistanceFromMe_LongRange.png]]{{Tooltip| |At long range from me}} [[File:Conditions_DistanceFromMe_OutOfRange.png]]{{Tooltip| |Out of range from me}} | ||
+ | |{{I}}||{{X}}||{{X}}||{{X}}||{{X}}||{{X}} | ||
+ | |- | ||
+ | |{{dark}}|Distance from arena borders | ||
+ | |{{dark}}|[[File:Conditions_DistanceFromArenaBorders_ShortRange.png]]{{Tooltip| |At short range from arena borders}} [[File:Conditions_DistanceFromArenaBorders_MediumRange.png]]{{Tooltip| |At medium range from arena borders}} [[File:Conditions_DistanceFromArenaBorders_LongRange.png]]{{Tooltip| |At long range from arena borders}} [[File:Conditions_DistanceFromArenaBorders_OutOfRange.png]]{{Tooltip| |Out of range from arena borders}} | ||
+ | |{{X}}||{{X}}||{{X}}||{{X}}||{{X}}||{{X}} | ||
+ | |- | ||
+ | |{{dark}}|Resource | ||
+ | |{{dark}}|[[File:Conditions_Resource_CarriesResource.png]]{{Tooltip| |Carrying resource}} | ||
+ | |{{X}}||{{X}}||{{X}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}}|Health | ||
+ | |{{dark}}|[[File:Conditions_Health_health0to25pct.png]]{{Tooltip| |Health is 0 to 25 percents}} [[File:Conditions_Health_health25to50pct.png]]{{Tooltip| |Health is 25 to 50 percents}} [[File:Conditions_Health_health50to75pct.png]]{{Tooltip| |Health is 50 to 75 percents}} [[File:Conditions_Health_health75to100pct.png]]{{Tooltip| |Health is 75 to 100 percents}} | ||
+ | |{{X}}||{{X}}||{{X}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}}|Target health compared to mine | ||
+ | |{{dark}}|[[File:Conditions_Health_LowerHealth.png]]{{Tooltip| |With lower health}} [[File:Conditions_Health_SameHealth.png]]{{Tooltip| |With same health}} [[File:Conditions_Health_HigherHealth.png]]{{Tooltip| |With higher health}} | ||
+ | |{{I}}||{{X}}||{{X}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}}|Shield | ||
+ | |{{dark}}|[[File:Conditions_Shield_armor0to25pct.png]]{{Tooltip| |Shield is 0 to 25 percents}} [[File:Conditions_Shield_armor25to50pct.png]]{{Tooltip| |Shield is 25 to 50 percents}} [[File:Conditions_Shield_armor50to75pct.png]]{{Tooltip| |Shield is 50 to 75 percents}} [[File:Conditions_Shield_armor75to100pct.png]]{{Tooltip| |Shield is 75 to 100 percents}} | ||
+ | |{{X}}||{{X}}||{{X}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}}|Target shield compared to mine | ||
+ | |{{dark}}|[[File:Conditions_Shield_LowerShield.png]]{{Tooltip| |With lower shield}} [[File:Conditions_Shield_SameShield.png]]{{Tooltip| |With same shield}} [[File:Conditions_Shield_HigherShield.png]]{{Tooltip| |With higher shield}} | ||
+ | |{{I}}||{{X}}||{{X}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}}|Target health plus shield compared to mine | ||
+ | |{{dark}}|[[File:Conditions_Health+Shield_LowerHealthPlusShield.png]]{{Tooltip| |With lower health plus shield}} [[File:Conditions_Health+Shield_SameHealthPlusShield.png]]{{Tooltip| |With same health plus shield}} [[File:Conditions_Health+Shield_HigherHealthPlusShield.png]]{{Tooltip| |With higher health plus shield}} | ||
+ | |{{I}}||{{X}}||{{X}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}} rowspan="2"|My current action | ||
+ | |{{dark}}|[[File:Conditions_Attack_SelfAttacking.png]]{{Tooltip| |Attacked by me}} | ||
+ | |{{I}}||{{I}}||{{X}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Conditions_Move_SelfFleeingFrom.png]]{{Tooltip| |I am fleeing from}} [[File:Conditions_Move_SelfMovingTo.png]]{{Tooltip| |I am moving to}} | ||
+ | |{{I}}||{{X}}||{{X}}||{{X}}||{{X}}||{{X}} | ||
+ | |- | ||
+ | |{{dark}} rowspan="9"|Target current action | ||
+ | |{{dark}}|[[File:Conditions_Attack_AttackingSelf.png]]{{Tooltip| |Attacking me}} [[File:Conditions_Attack_AttackingAlly.png]]{{Tooltip| |Attacking an ally}} | ||
+ | |{{I}}||{{I}}||{{X}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Conditions_Attack_AttackingEnemy.png]]{{Tooltip| |Attacking an enemy}} | ||
+ | |{{X}}||{{X}}||{{I}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Conditions_Move_Fleeing.png]]{{Tooltip| |Fleeing}} | ||
+ | |{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Conditions_Move_FleeingFromSelf.png]]{{Tooltip| |Fleeing from me}} | ||
+ | |{{I}}||{{X}}||{{X}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Conditions_Move_FleeingFromAlly.png]]{{Tooltip| |Fleeing from an ally}} [[File:Conditions_Move_FleeingFromEnemy.png]]{{Tooltip| |Fleeing from an enemy}} [[File:Conditions_Move_FleeingFromResource.png]]{{Tooltip| |Fleeing from a resource}} [[File:Conditions_Move_FleeingFromAllyBase.png]]{{Tooltip| |Fleeing from an ally base}} [[File:Conditions_Move_FleeingFromEnemyBase.png]]{{Tooltip| |Fleeing from an enemy base}} | ||
+ | |{{X}}||{{X}}||{{X}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Conditions_Move_Moving.png]]{{Tooltip| |Moving}} | ||
+ | |{{H|Conditions only}}||{{H|Conditions only}}||{{H|Conditions only}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Conditions_Move_MovingToSelf.png]]{{Tooltip| |Moving to me}} | ||
+ | |{{I}}||{{X}}||{{X}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Conditions_Move_MovingToAlly.png]]{{Tooltip| |Moving to an ally}} [[File:Conditions_Move_MovingToEnemy.png]]{{Tooltip| |Moving to an enemy}} [[File:Conditions_Move_MovingToResource.png]]{{Tooltip| |Moving to a resource}} [[File:Conditions_Move_MovingToAllyBase.png]]{{Tooltip| |Moving to an ally base}} [[File:Conditions_Move_MovingToEnemyBase.png]]{{Tooltip| |Moving to an enemy base}} | ||
+ | |{{X}}||{{X}}||{{X}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Actions_Idle.png]]{{Tooltip| |Idle}} | ||
+ | |{{X}}||{{X}}||{{X}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}} rowspan="2"|{{Tooltip|Ally current action on target|In this filter category filters are connected with '''''AND'''''.}} | ||
+ | |{{dark}}|[[File:Conditions_Attack_AllyAttacking.png]]{{Tooltip| |Attacked by an ally}} | ||
+ | |{{I}}||{{I}}||{{X}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Conditions_Move_AllyFleeingFrom.png]]{{Tooltip| |An ally is fleeing from}} [[File:Conditions_Move_AllyMovingTo.png]]{{Tooltip| |An ally is moving to}} | ||
+ | |{{X}}||{{X}}||{{X}}||{{X}}||{{X}}||{{X}} | ||
+ | |- | ||
+ | |{{dark}} rowspan="2"|{{Tooltip|Enemy current action on target|In this filter category filters are connected with '''''AND'''''.}} | ||
+ | |{{dark}}|[[File:Conditions_Attack_EnemyAttacking.png]]{{Tooltip| |Attacked by an enemy}} | ||
+ | |{{X}}||{{X}}||{{I}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}}|[[File:Conditions_Move_EnemyFleeingFrom.png]]{{Tooltip| |An enemy is fleeing from}} [[File:Conditions_Move_EnemyMovingTo.png]]{{Tooltip| |An enemy is moving to}} | ||
+ | |{{X}}||{{X}}||{{X}}||{{X}}||{{X}}||{{X}} | ||
+ | |- | ||
+ | |{{dark}}|Bot class | ||
+ | |{{dark}}|[[File:Conditions_BotClass_AssaultClass.png]]{{Tooltip| |Assault class}} [[File:Conditions_BotClass_ShotgunClass.png]]{{Tooltip| |Shotgun class}} [[File:Conditions_BotClass_MachineGunClass.png]]{{Tooltip| |Machine gun class}} [[File:Conditions_BotClass_SniperClass.png]]{{Tooltip| |Sniper class}} | ||
+ | |{{X}}||{{X}}||{{X}}||{{I}}||{{I}}||{{I}} | ||
+ | |- | ||
+ | |{{dark}}|{{Tooltip|Tag|In this filter category filters are connected with '''''AND'''''.}} | ||
+ | |{{dark}}|[[File:Actions_ExclusiveBotTag1.png]]{{Tooltip| |Tagged 1}} [[File:Actions_ExclusiveBotTag2.png]]{{Tooltip| |Tagged 2}} [[File:Actions_ExclusiveBotTag3.png]]{{Tooltip| |Tagged 3}} [[File:Actions_ExclusiveBotTag4.png]]{{Tooltip| |Tagged 4}} [[File:Actions_ExclusiveBotTag1.png]]{{Tooltip| |Tagged 5}} | ||
+ | |{{X}}||{{X}}||{{X}}||{{X}}||{{X}}||{{X}} | ||
+ | |- | ||
+ | |{{dark}}|{{Tooltip|Team tag|In this filter category filters are connected with '''''AND'''''.}} | ||
+ | |{{dark}}|[[File:Actions_ExclusiveTeamTagA.png]]{{Tooltip| |Team tagged A}} [[File:Actions_ExclusiveTeamTagB.png]]{{Tooltip| |Team tagged B}} [[File:Actions_ExclusiveTeamTagC.png]]{{Tooltip| |Team tagged C}} [[File:Actions_ExclusiveTeamTagD.png]]{{Tooltip| |Team tagged D}} [[File:Actions_ExclusiveTeamTagE.png]]{{Tooltip| |Team tagged E}} | ||
+ | |{{X}}||{{X}}||{{X}}||{{X}}||{{X}}||{{X}} | ||
+ | |- | ||
+ | |} |
Latest revision as of 17:40, 11 August 2018
Contents
[hide]Basics
Both condition nodes and action nodes are mainly defined by a target and share almost the same evaluation process:
Step | Condition node | Action node |
---|---|---|
1. | Get all the entities of the target type .
| |
2. | Remove all entities not matching the target filters . If there is not a single entity left the node is considered invalid except for counting conditions that check the target count.
| |
3. | Select the best remaining entity according to the target selector . The any and all selectors are special cases where all remaining entities are selected instead.
| |
The all selector can only be used for moving, fleeing, tagging and untagging.The any selector cannot be used for action nodes.
| ||
4. | Check the condition on the selected entity. The invert checkbox only inverts this condition and not the result of the entire node![]() |
Execute the action on the selected entity. |
Any selector: Check if the condition is valid for at least one of the remaining entities.
|
When moving or fleeing the all selector results in moving to or fleeing from the average position![]() | |
All selector: Check if the condition is valid for all of the remaining entities.
|
When tagging or untagging the all selector results in tagging or untagging all remaining entities.
|
![]() |
Condition nodes: Checking the condition is the very last step after filtering and selecting took place. |
Target filters
Multiple filters from the same filter category are connected either with OR or with AND between them.
- If there are separate dots on the left of each filter from the same filter category, the filters are joined with OR within that filter category.
- Example: In the filter category bot class filters are connected with OR. If the enemy is Assault class OR Machine gun class.
- If there is a line and a single dot on the left of all filters from the same filter category, the filters are joined with AND within that filter category.
- Example: In the filter category tag filters are connected with AND. If the enemy is tagged 1 AND not tagged 2.
The different filter categories are always connected with AND between them.
- Example: The enemy satisfies the bot class filters AND the tag filters.
Target selectors
The following target selectors are valid for the different target types. As there is only one entity of the myself target type there is no need of a target selector in this case.
Weakest/strongest and weakest/strongest ratio
If a Sniper has 2700 of 3000 shield remaining (90%) and a Machine gun has 3900 of 5000 shield remaining (78%) weakest shield would select the Sniper (2700 < 3900), weakest shield ratio would select the Machine gun (78% < 90%).
Entity selection process in case of identical attributes
The entity selection process sorts the remaining entities using the following comparison rules and keeps the first one.
Closest | Furthest |
---|---|
Closest to me
|
Furthest from me
|
Closest to arena borders
|
Furthest from arena borders
|
Weakest | Strongest |
Weakest health
|
Strongest health
|
Weakest health ratio
|
Strongest health ratio
|
Weakest shield
|
Strongest shield
|
Weakest shield ratio
|
Strongest shield ratio
|
Weakest health plus shield
|
Strongest health plus shield
|
Actions
The following target types are valid for the different actions.
Conditions and filters
The following filters are valid for the different target types. They are used for both: Conditions and filters.