AI Editor Blocks

***Click here to return to the AI Editor main page.***

## Operators

These operators are listed in the "Other" branch of the behavior blocks tree.

In order to attach blocks that you want to be required for the operator to return "yes" so that it may continue, press space twice. This will make it dotted. Then, attach it to a condition block.

### And

When ALL the conditions attached under it are true, then the next block in the code will execute. However, if the conditions aren't fulfilled, it will go down the else line.

### Or

When any one or more of the conditions attached under it are true, then the next block in the code will execute. However, if the conditions aren't fulfilled, it will go down the else line.

### Sequence

When you attach things to a sequence blocks normally, the following blocks will work in a sequence, one at a time. So, a timer set to .20 seconds and a aimStickAtTarget set for .10 seconds, the whole sequence would last a total of .30 secs. "Is Blocking", when set to yes, will prevent any other code from executing while the sequence is running.

Example: The following sequence would last a total of 4.1 seconds.

## Actions

Actions behave much like functions in programming, in that they actually 'do' or modify something within the game.

### adjustCounter

Creates or modifies a counter with id as identifier and changes the value.

**Arguments**

* id (The name of the id that the value will bet set to or changed)
* value (The name of the counter or the modification value depending on the adjust method)
* adjust method
	+ add
	+ divide
	+ multiply
	+ set (default)

**Arithemetic**

adjustCounter supports some binary arithmetic operators, which can use numbers or counters as arguments. Below is a list of supported operators.

* + (addition)
* - (subtraction)
* \* (multiplication)
* / (division)
* ^ (exponentiation)

### adjustCharacterValue

Sets or changes the character's health or solar. Uses the same adjust methods as adjustCounter.

**Arguments**

* property
	+ gold
	+ goldWithoutXp
	+ health (default)
	+ health percentage
* value
* adjust method
	+ add
	+ divide
	+ multiply
	+ set (default)

### adjustMissionCounter

Adjusts a counter variable used for achievment tracking. This is used primarily for unlocking achievements, and can be ignored.

**Arguments**

* id
* value
* adjust method
	+ add
	+ divide
	+ multiply
	+ set (default)

### aimStickAtTarget

This will point the bot's aiming towards the current target.

**Arguments**

* duration seconds (smaller values, such as 0.01, are less accurate; 0.1 and above can be used for maximum accuracy)
* only aim when needed (default: no)
* use rotation speed limits (default: no)
* min rotation speed per second in degrees
* max rotation speed per second in degrees
* use min rotation speed when angle to target under
* use max rotation speed when angle to target over

### buyUpgrade

Buys the specified upgrade.

**Arguments**

* upgrade name

### completeMission

Unlocks an achievement. This is used primarily for unlocking achievements, and can be ignored.

**Arguments**

* delay
	+ INSTANT (default)

### enableUpgrade

This is a condition that requires the user to have the specified upgrade.

**Arguments**

* condition (default: yes)
* upgrade name

### emitMessageInArea

Emits a message invisible to players that bots can receive with receivedMessage.

**Arguments**

* id
* receive groups
	+ PLAYERS
	+ CREEPS
* teams
	+ OWN\_TEAM
	+ ENEMY\_TEAM
	+ NEUTRAL\_TEAM
	+ TARGET
* xOffset
* yOffset
* width
* height
* horizontal alignment to character
* vertical alignment to character
* debugAreaColour
* ignore invisibility
	+ no
	+ yes (default)
* check line of sight
	+ no (default)
	+ yes

### emitTargetInArea

If the AI has a target, it will be emitted in a specified area.

**Arguments**

* receive groups
	+ PLAYERS
	+ CREEPS

* teams
	+ OWN\_TEAM
	+ ENEMY\_TEAM
	+ NEUTRAL\_TEAM

* xOffset
* yOffset
* width
* height
* horizontal alignment to character
* vertical alignment to character
* debugAreaColour

### executeBehaviorTree

