Ändere Altersgrenze für Schwangerschaften auf 16 Jahre und passe entsprechende Abfragen an
All checks were successful
Deploy yourpart (blue-green) / deploy (push) Successful in 4m14s
All checks were successful
Deploy yourpart (blue-green) / deploy (push) Successful in 4m14s
This commit is contained in:
@@ -2098,9 +2098,8 @@ pub const QUERY_AUTOBATISM: &str = r#"
|
||||
// Konzeption: genau ein Wurf pro Ehe und Kalendertag (`UserCharacterWorker`), mit random() < prob_year.
|
||||
// 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.
|
||||
// Grenzen in Tagen: 1 Jahr ≈ 365 Tage (mother_age_days).
|
||||
// Erstes gemeinsames Kind (0 Zeilen in child_relation für dieses Paar): prob_year mindestens 1.0
|
||||
// im Alter 18–~44 (6570–16000 Tage), damit kinderlose Ehen nicht über viele Jahre ohne Nachwuchs bleiben.
|
||||
// Ein Kalendertag entspricht einem Spieljahr; `mother_age_days` ist daher zugleich das
|
||||
// Alter in Spieljahren. Die Altersgrenze muss folglich 16 (nicht 16 * 365) sein.
|
||||
// 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.
|
||||
@@ -2209,7 +2208,7 @@ pub const QUERY_TRY_MARRIAGE_CONCEPTION_UPDATE: &str = r#"
|
||||
conceivable AS (
|
||||
SELECT ma.relationship_id
|
||||
FROM mother_age ma
|
||||
WHERE ma.mother_age_days >= 5110
|
||||
WHERE ma.mother_age_days >= 16
|
||||
AND random() < ma.prob_year
|
||||
)
|
||||
UPDATE falukant_data.relationship r
|
||||
@@ -2286,7 +2285,7 @@ pub const QUERY_GET_LEGACY_MARRIAGE_INSTANT_PREGNANCY_CANDIDATES: &str = r#"
|
||||
mother_age_days,
|
||||
prob_year * 100.0 AS prob_pct
|
||||
FROM mother_age
|
||||
WHERE mother_age_days >= 5110
|
||||
WHERE mother_age_days >= 16
|
||||
AND random() < prob_year;
|
||||
"#;
|
||||
|
||||
@@ -3855,7 +3854,8 @@ pub const QUERY_GET_LOVER_PREGNANCY_CANDIDATES: &str = r#"
|
||||
WHERE cr.mother_character_id = c_female.id
|
||||
AND cr.created_at::date = CURRENT_DATE
|
||||
)
|
||||
AND (CURRENT_DATE - c_female.birthdate::date) >= 5110
|
||||
-- Ein Kalendertag entspricht einem Spieljahr (vgl. Ehe-Konzeption).
|
||||
AND (CURRENT_DATE - c_female.birthdate::date) >= 16
|
||||
AND random() * 100.0 < (
|
||||
LEAST(12.0, GREATEST(0.0,
|
||||
CASE rs.lover_role
|
||||
@@ -4088,4 +4088,16 @@ mod tests {
|
||||
assert!(QUERY_SET_CHARACTER_PREGNANCY_FROM_LOVER.contains(AGE_16_GUARD));
|
||||
assert!(QUERY_GET_PLANNED_CHARACTER_BIRTH_DELIVERIES.contains("pregnancy_due_at <= NOW()"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn automatic_conception_uses_game_years_not_real_world_days() {
|
||||
for query in [
|
||||
QUERY_TRY_MARRIAGE_CONCEPTION_UPDATE,
|
||||
QUERY_GET_LEGACY_MARRIAGE_INSTANT_PREGNANCY_CANDIDATES,
|
||||
QUERY_GET_LOVER_PREGNANCY_CANDIDATES,
|
||||
] {
|
||||
assert!(!query.contains("5110"), "{query}");
|
||||
assert!(query.contains(">= 16"), "{query}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user