refactor(content): rename mood vocabulary to match voice guide (D-035 Sprint 14 amendment)

Schema and Rust Mood enum renamed for author-friendly vocabulary:
fond→warm, comfortable→content, worried→anxious, concerned→frustrated.
Dropped: analytical (merged into focused), conflicted (modeled as
suspicious+warm collision). Added: hostile. Final 8 moods: anxious,
frustrated, content, suspicious, warm, hostile, relieved, focused.
Neutral = untagged. Resolves Gestalt's blocking issue on #121.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-20 19:00:07 +01:00
co-authored by Claude Opus 4.6
parent df4d7b4666
commit 91eb11da16
10 changed files with 66 additions and 134 deletions
+12 -12
View File
@@ -68,7 +68,7 @@ pub struct CurrentMood(pub Mood);
impl Default for CurrentMood {
fn default() -> Self {
Self(Mood::Comfortable)
Self(Mood::Content)
}
}
@@ -891,14 +891,14 @@ mod tests {
#[test]
fn score_mood_match_adds_three() {
let line = make_line("moody", &[], &[Mood::Worried]);
assert_eq!(score_line(&line, Some(Mood::Worried), &[]), 4); // 1 base + 3 mood
let line = make_line("moody", &[], &[Mood::Anxious]);
assert_eq!(score_line(&line, Some(Mood::Anxious), &[]), 4); // 1 base + 3 mood
}
#[test]
fn score_mood_mismatch_stays_base() {
let line = make_line("moody", &[], &[Mood::Worried]);
assert_eq!(score_line(&line, Some(Mood::Fond), &[]), 1);
let line = make_line("moody", &[], &[Mood::Anxious]);
assert_eq!(score_line(&line, Some(Mood::Warm), &[]), 1);
}
#[test]
@@ -987,7 +987,7 @@ mod tests {
fn select_deterministic_with_same_seed() {
let line_a = make_line("a", &[], &[]);
let line_b = make_line("b", &[Topic::Cargo], &[]);
let line_c = make_line("c", &[], &[Mood::Worried]);
let line_c = make_line("c", &[], &[Mood::Anxious]);
let candidates = vec![&line_a, &line_b, &line_c];
let cooldown = DialogueCooldownTracker::default();
@@ -1003,7 +1003,7 @@ mod tests {
fn select_favors_higher_scored_lines() {
// Line with matching mood gets +3, so should be selected more often
let neutral = make_line("neutral", &[], &[]);
let matched = make_line("matched", &[], &[Mood::Worried]);
let matched = make_line("matched", &[], &[Mood::Anxious]);
let candidates = vec![&neutral, &matched];
let cooldown = DialogueCooldownTracker::default();
@@ -1012,7 +1012,7 @@ mod tests {
let mut rng = rand_chacha::ChaCha20Rng::seed_from_u64(seed);
if let Some(line) = select_dialogue_line(
&candidates,
Some(Mood::Worried),
Some(Mood::Anxious),
&[],
&cooldown,
0,
@@ -1077,7 +1077,7 @@ mod tests {
trust: TrustTier::Surface,
situation: vec![Situation::NightShift],
topic: vec![Topic::Routine],
mood: vec![Mood::Comfortable],
mood: vec![Mood::Content],
tags: vec![],
knowledge_grant: None,
},
@@ -1089,7 +1089,7 @@ mod tests {
trust: TrustTier::Real,
situation: vec![Situation::Investigation],
topic: vec![Topic::Cargo, Topic::Investigation],
mood: vec![Mood::Conflicted],
mood: vec![Mood::Suspicious],
tags: vec![],
knowledge_grant: None,
},
@@ -1122,7 +1122,7 @@ mod tests {
location: "the-terminal".to_string(),
role: "dock-worker".to_string(),
},
CurrentMood(Mood::Comfortable),
CurrentMood(Mood::Content),
))
.id();
world.resource_mut::<EntityRegistry>().register(npc);
@@ -1414,7 +1414,7 @@ mod tests {
location: "the-terminal".to_string(),
role: "dock-worker".to_string(),
},
CurrentMood(Mood::Comfortable),
CurrentMood(Mood::Content),
))
.id();
world.resource_mut::<EntityRegistry>().register(npc);