Shown in the app's own themes — pick the one you run. Light or dark follows the toggle above.

Studio

Flow step reference

Every step in the Task Builder, and the Inspector editors they share.

Each step in the Task Builder's Steps panel does one small thing: look at the screen, act on it, work with a value, or steer the flow. This page lists every step by group, then explains the Inspector editors many of them share.

Where: Studio ▸ open a task ▸ Flow (see The Task Builder). Click a step in the Steps panel to add it, then select it to edit its fields in the Inspector. Numbers in brackets below are the values a field starts with or uses when left blank.
  1. Note
  2. Delay after (ms)
  3. Condition
  4. Compare to
  5. Preview line
  1. Note
  2. Delay after (ms)
  3. Condition
  4. Compare to
  5. Preview line
  1. Note
  2. Delay after (ms)
  3. Condition
  4. Compare to
  5. Preview line
The Inspector for an If / Else step: variable, operator, Compare to and the preview line.

Variables and values

Many steps store a value under a name you choose (Store match as, Store text as …). Later steps pick that name from a list, or use it inside a text field as {name}, for example Sent {count} marches. A part of a stored match or row is reached with a dot, such as {item.name}.

Image
A screenshot or part of one. Capture screen makes one; image pickers also offer Fresh screenshot, which takes a new one as the step runs.
Match
Where something was found on the screen, or that it was not.
Number
A whole or decimal number.
Text
Any text.
Boolean
True or false, shown as Yes / no in some pickers.
List
Several values, such as every match found or rows from a library.
Coordinate
A point on the screen.
Map
Named values, such as a count per general.

In variable pickers your settings-form fields and call options come first, above a divider (tooltip Task option (Config UI field or call option)). Type in a picker to filter a long list. (none in scope) means nothing usable exists at that point yet.

Steps with a Scope field decide how long their variable lives:

Local (default)
In the list where it was made. Made inside a slot, it is gone when that slot ends.
Function
For the rest of the function it was made in, after the slot ends.
Run
For the rest of the whole run, in every function.

Conditions

