// General
Talk
Initiate a conversation with a nearby character.
Usage:
talk to <character>
talk <character>
Opens a menu of social moves bound to a `converse`
interaction on the target. What's available depends on
your relationship with the target: some moves need a
minimum familiarity, some topics need a trust threshold
or facial recognition, etc.
The menu shows the NPC's current mood at the top so you
have a read on where you stand:
hostile opinion < 30
neutral opinion 30..69
friendly opinion >= 70
# subtopics
## Moves
greet Exchange pleasantries. First greet of
the game-day raises familiarity by +5;
subsequent greets only +1. Sets the
NPC's face_recognized flag on you. May
trigger a name offer (see below).
[once per conversation]
introduce Offer your name. NPC always records it.
They share theirs back only if their
name_share_lock passes (default
`always`; can be `trust(60)`,
`recognized()`, etc. per-NPC).
[visible while NPC doesn't know your
name; once per conversation]
ask Ask about a topic -- enters a
multi-beat thread (see below). List
= overlap of your heard_topics with
the NPC's topics, plus public topics
they carry.
end Close the conversation.
## Topic threads
Picking ask and choosing a topic enters a thread:
the NPC says something, you see numbered choices, you
pick one, and the conversation branches based on your
pick (or a skill check). Threads remember where you left
off -- you can `back` out to the topic list and come
back later, or `end` to close the conversation entirely.
Choices can be:
- Plain dialogue branches.
- [Stat N] skill checks -- a roll against your
stat. Pass / fail leads to different next beats.
Some are one-shot (single attempt this
conversation).
- Gated by what you carry, what you know, who you
are: a beat author can lock a choice behind a
lockstring like has_item(keycard),
has_trait(corporate), faction_rep(ACC, 30).
You only see choices you qualify for.
- Effect-carrying: picking a choice can grant favor,
reveal facts, hand over an item, take one, change
relationship scalars, set per-PC story flags, etc.
## Trait-driven NPC behavior
The NPC's traits color their greet response:
workaholic + familiarity < 30: greet appends a
"busy day -- what do you need?" line.
solitary: name exchange suppressed outside the
friendly band.
lazy: never volunteers their name during greet --
you must explicitly introduce.
With no relevant traits and `name_share_lock` passing,
a neutral or friendly NPC will offer their name during
greet (registering an rpsystem recog so you see them by
name from then on) and prompt you for yours. You still
need to run introduce to tell them your name.
## Response variety
Each move has multiple response templates per opinion
band (hostile / neutral / friendly), picked at random.
Repeat encounters don't feel scripted.
## Names + recog
Until you've recog'd an NPC (manually via recog <obj>
as <name>, or automatically when they offer it during
greet/introduce), they appear in room descriptions by
their sdesc -- "a hooded figure in synthleather"
rather than "Mira". The conversation menu, error
messages, and templates all honor this.
## Cooldown
After a conversation ends, you can't immediately re-talk
to the same target (default 30 game-minutes). Admins
can reset with @npc/clearcooldown <npc> for testing.
## NPC moving away
If the NPC walks out of the room mid-conversation (or
you do), the menu closes and the interaction ends. You'll
see "X stepped away; the conversation ended."
## What's missing (later phases)
Coercion and transactional moves -- bribe, threaten,
ask_favor, accuse -- ship in a later phase once the
traits / hooks / evidence systems they depend on are in
place. Same for the conversation-interrupt model (combat
or alarm during a thread).
## Rich prose + skill voices (Disco-style)
When you enter a beat, you may see:
- A bracketed [SPEAKER LABEL] at the top of the
block, using whatever name you currently know them by
(sdesc until you've recog'd them, name once you have).
- A short block of narrative prose describing the
room, body language, atmospherics. This is private to
you -- the rest of the room only hears the spoken
line below.
- Zero or more PASSIVE SKILL VOICES: a quick stat
roll fires silently against your skills, and on a
pass, a one-liner appears tagged with the skill
("PERCEPTION -- His left hand is shaking."). Each
voice has its own color. Failures are silent -- you
only see the ones you passed.
- The NPC's "spoken line in quotes" at the bottom.
That's the part the rest of the room hears (through
rpsystem sdesc/recog).
On skill check failure during a choice, some authors
wire a failure voice -- a red-tagged Disco flourish
describing why the read went sideways. Sometimes you
learn more from a failed roll than a passed one.
See `help converse` for the underlying interaction +
handler mechanics, `help npc social` for the data
substrate (relationships, memories, topics, perceived
identity), and `help topic threads` for the full beat
schema if you're authoring NPCs.
// General