Data/Validators

## Introduction

Validators are boolean conditions that can be applied to any effect. They are also used as conditions for autocasting abilities, as well as determine effect to execute in switch effects and for Actor Events. Validators control whether an effect runs based on the all the validators for the effect returning true.

Validators placed in the first effect of an ability (Like abilites of type Effect - Instant, or Effect - Target) are known as Root Validators. Validators normally will simply cause the effect to fail, but root validators will prevent the use of the ability instead of just failing to run the effect.

## Common Fields

All the following fields are found in all validators

### Find

Tells if the validators has to find the said result, or the opposite. This inverts the result, a bit like Combine **Negate** field does.

* For example, a unit type can be a Marine. If you want it to be anything BUT a marine, uncheck "Find", which will mean that Marines are forbidden by this validator.
* Take note that on some validators, the word "**Enabled**" is used instead, for the same function. This can be seen on Unit State validators.

### Ignore if Channeled

Flag to ignore the validator while channeling. This can apply to persistent effects and behaviors which can be channeled.

### Which Unit / Unit / Location / Impact Location / Impact Unit

Usually the main unit concerned by the validator.

### Other Unit

As far as it has been tested, this field implies that the "Unit" has to be doing or not the validated action, equal to this field.

* Usually set to None, mainly useless for most validators.
* DOES NOT indicates at which location the Unit is doing the validated action. Ex: A "Unit Weapon Firing", validating "Unit" target location, with "Caster Unit" location set on "Other Unit" has nothing to do with the target unit attacking caster.

Rather, this means: with the "Find" enabled, the Target unit will validated true if doing the same action as the Caster, if both are firing or not firing their weapons. In this very situation, the validator was not checking if any weapon was firing, but rather, both doing the same action, related to weapon firing/or not. Not using "Other Unit" makes the validator back to normal, only checking if the weapon fires or not (according to Find field) at the "Unit" location. When 2 units are compared, the Find field will rather indicate if the result must be equal or not for both.

However, this statement is oddly false in a particular case: Unit in Weapon Range for example, will identify the "Other Unit" as the target to be in range of the "Unit" location. The subtility in this very case is that each of the "Unit" and "Other Unit" are in range of each others, relative to the "Unit" location at which the weapon range is tested or rather, both are in range of the weapon, which makes them have their common situation result as "validated true" (would this fail if the weapon had a minimum range? to be confirmed). One has to guess that some validators, such as Unit Compare Order Queue have their proper "Target Location" location field AND a "Other Unit" field apart, which is a good clue for understand it. There is also Unit Compare Order Target Range, such as the Zealot's *Charge Minimum Trigger Distance* (validator) that seems to omit this rule.

### Result - Failure

The error message that is displayed when the validator fails as part of Root Validation.

* Some premade types of results have some unusual effects:
	1. "OK" message, which causes the validator to be ignored (returns true forever). This is also particular for Function Validators, which Result: Fallback field uses it to pass the validator in case of a fallback.
	2. "Not Supported" blocks the effect, but, even up to the ability/weapon. For example, a weapon first's effect which is validated by that, returning false, will cause the unit to move to the attack target (instead of attacking it), ignoring the attack ability.
	3. Using the default "Error" message and setting a cutom text, that is well checked in the box, doesn't show up properly. The "Error" message will always appear anyway.

## Validators: Sub Types (Classes)

* Combine
* Compare Tracked Units Count
* Condition
* Detect Range
* Effect Compare Dodged
* Effect Compare Evaded
* Effect Tree User Data
* Enumerate Area
* Function
* Game Commander Active
* Game Time Event
* Is Unit Tracked
* Location Arc
* Location Compare Cliff Level
* Location Creep
* Location Crosses Chasm
* Location Crosses Cliff
* Location In Playable Map Area
* Location Pathable
* Location Power
* Location Range
* Location Shrub
* Location Type
* Location Vision
* Placement Location
* Player Alliance
* Player Compare Difficulty
* Player Compare Food Available
* Player Compare Food Made
* Player Compare Food Used
* Player Compare Resource
* Player Game Result
* Player Race
* Player Requirement
* Player Talent
* Player Type
* Terrain
* Time of Day
* Unit Ability
* Unit AI
* Unit Alliance
* Unit Armor
* Unit Behavior State
* Unit Behavior Stack Alias
* Unit Combat AI
* Unit Compare Ability Level
* Unit Compare Ability Skill Point
* Unit Compare Abil Stage
* Unit Compare AI Area Evaluation
* Unit Compare Attack Priority
* Unit Compare Behavior Count
* Unit Compare Cargo
* Unit Compare Charge Used
* Unit Compare Cooldown
* Unit Compare Damage Dealt Time
* Unit Compare Damage Taken Time
* Unit Compare Death
* Unit Compare Field
* Unit Compare Height and Z
* Unit Compare Kill Count
* Unit Compare Marker Count
* Unit Compare Mover Phase
* Unit Compare Order Count
* Unit Compare Order Target Range
* Unit Compare Power Levels
* Unit Compare Power Source Level
* Unit Compare Rally Point Count
* Unit Compare Resource Contents
* Unit Compare Resource Harvesters
* Unit Compare Speed
* Unit Compare Veterancy Levels
* Unit Compare Vital
* Unit Compare Vitality
* Unit Detected
* Unit Filters
* Unit Flying
* Unit In Weapon Range
* Unit Inventory
* Unit Inventory Contains Item
* Unit Inventory Is Full
* Unit Kinetic
* Unit Last Damage Player
* Unit Missile Nullified
* Unit Mover
* Unit Order
* Unit Order Queue
* Unit Order Target Pathable
* Unit Order Target Type
* Unit Pathable
* Unit Pathing
* Unit Scan
* Unit State
* Unit Test Weapon Type
* Unit Type
* Unit Weapon Animating
* Unit Weapon Firing
* Unit Weapon Plane