Add person-to-person disease contagion with outbreak notices.

Node/class contact rolls use pair+day seeds; vanilla respiratory diseases spread, and a threshold raises an info toast instead of per-sneeze noise.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-21 13:55:24 +03:00
co-authored by Cursor
parent a369308116
commit 4a52107bd2
19 changed files with 648 additions and 15 deletions
@@ -22,10 +22,19 @@ public class DiseaseDefTests
Assert.True(cold.Stages.Count >= 2);
Assert.Equal(0.5f, cold.IncubationDays);
Assert.Equal(14f, cold.ImmunityDays);
Assert.Equal(0.55f, cold.NodeContagionChancePerDay);
Assert.Equal(0.25f, cold.ClassContagionChancePerDay);
Assert.True(cold.ContagiousDuringIncubation);
Assert.Equal(0f, catalog.Diseases["Otitis"].NodeContagionChancePerDay);
Assert.Equal(0f, catalog.Diseases["Otitis"].ClassContagionChancePerDay);
Assert.Equal("ОРВИ", catalog.Label("ru", cold));
Assert.Equal("Common cold", catalog.Label("en", cold));
Assert.Equal(1f, catalog.BehaviorRules!.DiseaseVectorScale);
Assert.Equal(3, catalog.BehaviorRules.DiseaseOutbreakMinNewCases);
Assert.True(catalog.Events.ContainsKey("DiseaseOutbreak"));
Assert.Equal(EventTriggers.DiseaseOutbreak, catalog.Events["DiseaseOutbreak"].Trigger);
Assert.Equal("В школе распространяется болезнь", catalog.Label("ru", catalog.Events["DiseaseOutbreak"]));
}
[Fact]