Executes the behavior blocks inside of an external file. This is typically used to call GeneralAI and other functions. If you are calling a file that you created (for example: a modified version of GeneralAI), that file must be in the BehavioursCustom folder.

**Arguments**

* fileName

### generateLoadout

Generates a loadout for a specific character.

**Arguments**

* isTutorial
	+ no (default)
	+ yes
* className (default:"cowboy")

### lockPlayerInput

Prevents (or allows if shouldLock is set to no) the player from making inputs with the controller.

**Arguments**

* shouldLock
	+ no (default)
	+ yes

NOTICE: If lockPlayerInput is enabled, button presses can still be checked by isButtonDown.

### lockPlayerInputSpecificButtons

Prevents (or allows) one or more inputs from being used by the player.

**Arguments**

* shouldLock
	+ no (default)
	+ yes
* buttons to (un)lock
	+ ABT\_BACK
	+ ABT\_START
	+ ABT\_CONFIRM
	+ ABT\_CANCEL
	+ ABT\_SHOULDER\_LEFT
	+ ABT\_SHOULDER\_RIGHT
	+ ABT\_TRIGGER\_LEFT
	+ ABT\_TRIGGER\_RIGHT
	+ ABT\_UP
	+ ABT\_DOWN
	+ ABT\_LEFT
	+ ABT\_RIGHT
	+ ABT\_FACE\_TOP
	+ ABT\_FACE\_BOTTOM
	+ ABT\_FACE\_LEFT
	+ ABT\_FACE\_RIGHT
	+ ABT\_UP\_2
	+ ABT\_DOWN\_2
	+ ABT\_LEFT\_2
	+ ABT\_RIGHT\_2
	+ ABT\_DOWNJUMP
	+ ABT\_TOGGLE\_JUMP\_SKILL
	+ ABT\_GAME\_COMMAND\_UP
	+ ABT\_GAME\_COMMAND\_RIGHT
	+ ABT\_GAME\_COMMAND\_DOWN
	+ ABT\_GAME\_COMMAND\_LEFT
	+ ABT\_OPEN\_PAUSE\_MENU
	+ ABT\_CLOSE\_PAUSE\_MENU
	+ ABT\_OPEN\_SHOP
	+ ABT\_CLOSE\_SHOP
	+ ABT\_TOGGLE\_SCOREBOARD
	+ ABT\_OPEN\_CHAT
	+ ABT\_SHOW\_PROFILE
	+ ABT\_MUTE\_PLAYER

NOTICE: Buttons locked by lockPlayerInputSpecificButtons cannot be checked by isButtonDown.

### missionGetScore

Can store the number of a player's kills, deaths or creep kills in a counter variable. This is used primarily for unlocking achievements, and can be ignored.

**Arguments**

* class
* team
	+ ENEMY\_TEAM
	+ NEUTRAL\_TEAM
	+ ONE\_TEAM
	+ OWN\_TEAM (default)
	+ ZERO\_TEAM
* type
	+ CREEPKILLS
	+ DEATHS
	+ KILLS (default)
* store in

### log

Adds a message to the log. This message can be seen when using the F4 debugger. Useful for figuring out which parts of the AI are executing. Can include bool and counter variables.

**Arguments**

* text
* counter
* bool

### playAnimation

Play an animation.

**Arguments**

