Files
yourpart3/docs/FALUKANT_MARRIAGE_HOUSEHOLD_CONTROL_SPEC.md

12 KiB

Falukant: Steuerung von Ehezustand und Hausfrieden

Dieses Dokument beschreibt:

  • wie Spieler Ehezustand und Hausfrieden direkt beeinflussen können
  • welche Werte dafür im Backend sichtbar und änderbar sein müssen
  • was der externe Daemon täglich und monatlich berechnen soll

Die Datei ist bewusst als gemeinsame Arbeitsgrundlage für UI, Backend und externen Daemon formuliert.

1. Zielbild

Es soll zwei getrennte, aber gekoppelte Systeme geben:

  • marriageSatisfaction
    • numerisch 0..100
    • individueller Kernwert der Ehe
  • householdTension
    • aggregierter Haushaltszustand
    • nach außen in UI als low | medium | high
    • intern sinnvollerweise als numerischer Spannungswert 0..100

Interpretation:

  • marriageSatisfaction beschreibt die Qualität der Paarbeziehung
  • householdTension beschreibt Spannungen im gesamten Haus
    • Liebschaften
    • Unterversorgung
    • Ordnung
    • Kinderkonflikte
    • Dienerschaft

2. Werte und Ableitungen

2.1 Ehe

Bestehend:

  • relationship_state.marriage_satisfaction

Neu sinnvoll:

  • relationship_state.marriage_public_stability
    • besteht bereits
    • soll aktiv genutzt werden
  • optional später:
    • last_affection_action_at
    • last_conflict_action_at
    • last_shared_time_at

UI-Ableitung:

  • 0..19 => broken
  • 20..39 => fragile
  • 40..59 => strained
  • 60..79 => stable
  • 80..100 => harmonious

2.2 Hausfrieden

Der bisherige reine UI-Helfer

  • low
  • medium
  • high

reicht für eine echte Steuerung nicht aus.

Neu sinnvoll:

  • interner Wert householdTensionScore
    • Bereich 0..100
    • 0 = sehr ruhig
    • 100 = offener Hauskonflikt

UI-Ableitung:

  • 0..24 => low
  • 25..59 => medium
  • 60..100 => high

Falls kein eigener Persistenzwert angelegt werden soll, darf der Daemon den Score auch nur berechnen und als API-Feld zurückgeben.

3. Direkte Spieleraktionen

Es braucht direkte Spielzüge, die der Spieler bewusst auslösen kann.

Wichtig:

  • nicht jede Aktion muss sofort große Werte ändern
  • direkte Aktionen sollen kleine, klare Effekte haben
  • der Daemon übernimmt Drift, Gegenkräfte und Folgewirkungen

3.1 Ehe-Aktionen

Diese Aktionen gehören fachlich in FamilyView.

A. Zeit mit Ehepartner verbringen

Zweck:

  • Standardaktion zur Pflege der Beziehung

Regel:

  • verfügbar nur bei aktiver Ehe
  • Cooldown: 1x pro Tag
  • Kosten: 0 oder sehr klein

Soforteffekt:

  • marriageSatisfaction +2
  • householdTensionScore -1

Modifikatoren:

  • wenn aktive sichtbare Liebschaft visibility >= 45: nur +1
  • wenn householdOrder <= 35: kein Bonus auf Hausfrieden
  • wenn marriageSatisfaction < 25: stattdessen nur +1

B. Geschenk an Ehepartner

Zweck:

  • Geld gegen schnellere Stabilisierung

Regel:

  • verfügbar nur bei aktiver Ehe
  • Stufen: small, decent, lavish
  • Cooldown: 1x pro 3 Tage

Soforteffekt:

  • small: marriageSatisfaction +2
  • decent: marriageSatisfaction +4
  • lavish: marriageSatisfaction +7

Nebeneffekt:

  • marriagePublicStability +1/+2/+3

Malus:

  • bei gleichzeitig unterfinanzierter Liebschaft halbierter Effekt

C. Streit schlichten

Zweck:

  • gezielte Krisenintervention

Regel:

  • verfügbar nur wenn householdTensionScore >= 35 oder marriageSatisfaction <= 50
  • Cooldown: 1x pro 2 Tage

Soforteffekt:

  • householdTensionScore -4
  • marriageSatisfaction +1

Malus:

  • wenn visibility einer aktiven Liebschaft >= 60, dann nur householdTensionScore -2

D. Fest nur für den Haushalt

Zweck:

  • Hausfrieden über Geld und Repräsentation stützen

Regel:

  • verfügbar bei vorhandenem Haus
  • kleiner interner Hausakt, nicht großes Reputationsfest
  • Cooldown: 1x pro Monat

Soforteffekt:

  • householdTensionScore -6
  • marriageSatisfaction +2
  • householdOrder +2

Malus:

  • bei unterbesetzter Dienerschaft nur halbe Wirkung

