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
+9 -9
View File
@@ -11,18 +11,18 @@
## Задачи
- [ ] Поля заразности на `DiseaseDef`: узел и/или класс, шанс, носительство в инкубации
- [ ] Контакт считает поток школы; детерминизм от сида пары/узла/дня
- [ ] Не один глобальный `Random` на мир
- [ ] Info-тост на вспышку (порог числа новых случаев), не на каждый чих
- [ ] Иммунитет и уже болеющие не заражаются вопреки def
- [x] Поля заразности на `DiseaseDef`: узел и/или класс, шанс, носительство в инкубации
- [x] Контакт считает поток школы; детерминизм от сида пары/узла/дня
- [x] Не один глобальный `Random` на мир
- [x] Info-тост на вспышку (порог числа новых случаев), не на каждый чих
- [x] Иммунитет и уже болеющие не заражаются вопреки def
## Тесты, без которых фаза не закрыта
- [ ] Заразный и здоровый в одном узле → здоровый заболевает чаще, чем изолированный контроль
- [ ] Тот же сид → те же передачи в золотом сценарии
- [ ] Def без заразности не прыгает по классу
- [ ] Notice вспышки эмитится при пороге
- [x] Заразный и здоровый в одном узле → здоровый заболевает чаще, чем изолированный контроль
- [x] Тот же сид → те же передачи в золотом сценарии
- [x] Def без заразности не прыгает по классу
- [x] Notice вспышки эмитится при пороге
## Критерий готовности