# Фаза 20. Нужды и действия ## Зависимости - [Фаза 19](19-presence-screen.md) ## Зачем Нужды перестают быть четырьмя неподвижными полосками, а действия — пустым дефом. Появляется то, из чего фаза 21 будет собирать решения. ## Задачи - [ ] `ActionDef` получает поля: комната, вещь, длительность, восполняемая нужда и величина, роли, вес досуга - [ ] Действия в `core`: поесть в столовой, санузел, отдохнуть на перемене, пообщаться, прогуляться по коридору и по двору - [ ] Деф правил поведения — как `StaffingDef` у штата: пороги нужд, скорость обучения на уроке, разброс запаса на дорогу, порог переключения решения - [ ] Декей нужд включается в `core`. Сон восстанавливается вне школы, а не действием - [ ] Действие занимает вещь на время: за один стол не садятся вдвоём - [ ] Выполнение действия: начало, отсчёт минут, восполнение нужды по завершении. Правила — в `HSchool.Ai`, компоненты и мир — в `HSchool.Simulation` - [ ] Валидатор дефов ловит действие без комнаты, с неизвестной нуждой и с неизвестной вещью - [ ] Карточка человека показывает, что он делает; полоски нужд начинают шевелиться ## Тесты, без которых фаза не закрыта - [ ] Голод падает за игровой час ровно на `decayPerHour` - [ ] Обед в столовой поднимает голод на заявленную величину и занимает заявленное время - [ ] Столов меньше, чем желающих: лишние не начинают действие, а не садятся сквозь друг друга - [ ] Ночь вне школы возвращает сон к максимуму - [ ] Действие с неизвестной нуждой роняет загрузку каталога с внятной ошибкой - [ ] Те же входы дают те же значения нужд на тот же момент ## Критерий готовности - `dotnet test` и `npm test` проходят - В карточке за игровой день видно, как нужды опускаются, а после столовой — поднимаются ## Стоп Не подключать выбор действия — люди пока ходят только по обязанности. Не трогать оценки и успеваемость.