18 KiB
Falukant: Daemon-Spezifikation für Liebhaber, Mätressen, Ehezufriedenheit und uneheliche Kinder
Zweck
Dieses Dokument beschreibt die konkrete Server- und Daemon-Logik für außereheliche Beziehungen im Familiensystem von Falukant. Es ergänzt das Grundkonzept in FALUKANT_LOVERS_CONCEPT.md um exakte Regeln für:
- laufende Kosten
- laufende Änderungen von Ansehen
- neues System
Ehe-Zufriedenheit - standesabhängige Wirkung von Ehe und Liebschaften
- mögliche Kinder aus Liebschaften
- gendergleiche Behandlung im Regelwerk
Das Dokument ist bewusst daemon-orientiert, also als Grundlage für periodische Verarbeitung im Backend.
Bewusst vertagte Themen
Zwei Themen werden in dieser Spezifikation ausdrücklich nur vorgemerkt und nicht in die erste Umsetzung gezogen:
Dienerschaft
Dienerschaft ist ein interessanter späterer Ausbau, weil sie gut zu Diskretion, Repräsentation, Hausstand und Kosten passt. Für die erste Version wird sie jedoch nicht als eigenes System modelliert.
Für Phase 1 gilt deshalb:
- Dienerschaft ist nur indirekt in den Unterhaltskosten enthalten
- keine eigenen Diener-Slots, Rollen oder Haushaltsobjekte
- keine gesonderte Interaktion mit Heimlichkeit oder Hofstatus
Später kann daraus ein eigenes Hausstands- oder Hofsystem entstehen.
Balancing
Die in diesem Dokument genannten Zahlen sind Regelrahmen für die technische Umsetzung, nicht finale Produktionswerte.
Für Phase 1 gilt deshalb:
- Formeln und relative Verhältnisse sind wichtiger als absolute Zahlen
- Kosten-, Ansehens- und Zufriedenheitswerte werden später nach realen Spieltests feinjustiert
- Balancing ist eine eigene Nachphase und kein Blocker für die erste technische Integration
Leitprinzipien
1. Gleichbehandlung der Geschlechter
Die Regeln für Ansehen, Ehezufriedenheit, Unterhalt, Skandal und soziale Bewertung gelten für männliche und weibliche Spielfiguren gleich.
Das heißt:
- dieselbe Beziehungsform erzeugt dieselben Grundkosten
- dieselbe Sichtbarkeit erzeugt dieselben Reputationsfolgen
- dieselbe Standeslage erzeugt dieselben Modifikatoren
- dieselbe Untreue erzeugt dieselbe Wirkung auf die Ehe
Biologische Unterschiede betreffen nur die Frage, ob aus einer konkreten Paarung natürlich ein Kind entstehen kann. Die soziale und spielmechanische Behandlung bleibt gleich.
2. Stand vor Moral
Das System bewertet nicht abstrakt „Treue“ oder „Untreue“, sondern:
- wie geordnet die Situation ist
- wie standesgemäß sie geführt wird
- wie sichtbar sie ist
- ob Ehe, Haus und Erbfolge destabilisiert werden
2a. Zu jung ist reputationsschädlich
Sehr junge Liebschaften sollen im Daemon nie neutral behandelt werden.
Das heißt:
- eine Beziehung kann technisch erlaubt sein
- sie kann aber trotzdem das Ansehen zusätzlich belasten
- dieser Malus kommt zusätzlich zu Sichtbarkeit, Skandal und Stand
- der Altersmalus gilt geschlechtsunabhängig
3. Daemon statt Einmal-Effekt
Kosten, Ehezufriedenheit, Sichtbarkeit und Ansehen werden nicht nur beim Anlegen oder Beenden einer Beziehung verändert, sondern laufend im Daemon fortgeschrieben.
Bestehende Anknüpfungspunkte
Das System passt auf die vorhandenen Strukturen:
- Beziehungen werden bereits über
Relationshipgeführt in relationship.js - Kinder werden bereits über
ChildRelationgeführt in child_relation.js - Ansehen ist bereits auf dem Charakter vorhanden in character.js
- Stand ist bereits über
titleOfNobilityabbildbar in title_of_nobility.js loverist bereits ein vorhandener Beziehungstyp
Neue Spielwerte
A. Pro Spielfigur: Ehezufriedenheit
Neuer Charakter- oder Ehewert:
marriageSatisfaction- Wertebereich
0..100 - Standardwert bei frischer Ehe:
55
Interpretation:
0..19: offene Ehekrise20..39: stark belastet40..59: angespannt bis normal60..79: stabil80..100: sehr stabil
Wichtig:
- Ehezufriedenheit gehört zur Ehebeziehung, nicht zur Person allein.
- Technisch ist dafür eine eigene Beziehungstabelle oder eine Erweiterung der Ehe-
Relationshipsinnvoll. - Für eine erste Version kann der Wert aber auf der Ehebeziehung gespeichert werden.
B. Pro Liebhaber-Beziehung
Für jede Beziehung vom Typ lover werden zusätzliche Felder benötigt.
Pflichtfelder:
loverRolesecret_affairlovermistress_or_favorite
affection0..100
visibility0..100
discretion0..100
maintenanceLevel0..100
statusFit-2..2
monthlyBaseCost- integer
active- boolean
acknowledged- boolean
exclusive- boolean optional
Abgeleitete, nicht zwingend gespeicherte Werte:
monthlyTotalCostreputationDeltaDailymarriageDeltaDailyscandalRiskDailypregnancyChanceMonthly
C. Optionaler Kinderwert
Für Kinder aus Liebschaften wird kein neues Kindmodell benötigt. ChildRelation reicht, benötigt aber zusätzlich:
legitimacylegitimateacknowledged_bastardhidden_bastard
birthContextmarriagelover
publicKnown- boolean
Standesgruppen
Für alle Daemon-Berechnungen werden Adelstitel auf vier Gruppen verdichtet:
Gruppe 0: niedrige Stände
noncivilcivilsir
Gruppe 1: wohlhabende Bürger und lokale Oberschicht
townlordbylandlord
Gruppe 2: niederer und mittlerer Adel
knightbaroncountpalsgravemargravelandgrave
Gruppe 3: hoher Adel und Herrschaft
rulerelectorimperial-princedukegrand-dukeprince-regentking
Diese Gruppen steuern:
- Toleranz gegenüber sichtbaren Liebschaften
- erforderliches Unterhaltsniveau
- Wirkung auf Ehezufriedenheit
- Strafe bei Skandal
Taktung im Daemon
Empfohlene Verarbeitung:
daily tick: alle 24 Ingame-Stundenmonthly tick: alle 30 Ingame-Tage
Aufteilung:
Daily Tick
- Sichtbarkeit und Diskretion anpassen
- Ehezufriedenheit anpassen
- Ansehen anpassen
- Skandalrisiko prüfen
- Ereignisse auslösen
Monthly Tick
- Unterhaltskosten abbuchen
- Beziehungskosten neu berechnen
- Kinderchance prüfen
- Statuswechsel prüfen
Kostenmodell
1. Grundkosten pro Monat
secret_affair
- Basis:
10
lover
- Basis:
30
mistress_or_favorite
- Basis:
80
Diese Werte sind Ingame-Basiswerte und sollen relativ zu Falukant-Geldwerten noch feinjustiert werden.
2. Standesmultiplikator
Gruppe 0
x 1.0
Gruppe 1
x 1.6
Gruppe 2
x 2.6
Gruppe 3
x 4.0
Begründung:
- Höhere Stände können sich die Beziehung leisten.
- Gleichzeitig muss sie teurer sein, weil „standesgemäß“ mehr Aufwand verlangt.
3. Unterhaltsfaktor
maintenanceFactor = 0.6 + (maintenanceLevel / 100) * 1.2
Beispiele:
0=>0.650=>1.2100=>1.8
Niedrige Versorgung spart kurzfristig Geld, erhöht aber später Sichtbarkeit, Unzufriedenheit und Skandalrisiko.
4. Status-Fit-Kosten
Wenn statusFit < 0, steigen Kosten für Diskretion und Konfliktpflege:
statusFit = -1=>+15 %statusFit = -2=>+35 %
5. Monatsformel
monthlyTotalCost = round(baseCost * rankMultiplier * maintenanceFactor * statusFitModifier)
6. Folgen bei Nichtzahlung
Wenn der Monatsbetrag nicht vollständig gezahlt werden kann:
affection -8discretion -6visibility +8marriageSatisfaction -4falls verheiratetreputation -1sofort, fallsvisibility >= 40
Bei zwei aufeinanderfolgenden Monaten Unterversorgung:
- tägliches Skandalrisiko zusätzlich
+2 %
Ehezufriedenheit: Grundmodell
1. Basistendenz pro Tag
Jede bestehende Ehe bewegt sich täglich leicht Richtung 55, wenn keine besonderen Faktoren wirken.
Formel:
- wenn
marriageSatisfaction > 55:-1alle 3 Tage - wenn
marriageSatisfaction < 55:+1alle 5 Tage
So bleiben Ehen nicht dauerhaft extrem, wenn nichts passiert.
2. Modifikatoren durch Liebschaften
Nur wenn eine aktive Ehe und mindestens eine aktive Liebschaft existiert.
Gruppe 0
- heimliche Liebschaft:
-1pro Tag - lover:
-2pro Tag - Mätresse/Favorit:
-3pro Tag
Gruppe 1
- heimliche Liebschaft:
-1pro Tag - lover:
-1pro Tag - Mätresse/Favorit:
-2pro Tag
Gruppe 2
- heimliche Liebschaft:
0 bis -1pro Tag - lover:
-1pro Tag - Mätresse/Favorit:
-1pro Tag
Gruppe 3
- heimliche Liebschaft:
0 - lover:
0 - Mätresse/Favorit:
+1 / 0 / -1je nach Ordnung
Für Gruppe 3 gilt:
+1, wenn:visibility <= 35maintenanceLevel >= 65marriageSatisfaction >= 45- nur eine aktive Mätresse/Favorit vorhanden
0, wenn die Lage geordnet, aber nicht positiv ist-1, wenn die Beziehung sichtbar Unruhe erzeugt
Das bildet den gewünschten Spezialfall ab:
- Bei einem König kann eine diskrete, geordnete Nebenbeziehung die Ehe sogar entlasten oder stabilisieren.
- Dieselbe Lage kippt ins Negative, wenn sie chaotisch oder öffentlich demütigend wird.
3. Zusätzliche Ehemodifikatoren
Positive Faktoren
- Ehepartner regelmäßig beschenkt:
+1pro Tag für 5 Tage - großes Fest oder Hochzeitspflege:
+2..+5einmalig - keine aktive Liebschaft und hohe Versorgung des Hauses:
+1alle 4 Tage
Negative Faktoren
- sichtbare Liebschaft
visibility >= 60:-2pro Tag - Liebschaft mit
minAge <= 15: zusätzlich-1pro Tag - Kind aus Liebschaft wird bekannt:
-8einmalig - zwei oder mehr aktive Liebschaften:
-2pro Tag zusätzlich - Unterhaltsausfall bei Mätresse/Favorit:
-1pro Tag
Ansehen: Grundmodell
Ansehen wird im Daily Tick pro aktiver Liebschaft angepasst.
1. Basiswert pro Beziehungsform
secret_affair
-0.2pro Tag
lover
-0.4pro Tag
mistress_or_favorite
-0.6pro Tag
Diese Werte sind Rohwerte vor Modifikatoren.
2. Sichtbarkeitsfaktor
visibilityFactor = 0.4 + (visibility / 100) * 1.6
Beispiele:
0=>0.450=>1.2100=>2.0
3. Standesmodifikator auf Reputationsverlust
Gruppe 0
x 1.8
Gruppe 1
x 1.3
Gruppe 2
x 1.0
Gruppe 3
x 0.7
Aber:
- bei Gruppe 3 gilt nur dann
0.7, wenn die Beziehung geordnet ist - bei Skandal, Erbfolgedruck oder offener Demütigung springt Gruppe 3 auf
1.5
4. Ordnungsbonus
Wenn alle Bedingungen erfüllt sind:
maintenanceLevel >= 65discretion >= 60visibility <= 35- maximal eine aktive Mätresse/Favorit
dann:
- Gruppe 2:
+0.1Ansehen pro Tag statt Malus beimistress_or_favorite - Gruppe 3:
+0.2Ansehen pro Tag statt Malus beimistress_or_favorite
Das repräsentiert:
- geordneten Überfluss
- höfische Attraktivität
- kontrollierte Nebenbeziehung ohne Hauschaos
Für secret_affair und normalen lover gibt es keinen positiven Reputationswert.
5. Tagesformel
dailyReputationDelta = baseValue * visibilityFactor * rankModifier
Dann:
- Ordnungsbonus anwenden, falls aktiv
- auf
[-3, +1]pro Tag je Beziehung begrenzen
5a. Altersmalus bei zu jungen Liebschaften
Zusätzlich zur normalen Reputationsformel wird ein eigener Altersmalus berechnet.
Grundlage ist immer das jüngere Alter der beiden Beteiligten:
minAge <= 13:ageReputationDelta = -1.5pro TagminAge <= 15:ageReputationDelta = -0.8pro TagminAge <= 17:ageReputationDelta = -0.3pro TagminAge >= 18:ageReputationDelta = 0
Dann gilt:
finalDailyReputationDelta = dailyReputationDelta + ageReputationDelta
Zusatzregel:
- wenn
minAge <= 15undvisibility >= 50, zusätzlicher Malus-0.5pro Tag
Damit gilt dann:
finalDailyReputationDelta = dailyReputationDelta + ageReputationDelta + visibilityYoungPenalty
Interpretation:
- junge Beziehungen sind schon im privaten Bereich reputationsschädlich
- sichtbare junge Beziehungen schaden noch stärker
- der Malus kommt zusätzlich zu allen übrigen Skandal- und Sichtbarkeitsfolgen
6. Harte Malus-Ereignisse
Zusätzliche Einmal-Effekte:
- öffentliches Gerücht:
-3 - kirchlicher Tadel:
-5 - bekanntes Kind aus Liebschaft:
-6 - Erbfolgestreit durch uneheliches Kind:
-10 - zwei sichtbare Liebschaften gleichzeitig:
-4
Sichtbarkeit und Diskretion
Diese Werte verändern sich täglich.
Sichtbarkeit + pro Tag
+1, wennmaintenanceLevel < 35+1, wennaffection < 30+2, wennstatusFit = -2+1, wenn bereits ein Ehekonflikt aktiv ist
Sichtbarkeit - pro Tag
-1, wenndiscretion >= 60-1, wennmaintenanceLevel >= 70
Diskretion + pro Tag
+1, wennmaintenanceLevel >= 70
Diskretion - pro Tag
-1, wennmaintenanceLevel < 35-1, wennvisibility > 60
Beide Werte bleiben in 0..100.
Skandalrisiko
Tägliche Grundchance:
baseScandalChance = 1 %
Modifikatoren:
+ visibility / 25+2 %, wenn verheiratet+2 %, wennstatusFit = -2+3 %, wennmaintenanceLevel < 25+3 %, wenn zwei oder mehr aktive Liebschaften bestehen+6 %, wennminAge <= 13+3 %, wennminAge <= 15+1 %, wennminAge <= 17-2 %, wenndiscretion >= 75-2 %, wenn Gruppe 3 und Beziehung geordnet als Mätresse/Favorit geführt wird
Deckel:
- Minimum
0 % - Maximum
25 %pro Tag
Mögliche Ereignisse:
- Gerücht
- Ehekrach
- Forderung nach höherem Unterhalt
- kirchlicher Tadel
- Erpressung
- Kind wird bekannt
Kinder aus Liebschaften
1. Grundsatz
Kinder aus Liebschaften sind möglich.
Sie sollen:
- nicht die Ehe ersetzen
- das Familiensystem erweitern
- vor allem bei höheren Ständen politische und soziale Reibung erzeugen
2. Technische Bedingung
Im aktuellen biologischen Modell nur bei gegengeschlechtlicher Paarung.
Die soziale Behandlung bleibt gleich:
- weibliche und männliche Spielfiguren erzeugen dieselben Ansehens- und Ehefolgen
- das System bewertet nicht unterschiedlich nach Geschlecht
3. Monatschance auf Kind
Nur wenn:
- Beziehung aktiv ist
- beide Figuren im fruchtbaren Altersbereich sind
affection >= 45maintenanceLevel >= 30- kein Sperrstatus aktiv
Empfohlene Monatswahrscheinlichkeit:
secret_affair
2 %
lover
4 %
mistress_or_favorite
6 %
Modifikatoren:
+2 %, wennaffection >= 75-2 %, wennvisibility >= 70und Beziehung instabil ist-3 %, wenn eine Figur deutlich über den Fruchtbarkeitsgrenzen liegt
Deckel:
- Minimum
0 % - Maximum
12 %
4. Status des Kindes
Bei Geburt aus Liebschaft:
birthContext = loverlegitimacy = hidden_bastardstandardmäßig
Wenn die Spielfigur das Kind anerkennt:
legitimacy = acknowledged_bastardpublicKnown = true
Das Kind darf nicht automatisch Erbe werden.
Nur explizite spätere Sonderregeln dürfen Erbfolgedruck erzeugen.
5. Folgen eines Kindes aus Liebschaft
Sofortfolgen
marriageSatisfaction -8reputation -4
Wenn öffentlich bekannt
- Gruppe 0: zusätzlich
-4 - Gruppe 1: zusätzlich
-5 - Gruppe 2: zusätzlich
-6 - Gruppe 3: zusätzlich
-8
Wenn Kind anerkannt wird
- laufende Monatskosten
+20..+80je Stand - zusätzliche Ereignisse zu Versorgung, Namen und Status
Standesabhängigkeit der Ehe
Die Ehe darf nicht in allen Ständen gleich funktionieren.
Gruppe 0
- Ehe ist vor allem ökonomische Stabilität
- Liebschaften belasten den Haushalt direkt
- Ehezufriedenheit reagiert stark negativ
Gruppe 1
- Ehe ist Haus- und Rufgemeinschaft
- diskrete Affären sind denkbar, aber riskant
- sichtbare Liebschaften schaden deutlich
Gruppe 2
- Ehe ist Hauspolitik und Nachfolgeordnung
- Mätressen können vorkommen, aber nur kontrolliert
- Ehezufriedenheit reagiert weniger moralisch, stärker auf öffentliche Ordnung
Gruppe 3
- Ehe ist Dynastie, Bündnis und Hofordnung
- eine diskrete Mätresse/Favorit kann den ehelichen Druck senken, solange:
- die offizielle Ehe respektiert bleibt
- keine Erbfolge bedroht wird
- kein öffentlicher Gesichtsverlust entsteht
Deshalb ist bei hohen Ständen ein positiver Effekt auf die Ehe ausdrücklich zulässig, aber nur in geordneten Fällen.
Empfohlene Umsetzung im Daemon
Reihenfolge pro Daily Tick:
- aktive Ehen laden
- aktive Liebschaften laden
- Sichtbarkeit und Diskretion fortschreiben
- Ehezufriedenheit pro Ehe fortschreiben
- Ansehen pro Charakter fortschreiben
- Skandalereignisse prüfen
- Benachrichtigungen schreiben
Reihenfolge pro Monthly Tick:
- Monatskosten je Liebschaft berechnen
- Geld abbuchen
- Unterversorgungsfolgen anwenden
- Kinderchance prüfen
- neue Kinder aus Liebschaften anlegen
- Folgeereignisse erzeugen
Minimale technische Erweiterungen
Für eine erste umsetzbare Version werden mindestens benötigt:
Beziehungserweiterung
- Zusatzfelder an
relationshipoder neue Nebentabellerelationship_state
Ehewert
marriage_satisfactionan Ehebeziehung
Kind-Zusatzfelder
legitimacybirth_contextpublic_known
Daemon-Konfiguration
- täglicher Falukant-Familienjob
- monatlicher Falukant-Familienjob
MVP-Empfehlung
Für die erste produktive Version empfehle ich diesen Schnitt:
Enthalten
- aktive Liebschaften
- Monatskosten
- tägliche Ansehensänderung
- Ehezufriedenheit
- standesabhängige Unterschiede
- Kinderchance aus Liebschaften
- sichtbare Darstellung in FamilyView
Noch nicht im MVP
- Erpressungsketten
- kirchliche Sonderereignisse
- gerichtliche Konflikte
- Sonderrechte unehelicher Kinder
- komplexe Hofintrigen
- Dienerschaft als eigenes System
- finales Balancing aller Zahlenwerte
Abnahmekriterien
Die erste technische Umsetzung gilt als korrekt, wenn:
- jede aktive Liebschaft monatlich Kosten erzeugt
- jede aktive Liebschaft täglich das Ansehen verändert
- verheiratete Figuren täglich Ehezufriedenheit verändern
- hohe Stände bei geordneter Mätresse/Favorit einen neutralen oder leicht positiven Eheeffekt haben können
- sichtbare oder schlecht versorgte Liebschaften zu Ansehensverlust führen
- Kinder aus Liebschaften entstehen können
- weibliche und männliche Spielfiguren regelgleich behandelt werden
Offene Implementierungsfrage
Vor dem Coden sollte noch genau entschieden werden:
- ob die Zusatzwerte direkt in
relationshiplanden - oder in eine neue Tabelle wie
falukant_data.relationship_state
Fachlich ist beides möglich. Für Wartbarkeit und spätere Ereignisse ist eine eigene Zustands-/Detailtabelle sauberer.