# 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