Files
h-school/docs/design/14-health/health.md
T

11 KiB
Raw Blame History

Здоровье и болезни

Договорённость на срез после журнала, не текущий код. Одежда и климат: inventory.md. Урок: lesson-consequences.md. Журнал: grades.md. Кабинет: office.md. Нужды и тело: people.md. Медкабинет в core: MedicalOffice, должность Nurse.

У человека появляется медицинское состояние — не один флаг «болеет», а набор условий с тяжестью, стадиями и эффектами (ориентир: hediff-слой RimWorld, но сильнее упор на реалистичные болезни, инкубацию, иммунитет и заразность в школе). Медсестра и кабинет лечат. Промокание и холод — векторы. Журнал 13 получает уважительный пропуск.

Роль игрока: менеджер / симулятор бога

Как в 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.

Зафиксировано этим разговором

Тема Решение
Оценки Отдельный срез 13, шкала 2–5
Заражение и разные болезни В этом же срезе 14
Weave Отдельного среза нет; связность с журналом и уроком здесь
Медсостояние Список условий с тяжестью (hediff-подобно), упор на болезни
Реализм Инкубация, семейства, векторы погоды, иммунитет, уход
Приказы Нет; менеджер / симулятор бога
Ваниль core
Стоп После A/B/C школа целая