feat(admin): implement pregnancy and birth management features
Some checks failed
Deploy to production / deploy (push) Failing after 2m6s

- Added new admin functionalities to force pregnancy, clear pregnancy, and trigger birth for characters.
- Introduced corresponding routes and controller methods in adminRouter and adminController.
- Enhanced the FalukantCharacter model to include pregnancy-related fields.
- Created database migration for adding pregnancy columns to the character table.
- Updated frontend views and internationalization files to support new pregnancy and birth management features.
- Improved user feedback and error handling for these new actions.
This commit is contained in:
Torsten Schulz (local)
2026-03-30 13:44:43 +02:00
parent b2591da428
commit c52d4b60f9
18 changed files with 628 additions and 160 deletions

View File

@@ -168,7 +168,40 @@
"errorLoadingStockTypes": "Fehler beim Laden der Lagertypen.",
"errorAddingStock": "Fehler beim Hinzufügen des Lagers.",
"stockAdded": "Lager erfolgreich hinzugefügt.",
"invalidStockData": "Bitte gültige Lagertyp- und Mengenangaben eingeben."
"invalidStockData": "Bitte gültige Lagertyp- und Mengenangaben eingeben.",
"pregnancy": {
"title": "Schwangerschaft (Admin)",
"characterId": "Charakter-ID",
"status": "Status",
"statusActive": "Schwanger bis",
"statusNone": "Nicht schwanger",
"fatherId": "Vater-Charakter-ID (optional)",
"dueDays": "Tage bis zum Termin",
"force": "Schwangerschaft setzen",
"clear": "Schwangerschaft entfernen",
"successForce": "Schwangerschaft wurde gesetzt.",
"successClear": "Schwangerschaft wurde entfernt.",
"error": "Aktion fehlgeschlagen."
},
"birth": {
"title": "Geburt erzwingen (Admin)",
"motherHint": "Es wird der oben genannte Charakter (Mutter) verwendet.",
"fatherId": "Vater-Charakter-ID",
"context": "Kontext",
"contextMarriage": "Ehe",
"contextLover": "Liebschaft",
"legitimacy": "Legitimität",
"legitimate": "Legitim",
"ackBastard": "Anerkannt unehelich",
"hiddenBastard": "Verborgen unehelich",
"gender": "Kind-Geschlecht",
"genderRandom": "Zufällig",
"male": "Männlich",
"female": "Weiblich",
"force": "Geburt auslösen",
"success": "Kind wurde angelegt (Taufe ausstehend).",
"error": "Geburt konnte nicht ausgelöst werden."
}
},
"map": {
"title": "Falukant Karten-Editor (Regionen)",

View File

@@ -540,6 +540,10 @@
"familyWarning": "Anhaltender Kreditverzug belastet Ehe, Haushalt und Liebschaften.",
"familyImpact": "Der Schuldturm schadet Ehe, Hausfrieden und der Stabilität von Liebschaften."
},
"pregnancy": {
"banner": "Du erwartest ein Kind.",
"dueHint": "Voraussichtlicher Geburtstermin"
},
"spouse": {
"title": "Beziehung",
"name": "Name",

View File

@@ -223,7 +223,40 @@
"errorLoadingStockTypes": "Error loading warehouse types.",
"errorAddingStock": "Error adding warehouse.",
"stockAdded": "Warehouse successfully added.",
"invalidStockData": "Please enter valid warehouse type and quantity."
"invalidStockData": "Please enter valid warehouse type and quantity.",
"pregnancy": {
"title": "Pregnancy (admin)",
"characterId": "Character ID",
"status": "Status",
"statusActive": "Expecting until",
"statusNone": "Not pregnant",
"fatherId": "Father character ID (optional)",
"dueDays": "Days until due date",
"force": "Set pregnancy",
"clear": "Clear pregnancy",
"successForce": "Pregnancy has been set.",
"successClear": "Pregnancy has been cleared.",
"error": "Action failed."
},
"birth": {
"title": "Force birth (admin)",
"motherHint": "The character listed above is used as the mother.",
"fatherId": "Father character ID",
"context": "Context",
"contextMarriage": "Marriage",
"contextLover": "Affair",
"legitimacy": "Legitimacy",
"legitimate": "Legitimate",
"ackBastard": "Acknowledged bastard",
"hiddenBastard": "Hidden bastard",
"gender": "Child gender",
"genderRandom": "Random",
"male": "Male",
"female": "Female",
"force": "Trigger birth",
"success": "Child created (baptism pending).",
"error": "Could not trigger birth."
}
},
"createNPC": {
"title": "Create NPCs",

View File

@@ -611,6 +611,10 @@
"familyWarning": "Ongoing debt delinquency puts strain on marriage, household and affairs.",
"familyImpact": "Debtors' prison damages marriage, household peace and the stability of affairs."
},
"pregnancy": {
"banner": "You are expecting a child.",
"dueHint": "Expected due date"
},
"children": {
"title": "Children",
"name": "Name",

View File

@@ -168,7 +168,40 @@
"errorLoadingStockTypes": "Error al cargar los tipos de almacén.",
"errorAddingStock": "Error al añadir el almacén.",
"stockAdded": "Almacén añadido correctamente.",
"invalidStockData": "Por favor, introduce un tipo de almacén y una cantidad válidos."
"invalidStockData": "Por favor, introduce un tipo de almacén y una cantidad válidos.",
"pregnancy": {
"title": "Embarazo (admin)",
"characterId": "ID de personaje",
"status": "Estado",
"statusActive": "Embarazo hasta",
"statusNone": "No embarazada",
"fatherId": "ID del padre (opcional)",
"dueDays": "Días hasta el parto previsto",
"force": "Establecer embarazo",
"clear": "Quitar embarazo",
"successForce": "Embarazo establecido.",
"successClear": "Embarazo eliminado.",
"error": "La acción ha fallado."
},
"birth": {
"title": "Forzar nacimiento (admin)",
"motherHint": "Se usa el personaje indicado arriba como madre.",
"fatherId": "ID del padre",
"context": "Contexto",
"contextMarriage": "Matrimonio",
"contextLover": "Amante",
"legitimacy": "Legitimidad",
"legitimate": "Legítimo",
"ackBastard": "Bastardo reconocido",
"hiddenBastard": "Bastardo oculto",
"gender": "Sexo del niño",
"genderRandom": "Aleatorio",
"male": "Masculino",
"female": "Femenino",
"force": "Provocar nacimiento",
"success": "Niño creado (bautizo pendiente).",
"error": "No se pudo provocar el nacimiento."
}
},
"map": {
"title": "Editor de mapas de Falukant (regiones)",

View File

@@ -521,6 +521,10 @@
"familyWarning": "La mora continuada perjudica el matrimonio, el hogar y las relaciones.",
"familyImpact": "La prisión por deudas daña el matrimonio, la paz del hogar y la estabilidad de las relaciones."
},
"pregnancy": {
"banner": "Esperas un hijo.",
"dueHint": "Fecha prevista de nacimiento"
},
"spouse": {
"title": "Relación",
"name": "Nombre",