Mark phase 77 in progress; register slice 14.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,165 @@
|
||||
# Здоровье и болезни
|
||||
|
||||
Договорённость на срез после журнала, не текущий код.
|
||||
Одежда и климат: [`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 школа целая |
|
||||
Reference in New Issue
Block a user