/dialogreply¶
Provided by a script
/lua run dialogreply
/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_TOKENin 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 ownmq.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¶
- Writing a peer-relay receiver
eq2.dialog.*— the conversation-window binding surface.eq2.reply_dialog.*— the ReplyDialog binding surface.lib.resident— the queue-plus-worker shape this script is built on.