166 lines
11 KiB
Markdown
166 lines
11 KiB
Markdown
# Здоровье и болезни
|
|
|
|
Договорённость на срез после журнала, не текущий код.
|
|
Одежда и климат: [`inventory.md`](../07-inventory/inventory.md). Урок: [`lesson-consequences.md`](../off-queue/lesson-consequences.md).
|
|
Журнал: [`grades.md`](../13-grades/grades.md). Кабинет: [`office.md`](../12-office/office.md).
|
|
Нужды и тело: [`people.md`](../02-people/people.md). Медкабинет в `core`: `MedicalOffice`, должность `Nurse`.
|
|
|
|
У человека появляется **медицинское состояние** — не один флаг «болеет», а набор условий с
|
|
тяжестью, стадиями и эффектами (ориентир: hediff-слой RimWorld, но **сильнее упор на
|
|
реалистичные болезни**, инкубацию, иммунитет и заразность в школе). Медсестра и кабинет лечат.
|
|
Промокание и холод — векторы. Журнал 13 получает **уважительный** пропуск.
|
|
|
|
## Роль игрока: менеджер / симулятор бога
|
|
|
|
Как в [`office.md`](../12-office/office.md): нанять медсестру, держать медкабинет, смотреть вкладку
|
|
здоровья. Не «вылечи этого» кнопкой на карточке и не расстановка больных вручную. Люди сами идут
|
|
в медпункт или остаются дома по весам ИИ.
|
|
|
|
## Что увидит игрок
|
|
|
|
- На карточке — вкладка **здоровье**: активные состояния, тяжесть/стадия, кратко «что делает».
|
|
- Больные реже приходят / уходят к медсестре / сидят урок хуже (множители в данные).
|
|
- Заражение в классе и коридоре — видно по вспышке (тосты, несколько заболевших).
|
|
- В журнале (13) отсутствие по болезни не выглядит как прогул.
|
|
|
|
## На какие вопросы отвечает
|
|
|
|
- Как хранить несколько одновременных состояний с тяжестью, не смешивая с нуждами.
|
|
- Как устроены болезни: инкубация → симптомы → пик → иммунитет / хронизация (редко, данные).
|
|
- Как заразность работает в узле и в классе без глобальной магии.
|
|
- Как холод, дождь и промокание повышают шанс конкретных болезней.
|
|
- Как медсестра (`Medicine` / уход) снижает тяжесть и ускоряет выход.
|
|
- Как явка в срезе 13 различает прогул и болезнь.
|
|
|
|
## Чего нет
|
|
|
|
- Хирургии, ампутаций, установки органов, пулевых ран.
|
|
- Травм после драки (срез 9/12 сознательно без травм) — в этот срез не возвращаем.
|
|
- Настоящей больницы и госпитализации на недели вне школы.
|
|
- Игрока-врача с паузой и приказом «полечи».
|
|
- Полного анатомического дерева «каждый палец» как в бою RimWorld: для школы важнее
|
|
**системы органов / тракты** как мишени болезней (дыхание, ЖКТ, ЛОР…), не боевая медицина.
|
|
|
|
## Что меняется в уже принятом
|
|
|
|
| Было | Стало | Почему |
|
|
| --- | --- | --- |
|
|
| Нужды есть, болезней нет | Плюс слой состояний здоровья | Иначе «простуда от дождя» некуда класть |
|
|
| Медкабинет и Nurse — слот и должность | Уход и очередь к медсестре | Комната перестаёт быть декорацией |
|
|
| Явка в 13 — прогул/опоздание | Плюс причина «болезнь» | Связность с журналом |
|
|
| Тепло режет урок | Болезнь тоже режет и явку | Связность |
|
|
| Родители на собрании (12) | Могут болеть / не прийти | Тот же слой на всех ролях |
|
|
|
|
## Модель (сильнее «просто sick»)
|
|
|
|
### Состояние
|
|
|
|
На человеке список **условий** (`HealthCondition` / аналог hediff):
|
|
|
|
- `defName` болезни или состояния;
|
|
- тяжесть 0…1 (или стадия из def);
|
|
- прогресс иммунитета / лечения;
|
|
- источник (зараз, холод, идиопатия);
|
|
- когда началось.
|
|
|
|
Несколько условий сразу (простуда + живот) — норма. Нужды **не** заменяют болезни: болезнь
|
|
может усиливать спад тепла/голода или резать caps, но «голод» остаётся нуждой.
|
|
|
|
### Def болезни
|
|
|
|
`DiseaseDef` (имя уточнит фаза) в `core`:
|
|
|
|
- семейство (респираторное, ЖКТ, …) — для реализма и иммунитета;
|
|
- инкубация, длительности стадий, кривая тяжести;
|
|
- симптомы → модификаторы нужд, `LessonLearning`, скорости ходьбы, шанс остаться дома;
|
|
- заразность: радиус (узел / класс), шанс контакта, носительство в инкубации — да/нет;
|
|
- векторы: холод ниже порога, дождь/снег на улице, промокание (если появится явное состояние
|
|
«мокрый» — иначе через тепло/погоду на приходе);
|
|
- ответ на уход: насколько `tend` медсестры и навык Medicine сдвигают иммунитет;
|
|
- после выздоровления — временный иммунитет к семейству / к def.
|
|
|
|
Ваниль: несколько разных болезней (не одна «Болезнь»), например ОРВИ, грипп, гастро, ЛОР —
|
|
конкретный набор в фазе, все через данные.
|
|
|
|
### Реалистичнее RimWorld-школы
|
|
|
|
- Инкубация без симптомов, но уже можно заражать (по полю def).
|
|
- Разные кривые и сезоны/погода как множитель фона (климат школы).
|
|
- Тяжёлая стадия → с большей вероятностью **не приходит** (вне школы), уважительная явка.
|
|
- Лёгкая → приходит, учится хуже, чаще в медпункт.
|
|
- Рецидив / суперинфекция — только если поля на def разрешают; не обязательно в ванили v1.
|
|
|
|
### Медпункт
|
|
|
|
`MedicalOffice` + `Nurse`. Больной с достаточным дискомфортом получает цель «к медсестре».
|
|
Очередь в кабинете / ожидание у узла — тот же дух, что у директора (12), проще если надо.
|
|
Уход тикает тяжесть/иммунитет. Нет медсестры — болезни идут натурально, дольше и злее (данные).
|
|
|
|
## Этап A — слой состояний
|
|
|
|
Хранение, сейв, тик тяжести/стадий без заразности и без UI. Пустой список = здоров.
|
|
|
|
После этапа школа целая: слой есть, ванильных вспышек может ещё не быть.
|
|
|
|
## Этап B — ванильные болезни и векторы
|
|
|
|
Несколько `DiseaseDef`, старт от холода/погоды/шанса. Эффекты на нужды и урок. Связь с
|
|
прогулом 13 (причина болезнь).
|
|
|
|
## Этап C — заразность
|
|
|
|
Контакт в узле и/или классе. Детерминизм от сида. Тост на вспышку (не на каждый чих).
|
|
|
|
## Этап D — медсестра и экран
|
|
|
|
Уход, очередь, вкладка здоровья на карточке. Связность: болезнь → явка → оценки; симптомы →
|
|
общение слабее / реже кружки (поле, не хардкод).
|
|
|
|
После этапа срез 14 закрыт.
|
|
|
|
## Поток данных
|
|
|
|
Состояния — на человеке, тик на потоке школы. Решение «идти кNurse / остаться дома» — `HSchool.Ai`.
|
|
Карточка — HTTP. Тосты — EventDef. Журнал 13 читает причину отсутствия из состояния.
|
|
|
|
## Где живёт код
|
|
|
|
Нового проекта нет (отдельная сборка «Medicine» не заводим, пока слой не раздуется).
|
|
|
|
| Что | Куда |
|
|
| --- | --- |
|
|
| `DiseaseDef` / стадии / векторы | `HSchool.Content` + JSONC |
|
|
| Тик, заражение, уход | `HSchool.Ai` + Simulation |
|
|
| Явка «болезнь» | стык с 13 |
|
|
| Вкладка, тосты | Server + Client + EventDef |
|
|
|
|
## Советы, которые стоит принять сразу
|
|
|
|
- Не смешивать болезнь с нуждой «здоровье» одной шкалой навсегда: нужды уже заняты; состояние —
|
|
список.
|
|
- Не тащить боевую анатомию RimWorld ради школы.
|
|
- Не лечить драку травмой в этом срезе.
|
|
- Заразность — данные на def, не один глобальный RNG на школу.
|
|
- Игрок не жмёт «вылечи».
|
|
|
|
## Заведомо не сейчас
|
|
|
|
- Хирургия, протезы, наркоз, кровь, шрамы-кампания.
|
|
- Больничный лист с зарплатой учителя.
|
|
- Пандемический UI и карантинные приказы игрока.
|
|
- Травмы драки, мокрый, aftereffect, явная дыра урока от больного учителя —
|
|
[`fallout.md`](../15-fallout/fallout.md).
|
|
|
|
## Зафиксировано этим разговором
|
|
|
|
| Тема | Решение |
|
|
| --- | --- |
|
|
| Оценки | Отдельный срез 13, шкала 2–5 |
|
|
| Заражение и разные болезни | В этом же срезе 14 |
|
|
| Weave | Отдельного среза нет; связность с журналом и уроком здесь |
|
|
| Медсостояние | Список условий с тяжестью (hediff-подобно), упор на болезни |
|
|
| Реализм | Инкубация, семейства, векторы погоды, иммунитет, уход |
|
|
| Приказы | Нет; менеджер / симулятор бога |
|
|
| Ваниль | `core` |
|
|
| Стоп | После A/B/C школа целая |
|