# Здоровье и болезни Договорённость на срез после журнала, не текущий код. Одежда и климат: [`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 школа целая |