Production startup now spawns 23 Sova NPCs with EntanglementTag (Flat/Intrigue) based on triangle_membership. Three-phase spawn: entity creation, cross-reference resolution, and authored triangle instantiation. Five triangles (3 ActiveFork, 2 PassiveTension per D-087) with deterministic IDs via FNV-1a hashing. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -152,6 +152,25 @@ pub enum DeviationTrigger {
|
||||
Confrontation,
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Entanglement tag (D-029, #176)
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/// Marks an NPC's narrative entanglement level (D-029).
|
||||
///
|
||||
/// - `Flat`: background population — no triangle involvement, minimal story role.
|
||||
/// - `Mundane`: has routines and personality but no active triangle membership.
|
||||
/// - `Intrigue`: participates in at least one triangle — drives narrative tension.
|
||||
///
|
||||
/// For authored NPCs: determined by YAML `triangle_membership` field.
|
||||
/// For procedural NPCs: assigned by the 30/50/20 ratio via SimRng.
|
||||
#[derive(Component, Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
||||
pub enum EntanglementTag {
|
||||
Flat,
|
||||
Mundane,
|
||||
Intrigue,
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Axis 1: Want (D-024)
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user