Institutions & Contacts

The city has 8 institutions in three tiers. You build contacts, push them through the Loyalty track to BRIBED → PAYROLL and use their effects. Some institutions are fully implemented, others exist as slots without active effects — marked honestly here.


Institution Overview

Source: engine/internal/fixture/mapper.go:institutionDefs.

Institution Tier Max Contacts Status
CorpSec 1 6 ✅ Active effect
Compliance Bureau 1 4 ✅ Active effect
Federal Compliance Authority (FCA) 1 0 ⚪ Catalog only, no contact slots
District Administration 2 3 ✅ Justice effect
Fiscal Oversight Bureau (FOB) 2 4 ⚠️ Slots present, no institution-specific effect
MedCore Division 2 4 ⚠️ Slots present, no institution-specific effect
Arbitration Tribunal 3 3 ✅ Justice + heat effect
Black Market 3 5 ✅ Active effect

Contact Lifecycle

A contact has three states (ContactState):

  1. DISCOVERED — revealed via SCOUT, ChainReferral or OrganicEncounter. No effects. Visible in roster.
  2. BRIBED — one-time bribe raises loyalty. No daily effects. Above 50 loyalty + HIGH rank = justice reduction (see below).
  3. PAYROLL — daily drain (DailyPayrollCost), but the institution’s active effects apply.

Loyalty decay (SPEC_government_institutions D-01): PAYROLL contacts lose loyalty over time — without maintenance their relationship drifts and eventually the contact stops responding. Counter with MAINTAIN_CONTACT (server v1.66.0, Verwaltung category, CHA-driven, 30 min, $500, 12 h cooldown): auto-picks your lowest-loyalty active PAYROLL contact and bumps loyalty by +10 (clamped 0..100). Contacts have no NodeID — you can’t pick which one, but repeated calls cycle through the whole roster automatically.


Active Effects (PAYROLL contacts)

From engine/internal/government/institutional_effects.go:

CorpSec → reduce sector heat

sector_heat -= loyalty / 20    # daily

Loyalty 60 → −3 sector heat/day. Linear scale.

Compliance Bureau → reduce audit risk

audit_risk -= loyalty × 0.005   # daily

Loyalty 60 → −0.30 audit risk/day. Important: a HIGH Compliance Bureau contact is your only source for the exact Federal Heat value — see Heat.

Black Market → +% building income

for each active building with manager:
  income_base × (1 + loyalty × 0.001)   # +0.1% per loyalty point

Loyalty 80 → +8% income on all managed buildings. Stacks with owner bonus (+15%) and manager bonus (+15%).

Arbitration Tribunal (HIGH-rank, PAYROLL) → Justice

District Administration (HIGH-rank, PAYROLL) → Mayor

Stack example: Arbitration HIGH + District HIGH = −2 days per sentence (min 1 day).

HIGH-rank contacts in general → Federal Heat drain

Every HIGH-rank institution PAYROLL slot contributes to the federal drain (criminal_justice.go applyHighContactFedHeatDrain):

federal_heat -= min(1.25, 0.5 × n_high_payroll_contacts)

Cap at −1.25/day (= 3 HIGH contacts). More HIGH slots give no further drain.


Unimplemented Institutions

FOB / Fiscal Oversight Bureau and MedCore Division exist in the institution catalog with contact slots but no institution-specific effect code in the current engine. You can build contacts — daily PAYROLL drain runs, HIGH rank counts for federal drain — but no institution-specific bonuses.

FCA / Federal Compliance Authority is in the catalog but MaxContacts: 0 — you can’t recruit contacts here. Pure lore entity (its auditors are routed via the Audit-NPC system, not contacts).

Note: Pre-1.18 wiki versions referenced election systems (District Admin), MedCore healing bonuses, CRU/fire-department mechanics, and tier-based LOW/MID/HIGH effects. These are not implemented in the current server and have been removed here.


Contact Drama Arcs

Three organic mechanics for contact acquisition beyond direct action (engine/internal/action/contact_drama.go):

1. ORGANIC_ENCOUNTER (passive)

On every RAID, ATTACK, SCOUT, INFILTRATE, or SABOTAGE action, the server checks:

chance = sector_heat × 0.2 %       # 20% at sector_heat = 100
cap: max 1 encounter per player per day

On success: a LOW/MID-rank contact is automatically revealed — free, no SCOUT.

2. CHAIN_REFERRAL

A long-term PAYROLL contact introduces a new one.

Gates:

Mechanics:

3. POACH_BID + COUNTER_BID (2-day bid war)

You can poach a rival’s contact — but they see it and can counter-bid.

Day 0 (attacker POACH_BID):

Day 1 (victim COUNTER_BID):

Day 2 EOD (resolution):


Heat-scaling Bribe Costs

Pushing federal heat makes bribes more expensive:

Federal Heat Multiplier
40+ (YELLOW) ×1.25
60+ (ORANGE) ×1.5
75+ (RED) ×2.0

Source: diplomacy.bribe.federal_heat_multipliers.

Standard bribe cost range: $1,000 – $2,500 (diplomacy.bribe.cost_range). With a 2× multiplier a bribe can cost up to $5,000.

Dishonored penalty: Players marked DISHONORED pay an additional ×1.5.


Strategy