diff --git a/src/worker/falukant_family.rs b/src/worker/falukant_family.rs index 6a2eda1..402d462 100755 --- a/src/worker/falukant_family.rs +++ b/src/worker/falukant_family.rs @@ -751,10 +751,6 @@ impl FalukantFamilyWorker { self.publish_falukant_update_family_batch(¬ify, "daily"); drop(conn); - // Liebschafts-Geburt: täglich (1 Spieljahr); Monats-Stempel erfolgt oben mit dem Tageslauf. - if let Err(e) = self.process_lover_births() { - eprintln!("[FalukantFamilyWorker] process_lover_births: {e}"); - } Ok(()) } @@ -787,6 +783,7 @@ impl FalukantFamilyWorker { self.publish_falukant_update_family_batch(&monthly_notify, "monthly"); drop(conn); + // Ein gemeinsamer Fertilitätswurf pro Jahreslauf für Liebschaften und Verlobte. self.process_lover_births()?; Ok(()) } diff --git a/src/worker/sql.rs b/src/worker/sql.rs index 57ad3f1..68a2166 100755 --- a/src/worker/sql.rs +++ b/src/worker/sql.rs @@ -2135,7 +2135,7 @@ pub const QUERY_AUTOBATISM: &str = r#" // Entspricht „ein Spieljahr pro Kalendertag“: keine 24× stündlichen Versuche mehr, keine „Hochzeitsnacht“ // als Extra-Event — erste mögliche Konzeption am nächsten täglichen Fertilitätslauf nach der Hochzeit. // Ein Kalendertag entspricht einem Spieljahr; `mother_age_days` ist daher zugleich das -// Alter in Spieljahren. Die Altersgrenze muss folglich 16 (nicht 16 * 365) sein. +// Alter in Spieljahren. Beide Eltern müssen ihr individuelles Fruchtbarkeitsalter erreicht haben. // WICHTIG: Vater/Mutter und Alter immer über gender ableiten — nicht character1/2 fest als Mutter! // // Ablauf Ehe: (1) Konzeption setzt `marriage_pregnancy_due_at` (+18 Stunden), (2) Geburt wenn fällig. @@ -2248,7 +2248,7 @@ pub const QUERY_TRY_MARRIAGE_CONCEPTION_UPDATE: &str = r#" p.father_uid, p.mother_uid, p.mother_age_days, - 0.72::float AS prob_year + 0.50::float AS prob_year FROM paired p ), conceivable AS ( @@ -2321,7 +2321,7 @@ pub const QUERY_GET_LEGACY_MARRIAGE_INSTANT_PREGNANCY_CANDIDATES: &str = r#" p.father_uid, p.mother_uid, p.mother_age_days, - 0.72::float AS prob_year + 0.50::float AS prob_year FROM paired p ) SELECT @@ -3970,18 +3970,7 @@ pub const QUERY_GET_LOVER_PREGNANCY_CANDIDATES: &str = r#" AND cr.created_at::date = CURRENT_DATE ) -- Ein Kalendertag entspricht einem Spieljahr (vgl. Ehe-Konzeption). - AND random() * 100.0 < ( - LEAST(12.0, GREATEST(0.0, - CASE WHEN rt.tr = 'engaged' THEN 4.0 ELSE CASE rs.lover_role - WHEN 'secret_affair' THEN 2.0 - WHEN 'lover' THEN 4.0 - WHEN 'mistress_or_favorite' THEN 6.0 - ELSE 0.0 - END END - + CASE WHEN rs.affection >= 75 THEN 2.0 ELSE 0.0 END - + CASE WHEN rs.visibility >= 70 AND rs.affection < 50 THEN -2.0 ELSE 0.0 END - )) - ); + AND random() < 0.50; "#; /// Konzeption bei Liebschaften/Verlobten setzt eine geplante Schwangerschaft am Mutter-Charakter