* animationName (You can find a list of all animation here. Some animations may not work.)
* location
	+ FOLLOW\_CHARACTER (The animation will follow the character. You can't change the xPosition or yPosition with this option selected)
	+ HUD
	+ START\_RELATIVE\_TO\_CHARACTER (The animation will appear at the character position but will stay in place)
	+ WORLD
* dummyToFollow (Centers animation on various attachment positions when used with FOLLOW\_CHARACTER. PlayAnimation needs to be in AI defined by extraAIToAddToPlayerCharacters for attaching to players.)
	+ GUN
	+ VISUALCENTRE
	+ SHIFTERHEAD (Only works with Ix)
* xPosition
* yPosition
* scale (If set to 0, the animation will be invisible)
* depth
* mirrorX
	+ no
	+ yes
* team (This is used to get the color of the animation and has no effect on who can see it)
	+ ENEMY\_TEAM
	+ NEUTRAL\_TEAM
	+ OWN\_TEAM
* addOverlayPrefix
	+ no
	+ yes
* allowRotating
	+ no
	+ yes
* textReplace1TextID
	+ text (Works with the animations tutorial\_textbox, tutorial\_objectives, and others)
	+ effectvalue (Works with the animation effectvalue\_being\_damaged and others)
	+ GoldCount (Works with the animation UI\_GoldCounter)
* textReplace1Replacement (String to insert in place of textID)
	+ [COLOUR:Alert]Replacement text[/COLOUR] (The colour tags are not needed but allow changing text color to various internal IDs)
* textReplace1ReplacementIsLocalizationID
	+ no (This option allows you to insert arbitrary text at the textID location)
	+ yes
* textureReplace1VisualName
	+ portrait (Works with the animation tutorial\_textbox)
	+ texture (Works with the animation m\_backgroundimage\_texture and others)
* textureReplace1ReplacementName
	+ (mod) TextureName (the mod prefix is only used with custom textures)

### playSound

Play a sound.

**Arguments**

* soundGroup (You can find a list of soundGroup here)
* forcePlay
	+ no
	+ yes

### pressButton

This will "press" the given button. Controls attack and movement

**Arguments**

* button
	+ BACK
	+ DPAD\_DOWN (Default: help command)
	+ DPAD\_LEFT (Default: defend command)
	+ DPAD\_RIGHT (Default: attack command)
	+ DPAD\_UP (Default: taunt command)
	+ FACE\_BOTTOM (Default: jump)
	+ FACE\_LEFT (Default: auto attack)
	+ FACE\_RIGHT (Default: "right click" attack)
	+ FACE\_TOP (Default: "middle click" attack)
	+ SHOULDER\_LEFT (Default: Fall down)
	+ SHOULDER\_RIGHT (Default: teleport)
	+ TRIGGER\_LEFT
	+ TRIGGER\_RIGHT
* duration in seconds (If set to 0 the button will be released.)

### pressStick

This will "press the stick" in a given direction. Controls movement.

**Arguments**

* direction
	+ UP, DOWN, LEFT, RIGHT
	+ BACKWARD (Towards the allied base)
	+ FORWARD (Towards the enemy base)
* Duration (seconds)

### randomizeMissionCounter

Picks a random number and sets it to a mission counter. This is used primarily for unlocking achievements, and can be ignored.

**Arguments**

* id
* low
* high

### receiveTarget

When called, if a target is emitted with *emitTargetInArea*, and the AI is in the specified area, it will receive the emitted target.

### resetMissionVariables

Resets all mission counter and mission bool variables. This is used primarily for unlocking achievements, and can be ignored.

### selectDestWaypoint

Selects a waypoint by name and sets it as it's destination waypoint.

**Arguments**

* name
* team
	+ ENEMY\_TEAM (default)
	+ OWN\_TEAM

### selectTarget

Selects a target for the AI in the given area.

**Arguments**

* groups to select
	+ PLAYERS, CREEPS, DESTROYABLE OBSTACLES
* teams
	+ OWN, ENEMY, NEUTRAL
* class
* xOffset
* yOffset
* width
* height
* horizontal alignment to character
* vertical alignment to character
* debugAreaColour
* compare method (compares target with health value)
	+ equal, greater, greater or equal, highest, less, less or equal, lowest
* health value
* distance check
	+ NONE, CLOSEST, FURTHEST
* check line of sight
	+ (from own perspective, e.g. own turrets and teamwalls do not block line of sight, although enemy ones will)
* ignore invisibility

### selectPingWaypoint

Sets the Waypoint closest to the ping as the destination Waypoint.

**Arguments**

* ping
	+ ATTACK (Default; "An ally commands you to attack")
	+ BASE\_ALMOST\_DESTROYED ("Your base is almost destroyed")
	+ BASE\_UNDER\_ATTACK ("Your base is under attack")
	+ DEFEND ("An ally commands you to defend")
	+ HELP ("An ally requests help")
	+ TURRET\_ALMOST DESTROYED ("Your turret is almost lost")
	+ TURRET\_UNDER\_ATTACK ("Your turret is under attack")

### selectTargetWaypoint

Sets the Waypoint closest to the current target as the destination Waypoint

### setBool

Creates or changes the value of a particular boolean value with a specific ID.

**Arguments**

* id (The name of the id being set or modified)
* value (can be set to a particular value or toggled to it's opposite value)
	+ no (default)
	+ toggle
	+ yes

### setMissionBool

Sets or modifies a bool variable used for achievment tracking. This is used primarily for unlocking achievements, and can be ignored.

**Arguments**

* id (The name of the id being set or modified)
* value (can be set to a particular value or toggled to it's opposite value)
	+ no (default)
	+ toggle
	+ yes

### spawnCharacter

Creates an entity and places it in a specified node

**Arguments**

* className
* aiFileName
* team
	+ ENEMY\_TEAM
	+ NEUTRAL\_TEAM
	+ ONE\_TEAM
	+ OWN\_TEAM (default)
	+ ZERO\_TEAM
* count
* spawnPositionNodeID
* spawnPositionNodeOffsetX
* spawnPositionNodeOffsetY

### startCameraSequence

Move the camera to each specified named area.

**Arguments**

* areaNames (A list of named area separated by a space)
* transitionTimes (The speed to move from one area to the other separated by a space. It's strongly recommended to set the first transition time to 0 to prevent a strange zoom-in effect)
* holdTimes (The time the camera need to stay at each named area separated by a space)
* cameraHeights (The height of the camera at each named area separated by a space)

**Example**

### triggerSkill

**Arguments**

* skillSettingsIdentifier
* triggerDuration

### wait

Waits for a specified amount of time before continuing to the next block/returning true.
**Note:** this block only does anything when used with a sequence block. Outside of that, wait does nothing.

**Arguments**

* time (The duration of the wait in seconds)

## Conditions

Conditions can return either "yes" (true) or "no" (false).

### areGoldCoinsInArea

Checks the amount of solar in the area around the character. If the comparison is true, this condition returns yes.

**Arguments**

* compare value
* compare method
	+ equal
	+ greater
	+ greater or equal (default)
	+ less
	+ less or equal
* xOffset
* yOffset
* width
* height
* horizontal alignment to character
* vertical alignment to character
* debugAreaColour
* check line of site: (default: no)

### branch

Used to organize the AI, will always return yes.

### canPayUpgrade

Returns yes if a referenced upgrade can be purchased.

**Arguments**

* upgrade name

### checkCharacterFlag

Checks if whether or not either itself or it's target is under a crowd control effect. Returns yes if the comparison is true.

**Arguments**

* property
	+ isBlinded
	+ isSilenced
	+ isSlowed
	+ IsStealth
	+ isStunned
	+ isUnderAnyEffect (default)
* condition
	+ no
	+ yes (default)
* check on
	+ self (default)
	+ target

### checkCharacterValue

Checks the health, solar, or AI level of either itself or it's target using a certain method. If the comparison is true, this condition returns yes.

**Arguments**

* property
	+ AI skill
	+ gold
	+ health (default)
	+ health minus dot
	+ health minus dot percentage
	+ health percentage
* value
* compare method
	+ equal (default)
	+ greater
	+ greater or equal
	+ less
	+ less or equal
* check on
	+ self (default)
	+ target

### checkClass

Returns true if either this character or it's target is a particular 'naut.

**Arguments**

* check on
	+ self (default)
	+ target
* class

### checkCounter

This will check the value of a specified counter. If what you compared to the value of the counter turns out to be true, it will return yes. The value field will accept formulas and other counters as well as static numbers

**Arguments**

* ID of counter
* value
* compare method (compares the **value** you input from above to the value of the counter.)
	+ equal (default)
	+ greater
	+ greater or equal
	+ less
	+ less or equal

### checkGameTime

Compares the input with the total amount of time passed since the game has started. If the comparison is true, this condition returns yes.

**Arguments**

* time in seconds
* compare method
	+ equal (default)
	+ greater
	+ greater or equal
	+ less
	+ less or equal

### checkMissionCounter

This will check the value of a specified mission counter. If what you compared to the value of the counter turns out to be true, it will return yes. This is used primarily for unlocking achievements, and can be ignored.

**Arguments**

* ID of counter
* value
* compare method (compares the **value** you input from above to the value of the counter.)
	+ equal (default)
	+ greater
	+ greater or equal
	+ less
	+ less or equal

### checkTurretArea

**Arguments**

* minimum Count For Success
* result counter
* TurretLocations
* TurretTeams
* Live Turrets Only
* surroundingGroups
* surroundingTeams
* surroundingClasses
* count characters out of combat
* debugAreaColour
* check line of sight
* ignore invisibility
* never detect invisible targets without character collision

### compareBools

Compares two bools using their ids. If they are equal, this condition returns yes.

**Arguments**

* id1 (The first id to compare)
* id2 (The second id to compare)

### compareMissionBools

Compares two mission bools using their ids. If they are equal, this condition returns yes. This is used primarily for unlocking achievements, and can be ignored.

**Arguments**

* id1 (The first id to compare)
* id2 (The second id to compare)

### doesClassExist

Returns yes if a 'naut is being played on a certain team.

**Arguments**

* teams
	+ OWN\_TEAM
	+ ENEMY\_TEAM
	+ NEUTRAL\_TEAM
* class

### directionToEnemyBase

Returns yes if the user is facing the specified direction towards the enemy base. Example: Leon is on blue team, and facing the red turret. The block specifies that Leon needs to be facing FORWARD, or looking in the direction of his enemy's base, the Red team. The block would return true, because Leon is indeed facing the enemy base. If it helps remember, if you're pushing a lane, you're going FORWARD. Or, even, you have to go FORWARD to attack.

**Arguments**

* Direction:
	+ Forward (Looking in the direction of the enemy's base)
	+ Backward (Looking in the direction of the user's base)

### getBoolEquals

Compares a bool variable with a bool value. If the comparison is true, this condition returns yes.

**Arguments**

* id
* value (default: no)

### getMissionBoolEquals

Compares a mission bool variable with a bool value. If the comparison is true, this condition returns yes. This is used primarily for unlocking achievements, and can be ignored.

**Arguments**

* id
* value (default: no)

### hasDestWayPoint

Returns yes if the AI currently has a waypoint it would like to go to.

### hasTarget

Returns yes if the user has a set target in mind.

### hasUpgrade

Returns true if a character has bought an upgrade.

**Arguments**

* class
* team
	+ ENEMY\_TEAM
	+ NEUTRAL\_TEAM
	+ ONE\_TEAM
	+ OWN\_TEAM (default)
	+ ZERO\_TEAM
* upgrade name

NOTICE: For checking self-owned items, use isUpgradeEnabled instead. The hasUpgrade method is best used when checking what upgrades other Awesomenauts have

NOTICE 2: HasUpgrade only checks the host, it can't check other players for upgrades

### isAtDestWaypoint

This will check to see if the AI has made it to its next waypoint. No arguments.

### isButtonDown

Checks if a particular button is being pressed. If it is, returns yes/true.

**Arguments**

* button
	+ BACK
	+ DPAD\_DOWN (Default: help command)
	+ DPAD\_LEFT (Default: defend command)
	+ DPAD\_RIGHT (Default: attack command)
	+ DPAD\_UP (Default: taunt command)
	+ FACE\_BOTTOM (default; Jump)
	+ FACE\_LEFT (Auto attack)
	+ FACE\_RIGHT (Primary skill)
	+ FACE\_TOP (Secondary skill)
	+ SHOULDER\_LEFT
	+ SHOULDER\_RIGHT
	+ TRIGGER\_LEFT
	+ TRIGGER\_RIGHT

### isCharacterInArea

Returns yes while specified objects are in a given range with the specified conditions. The default position of this range is set around the character but can be offset with xOffset and yOffset. Much like isInArea, but is geared more toward creeps and other players.

**Arguments**

* Collision groups
	+ Players
	+ Creeps
* class
* condition
	+ AI skill
	+ gold
	+ health (default)
	+ health minus dot(damage over time)
	+ health minus dot percentage
	+ health percentage
* comparison
	+ equal
	+ greater
	+ greater or equal
	+ less
	+ less or equal
	+ Character Minimum (minimum amount of total objects/players required to be detected)
* xOffset
* yOffset
* width
* height
* horizontal alignment to character
* vertical alignment to character
* debugAreaColour
* check line of site: yes/no
* ignore invisibility: yes/no

### isFromTeam

Returns yes if the user is from the specified team.

**Arguments**

* Team:
	+ enemy
	+ neutral
	+ one\_team(blue team)
	+ own\_team
	+ zero\_team(red team)

### isInArea

Returns yes while specified objects are in a given range. The default position of this range is set around the character but can be offset with xOffset and yOffset.

**Arguments**

* condition: yes/no
* Collision groups
	+ Players
	+ Creeps
	+ Invincible\_obstacles
	+ Destroyable\_obstacles
	+ Projectiles
	+ Shops
	+ Jumppads
* check green obstacles only: yes/no
* areaName
* xOffset
* yOffset
* width
* height
* horizontal alignment to character
* vertical alignment to character
* debugAreaColour
* check line of site: yes/no
* ignore invisibility: yes/no

### isInNamedArea

Returns yes if this character or it's target is in a specific area on the map.

**Arguments**

* area name
* team
	+ ENEMY\_TEAM
	+ OWN\_TEAM (default)
* who
	+ self (default)
	+ target

### isLevelButtonDown

Returns yes if specified button is being pressed

* button

### isNextWaypointInArea

**Arguments**

* xOffset
* yOffset
* width
* height
* horizontal alignment to character
* vertical alignment to character
* debugAreaColour

### isNextWaypointPosition

Checks the AI's target waypoint's position in relation to the AI.

**Arguments**

* target postion
	+ ABOVE
	+ BACK(default)
	+ BELOW
	+ FRONT
	+ HORIZONTAL EQUAL
	+ VERTICAL EQUAL

### isOnlineMatch

Returns yes if this match is being played online. Any match being played outside of practice mode is considered online. It is currently impossible to test a custom bot in a condition in which this logic block returns false.

### isOnGround

Returns yes when either this character or it's target is on the ground.

**Arguments**

* condition (default: yes)
* check on
	+ self (default)
	+ target

### isOnCreepTurner

Returns yes when this character is on a creepTurner and is walking in the right direction.

### isPickupAtWaypoint

Accepts the following arguments:

* name: The name of the Waypoint to check (acceptable name: TOPHP, unacceptable: TOPHP\_0)
* team: The team of the Waypoint to check

Returns true when all of the following are fulfilled:

* The named Waypoint exists
* The character has an unbroken line of sight to the specified Waypoint
* There is a Health Pack available at the Waypoint

### isPracticeMatch

Returns yes if this match is a bot match.

### isSkillOnButtonAvailable

Returns yes if a certain skill is off of cooldown, and is available to the user.

**Arguments**

* button
	+ BACK
	+ DPAD\_DOWN (Default: help command)
	+ DPAD\_LEFT (Default: defend command)
	+ DPAD\_RIGHT (Default: attack command)
	+ DPAD\_UP (Default: taunt command)
	+ FACE\_BOTTOM (default; Jump)
	+ FACE\_LEFT (Auto attack)
	+ FACE\_RIGHT (Primary skill)
	+ FACE\_TOP (Secondary skill)
	+ SHOULDER\_LEFT
	+ SHOULDER\_RIGHT
	+ TRIGGER\_LEFT
	+ TRIGGER\_RIGHT

### isTargetInArea

Returns yes while user's target can be found within a specific range.

**Arguments**

* condition: yes/no
* xOffset
* yOffset
* width
* height
* horizontal alignment to character
* vertical alignment to character
* debugAreaColour
* check line of site: yes/no
* ignore invisibility: yes/no

### isTargetInSkillRange

**Arguments**

* condition: yes/no
* skillSettingsIdentifier
* rangeFractionToSucceed
* debugAreaColour
* check line of sight
* ignore invisibility
* never detect invisible targets without character collision

### isTargetPosition

Checks the AI's target's position in relation to the AI.

**Arguments**

* condition:yes/no
* target postion
	+ ABOVE
	+ BACK(default)
	+ BELOW
	+ FRONT
	+ HORIZONTAL EQUAL
	+ VERTICAL EQUAL

### isTargetType

Returns yes if the user's target is one specified.

**Arguments**

* Target Groups
	+ Players
	+ Creeps
	+ Destroyable Obstacles

### isTurretInArea

Returns yes while a turret is in a given range. The default position of this range is set around the character but can be offset with xOffset and yOffset.

**Arguments**

* teams
	+ own
	+ enemy
	+ neutral
* health comparison
	+ equal
	+ greater
	+ greater or equal
	+ less
	+ less or equal
* health
* xOffset
* yOffset
* width
* height
* horizontal alignment to character
* vertical alignment to character
* debugAreaColour
* check line of site: yes/no

### isTutorialMatch

Returns yes if the tutorial is being played.

### isUpgradeEnabled

Returns yes when a specified upgrade is owned by the AI. See the upgrade names spreadsheet for a list of upgrade names.

**Arguments**

* condition (default: yes)
* upgrade name

### once

Returns yes when first called. Returns no every time afterward.

### random

This generates a random number every time it is checked, between 1 to whatever the user puts in as the amount, inclusive. If the generated number is 1, returns yes.
Example: putting in 4 as the amount would yield a 25% chance for the block to return yes every time it is checked.

**Arguments**

* amount

### receivedMessage

Returns yes if a message has been received from emitMessageInArea.

**Arguments**

* id

### receivedPing

Returns yes when a certain in game message has been broadcasted.

**Arguments**

* ping
	+ ATTACK (Default; "An ally commands you to attack")
	+ BASE\_ALMOST\_DESTROYED ("Your base is almost destroyed")
	+ BASE\_UNDER\_ATTACK ("Your base is under attack")
	+ DEFEND ("An ally commands you to defend")
	+ HELP ("An ally requests help")
	+ TURRET\_ALMOST DESTROYED ("Your turret is almost lost")
	+ TURRET\_UNDER\_ATTACK ("Your turret is under attack")

### receivedTarget

returns yes if a received target corresponds with a ticked argument

**Arguments**

* if of group
	+ Players
	+ Creeps
	+ Destroyable\_obstacles

### timer

This condition sets a timer that returns no until a certain amount of time. Once that time has passed, it returns yes and the timer resets. If a timer exists in a behavior tree which does not get called every tick, a timer can become "frozen" in place. For this reason, timers should only be used in top level behavior trees and called behavior trees that are executed every tick. Freezing example: A behavior tree is called using executeBehaviorTree every third tick, a timer inside of the called behavior tree would take three times longer to trigger than one at the top level behavior tree or a called behavior tree that loads every tick.

**Arguments**

* timeunit
	+ hours
	+ milliseconds
	+ minutes
	+ seconds (default)
* time
* execute first time