# Theriapolis — Faction Influence & Reputation System
### Technical Design Document

---

## Executive Summary

The reputation system tracks how the world perceives the Player Character across three
nested layers: **Clade Bias** (what you are), **Faction Standing** (what your group
has done), and **Individual Disposition** (what you've done to me personally). These
three layers blend into a single **Effective Disposition** score for every NPC the
player interacts with.

The core principle: **Nobody meets you clean.** Every NPC has opinions before you
walk through the door. Your species, your Clade, the factions you're associated with,
the rumors that precede you — all of it colors the interaction before a single word is
exchanged. Personal experience can override prejudice, reinforce it, or complicate it.

---
---

# SECTION I: THE THREE LAYERS

---

## Layer 1: Clade Bias

### What It Represents

The deep, biological, cultural, historical weight of being what you are. A wolf-folk
walking into a Cervid herd-city carries ten thousand years of predator/prey history
on their shoulders. A hybrid walking anywhere carries stigma. This layer exists before
the game begins and changes slowly, if at all.

### Implementation

Every NPC has a **Clade Bias Table** — a set of modifiers based on the PC's Clade
and species. These are NOT stored per-NPC individually (that would be wasteful). They
are inherited from the NPC's **Bias Profile**, which is determined by the NPC's own
Clade, cultural background, region, and education level.

**Bias Profiles** are templates. A finite set (30–50) covers the population:

| Profile ID | Description | Example NPCs |
|-----------|-------------|--------------|
| CANID_TRADITIONALIST | Pack-loyal, distrusts non-Canidae, respects strength hierarchy | Rural wolf-folk rancher, Old Pack sympathizer |
| CERVID_CAUTIOUS | Default wariness of predator Clades, warm to other prey, uncertain about hybrids | Herd-city shopkeeper, Cervid farmer |
| URBAN_PROGRESSIVE | Reduced Clade bias across the board, mild positive toward hybrids, dislikes extremists | Sanctum Fidelis professional, university-educated |
| HYBRID_SURVIVOR | Strong positive toward hybrids, default distrust of purebreds, especially authorities | Tangles resident, underground network member |
| MUSTELID_PRAGMATIST | Judges by utility, mild distrust of large species (Ursidae, Bovidae), respects competence | Factory foreman, independent trader |
| BOVID_HERD_LOYALIST | Warm to other Bovidae and prey Clades, wary of predators, protective of community | Herd-city elder, agricultural cooperative member |
| COVENANT_FAITHFUL | Treats all Clades with studied neutrality, strong negative toward Covenant violators | Covenant Enforcer, Bridge-oath Keeper |
| FRONTIER_NIHILIST | Doesn't care what you are, only what you can do right now | Borderland stray, Tangles smuggler |

Each profile contains a modifier table:

```
CERVID_CAUTIOUS bias table:
  Canidae:     -15
  Felidae:     -20
  Mustelidae:  -10
  Ursidae:     -25  (biggest = scariest)
  Cervidae:    +15
  Bovidae:     +10
  Leporidae:   +5
  Hybrid:      -10
```

These are the starting modifiers applied to the Effective Disposition calculation
before anything else.

### Clade Bias Modifiers — Additional Factors

**Species-Specific Adjustments:**
Within a Clade, species matters. The base Clade bias is adjusted:

```
If NPC profile = CERVID_CAUTIOUS and PC species = Fox-folk:
  Base Canidae bias: -15
  Fox-folk adjustment: +5 (smaller, less threatening than wolf-folk)
  Net: -10

If PC species = Wolf-folk:
  Base Canidae bias: -15
  Wolf-folk adjustment: -5 (apex predator, maximum threat profile)
  Net: -20
```

Species adjustments are small (±5 to ±10) but meaningful at thresholds.

**Size Differential:**
A Large PC interacting with a Small NPC triggers an additional modifier based on the
size gap. This is involuntary — the NPC's body responds to the size differential
before their brain catches up.

```
Size differential modifiers:
  Same size:         +0
  One step larger:   -3  (PC is bigger)
  Two steps larger:  -8  (PC is much bigger)
  One step smaller:  +2  (PC is smaller, less threatening)
  Two steps smaller: +5  (PC is much smaller, non-threatening... or patronized)
```

A moose-folk PC talking to a rabbit-folk shopkeeper starts at -8 from size alone,
before Clade bias, before anything personal. That's the world.

**Hybrid Detection:**
If the PC is a hybrid and the NPC detects it (through scent, visual tells, or
reputation), an additional HYBRID modifier applies from the NPC's bias profile.
If the PC is passing and the NPC hasn't detected it, the hybrid modifier does NOT
apply — the PC is treated as their presenting Clade.

Discovery of passing status triggers a **Betrayal Event** (see Section IV).

---

## Layer 2: Faction Standing

### What It Represents

How the PC is perceived based on their affiliation with (or opposition to) organized
groups. Faction Standing is communal reputation — it follows you through the world
via rumor, news, official records, and scent-marked territory.

### The Factions

The system tracks standing with the following factions:

| Faction | Description | Standing Range |
|---------|-------------|---------------|
| **Covenant Enforcers** | The law. Federal authority. Policing the Covenant. | -100 to +100 |
| **The Inheritors** | Predator-Clade supremacist network. | -100 to +100 |
| **The Thorn Council** | Prey-Clade separatist movement. | -100 to +100 |
| **The Maw** (hidden) | The umbrella conspiracy. PC learns about it progressively. | -100 to +100 |
| **Hybrid Underground** | Informal mutual aid and rights network. | -100 to +100 |
| **The Unsheathed** | Hybrid political activism movement. | -100 to +100 |
| **Merchant Guilds** | Trade, commerce, economic power. | -100 to +100 |
| **Local Government** | Per-settlement authority. Independent per settlement. | -100 to +100 (per settlement) |

**Standing Scale:**

| Range | Label | Effect |
|-------|-------|--------|
| -100 to -76 | NEMESIS | Kill on sight. Bounties. Active hunting. |
| -75 to -51 | HOSTILE | Attacked if recognized. No services. Arrest warrants. |
| -50 to -26 | ANTAGONISTIC | Refused service. Information denied. Reported to authorities. |
| -25 to -1 | UNFRIENDLY | Cold reception. Higher prices (+25%). Limited dialogue. |
| 0 | NEUTRAL | Default. No opinion. Standard interactions. |
| +1 to +25 | FAVORABLE | Slight discount (-10%). More dialogue options. Tips and rumors. |
| +26 to +50 | FRIENDLY | Discount (-20%). Side quest access. Safe houses. |
| +51 to +75 | ALLIED | Significant discount (-30%). Faction resources available. Backup in combat. |
| +76 to +100 | CHAMPION | Maximum benefits. Leadership-level access. Faction NPCs will die for you. |

### How Standing Changes

**Direct Actions:**
Completing quests, making story choices, killing faction members, saving faction
members, delivering intelligence — these produce **Standing Events** with defined
magnitude:

| Action | Magnitude | Example |
|--------|-----------|---------|
| Minor favor | +3 to +5 | Delivered a package, shared non-critical info |
| Moderate service | +8 to +12 | Completed a faction quest, saved a member |
| Major service | +15 to +25 | Disrupted an enemy operation, saved a leader |
| Critical contribution | +30 to +50 | Resolved a faction-threatening crisis |
| Minor offense | -3 to -5 | Refused a request, associated with rivals |
| Moderate offense | -8 to -12 | Failed a faction quest, harmed a member |
| Major betrayal | -15 to -25 | Killed a member, sabotaged operations |
| Critical betrayal | -30 to -50 | Destroyed a faction asset, turned over intel to enemies |

**Faction Interdependencies:**
Some factions are opposed. Gaining standing with one costs standing with another:

```
FACTION OPPOSITION MATRIX:

                    Enforcers  Inheritors  Thorn   Hybrid_UG  Unsheathed  Merchants
Enforcers              —         -0.3      -0.3     -0.1        0.0         +0.1
Inheritors           -0.5          —       -0.2     -0.3       -0.3         0.0
Thorn Council        -0.5        -0.2        —      -0.1       -0.2         0.0
Hybrid Underground   -0.1        -0.5      -0.3       —        +0.3         0.0
Unsheathed            0.0        -0.5      -0.3     +0.3         —          0.0
Merchants            +0.1         0.0       0.0      0.0        0.0          —
```

Reading: when the PC gains +10 with the Inheritors, they lose 0.5 × 10 = -5 with
the Covenant Enforcers, -2 with the Thorn Council, -3 with the Hybrid Underground,
and -3 with the Unsheathed.

The multipliers are asymmetric by design. Helping predator supremacists hurts you
more with the Hybrid Underground (-0.3) than helping the Hybrid Underground hurts
you with the Enforcers (-0.1). The oppressed are more sensitive to betrayal than
institutions are to dissent.

### Faction Standing Propagation

NPCs don't psychically know your faction standing. Information travels through
believable channels:

**Propagation Speed:**
- Within a settlement where the action occurred: immediate
- To adjacent settlements (1-2 day travel): 1–3 in-game days
- Across the continent: 1–2 in-game weeks (thumper-relay and rail-carried news)
- To isolated/frontier areas: may never arrive without specific courier

**Propagation Fidelity:**
Standing events degrade as they propagate:

```
At origin:          Full magnitude
Adjacent settlement: 80% magnitude
Regional:           60% magnitude
Continental:        40% magnitude
Frontier:           20% magnitude (if it arrives at all)
```

Example: PC saves a Covenant Enforcer in Thornfield (+15). In Thornfield, their
Enforcer standing is immediately +15. In a nearby town: +12. In Sanctum Fidelis
(continental): +6. In The Tangles (frontier, plus Enforcers have weak presence): +3,
and only if a courier happened to carry the news.

**Exception — NEMESIS and CHAMPION standing:** Extreme standing events propagate at
full magnitude and maximum speed. Kill a faction leader, and everyone in that faction
knows within days. Save a city from destruction, and the entire continent hears by
next week. Fame and infamy travel fast.

**Scent-Based Faction Detection:**
In settlements with strong faction presence, faction-aligned NPCs can SMELL the PC's
recent associations. Spent time in an Inheritor camp? You carry traces. Stayed at a
Hybrid Underground safe house? Scent residue. This creates an additional detection
mechanism beyond rumor propagation.

```
Scent-based faction detection:
  Duration:  Scent traces last 24–72 hours depending on exposure
  Detection: NPCs with Superior Scent or Scent-Broker abilities auto-detect
  Others:    WIS (Perception) DC 15 to notice "something off" about the PC's scent
  Counter:   Scent-mask products suppress faction scent traces
             Military-grade: 8 hours suppression
             Deep-cover: 24 hours
```

---

## Layer 3: Individual Disposition

### What It Represents

How a specific NPC feels about the PC based on direct personal interaction. This is
the layer that makes the shopkeeper who hates Canidae warm up to the wolf-folk PC who
saved her kit from drowning. Personal experience is the strongest force in the system —
it can override Clade bias and faction standing, though doing so takes sustained effort.

### Implementation

Every NPC the PC has directly interacted with stores a **Personal Disposition Record**:

```
PersonalDisposition {
    npc_id:           unique identifier
    base_value:       0 (initialized at first interaction)
    current_value:    integer (-100 to +100)
    interaction_log:  [array of InteractionEvents]
    trust_level:      enum (STRANGER, ACQUAINTANCE, FAMILIAR, TRUSTED, BONDED)
    memory_flags:     [set of memorable event tags]
    betrayal_flag:    boolean (has the PC betrayed this NPC specifically?)
    last_interaction: timestamp
}
```

### How Individual Disposition Changes

**Interaction Events:**
Every meaningful exchange with an NPC generates an InteractionEvent:

```
InteractionEvent {
    type:       enum (DIALOGUE, QUEST, GIFT, COMBAT, BETRAYAL, RESCUE, TRADE, SCENT)
    magnitude:  integer (-50 to +50)
    context:    string (what happened)
    timestamp:  game time
}
```

**Event Types and Typical Magnitudes:**

| Event | Magnitude | Example |
|-------|-----------|---------|
| Polite greeting | +1 | First meeting, respectful dialogue |
| Helpful dialogue | +2 to +3 | Answering questions, sharing non-sensitive info |
| Small favor | +3 to +5 | Delivered an item, helped with a minor task |
| Significant help | +8 to +12 | Completed a personal quest, defended them |
| Life-saving | +15 to +25 | Rescued from danger, provided critical medical aid |
| Gift (appropriate) | +2 to +8 | Item value and relevance to NPC determine magnitude |
| Gift (inappropriate) | -1 to -3 | Wrong item, insulting implication, cultural misstep |
| Successful persuasion | +1 to +3 | Convinced them of something, but they know they were persuaded |
| Failed intimidation | -5 to -10 | Tried to bully them, failed. They remember. |
| Successful intimidation | -3 to -8 | Got what you wanted. They resent it. |
| Theft (detected) | -15 to -25 | Caught stealing. Trust collapses. |
| Theft (undetected) | +0 | They don't know. But if discovered later: magnitude doubles as betrayal. |
| Physical harm | -20 to -40 | Attacked them or someone they care about. |
| Witnessed violence | -5 to -15 | They saw you kill or brutalize someone. Context matters. |
| Witnessed mercy | +5 to +10 | They saw you spare someone or de-escalate. |
| Broke promise | -10 to -20 | Said you'd do something, didn't. |
| Kept difficult promise | +10 to +15 | Did what you said, even when it cost you. |
| Shared vulnerability | +5 to +8 | Revealed personal information, showed trust. |

### Trust Level

Trust is a ratchet-like system that tracks depth of relationship independently from
disposition value. You can like someone you don't trust. You can trust someone you
don't like.

| Trust Level | Threshold | Unlocks |
|-------------|-----------|---------|
| STRANGER | Default | Basic transactions, surface dialogue |
| ACQUAINTANCE | 3+ positive interactions | Extended dialogue, rumor sharing, basic side quests |
| FAMILIAR | 8+ positive interactions, disposition > +15 | Personal backstory dialogue, discounts, warnings about danger |
| TRUSTED | 15+ positive interactions, disposition > +30, no betrayal flag | Secret sharing, faction introductions, personal quests, safe house access |
| BONDED | 25+ positive interactions, disposition > +50, TRUSTED for 5+ in-game days | Will fight for the PC, share critical info unprompted, risk their life, romance options (if applicable) |

**Trust Decay:**
Trust does NOT decay passively. Once earned, it persists unless violated. However,
disposition CAN decay (see Section III), and if disposition drops below the trust
level's threshold while trust is high, the NPC enters a **Conflicted** state —
they trust you but don't currently like you. This produces unique dialogue: "I know
you're good underneath whatever this is. Don't make me wrong."

**Trust Destruction:**
A betrayal event (see Section IV) can shatter trust instantly, dropping it by 1–3
levels depending on severity. Rebuilding shattered trust requires roughly double the
interaction investment of building it originally. Some NPCs have a **one-strike flag** —
betray them once and BONDED/TRUSTED is permanently inaccessible. These NPCs are
marked in their design notes.

---
---

# SECTION II: BLENDING THE LAYERS — EFFECTIVE DISPOSITION

### The Formula

When the PC interacts with an NPC, the system calculates an **Effective Disposition**
that determines the NPC's behavior:

```
EffectiveDisposition = (CladeBias × BiasWeight)
                     + (FactionStanding × FactionWeight)
                     + (IndividualDisposition × IndividualWeight)
```

### Dynamic Weighting

The weights are NOT fixed. They shift based on the NPC's trust level with the PC.
This is the key insight: **personal experience gradually overrides prejudice, but
only if you invest in the relationship.**

| Trust Level | BiasWeight | FactionWeight | IndividualWeight |
|-------------|-----------|---------------|-----------------|
| STRANGER | 0.50 | 0.40 | 0.10 |
| ACQUAINTANCE | 0.35 | 0.35 | 0.30 |
| FAMILIAR | 0.20 | 0.25 | 0.55 |
| TRUSTED | 0.10 | 0.15 | 0.75 |
| BONDED | 0.05 | 0.05 | 0.90 |

**Reading this table:** When the PC first meets a stranger, Clade bias is 50% of
the equation and personal experience is only 10%. The shopkeeper who's never met
a wolf-folk is basically responding to wolf-folk-ness, not to YOU. But by the time
you've reached TRUSTED, personal experience is 75% of the equation — the shopkeeper
has largely overridden her species-level wariness because YOU specifically have proven
yourself.

"Largely" is the key word. Even at BONDED, Clade bias is still 5%. It never fully
disappears. That's the world. The prejudice gets quiet, but it doesn't die. A
BONDED Cervid NPC who adores the wolf-folk PC will still flinch, once in a while,
at a sudden movement. That 5% is ten thousand years of evolutionary memory.

### Example Calculation

**Setup:**
- PC: Wolf-folk (Canidae)
- NPC: Cervid shopkeeper, CERVID_CAUTIOUS bias profile
- Covenant Enforcer standing: +20 (FAVORABLE)
- NPC has no faction affiliation (uses a blended average of factions weighted by
  local presence — in a Covenant-strong area, Enforcer standing matters most)
- Trust Level: ACQUAINTANCE (6 interactions, all positive)
- Individual Disposition: +12

**Clade Bias:** CERVID_CAUTIOUS → Canidae: -15, Wolf-folk adjustment: -5 = **-20**

**Faction Standing (local blend):** Settlement is moderate Covenant presence (60%
weight) + low Merchant Guild presence (30%) + negligible others (10%).
PC Enforcer standing: +20 × 0.6 = +12
PC Merchant standing: 0 × 0.3 = 0
Blended local faction = **+12**

**Individual Disposition:** **+12**

**Weights at ACQUAINTANCE:** Bias 0.35, Faction 0.35, Individual 0.30

```
Effective = (-20 × 0.35) + (+12 × 0.35) + (+12 × 0.30)
          = (-7.0) + (4.2) + (3.6)
          = +0.8
```

**Result: Barely positive.** The shopkeeper is civil. Not warm. The wolf-folk's
Clade identity is dragging the score down, the Enforcer reputation and personal
experience are pulling it up, and the whole thing lands at approximately neutral with
a thin positive edge. Three more good interactions and it'll feel genuinely friendly.
One bad one and it tips cold.

That knife-edge is the player experience. Every interaction matters because the
math is always close.

---
---

# SECTION III: DISPOSITION DECAY AND MEMORY

### Passive Decay

Individual disposition decays slowly toward a **resting point** when the PC hasn't
interacted with an NPC for an extended period.

**Resting Point Calculation:**
The resting point is NOT zero. It's the NPC's baseline opinion accounting for what
they've heard but haven't experienced:

```
RestingPoint = (CladeBias × 0.5) + (FactionStanding × 0.3)
```

This means a wolf-folk PC with strong Enforcer standing has a positive resting point
with law-abiding NPCs and a negative one with outlaws, even for NPCs they've never
met. The world has an opinion about you before you arrive.

**Decay Rate:**
Individual disposition moves toward the resting point at a rate of:

```
decay_per_day = (current_disposition - resting_point) × 0.02
```

Slow. 2% of the gap per day. A disposition of +50 with a resting point of 0 drops to
+49 after one day, +40 after about 25 days. The PC would need to be gone for months
for a strong relationship to decay meaningfully.

**Decay Floor by Trust Level:**
Trust provides a decay floor — disposition cannot decay below a minimum determined by
trust:

| Trust Level | Minimum Disposition (Decay Floor) |
|-------------|----------------------------------|
| STRANGER | No floor (full decay) |
| ACQUAINTANCE | -10 (won't drop below -10 from decay alone) |
| FAMILIAR | +5 (relationship sustains mild positivity) |
| TRUSTED | +20 (strong relationships persist) |
| BONDED | +40 (bond endures long absence) |

This means a BONDED NPC will still be solidly positive even if the PC disappears for
an entire act. They trust you. Absence doesn't erase that. But a STRANGER's fleeting
good impression fades to the resting point within weeks.

### Memory Flags

NPCs remember specific events via **Memory Flags** — tagged records of notable
interactions that can be referenced in dialogue and affect future calculations:

```
MemoryFlag {
    tag:        string ("SAVED_MY_CHILD", "STOLE_FROM_ME", "SHARED_DRINK",
                        "FOUGHT_TOGETHER", "SAW_KILL_UNARMED", "KEPT_SECRET")
    magnitude:  the original event's magnitude (preserved, doesn't decay)
    timestamp:  when it happened
    referenced: how many times this memory has surfaced in dialogue
}
```

**Memory Flags serve three purposes:**

1. **Dialogue Triggers:** NPCs reference past events naturally. "You helped my
   daughter. I haven't forgotten." / "Last time you were here, coin went missing
   from my till. I'm watching you."

2. **Disposition Anchors:** Certain flags prevent disposition from decaying past
   a threshold regardless of trust level. SAVED_MY_CHILD sets a permanent floor
   of +15 with that NPC. STOLE_FROM_ME sets a permanent ceiling of +10 until
   explicit amends are made.

3. **Reputation Seeds:** NPCs talk to each other. A memory flag on one NPC can
   propagate to connected NPCs as a rumor (see Section V), creating pre-disposition
   with NPCs the PC hasn't met yet.

---
---

# SECTION IV: BETRAYAL MECHANICS

Betrayal is special. It doesn't just subtract points — it fundamentally restructures
the relationship.

### What Constitutes Betrayal

A **Betrayal Event** fires when the PC performs an action that violates the specific
trust an NPC has placed in them. Magnitude scales with trust level — the more they
trusted you, the worse it hurts.

| Action | Betrayal at STRANGER? | Betrayal at BONDED? |
|--------|----------------------|---------------------|
| Steal from them | No (just theft) | Yes |
| Lie to them (detected) | No (just deception) | Yes |
| Harm someone they love | Yes (at any level) | Yes (magnified) |
| Reveal their secret | N/A (they wouldn't share) | Yes (devastating) |
| Break a promise | Mild offense | Yes |
| Discovered passing (hybrid PC) | N/A | Yes (complex — see below) |
| Side with their faction's enemy | N/A (no investment) | Yes |

### Betrayal Damage Formula

```
betrayal_damage = base_event_magnitude × trust_multiplier

Trust multipliers:
  STRANGER:      1.0× (normal event processing)
  ACQUAINTANCE:  1.5×
  FAMILIAR:      2.0×
  TRUSTED:       3.0×
  BONDED:        5.0×
```

A stolen item is -15 from a stranger but -75 from a bonded companion. They didn't
just lose an item. They lost faith.

### Trust Collapse

Betrayal events also drop trust:

| Betrayal Magnitude | Trust Drop |
|-------------------|------------|
| Minor (< 15 effective) | -1 level |
| Moderate (15–30) | -2 levels |
| Severe (31–50) | -3 levels (to STRANGER minimum) |
| Catastrophic (51+) | To STRANGER + **Trust Lock** |

**Trust Lock:** After a catastrophic betrayal, the NPC's trust is locked at STRANGER
for a minimum of 30 in-game days. During the lock period, positive interactions still
accumulate individual disposition but cannot advance trust. After the lock expires,
trust can be rebuilt — slowly, at double the normal interaction investment.

Some NPCs have a **permanent lock** flag for specific betrayals. Whisper, if betrayed,
will never trust the PC again. Period. That design decision reflects the character's
history: they've been betrayed by institutions their entire life. One more betrayal
from someone they actually chose to trust is the last.

### The Passer Discovery Special Case

If the PC is a passing hybrid and an NPC discovers this, a **Passer Discovery Event**
fires. This is NOT always a betrayal — it depends on the NPC:

```
Passer Discovery Processing:
  
  1. Check NPC bias profile for HYBRID modifier
     If HYBRID modifier > 0 (hybrid-friendly):
       Process as SHARED_VULNERABILITY (+5 to +10)
       "You trusted me with this. That means something."
  
  2. If HYBRID modifier < -10 (strongly anti-hybrid):
       Process as BETRAYAL
       Magnitude = |HYBRID modifier| × trust_multiplier
       "Everything about you was a lie."
  
  3. If HYBRID modifier between -10 and 0 (mildly uncomfortable):
       Process as COMPLICATED_REVELATION
       Disposition: -5 to -15 (discomfort, recalibration)
       Trust: frozen for 7 days while NPC processes
       After freeze: trust continues from current level
       "I need... I need some time with this."
  
  4. Regardless of above: NPC's Clade Bias recalculates using
     HYBRID modifier instead of presenting-Clade modifier
     This can shift Effective Disposition significantly
```

The Passer Discovery system means that a hybrid PC's choice to pass or reveal is
mechanically meaningful and contextually variable. Some NPCs become closer. Some
become enemies. Most need time. That's the world.

---
---

# SECTION V: RUMOR PROPAGATION AND SOCIAL NETWORKS

### How NPCs Talk About You

Individual NPCs don't exist in isolation. They have social connections — family, friends,
colleagues, customers, neighbors. When the PC does something notable, the affected NPC
tells people.

### NPC Social Graph

Each settlement contains a lightweight social graph:

```
NPCSocialNode {
    npc_id:         unique identifier
    connections:    [array of {npc_id, relationship_type, weight}]
    gossip_tendency: float (0.0 to 1.0 — how likely to spread information)
    influence:       float (0.0 to 1.0 — how much their opinion sways others)
}
```

**Relationship Types:**
- FAMILY (weight: 0.9 — family opinions carry heavy)
- CLOSE_FRIEND (weight: 0.7)
- COLLEAGUE (weight: 0.4)
- ACQUAINTANCE (weight: 0.2)
- RIVAL (weight: 0.3, but INVERTED — if a rival dislikes the PC, their rivals like the PC more)

### Rumor Propagation Algorithm

When a notable event occurs (any InteractionEvent with magnitude > ±5):

```
1. Source NPC generates a RUMOR:
   {
     subject: PC,
     event_tag: memory flag tag,
     valence: positive or negative,
     magnitude: original event magnitude × 0.5 (rumors are diluted),
     source_npc: originator,
     hops: 0
   }

2. At end of each in-game day, for each NPC holding an unshared rumor:
   a. Roll against gossip_tendency
   b. If passes: propagate to all connections
   c. Each connection receives the rumor with magnitude reduced:
      received_magnitude = rumor.magnitude × connection.weight × (0.8 ^ hops)
   d. Increment hops
   e. Rumors stop propagating after 3 hops or when magnitude < 1

3. NPCs who receive a rumor about the PC adjust their Individual Disposition:
   disposition_change = received_magnitude × source_influence
   
4. The adjustment is tagged as RUMOR-SOURCED (not PERSONAL)
   RUMOR-SOURCED disposition is overridden by personal experience:
   first personal interaction replaces any rumor-based disposition
   with the actual interaction result
```

### Example: Rumor Chain

PC saves the shopkeeper's kit from drowning in Millhaven.

```
Event: SAVED_CHILD, magnitude: +20, NPC: Shopkeeper Mira (rabbit-folk)

Mira's connections:
  - Husband Oren (FAMILY, weight 0.9, gossip 0.8, influence 0.6)
  - Neighbor Tal (CLOSE_FRIEND, weight 0.7, gossip 0.5, influence 0.3)
  - Customer Joss (ACQUAINTANCE, weight 0.2, gossip 0.7, influence 0.2)

Rumor magnitude: 20 × 0.5 = 10

Day 1 propagation (Mira tells everyone, gossip_tendency 0.9):
  Oren receives: 10 × 0.9 = 9.0 → disposition change: 9.0 × 0.6 = +5.4
  Tal receives: 10 × 0.7 = 7.0 → disposition change: 7.0 × 0.3 = +2.1
  Joss receives: 10 × 0.2 = 2.0 → disposition change: 2.0 × 0.2 = +0.4

Day 2 (hop 2 — Oren and Tal might tell their contacts):
  Oren tells his colleague Bram: 9.0 × 0.8 × 0.4 = 2.88 → +2.88 × influence
  ...and so on, diminishing with each hop

Result: Within a few days, much of Millhaven has a mild positive predisposition
toward the PC. Not life-changing, but when the PC walks into the tavern, the
bartender has heard something nice about them. Tiny advantage. Earned.
```

### Negative Rumor Amplification

Negative rumors propagate faster and decay slower than positive ones. This is
biologically grounded: in a world where predator/prey dynamics shape cognition,
threat-information is prioritized over comfort-information.

```
Negative rumor modifiers:
  gossip_tendency: ×1.3 (more likely to share bad news)
  magnitude decay per hop: 0.85 (instead of 0.80 — decays slower)
  maximum hops: 4 (instead of 3 — travels further)
```

Bad news travels fast. The PC's mistakes follow them longer than their kindnesses.

---
---

# SECTION VI: CLADE-SPECIFIC INTERACTION MODIFIERS

### Scent in Social Encounters

This is Theriapolis. Scent affects every interaction. The disposition system accounts
for this:

**Scent-Readable Emotions:**
During conversation, the PC's emotional state can be scent-read by NPCs with
appropriate abilities:

```
If NPC has scent ability (Canidae, most predator Clades, Scent-Brokers):
  PC's dialogue choice carries an EMOTIONAL TRUTH value
  Determined by: does the chosen dialogue match the PC's actual situation?
  
  If PC selects [Lie: "I'm fine"] while at low HP or after a traumatic event:
    NPC detects stress-scent inconsistency
    Deception check required: PC CHA (Deception) vs. NPC WIS (Perception)
    Failure: -2 to -5 disposition ("You smell like fear. Don't lie to me.")
    Success: no penalty, but NPC may note suspicion
  
  If PC selects [Honest: "I've been through hell"] while genuinely distressed:
    NPC detects consistency between words and scent
    +1 to +3 disposition ("Good. Honest. I can work with honest.")
```

**Scent Compatibility:**
Some Clade combinations produce instinctive comfort or discomfort beyond prejudice:

```
Canid PC + Canid NPC: +3 scent-comfort (familiar, pack-adjacent)
Canid PC + Cervid NPC: -3 scent-discomfort (predator-scent triggers prey-alert)
Cervid PC + Cervid NPC: +3 scent-comfort (herd-adjacent)
Hybrid PC (unmasked) + any NPC: -2 to -5 scent-discomfort (uncanny-valley response)
Hybrid PC (masked) + any NPC: 0 (mask working) or variable (mask failing)
```

These modifiers are small but persistent — applied to every interaction, every time.
They represent the background hum of biology that never shuts up.

**Arousal Detection:**
If the PC is affected by involuntary arousal (pheromone compound, stress response,
biological quirk), NPCs with scent ability detect it. This can produce:
- Embarrassment (disposition -1 to -3 — the NPC is uncomfortable)
- Exploitation (hostile NPC uses the information against the PC)
- Sympathy (understanding NPC recognizes it as involuntary, no penalty)
- Context-specific responses (in a romantic or intimate context, very different)

### Body Language Reading

Felidae NPCs read body language with grammatical precision. Additional modifiers:

```
If NPC is Felidae:
  PC tail-position and ear-position are evaluated
  Confident posture: +1 to +2 (Felidae respect composure)
  Submissive posture: -1 to -3 (Felidae are contemptuous of groveling)
  Aggressive posture: +0 to +2 (depends on context — Felidae respect controlled aggression)
  Inconsistent body language: -2 to -4 (Felidae distrust incongruence)
```

For PCs who are Felidae: automatic +2 with Felid NPCs on first meeting (body language
is mutually legible — instant comfort).

For Hybrid PCs with Felid traits: body language may be "illegible" (blended signals),
producing the -2 to -4 incongruence penalty unless the PC has trained Felid
body-language mimicry (Passer background or specific skill investment).

---
---

# SECTION VII: UI REPRESENTATION

### What the Player Sees

**Faction Standing:** Visible as a labeled meter (HOSTILE through CHAMPION) in the
faction screen. Exact numerical value visible in detailed view. Changes are notified
with a small pop-up: "[Covenant Enforcers: +8 — Favorable]"

**Individual Disposition:** NOT displayed as a number. The player reads NPC
disposition through behavioral cues:
- Dialogue tone (warm, neutral, cold, hostile)
- Body language descriptions in dialogue boxes ("She leans forward, ears perked" vs.
  "She crosses her arms, ears flat")
- Scent descriptions (if PC has scent abilities): "You catch warmth in her scent —
  comfort, maybe trust" vs. "Her scent sharpens — cortisol, wariness"
- Pricing (discounts or markups communicated through the shop interface)
- Available dialogue options (locked options visibly greyed with a tooltip: "Requires
  higher trust" or "This NPC is hostile")

**Trust Level:** Displayed as a small icon next to the NPC's name in the interaction
screen. Five tiers, five icons (e.g., a closed fist for STRANGER, an open paw for
BONDED). The player can see where they stand without seeing the math.

**Clade Bias:** NEVER directly displayed. The player experiences it through its
effects — cold initial receptions, warmer receptions from same-Clade NPCs, the
visible effort required to win over certain individuals. If the player is paying
attention, they'll feel the pattern. But the game never says "this NPC has -20
Canidae bias." That would flatten the experience. Prejudice should be felt, not
read off a spreadsheet.

### The Companion Disposition Panel

Companion NPCs (Venn, Brenn, Whisper) have an expanded UI:
- Disposition meter (still not exact numbers, but a more detailed bar: cold → warm →
  hot, with a marker showing trend direction)
- Trust level icon
- "Mood" indicator based on recent events ("Uneasy," "Confident," "Conflicted,"
  "Grateful")
- Memory flag highlights: "Remembers: You saved her from Grinner" / "Remembers:
  You sided with the Enforcers over hybrid testimony"

---
---

# SECTION VIII: TUNING AND BALANCE GUIDELINES

### Design Goals for Tuning

1. **First impressions should feel meaningful but not deterministic.** A wolf-folk PC
   entering a Cervid town should feel the chill but not be locked out of content.
   Clade bias should impose a tax, not a wall.

2. **Investment should pay off.** A player who puts 15+ interactions into an NPC should
   feel the relationship meaningfully shift. The STRANGER → ACQUAINTANCE → FAMILIAR
   progression should each produce noticeable behavior changes.

3. **Betrayal should sting.** The system should make the player feel the weight of
   broken trust. Mechanical consequences (lost access, hostility) reinforce narrative
   consequences.

4. **The hybrid experience should be distinctly harder.** Hybrid PCs face compounding
   penalties: Clade bias (hybrid modifier), scent-discomfort, body-language illegibility,
   and potential passer-discovery cascades. This is by design — it mirrors the world.
   The game should be winnable as a hybrid but should feel different, more effortful
   in social contexts, more rewarding when trust is earned.

5. **No NPC should feel like a vending machine.** Even merchants should have disposition.
   The blacksmith who likes you gives you +1 crafted items for free. The blacksmith
   who hates you "just ran out" of the item you need. The system turns every NPC into
   a tiny relationship to manage.

### Tuning Levers

| Lever | Effect | Adjust When... |
|-------|--------|----------------|
| Bias profile modifier ranges | Controls first-impression severity | PCs feel too locked out or too welcome |
| Trust level thresholds | Controls relationship progression speed | Relationships form too fast or too slow |
| Weight table ratios | Controls how fast personal experience overrides bias | Bias feels too sticky or too irrelevant |
| Decay rate | Controls relationship maintenance burden | Players feel punished for exploring or don't feel investment persistence |
| Rumor propagation speed | Controls how fast reputation precedes the PC | World feels too responsive or too inert |
| Negative rumor amplification | Controls asymmetry of bad vs. good reputation | Bad reputation feels too punishing or too forgiving |
| Betrayal multipliers | Controls severity of trust violations | Betrayals feel too harsh or too light |

### Playtest Metrics to Track

- Average Effective Disposition at first interaction by PC Clade (should vary by 15–25
  points between easiest and hardest Clade, not more)
- Average interactions to reach FAMILIAR (target: 8–12)
- Average interactions to reach TRUSTED (target: 18–25)
- Percentage of players who trigger a betrayal event per playthrough (target: 40–60%)
- Percentage of hybrid PCs who are discovered while passing (target: at least once
  per playthrough, timing varies)
- Faction standing swing range per act (should shift meaningfully per act but not
  whiplash — target ±30 per act maximum)

---

*Document Version 1.0 — Theriapolis Faction Influence & Reputation System*
*Compiled by ENI for LO*
