pub struct DialogueOption {
pub label: String,
pub tooltip: Option<String>,
pub next: Option<DialogueId>,
pub requires_flags: Vec<FlagId>,
pub forbids_flags: Vec<FlagId>,
pub requires_state: Vec<StateCompare>,
pub effects: Vec<DialogueEffect>,
pub happening: Option<Happening>,
}Expand description
One selectable dialogue option.
Fields§
§label: StringButton label.
tooltip: Option<String>The full line this button is the caption of (DSL v0.8). Vanilla’s dialog button codec
(CommonButtonData) carries an optional tooltip component beside
label, and the client hangs it on the button as a real hover tooltip —
so a caption on the button and the sentence the character actually says
can both exist. Not subject to DW0331: a tooltip is not drawn on the
150 px button, it is wrapped at 170 px into its own hover box, so it never
scrolls. Player-visible, so it translates like the label
(dlg.<npc>.<node>.opt.<i>.tooltip).
next: Option<DialogueId>Next node; omitted closes the dialog.
requires_flags: Vec<FlagId>Flags that must be set for this option to be shown (DSL v0.4). Mirrors an
objective’s requires_flags: an ungated option (empty) is unchanged; a
gated option is hidden until every referenced flag has been set by a
set-flag effect (quest or dialogue). Validation guarantees a flag-gated
option cannot make a critical-path node unreachable (DW0191).
forbids_flags: Vec<FlagId>Negative flag gate (DSL v0.6): the option is
hidden (and its /trigger handler inert) while ANY listed flag is set
for the player — the dual of requires_flags. A forbids_flags-gated
option counts as gated for the DW0191 deadlock guard: it can be
suppressed at any point, so it cannot be the only completing path.
requires_state: Vec<StateCompare>Numeric gate terms (DSL v0.10, spec-0031): every listed comparison must hold for this gate to be open. The third field of the one gate, carried by every gate consumer — never by the verb that first wanted it. Default empty, so a pre-0.10 campaign is byte-identical.
effects: Vec<DialogueEffect>Effects fired when this option is chosen.
happening: Option<Happening>What choosing this option does to the story (spec-0025). Required for a
story-weight beat
— an option carrying a set-flag effect, which is how a player’s choice
forks the world (DW0481). An option that only walks the tree or
completes an objective needs none: the objective already declares one.
Implementations§
Trait Implementations§
Source§impl Clone for DialogueOption
impl Clone for DialogueOption
Source§impl Debug for DialogueOption
impl Debug for DialogueOption
Source§impl<'de> Deserialize<'de> for DialogueOption
impl<'de> Deserialize<'de> for DialogueOption
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for DialogueOption
impl JsonSchema for DialogueOption
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read more