Skip to content

Advanced Alert

Adam Keenan edited this page Aug 22, 2026 · 3 revisions

Advanced Alert

The Advanced Alert replaces the linear trigger → action model with a visual node graph editor. Use it when you need logic that a simple alert cannot express: multiple triggers, conditional branching, delays with loops, persistent counters, or combining live game data with your alert conditions.

📷 Screenshot needed: The graph editor canvas showing the default welcome note and an empty canvas ready for nodes


When to Use Advanced Alert

Situation Use instead
One trigger, one or more actions, no conditions Regular alert
Multiple different triggers that all do the same thing Multiple regular alerts
One trigger, conditional action (only fire if X is also true) Advanced Alert
Repeating timer with optional stop condition Advanced Alert
Counter that gates firing (e.g. fire after the 3rd occurrence) Advanced Alert
Multiple triggers that feed into shared logic Advanced Alert

Creating an Advanced Alert

Click the + icon in the Watchdog panel and select Advanced Alert. The node graph editor opens automatically. You can reopen it at any time by clicking the alert in the list.


Editor Controls

Action How
Zoom Scroll wheel
Pan Click and drag on empty canvas
Add a node Right-click on empty canvas → pick from the menu, or drag and drop a connection to show a filtered list
Move a node Drag its title bar
Connect ports Click and drag from an output port to an input port
Delete a connection Create the connection again
Delete a node Click the X

📷 Screenshot needed: The right-click context menu on the canvas showing node categories and node types within each category


Port Types

Nodes communicate through typed ports on their left (inputs) and right (outputs) sides.

Execution ports (triangular, orange): Control when things happen. An execution signal flows from one node to the next along exec connections. Think of these as the "do this, then do that" wire.

Data ports (circular): Control what values are passed between nodes. Each data port has a type:

Color Type
Cyan Number
Green Boolean (true/false)
Orange/yellow String (text)
Purple String array (capture groups)
Light blue WorldPoint (map coordinate)
Teal Inventory

A port can only connect to another port of the same type. Hovering over a port shows its type name.

📷 Screenshot needed: Close-up of several nodes showing triangular exec ports and circular data ports in different colors with type labels visible


Node Reference

Trigger

Wraps any standard alert type (Game Message, Stat Changed, Inventory, etc.). When the trigger condition fires, this node sends an exec signal and optionally outputs the Capture Groups (the values matched by glob/regex patterns).

Outputs:

  • Exec — fires when the trigger condition is met
  • Capture Groups — the matched values as a String array ($1, $2, etc.)
  • Enabled — a Boolean indicating whether the trigger is currently enabled (readable by logic nodes)

You can have multiple Trigger nodes in a single Advanced Alert — useful for combining different event types into one graph.

📷 Screenshot needed: A simple graph: Game Message Trigger node connected via Exec to a Sound Effect Action node

Action

Wraps any standard action type (Sound Effect, Screen Flash, TTS, etc.). When an exec signal reaches it, it fires the action.

Inputs:

  • Exec — fires the action when received
  • Exec out — passes the signal onward after the action fires (for chaining)
  • Enabled — optional Boolean to override the action's enabled state
  • Fire When Focused, Fire When AFK, Fire When AFK For Seconds — override the corresponding Common Settings values dynamically

Branch

Routes an exec signal to one of two outputs based on a Boolean condition.

Inputs:

  • Exec — triggers the branch evaluation
  • Condition — a Boolean (true/false)

Outputs:

  • True — exec signal if Condition is true
  • False — exec signal if Condition is false

Use Branch as the core of any conditional logic: "fire Alert A if X, fire Alert B if not X."

📷 Screenshot needed: A Branch node receiving a Boolean from an Equality node, with True output going to one Action node and False output going to another


Delay

Waits a configured number of milliseconds before passing the exec signal forward.

Inputs:

  • Exec — starts the delay
  • Duration — optional Number input to set the delay duration dynamically (overrides the static value)

Outputs:

  • Exec — fires after the delay elapses

Timer

Fires an exec signal repeatedly at a fixed interval. Useful for polling logic or periodic reminders.

Inputs:

  • Exec (start) — starts the timer
  • Reset — cancels the current timer cycle

Outputs:

  • Exec — fires once per interval

Configure the interval duration in the node's settings field.

📷 Screenshot needed: A Timer node wired to an Action node, showing a looping arrow or annotation indicating repeating execution


