Content files (RON templates, YAML campaigns, gauntlet data) are consumed exclusively by the server. Colocate them at server/content/ and update all path references in Rust source, tooling scripts, and schema files. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
50 lines
3.1 KiB
Plaintext
50 lines
3.1 KiB
Plaintext
// Trait Modifier Clauses for Voice Pipeline (D-138)
|
|
//
|
|
// One clause per PersonalityTrait. Injected into LLM prompts to modify
|
|
// speech style based on NPC personality. Stacks with culture persona
|
|
// and tell-state injectors.
|
|
//
|
|
// Schema: map of trait name → clause string
|
|
// Used by: server/src/voice/prompt_builder.rs
|
|
//
|
|
// Writing notes:
|
|
// - Behavioral, not emotional. Never label a feeling.
|
|
// - Each clause targets a distinct speech dimension so traits stack cleanly.
|
|
// Bold = delivery force. Cautious = word selection. Curious = sentence shape.
|
|
// Compassionate = cadence (engaged). Incurious = cadence (flat). Ruthless = position.
|
|
// A Bold+Compassionate NPC speaks with force but gives the answer room to land — no conflict.
|
|
// - Kept to 1-2 sentences. LLM context is limited and these share space with
|
|
// persona, tell-state, and epistemic marker instructions.
|
|
|
|
{
|
|
// Delivery: force and directness. Short sentences land without hedging.
|
|
"Bold": "This character doesn't soften the landing. Statements arrive short and flat — no qualifiers, no trailing uncertainty.",
|
|
|
|
// Word selection: nothing committed without cover. Hedges stay.
|
|
"Cautious": "This character hedges where the situation allows it. \"Probably,\" \"might,\" \"I'd say\" — these aren't weakness, they're habit.",
|
|
|
|
// Sentence shape: questions surface. Interest pulls the line open.
|
|
"Curious": "This character lets interest show at the end of a line — a beat longer than needed, a question that wasn't required.",
|
|
|
|
// Framing: the useful version, not the true version. Nothing false, just selected.
|
|
"Deceptive": "This character leads with what serves them. The useful detail arrives early; the less useful one doesn't arrive at all.",
|
|
|
|
// Framing: no softening, no omission. The whole thing, bluntly.
|
|
"Honest": "This character gives the whole answer, including the part that doesn't reflect well. Nothing is softened to spare anyone.",
|
|
|
|
// Cadence: open, engaged. Responses arrive with momentum and care.
|
|
"Compassionate": "This character gives the answer room to land. There's no rush past the difficult part — it gets said, plainly, without looking away.",
|
|
|
|
// Cadence: flat, unengaged. The response does its job and stops.
|
|
"Incurious": "This character answers what was asked. Nothing extra surfaces — no follow-up, no interest, no second look at what was just said.",
|
|
|
|
// Volume and reach: minimal, inward-facing. Not interested in being heard widely.
|
|
"Reclusive": "This character answers what was asked and closes the door. There is no invitation for follow-up.",
|
|
|
|
// Texture: open, inclusive. Others are assumed to be present and welcome.
|
|
"Social": "This character addresses the conversation, not just the question. A word or two lands that wasn't strictly necessary — the kind that keeps things warm.",
|
|
|
|
// Position: sharp, economical. Nothing is offered that doesn't serve the speaker.
|
|
"Ruthless": "This character cuts to the useful part. Courtesy is absent, not hostile — just unnecessary. The sentence ends when the point is made.",
|
|
}
|