If / Else, Loop until… and Stop when… test a condition; Retry block can test one to confirm a try worked. Pick the variable, then an operator (the list depends on the variable's type) and, for comparisons, a value under Compare to: a literal or {variable}. A preview line reads it back, such as ⟶ joined >= exit_count. With no variables yet, the Inspector says No variables in scope yet. Add a Capture / Find / Set step before this block to compare against.

Match: is found · is not found
Whether the step that stored the match found it.
Boolean: is true · is false
Tests the true-or-false value.
Number: == · != · > · >= · < · <=
Compares with the value in Compare to.
Text: equals · not equals · contains · in · matches · not matches · is empty · is not empty
in is true when the text is one of the entries of the list or map named in Compare to, or of a comma-separated list typed there, such as gold, gems. matches is true when the whole text fits the pattern typed in Compare to (a regular expression, such as \d+[KMB] for a power read); not matches is the opposite.
List and Map: is empty · is not empty
Whether anything is in it.
Image: exists · is empty
Whether an image was stored.
Coordinate: is set · is not set
Whether a point was stored.

Capture

Capture screen
Takes a screenshot and stores it as an image. Capture as: Color (default), Grayscale (B&W) or 1-bit threshold. Region: Full screen (default) or Custom region…, drawn with Pick region…. Store image as.

Perception: looking at the screen

Find template
Looks for one picture and stores a match. Template from: Vision Lab detector (default; uses the detector's own threshold and scale, with a Threshold field to override) or Image file (Attach… a picture, with Threshold, Color, Color gate, Smooth, Ink and a Search region). Then On image, Scale, Store scale as and Store match as.
Find any of…
Looks for several detectors at once and stores the matches. Detectors (a list, for example from Get detectors), On image, Threshold (blank = each detector's own), Scale, Calibrate list scale, First match only (ordered), Debug save to (a folder, for testing), Store matches as.
Swipe-find-select
Swipes through a list until one of the detectors appears, selects the first one found and stores its label. Detectors, View (detail or list), Swipes (3, or auto for the end of the list), Direction, Calibrate scale, Portrait height, Select button, Fallback detectors and Fallback direction, Primary log, Fallback log, Accept names, Exclude, Threshold, Debug save to, Store result as.
Find any image
The best match among several labelled picture files inside a region. Images, On image, Region rect, Threshold (0.85), Color, Color gate, Smooth, Scale, Store match as.
Wait until…
Waits for a detector to appear or disappear. Detector, Tune / create in Vision Lab, Until it (Appears / Disappears), Timeout (s) (20), Check every (ms) (500), On timeout (Continue (match is empty) · Fail the task · Dismiss popups, then continue), Store match as.
Read text (OCR)
Reads text or a number with a saved text detector. Detector, Tune / create in Vision Lab, On image, Store value as (Number or Text).
Check pixel color
Tests one point against a color. At (x, y), Color ≈ (for example #22c55e), Tolerance (12), Store result as.
Is colorful?
Tells a colored, active area from a grayed-out one. On image, Region rect (blank = full image), Min saturation (60), Store result as.
Screen changed?
Whether the screen moved since an earlier capture: the way to notice the end of a scroll. Since (an image), Region rect, Min change % (10), Store result as.
Has color?
Whether a region holds a color, such as red timer text. On image, Region rect, Color (Red, Gold, Yellow, Green, White, Magenta), Min pixels (25), Store result as.
Read bar fill
How far a coloured fill reaches along a progress bar, as a number, without reading any text. On image, Region rect, Fill colours, Empty at x, Full at x, Full value (the bar's full count), Store value as.
Region from match
Turns a match's box into a region beside it, for reading a value next to a label. From match, Height, From (Top, Bottom, Above), Side (Right, Left, Full, Around, Beside), Width, Pad x, On missing (Empty region (default) or Finish the task), Store result as.
Best match
The highest-scoring match from a list. Matches, Store match as.
Slice region
Splits a region into a grid of cells, stored as a list. On image, Region with Pick the grid area…, Rows (2), Columns (3), Save crops to, Store cells as.
Read cultivation
Reads the Cultivate Generals table: current, new and change per stat, and whether to keep or cancel. Chased, Baseline, Target (300), Near (10), Rebalance, Attempts (5), Expect (Any board / A pending roll), Debug save to, Store as.
Find all
Every place one picture appears above the threshold, as a list. Image, On image, Region rect, Threshold (0.85), Color, Scale, Max matches (10), Store matches as.
Read text region
Reads any region without a saved detector. On image, Region rect, Preprocess (None, Otsu (binarize), Threshold), Threshold level (160), Upscale, Pad, Keep colours, Glyph size, Text line, Context image, Tail image, Tail text, Tail scales, Digits from, Min score, Min margin, Parse (Text, Number, Number (K/M/B), Fraction), Whitelist, Fallback ink, Fallback scales, Save crop to, Save unique, Store text as.
Read colour text
Reads text of one color, such as gold names, wherever it sits in a band. On image, Region rect, Text color (Gold, Yellow, White, Green, Red), Min area (120), Upscale, Accept (a pattern the read must fit), Parse (Text or Number), Whitelist, Drop left icon, Main row only, Save crop to, Save unique, Store text as.
Read timer
Reads a game countdown in the game's own timer digits and stores seconds. On image, Region rect (relative to an Anchor image when one is set), Anchor threshold (0.85), Search region, Digits from, Isolate (blank, white or colour) with Sat max, Sat min, Hue min, Hue max and Val min, Min aspect, Split touching, Digit count, Match (blank or aligned) with Min score, Min margin, Ink min and Cells (with Cell width and Cell slide, for digits that always sit in the same place), Save crop to, OCR fallback with Confirm margin and Line rect, Looks (how many fresh screenshots to try, 1 to 5), Present image, Present rect, Present min and Absent below (whether the countdown is on screen at all), Verdict into, Scope, Store seconds as.
Match layout
Whether two lists of matches have the same arrangement. Before, After, Tolerance (3), Store same as.
Seen before?
Remembers cropped areas during the run and says whether this one was seen already. On image, Region rect, Cache, TTL (s), Add (Yes / No), Store seen as.
Read text by a match
Reads a bright line of text in a box placed relative to a match, answering only when two enlargements agree. From match, Offset rect, On image, Ink, Fallback ink, Double, Digits from, Digits ink, Min score, Min margin, End at image, End threshold, Brightness (0.70), Brightness floor (0), Max saturation (140), Min glyph height (7), Min glyph area (5), Scales (3,4), Min reads, Pattern, Ranges, Store groups as, Scope, Store text as.
Classify a colour
Names the main color in a box from color bands you define, such as Hell / Hard / Easy. From match, Offset rect, On image, Classes, Min saturation (120), Min value (110), Min pixels (40), Min share (0.6), Scope, Store class as.
Remember a crop
Remembers a cropped area with a value across runs and reports new, changed, same, retry, gave_up or done. Action (Check, Begin, Finish), Key, From match, Offset rect, On image, Value, Data, Keep for (s) (7200), Max tries (3), Similarity (0.95), Scope, Store verdict as.

Action: acting and working with values

Tap (x, y)
Taps a fixed point. X, Y, Pick on image…, On missing (Skip (nothing tapped) or Finish the task) for when X or Y has no value.
Tap on match
Taps a stored match and stores whether it tapped. From match, Anchor (Center, Top-left, Top-right, Bottom-left, Bottom-right), If no match (Skip (tapped = false) or Fail the step), Offset x, y (0, 0), Store tapped as.
Verified tap
Finds and taps a detector, then confirms the tap worked by watching another detector appear or vanish, retrying if not. Detector, Search region, Verify (Appears / Vanishes), Verify detector, Attempts (3), Settle (ms) (800), On fail (Continue (confirmed = false) or Finish the task), Store confirmed as.
Set field text
Taps a text field, clears it, types new text and can press Enter. X, Y, Pick on image…, Text, Clear chars (40), Press Enter (No / Yes).
Toggle to state
Sets a checkbox or switch to on or off, reading how it looks first. On image, Off image, Wanted, Color, Floor (0.6), Region rect, Source image, Store state as.
Long press
Presses and holds a point. X, Y, Pick on image…, Duration (ms) (800), On missing (Skip (nothing pressed) or Finish the task).
Swipe
Mode: Directional (Direction, and Distance (600) from the screen center) or Coordinates (From x, y and To x, y). Duration (ms) (400), Hold (ms) (blank for a swipe that coasts on; a number holds still at the end so the surface stops where the finger stopped), Settle (Yes / No).
Pan to canvas point
Drags the city map from a found landmark toward a target point without the map sliding on. Anchor match, Anchor canvas x / y, Target canvas x / y, Finger gain x / y, Max stroke px (700), Screen centre x / y, Store remaining as, Store backend as, Store panned as.
Navigate to building
Drives the city map to a building mapped in City Mapper and stores a match at its tap point. Target canvas x / y, Target templates, Anchor x / y, Anchor templates, Finger gain x / y, Target slug, Establish floor (Auto, Yes, No), City map (optional: when its first look recognises no building, it reads that map's culture and stops at once if the city is in another one), Blind limit (s) (optional: stops after that long recognising nothing), Store outcome as, Store arrival as.
Check city culture
Reads the city's culture from the screen. When the city is in a different culture from its city map, it maps the city again with Auto map, which only zooms out and slides the city, and then stores remapped. Otherwise it stores same, unknown (the screen can't say) or changed (not mapped again). City map ({city_preset}), Map again (Yes, or No to only compare), Store outcome as.
World-map zoom floor
Pinches the World Map fully out so every monster appears at one size. Max pinches (4), Settle eps (optional, default 6.0), Store pinches as.
Advance sweep view
Swipes the World Map toward a target tile, jumping there when it is far. X, Y, Duration ms (700), Store outcome as (ok or teleport).
Scroll list
Swipes a list by one page and stores whether it moved; false means the end. Direction (Up, Down, Left, Right), Distance (600), Duration (ms) (400), Band, Hold (ms), Lane, Edge under, Row pitch, Same under, Long stride, Store moved as.
Type text
Types into the field that has focus. Text (use {var} for a variable).
Launch / stop app
Action (Launch or Stop (force-stop)), Package (com.topgamesinc.evony), Activity.
Run ADB command
Sends a command to the emulator and stores its output. Command (for example input keyevent 4), Store output as.
Press Back
Presses the Android Back button. Repeat (1).
Press key
Sends a key: BACK, HOME, ENTER or ESC.
Set variable
Creates or sets one variable. Type, Value (0), Scope, Name.
Set variables
Creates or sets several variables in one step (see Set variables below).
Adjust number
Changes a number variable. Variable, Operation (+ add, − subtract, × multiply, ÷ divide, ÷ divide (round up), = set to, ↓ min (clamp down to Value), ↑ max (clamp up to Value), abs (|current|), ± negate), Value (1).
Copy variable
Duplicates a variable. Source variable, Store copy as.
Rotate list
Moves the front item to the back and stores it: a round-robin. List, Direction (Forward / Backward), Store front item as.
List length
Number of items. List, Store count as.
Map keys
The keys of a map, joined as text. Map, Only truthy (true / false), Separator (,), Store keys as.
Build squad
Turns armed preset numbers and their per-preset settings into a list of records. Armed, Prefix (mp), Fields, Store records as.
Flatten pools
Turns armed presets and their ordered pools into one ranked list. Armed, Prefix (rp), Suffix (monsters), Fields, Store order as.
Remove from list
Drops matching items from a list. List, Field (n), Value, Values, Join with, Store trimmed as.
Get detectors
Library entries turned into detectors for Find any of…. Source (Recruit generals or Champion skins), From selection, Store detectors as.
Selection rarity
Whether selected generals are epic, legendary or mixed. From selection, Store rarity as.
Look up value
Reads one entry of a map. Map, Key, Default, Store value as.
Tally counter
Keeps a running count per key. Counter, Key, Add (1), Store total as.
Format number
Turns a number into display text. Value, Style (Abbreviated (2k / 47.5k), Comma (2,000), Plain (2000), Duration (6m 10s — value is seconds)), Store as.
Sort list
Reorders a list. List, Order (Travel (nearest end first), Ascending, Descending), Position map, Key field, From (current), Store list as.
Delete variable
Frees a variable. Variable.
Query library
Reads a Resources library into rows, a column, a map or a count (see Query library below).
Stopwatch
Mode (Start (mark now) or Elapsed (seconds since)), Since, Format (Seconds (number) or Human (4s / 1m12s / 1h03m)), Store as.
Clock
The time now or N seconds from now. Offset (s), Format (Instant (UTC, storable), Clock time (local), Time from now (spoken), Unix seconds (number)), Store as.
Log message
Writes a line to the run log. Message, Level (info, warn, error).
Report progress
Counts units of work done toward the task's goal. Units done (1), Note, and Tally only — keep this out of the Activity log.
Activity update
Shows an operation in the instance's activity feed. Operation, Phase (start, step, done, warning, skipped, failed, unconfigured, blocked, pending, waiting, waited, headline, progress, or a typed {variable}), Label, Detail, Operational row — leave it out of the Fleet report, Repeated work — the feed may show a run of these as one row ×N, and Stage row — it only says a window opened; leave it out of the run's header.
Save progress
Writes a value into one row of a settings-form list so it persists across runs. List, Match field (tier), Match value, Set field (done), Value.
Wait
Pauses for a random time between Min (ms) (800) and Max (ms) (1500). A pause of screen-settle length (between half a second and just under two seconds) is moved to the instance's Screen delay, keeping the spread between Min and Max.

Control: steering the flow

If / Else
Runs the Then slot when the condition holds, otherwise the Else slot.
Loop N times
Repeats its Repeat slot. Times (5).
Loop until…
Repeats its Repeat slot until the condition holds. Max iterations (20), Check condition (Before each pass or After each pass).
Retry block
Runs Try up to Attempts (6) times. If you set the optional Verify condition (Verify (optional) — the Try succeeds only when this holds; blank = succeed if the Try doesn't error), a try counts only when it holds. Recover runs between failed tries. On fail: Finish (fail) or Continue.
For each match
Runs its For each match slot once per item of a list (or once for a found match). Over matches of, Each item as, and optional Activity op, Activity subject and Activity status to give each pass its own activity row.
Break / Continue
Inside a loop: Break leaves the loop, Continue skips to the next pass.
Stop when…
Ends the task when the condition holds. Result (Success or Fail), Message.
Finish (success/fail)
Ends the task. Result (Success or Fail), Message (done).

Composition: using other flows

Call function
Runs one of this task's functions and can store what it returns (see below).
Run routine
Calls a saved routine, passing its inputs (see below).
Run task
Runs another task, passing its inputs (see below).
Return value
Sets the value a routine hands back. Value, Then (Continue or Stop this function). Inside a bundle flow use Set variable instead (see The Bundle Editor).
Custom Python step
Runs one of Evonex's built-in specialist functions, such as Read march availability, picked from the Function list. Store result as.

Scheduler: talking to the plan

Checkpoint
A safe point where the plan may pause the task to let something more urgent run, banking the units done so far. Units done (0), Note.
Scheduler hint
Tells the plan the task is idle, blocked or done. State (active, idle, waiting, blocked, resource_blocked, uncertain, done), Reason, Gap ETA (s), Confidence (0.9), Next check (min), Delegated (blank or Yes: the game itself does the work until the next check).
What runs next?
Asks what has the screen after this task and stores same_task, other, none or unknown — for leaving a shared window open for a sibling.
Record march
Records one march sent so the task is due again when it returns. Lane, Seconds, Minutes (0 = automatic), Coord, Tag.
Cool down target
Skips a lane and level for a while, for example a tile type with nothing free nearby. Lane, Level, Seconds.
Refresh leases
Re-reads which marches are out before the next pass. No fields.
Consume coordinate
Removes a used or vanished World Map target and tells the shared board. Board id, X, Y, Reason (Used / Gone), Store synced as.
Plan scan order
Works out the blocks this instance sweeps from a scan-area selection. Area, Step, Store blocks as.
Write scan coordinate
Writes a monster found by a scan onto a Coordex board. Board id, X, Y, Name, Level, Locator, Store added as.
Post to a Coordex board
Posts one coordinate to a board chosen by name. Board, X, Y, Name, Level, Boss, Kill mode, Origin, Scope, Store row id as.
Task state (get/set/add)
Reads, sets or adds to a value kept for this task between runs, such as a spend budget. Action (Get, Set, Add), Key, Value, Duty, Store value as.

Shared Inspector editors

Detector: Load detector · Vision Lab
Shows the chosen detector as name · folder · thr 0.85 · scale 0.65, or No detector chosen — load one or create it in Vision Lab, or (missing — pick again) when it no longer exists. Load detector opens a searchable list (Search detectors by name or folder…) with a picture of each; Use picks one and copies its threshold into the step. Vision Lab opens Vision Lab — tune detector with the detector loaded; Use this detector returns what is on screen, saving it first if it is new or edited.
Tune / create in Vision Lab
On Wait until… and Read text (OCR): opens the Vision Lab in a window. Save the detector there, then pick it from the step's Detector list.
Scale
For a detector: Use the detector's scale (default) or Custom scale (a number or {variable}). With the detector's scale, Default scale (if the detector has none) applies to a detector without a saved size; blank means 1×. For an attached image: No scaling (1×) or Custom scale.
Search region (blank = whole screen)
Type x, y, w, h, or click Pick… to draw it; Clear searches the whole screen again.
Region · Pick region…
Shown when Region is Custom region…. Draw the area to capture or slice; its x, y, w, h shows underneath (Not set — draw a region until then).
Image · Attach…
On Find template with Template from Image file. Pick a picture; Evonex keeps its own copy, so moving the original does not break the step.
Pick on image…
Sets X and Y by clicking a frame (see The Task Builder).

Call function, Run routine and Run task

Function
The function to run; (no functions yet — add one) until the task has one. The note says The called function returns a value by setting a variable named “return” inside it.
Inputs · Add input (Call function)
Name / value rows; each becomes a variable inside the called function. A value that is exactly {variable} passes the real value, so a match stays a match; anything else is text with its {tokens} filled in.
Routine / Task
Pick a saved routine or task (Pick a routine… / Pick a task…). Until you do, the Inspector says Pick a routine to set its inputs. or Pick a task to set its inputs.
Inputs (Run routine / Run task)
One field per input declared in that routine's or task's Task config, labelled name · type. Text and number inputs take a value or {variable} and show their default; list, match and coordinate inputs take a variable. A task with no inputs says so: to pass it values, add Call options to that task.
Store result as
Shown when the routine or task declares a return type: the variable that receives its return value.
Exports (into the caller's run scope)
Run routine only, read-only: variables that routine hands straight back by name, usable right after the step.
Store status as
Optional (placeholder optional — variable for ok / failed / missing). Receives ok, failed, missing or disabled. When set, a missing or switched-off routine or task no longer fails your task: your flow decides what to do.
Fold activity into the caller's row
Run routine: the routine's activity lines join the operation your flow already has open instead of starting their own row.
Leave the task's own activity rows out of this run
Run task: only what your flow reports appears in the activity feed.

Query library

Source
The Resources library to read (Pick a library…). Until you pick, the Inspector says Pick a library to filter and shape.
Where
Row filters: a column, an operator suited to that column, and a value or {variable}. Add condition adds one; ✕ removes it. Every condition must hold.
Output
Rows (list) (default), First (one row), Nearest (one row), Column (list), Map (key → value) or Count (number). Column asks which column; Map asks for a key column and a value column; Nearest asks for a column and a Near value and returns the row whose number is closest.
Store result as
The variable name. Count stores a number; the others store rows.

Set variables

Variables
Rows of name · type (Number, Text, Yes / no, List, Coordinate) · value. They are set in order, so a later row can use an earlier one as {name}.
Add variable
Adds a row; ✕ removes one. For arithmetic, use Adjust number.

Examples

Troubleshooting

The Detector list does not show the detector I just saved.
The list is filled when the step is selected. Click another step and back again.
My If never runs Then, although the Find step found it.
Check the operator: a match is tested with is found, not equals. And check the variable is in scope: a match stored inside another slot is not visible there.
A value set inside an If is empty afterwards.
Variables made inside a slot are dropped when the slot ends. Set that step's Scope to Function or Run.
Tap on match did nothing.
The match was not found and If no match is Skip (tapped = false). Store tapped as a variable and branch on it, or set If no match to Fail the step.
Store status as reads missing.
The routine or task the step names no longer exists. Pick another one in the Inspector.
A detector shows (missing — pick again).
It was deleted in the Vision Lab. Load another detector, or recreate and save one with the same name.