Counter (flow node)

Counts how many exec signals pass through it. Unlike the Counter action, this node is used for flow control — you can read its count value and use it in logic.

Inputs:

  • Exec — increments the count and passes execution forward
  • Reset — zeroes the counter without firing the output

Outputs:

  • Exec — fires after every increment (can be gated by connecting to Branch)
  • Count — a Number output of the current count value

The count persists across sessions (saved with the alert).


Equality

Compares two numeric values and outputs a Boolean.

Inputs:

  • A, B — Number values to compare

Outputs:

  • Result — Boolean

Configure the comparator operator (==, !=, <, >, <=, >=) in the node's settings.


Boolean Gate

Combines two Boolean values with a logical operator.

Inputs:

  • A, B — Boolean values

Outputs:

  • Result — Boolean

Configure AND or OR in the node's settings.


Inventory Check

Reads a live Inventory value and evaluates a condition against it.

Inputs:

  • Inventory — an Inventory value (connect from an Inventory constant node)

Outputs:

  • Result — Boolean

Configure the check type (Full, Empty, Slots, Item Count, Item Change) and threshold in the node's settings. This is the graph equivalent of the Inventory Alert trigger, but usable as a condition mid-graph.


Location Compare

Compares two WorldPoint values and outputs true if they are within a configured distance.

Inputs:

  • A, B — WorldPoint values

Outputs:

  • Result — Boolean

Configure the distance threshold and Cardinal Only option in the node's settings.


Bool

A static true/false constant. Connect its output to any Boolean input.

Num

A static numeric constant. Enter the value in the node. Connect its output to any Number input.

Location

A fixed WorldPoint (X, Y, Plane). Set the coordinate in the node. Use as input to Location Compare or Shortest Path actions.

Inventory

Outputs a live snapshot of your current inventory state, updated every game tick. Connect to Inventory Check for conditional logic.

Plugin State

Outputs a Boolean indicating whether a named RuneLite plugin is currently enabled.


Add / Subtract / Multiply / Divide

Basic arithmetic on two Number inputs. Output is a Number.

Min / Max / Clamp

  • Min: outputs the smaller of two Numbers
  • Max: outputs the larger of two Numbers
  • Clamp: constrains a Number between a minimum and maximum value

Floor / Ceiling / Round

Rounding operations on a single Number input.


Note

A text annotation node. No ports. Write anything you want — document your graph, leave instructions, or mark sections. Has no effect on execution.

📷 Screenshot needed: A Note node with multi-line text explaining the purpose of a graph section, positioned near related nodes

Display

Shows the current value of any connected input port in real time as the graph runs. Useful for debugging — you can see numbers, booleans, and strings update live.

To String

Converts any value to its text representation. Output is a String that can be connected to action message fields.


Example Walkthrough: Fire Only After Third Idle

Goal: Play a sound only after the idle timer notification has fired three times in a row (ignoring the first two).

📷 Screenshot needed: The completed graph for this example: Notification Fired trigger → Counter → Equality node → Branch → Sound Effect action on the True output

  1. Right-click the canvas and add a Trigger node. Configure it as a Notification Fired trigger with the pattern You have been idle*.
  2. Connect the Trigger's Exec output to a Counter node's Exec input.
  3. Connect the Counter's Count output to an Equality node's A input. Set B = 3 and comparator = ==.
  4. Connect the Counter's Exec output to a Branch node's Exec input.
  5. Connect the Equality's Result output to the Branch's Condition input.
  6. Add a Sound Effect Action node. Connect Branch's True output to the Action's Exec input.
  7. To reset the counter when you become active again: add a second Trigger (Game Message, pattern = Welcome to Old School RuneLite or another activity message) and connect its Exec to the Counter's Reset input.

Now the sound fires only on the third consecutive idle notification. The first two are counted but do not trigger the sound.


Converting an Existing Alert

Click the Convert to Advanced Alert in any regular alert or group. This creates a new Advanced Alert with:

  • One Trigger node per source alert (each configured with the original trigger settings)
  • Action nodes mirroring all the original actions, wired in sequence

The original alert is preserved and not deleted. Once you are satisfied with the converted graph, you can delete the original.

📷 Screenshot needed: "Convert to Advanced Alert" button on a regular alert

📷 Screenshot needed: The resulting graph after conversion, showing trigger nodes on the left fanning into a chain of action nodes

Clone this wiki locally