3.2 Haus-Aktionen

Diese Aktionen gehören fachlich in HouseView.

A. Haus ordnen

Zweck:

  • kleine direkte Ordnungsmaßnahme

Regel:

  • Cooldown: 1x pro Tag
  • Kosten: niedrig

Soforteffekt:

  • householdOrder +3
  • wenn householdOrder > 70: stattdessen nur +1

Indirekter Effekt:

  • besserer Daily-Wert für householdTensionScore

B. Diener einstellen

Bereits vorhanden.

Neue fachliche Wirkung:

  • wenn vorher servantCount < expectedMin
    • sofort householdTensionScore -2

C. Diener entlassen

Bereits vorhanden.

Neue fachliche Wirkung:

  • wenn danach servantCount < expectedMin
    • sofort householdTensionScore +3

D. Bezahlung erhöhen

Bereits vorhanden.

Neue fachliche Wirkung:

  • wenn von low -> normal oder normal -> high
    • sofort householdOrder +2
    • householdTensionScore -1

3.3 Familien-/Kinder-Aktionen

A. Uneheliches Kind anerkennen

Zweck:

  • offenere, geordnetere Lösung statt versteckter Konfliktlage

Soforteffekt:

  • publicKnown = true
  • legitimacy = acknowledged_bastard
  • householdTensionScore -2, wenn Beziehung bereits öffentlich geordnet
  • householdTensionScore +3, wenn Ehe schwach und Beziehung skandalös

Eheeffekt:

  • marriageSatisfaction -2 bis -6 je nach Sichtbarkeit und Stand

B. Erbenfrage regeln

Wenn uneheliche Kinder sichtbar werden, kann die UI später eine Handlung Erbfolge klären bekommen.

Erste Version:

  • nur vorgemerkt
  • noch keine direkte Aktion nötig

3.4 Liebschafts-Aktionen mit Einfluss auf Ehe und Haus

Bestehend:

  • Unterhalt ändern
  • Beziehung anerkennen
  • Beziehung beenden

Diese Aktionen sollen explizit folgende Sofortwirkung haben:

Unterhalt erhöhen

  • monthsUnderfunded baut sich später im Daemon ab
  • sofort kein großer Ehebonus
  • aber householdTensionScore -1, wenn vorher Unterversorgung bestand

Beziehung anerkennen

  • visibility steigt nicht automatisch hart, aber öffentlicher Charakter nimmt zu
  • bei hohen Ständen geordnet eher neutral bis leicht positiv für Ehe-Stabilität
  • bei niedrigen Ständen eher negativ

Sofortregel:

  • Standesgruppe 0-1: marriageSatisfaction -3, householdTensionScore +2
  • Standesgruppe 2: marriageSatisfaction -1, householdTensionScore +1
  • Standesgruppe 3: marriagePublicStability +1, householdTensionScore -1, wenn Diskretion und Versorgung gut sind

Beziehung beenden

  • sofort householdTensionScore -3, wenn Liebschaft riskant war
  • sofort marriageSatisfaction +1, wenn aktive Ehe existiert
  • aber bei hoher affection >= 70 auch möglicher Malus auf Stimmungssystem später

4. Daemon-Berechnung

4.1 Daily-Input

Der externe Daemon braucht pro Spielerfigur:

  • aktive Ehebeziehung mit marriageSatisfaction, marriagePublicStability
  • aktive Liebschaften mit:
    • loverRole
    • visibility
    • discretion
    • maintenanceLevel
    • statusFit
    • monthsUnderfunded
    • acknowledged
  • Kinderdaten:
    • legitimacy
    • birthContext
    • publicKnown
  • Hausdaten:
    • servantCount
    • servantQuality
    • servantPayLevel
    • householdOrder
  • Charakterdaten:
    • titleOfNobility
    • reputation

4.2 Daily-Berechnung für Ehe

Grunddrift:

marriageDelta = 0

if marriageSatisfaction > 55: marriageDelta -= 1 every 3 days
if marriageSatisfaction < 55: marriageDelta += 1 every 5 days

Liebschaften:

for each active lover:
  if visibility >= 60: marriageDelta -= 2
  else if visibility >= 35: marriageDelta -= 1

  if monthsUnderfunded >= 2: marriageDelta -= 1
  if acknowledged = true and statusGroup <= 1: marriageDelta -= 1
  if acknowledged = true and statusGroup = 3 and visibility <= 35 and maintenanceLevel >= 60:
    marriageDelta += 0 or +1 every few days

Zu jung:

if minAge <= 15: marriageDelta -= 1
if minAge <= 13: marriageDelta -= 2

Haus:

if householdOrder >= 75: marriageDelta += 1
if householdOrder <= 35: marriageDelta -= 1
if householdTensionScore >= 60: marriageDelta -= 1

Dienerschaft:

