# Falukant: Altersregeln für Werbung, Ehe und Kinder ## Verbindliche Spielregel Ein realer Kalendertag entspricht einem Falukant-Spieljahr. Die Altersprüfung verwendet daher die Differenz zwischen `CURRENT_DATE` und `birthdate` in Tagen. | Bereich | Mindestalter | Regel | | --- | ---: | --- | | Werbung | 12 | Partner können vorgeschlagen und ein Vorschlag kann angenommen werden. | | Hochzeit | 14 | Eine Verlobung kann durch eine Hochzeitsfeier vollzogen werden. | | Gemeinsamer Haushalt und Kinder | 16 | Erst dann darf die Spielmechanik eine Schwangerschaft oder Geburt aus einer Ehe erzeugen. | Die Regeln gelten für **beide** Personen einer Beziehung. Sie bilden bewusst Spielphasen ab; es gibt keine individuelle Prüfung körperlicher Reife und keine explizite Sexualmechanik. ## Bereits im Backend und Daemon umgesetzt - `backend/services/falukantService.js` - erzeugt Heiratsvorschläge nur für mindestens 12 Jahre alte Partner; - prüft beim Annehmen eines Vorschlags beide Alter erneut; - bietet den Hochzeitstyp erst ab 14 an und prüft beim Bestellen der Feier beide Verlobte serverseitig; - plant die Hochzeits-Schwangerschaft erst, wenn beide mindestens 16 sind. - `src/valuerecalculationworker.h` - vollzieht die Hochzeit nach der mindestens einen Tag alten Hochzeitsfeier nur, wenn beide Verlobte mindestens 14 sind. - `src/usercharacterworker.h` - berücksichtigt für die bestehende zufällige Ehe-Kinderlogik ausschließlich Paare, bei denen beide mindestens 16 sind. ## Auftrag für den externen Daemon Falls der produktive Daemon aus diesem Repository herausgelöst ist, müssen die folgenden Guards in dessen gleichnamige Queries übernommen werden. ### 1. Übergang `engaged` → `married` Beim Verarbeiten einer Hochzeit sind beide Charaktere zu prüfen: ```sql c.birthdate <= CURRENT_DATE - INTERVAL '14 days' AND partner.birthdate <= CURRENT_DATE - INTERVAL '14 days' ``` Die bestehende Wartezeit von `party.created_at <= NOW() - INTERVAL '1 day'` bleibt unverändert. Erfüllt ein Paar die Altersregel noch nicht, bleibt es verlobt; die bereits angelegte Feier wird nicht verworfen und kann nach Erreichen des Alters vollzogen werden. ### 2. Eheliche Schwangerschaften und Geburten Jeder automatische Empfängnis- oder Geburtenkandidat muss beide Bedingungen erfüllen: ```sql mother.birthdate <= CURRENT_DATE - INTERVAL '16 days' AND father.birthdate <= CURRENT_DATE - INTERVAL '16 days' ``` Das gilt sowohl für die Zufallslogik als auch für einen geplanten `pregnancy_due_at`-Pfad. Beim geplanten Pfad soll der Daemon die Felder nicht leeren, solange mindestens ein Elternteil noch unter 16 ist; die Schwangerschaft wird erst verarbeitet, sobald beide die Grenze erreicht haben. Admin-Tools können weiterhin ein bewusstes, separat protokolliertes Override anbieten. ### 3. Tests für den Daemon - 13/13 Jahre, verlobt, Hochzeitsfeier älter als 24 Stunden: bleibt `engaged`. - 14/14 Jahre, verlobt, Hochzeitsfeier älter als 24 Stunden: wird `married`. - Verheiratet, ein Elternteil 15: keine automatische Schwangerschaft/Geburt. - Verheiratet, beide 16: normaler Schwangerschafts-/Geburtspfad ist möglich. ## Bestehende Daten Es ist keine Migration nötig. Bereits bestehende Ehen bleiben bestehen; die Grenzen steuern ausschließlich neue Übergänge und automatische Kinderereignisse.