Implement lover relationship management features: Add endpoints for creating, acknowledging, and managing lover relationships in the FalukantController. Enhance backend models with RelationshipState for tracking relationship statuses. Update frontend components to display and manage lover details, including marriage satisfaction and household tension. Improve localization for new features in multiple languages.
This commit is contained in:
180
docs/FALUKANT_UNDERGROUND_AFFAIR_DAEMON_HANDOFF.md
Normal file
180
docs/FALUKANT_UNDERGROUND_AFFAIR_DAEMON_HANDOFF.md
Normal file
@@ -0,0 +1,180 @@
|
||||
# Falukant: Daemon-Handoff für `investigate_affair`
|
||||
|
||||
## Zweck
|
||||
|
||||
Dieses Dokument beschreibt die Auswertung der Untergrundaktivität `investigate_affair` im externen Daemon.
|
||||
|
||||
Es ergänzt:
|
||||
|
||||
- [FALUKANT_UNDERGROUND_AFFAIR_PLAN.md](/mnt/share/torsten/Programs/YourPart3/docs/FALUKANT_UNDERGROUND_AFFAIR_PLAN.md)
|
||||
- [FALUKANT_LOVERS_DAEMON_SPEC.md](/mnt/share/torsten/Programs/YourPart3/docs/FALUKANT_LOVERS_DAEMON_SPEC.md)
|
||||
- [FALUKANT_LOVERS_DAEMON_HANDOFF.md](/mnt/share/torsten/Programs/YourPart3/docs/FALUKANT_LOVERS_DAEMON_HANDOFF.md)
|
||||
|
||||
## Betroffene Daten
|
||||
|
||||
Der externe Daemon liest:
|
||||
|
||||
- `falukant_data.underground`
|
||||
- `falukant_type.underground`
|
||||
- `falukant_data.relationship`
|
||||
- `falukant_data.relationship_state`
|
||||
- `falukant_data.character`
|
||||
- optional `falukant_data.child_relation`
|
||||
|
||||
Relevant ist jeweils:
|
||||
|
||||
- Untergrundaktivität vom Typ `investigate_affair`
|
||||
- `performer_id`
|
||||
- `victim_id`
|
||||
- `parameters.goal`
|
||||
- `expose`
|
||||
- `blackmail`
|
||||
- `result`
|
||||
|
||||
## Erwarteter Input
|
||||
|
||||
Eine Aktivität ist für den Daemon verarbeitbar, wenn:
|
||||
|
||||
- `underground_type.tr = investigate_affair`
|
||||
- `result.status = pending`
|
||||
|
||||
Der Daemon soll dann beim Opfer prüfen:
|
||||
|
||||
- aktive Liebschaften
|
||||
- Sichtbarkeit und Diskretion dieser Liebschaften
|
||||
- evtl. bekannte uneheliche Kinder
|
||||
- Stand und Ansehen des Opfers
|
||||
|
||||
## Ergebnis-Schema in `underground.result`
|
||||
|
||||
Der Daemon schreibt nach der Auswertung ein JSON mit folgender Struktur:
|
||||
|
||||
```json
|
||||
{
|
||||
"status": "resolved",
|
||||
"outcome": "success",
|
||||
"discoveries": {
|
||||
"relationshipId": 123,
|
||||
"loverRole": "secret_affair",
|
||||
"visibility": 42,
|
||||
"acknowledged": false,
|
||||
"publicKnownChild": false
|
||||
},
|
||||
"visibilityDelta": 12,
|
||||
"reputationDelta": -3,
|
||||
"blackmailAmount": 1500,
|
||||
"notes": "Affair was uncovered and partially exposed."
|
||||
}
|
||||
```
|
||||
|
||||
Erlaubte Werte:
|
||||
|
||||
- `status`
|
||||
- `pending`
|
||||
- `resolved`
|
||||
- `failed`
|
||||
- `outcome`
|
||||
- `success`
|
||||
- `partial`
|
||||
- `failure`
|
||||
|
||||
## Auswertung: `goal = expose`
|
||||
|
||||
Ziel:
|
||||
|
||||
- Liebschaft öffentlich machen
|
||||
- Sichtbarkeit stark erhöhen
|
||||
- ggf. Skandal auslösen
|
||||
|
||||
Empfohlene Wirkung:
|
||||
|
||||
- `relationship_state.visibility +10..25`
|
||||
- optional `relationship_state.discretion -5..15`
|
||||
- sofortiger Reputationsschaden beim Opfer
|
||||
- bei sehr sichtbarer oder junger Beziehung zusätzliche Skandalchance
|
||||
|
||||
Zusätzliche Empfehlung:
|
||||
|
||||
- wenn die Beziehung bereits fast öffentlich war, darf `outcome = partial` gesetzt werden statt voller Erfolg
|
||||
|
||||
## Auswertung: `goal = blackmail`
|
||||
|
||||
Ziel:
|
||||
|
||||
- belastendes Wissen gewinnen
|
||||
- keinen sofortigen vollen öffentlichen Effekt erzeugen
|
||||
- ein Erpressungspotenzial vorbereiten
|
||||
|
||||
Empfohlene Wirkung:
|
||||
|
||||
- `relationship_state.visibility +3..10`
|
||||
- `blackmailAmount` setzen
|
||||
- kleiner oder kein sofortiger Reputationsschaden
|
||||
- optional separates Log oder spätere Forderung
|
||||
|
||||
Wenn ihr noch kein echtes Erpressungssystem habt:
|
||||
|
||||
- `blackmailAmount` trotzdem setzen
|
||||
- `notes` befüllen
|
||||
- UI zeigt den Vorgang als abgeschlossen mit Erpressungssumme
|
||||
|
||||
## Mindestregeln für Erfolg
|
||||
|
||||
Erfolgswahrscheinlichkeit sollte steigen bei:
|
||||
|
||||
- hoher vorhandener Sichtbarkeit
|
||||
- niedriger Diskretion
|
||||
- mehreren aktiven Liebschaften
|
||||
- bereits bekannten unehelichen Kindern
|
||||
|
||||
Erfolgswahrscheinlichkeit sollte sinken bei:
|
||||
|
||||
- hoher Diskretion
|
||||
- niedriger Sichtbarkeit
|
||||
- standesgemäß geführter Mätresse/Favorit auf hohem Rang
|
||||
|
||||
## Folgewirkungen auf Lovers-System
|
||||
|
||||
Bei Erfolg darf der Daemon auslösen:
|
||||
|
||||
- `falukant_family_scandal_hint`
|
||||
- `falukantUpdateFamily` mit `reason = scandal`
|
||||
- zusätzlich normale Status-Updates
|
||||
|
||||
Wenn `goal = expose`, sollte mindestens eine dieser Wirkungen eintreten:
|
||||
|
||||
- Sichtbarkeit steigt
|
||||
- Ruf sinkt
|
||||
- Skandalwahrscheinlichkeit steigt
|
||||
|
||||
Wenn `goal = blackmail`, sollte mindestens eine dieser Wirkungen eintreten:
|
||||
|
||||
- `blackmailAmount > 0`
|
||||
- kleiner Sichtbarkeitsanstieg
|
||||
- interner Merker für spätere Forderung
|
||||
|
||||
## UI-Erwartung
|
||||
|
||||
Das Frontend dieses Projekts erwartet derzeit:
|
||||
|
||||
- `type`
|
||||
- `goal`
|
||||
- `status`
|
||||
- `additionalInfo.blackmailAmount`
|
||||
|
||||
Optional nutzbar später:
|
||||
|
||||
- `discoveries`
|
||||
- `visibilityDelta`
|
||||
- `reputationDelta`
|
||||
- `notes`
|
||||
|
||||
## Definition of Done
|
||||
|
||||
Die externe Umsetzung gilt als ausreichend, wenn:
|
||||
|
||||
1. `investigate_affair`-Einträge mit `status = pending` verarbeitet werden
|
||||
2. `result.status` danach nicht mehr `pending` ist
|
||||
3. `goal = expose` und `goal = blackmail` verschieden behandelt werden
|
||||
4. mindestens Sichtbarkeit oder Reputationswirkung zurückgeschrieben wird
|
||||
5. `blackmailAmount` bei Erpressung gesetzt werden kann
|
||||
Reference in New Issue
Block a user