if servantCount < expectedMin: marriageDelta -= 1
if servantPayLevel = high and servantQuality >= 70 and householdOrder >= 70:
  marriageDelta += 1 every 3 days

Danach:

  • clamp 0..100

4.3 Daily-Berechnung für Hausfrieden

Interner Wert:

householdTensionScore = base

Empfohlene Berechnung:

base = 10

for each active lover:
  if visibility >= 60: base += 18
  else if visibility >= 35: base += 10
  else: base += 4

  if monthsUnderfunded >= 1: base += 6
  if monthsUnderfunded >= 2: base += 6
  if acknowledged = true: base += 4
  if statusFit = -1: base += 3
  if statusFit = -2: base += 6

Kinder:

for each child where birthContext = 'lover':
  if publicKnown = true: base += 6
  else: base += 2

  if legitimacy = 'acknowledged_bastard': base += 2
  if legitimacy = 'hidden_bastard': base += 4

Haus:

if householdOrder >= 80: base -= 6
else if householdOrder >= 65: base -= 3

if householdOrder <= 35: base += 8
else if householdOrder <= 50: base += 4

Dienerschaft:

if servantCount < expectedMin: base += 5
if servantPayLevel = low: base += 2
if servantQuality >= 70 and servantPayLevel = high: base -= 3

Ehe:

if marriageSatisfaction <= 35: base += 6
if marriageSatisfaction >= 75: base -= 2

Danach:

  • clamp 0..100
  • UI-Ableitung auf low/medium/high

4.4 Monthly-Berechnung

Monatlich soll der Daemon zusätzlich:

  • Dienerkosten abbuchen
  • Liebschaftskosten abbuchen
  • bei Unterversorgung householdTensionScore stärker erhöhen
  • langfristige Ordnungs- oder Eheboni addieren

Empfohlene Zusatzregeln:

if a lover was underfunded this month:
  householdTensionScore += 4

if servantCount far below expectedMin for full month:
  householdTensionScore += 3

if householdOrder >= 80 for full month:
  marriageSatisfaction += 1

if householdOrder <= 30 for full month:
  marriageSatisfaction -= 2

5. UI-Anforderungen

5.1 FamilyView

Neu sinnvolle Aktionen:

  • Zeit miteinander verbringen
  • Geschenk machen
  • Streit schlichten
  • Liebschaft beenden
  • Uneheliches Kind anerkennen

Zusätzlich hilfreiche Anzeige:

  • kurze Ursachenliste für Hausfrieden
    • z. B. sichtbare Liebschaft
    • Unruhe im Haus
    • zu wenig Diener
    • anerkanntes uneheliches Kind

5.2 HouseView

Neu sinnvolle Aktionen:

  • Haus ordnen
  • vorhandene Dieneraktionen mit klarer Auswirkungstextzeile

Anzeige:

  • Haushaltsordnung
  • erwartete Dienerzahl
  • Auswirkung auf Hausfrieden

6. Backend-Anforderungen

6.1 Direktaktionen

Dieses Projekt sollte Endpunkte für direkte Einflussaktionen bereitstellen:

  • POST /api/falukant/family/marriage/spend-time
  • POST /api/falukant/family/marriage/gift
  • POST /api/falukant/family/marriage/reconcile
  • POST /api/falukant/houses/order
  • später optional:
    • POST /api/falukant/family/children/acknowledge

6.2 API-Rückgabe

Family-API sollte zusätzlich liefern:

  • marriageSatisfaction
  • marriageState
  • marriagePublicStability
  • householdTension
  • householdTensionScore
  • optional:
    • householdTensionReasons[]

House-API sollte zusätzlich liefern:

  • householdOrder
  • expectedServantsMin
  • expectedServantsMax
  • marriageComfortModifier

7. Priorisierte Umsetzung

Phase A

  • statusFit-Fehler korrigieren
  • direkte Ehe-Aktionen Zeit, Geschenk, Streit schlichten
  • direkte Haus-Aktion Haus ordnen
  • Family-API um householdTensionScore erweitern

Phase B

  • externer Daemon berechnet Daily-Drift für Ehe und Hausfrieden
  • Dienerschaft fließt in Hausfrieden ein
  • Liebschaften und Unterversorgung wirken vollständig auf Hausfrieden

Phase C

  • uneheliche Kinder als aktiver Konfliktfaktor
  • Anerkennungsaktion
  • genauere Ursachenlisten in der UI

8. Offene Balancing-Punkte

Diese Werte sind absichtlich noch nicht final:

  • exakte Geldkosten für Ehe-Aktionen
  • Stärke der Boni für hohe Stände
  • Stärke des Malus bei sichtbaren Liebschaften
  • Stärke der Dienerwirkung auf Ehe und Haus

Die Struktur sollte jetzt aber stabil genug sein, damit UI und Daemon unabhängig voneinander anfangen können.