Skip to content

/dialogreply

Provided by a script

/lua run dialogreply
Run with no arguments it stays resident and registers /dialogreply. It can also be run one-shot: /lua run dialogreply <option text>, queued as its first job.

Syntax

/dialogreply <option text>
/dialogreply status
/dialogreply clear

Description

Relay receiver that selects a conversation or dialog reply option on this client, matched by display text rather than index. The leader-side relayclicks.lua observes a human picking a reply and relays the text; each peer selects the option with the same text on its own window.

Why by text, not index

The reply index differs per client — a peer's window can be a page or two behind the leader's — so display text is the only identity stable across clients, the same reason zone doors relay by name and travel relays by display label.

Options

  • <option text> — The whole rest of the line, verbatim. Queued as a job; jobs run one at a time, in arrival order, which matters for a hail chain (several replies land inside one poll window). May contain lib.dialog.NAME_TOKEN in place of the sender's own character name — the sender tokenizes it out before relaying, and this job expands it back to this client's own mq.TLO.Me.Name() before matching.
  • status — Print the resident worker's queue depth, in-flight job, and done/failed/dropped counters.
  • clear — Drop every queued job. A job already in flight still finishes.

Matching behavior

Each job polls for up to 3 seconds (150ms interval) against both popup types this box might be showing, since the receiver has no way to know in advance which one the server opened here: the conversation window (eq2.dialog.status() / reply()) and the separate ReplyDialog reward/turn-in popup used by examinable items (eq2.reply_dialog.status() / select()). The poll covers this box's window-open lag — the leader relays the door/object click that opens the window just before the reply, and this client needs a frame or two to catch up.

If the text matches a ReplyDialog option but the select call itself fails, that is reported distinctly from "no matching option appeared" — collapsing the two would misdirect debugging toward text/tokenization when the real blocker is the select primitive.

Examples

/lua run dialogreply
/dialogreply I'll take the quest.
/dialogreply status

Leader relaying a human's pick across the group:

/dge /dialogreply I'll take the quest.

See also