Files
yourpart3/docs/FALUKANT_FAMILY_AGE_RULES.md
Torsten Schulz (local) c462001ff0
All checks were successful
Deploy to production / deploy (push) Successful in 3m14s
feat(bisaya): update household and children age rules to 14, adjust related instructions and migration
2026-09-09 14:16:41 +02:00

85 lines
3.7 KiB
Markdown

# 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 | 10 | Partner können vorgeschlagen und ein Vorschlag kann angenommen werden. |
| Hochzeit | 14 | Eine Verlobung kann durch eine Hochzeitsfeier vollzogen werden. |
| Gemeinsamer Haushalt und Kinder | 14 | Ab dem Heiratsalter 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.
Eltern können ihre benannten Kinder ab 10 Spieljahren verkuppeln. Diese
Werbung ist verkürzt: Nach der Auswahl eines Kandidaten genügt ein weiterer
Verkuppelungsschritt zur Verlobung. Die Hochzeitsfeier bleibt trotzdem ab 14
Spieljahren erforderlich und wird dabei ausdrücklich dem verlobten Paar
zugeordnet. Ab diesem Alter kann die normale automatische Kinderlogik greifen.
## Bereits im Backend und Daemon umgesetzt
- `backend/services/falukantService.js`
- erzeugt Heiratsvorschläge nur für mindestens 10 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 14 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 14 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 '14 days'
AND father.birthdate <= CURRENT_DATE - INTERVAL '14 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 14 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 13: keine automatische Schwangerschaft/Geburt.
- Verheiratet, beide 14: 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.