Для создания системы, которая будет работать как надежный Python-скрипт и выдавать данные для нейросети, нам нужно абстрагироваться от конкретных существ и сосредоточиться на **состоянии мира**. Хуки (Hooks) должны быть «контейнерами», которые описывают **контекст происходящего**, но оставляют вопрос «кто в этом участвует» и «как они настроены» на долю генераторов (Beasts/NPC) и бросков Реакции. Вот классификация и обобщенные хуки, расширенные на основе данных `dmg_encounters.txt`: --- ### 1. PvP (Персонаж против Персонажа/Существа) **Суть:** Столкновение воль. Существа заняты своим делом, в которое втягиваются герои. **Логика для Питона:** Генерирует 1d4+1 NPC (через `henchmen.py`) или Монстров (через `encounter_generator.py`). **Хуки (Нейтральные к Реакции):** * **The Claim (Притязание):** Существа охраняют территорию, пост или право прохода. (При Hostile — требуют плату/атакуют; при Friendly — делятся советом о дороге). * **The Task (Поручение/Призыв):** Существа находятся при исполнении обязанностей (патруль, сбор налогов, охота). Они оценивают героев как ресурс или помеху. * **The Internal Conflict (Свалка):** Группа существ конфликтует между собой. Герои могут стать судьями, жертвами или союзниками. (Темы: Brawl, Protest, Patrol vs Raiders). * **The Shadow (Слежка/Промысел):** Существа скрытно наблюдают за героями или пытаются совершить скрытое действие (Pickpocket, Shady transaction, Spy). * **The Interaction (Предложение/Запрос):** Существа активно ищут контакта для обмена, торговли или получения помощи (Merfolk traders, Companion, Urchin). ### 2. PvE (Персонаж против Среды) **Суть:** Опасность или изменение ландшафта. Живые существа здесь — лишь статисты или жертвы, не влияющие на саму угрозу. **Логика для Питона:** Не требует бросков Реакции для самой угрозы. **Хуки (Нейтральные к Реакции):** * **The Catastrophe (Катастрофа):** Внезапное изменение среды, требующее немедленного действия (Fire, Whirlpool, Sandstorm, Iceberg). * **The Obstacle (Препятствие):** Дорога перекрыта чем-то масштабным и движущимся (Procession, Runaway cart, огромный Kelp bed, миграция животных). * **The Anomaly (Аномалия):** Энергетический или природный всплеск (Steam vent, Grove of burned trees, Blizzard, Волшебное пение на ветру). * **The Landmark (Ориентир):** Место, меняющее восприятие пути (Statue, Monolith, Sunken ruins, Abandoned grove). Были ли здесь враги — решит `Discovery`. ### 3. PvX (Персонаж против Неизвестного) **Суть:** Тайна, след или ресурс. Существа здесь скрыты, либо являются объектом изучения. **Логика для Питона:** Бросок Surprise определяет, найдут ли герои «источник», прежде чем он найдет их. **Хуки (Нейтральные к Реакции):** * **The Remnant (Останки/След):** Свидетельство недавнего присутствия существ (Corpse, Floating debris, Tracks, Ghost ship). * **The Cache (Схрон/Ресурс):** Ожидаемая или случайная находка (Found trinket, Sunken treasure chest, Magical plant/berries, Bed of giant oysters). * **The Lair (Логово):** Герои натыкаются на место обитания (Undersea cave, Hidden nest, Shady lair). Кто внутри — решит бросок монстров. * **The Omen (Знамение/Тень):** Неясный визуальный или звуковой сигнал (Shadow in the water, Sighting of a killer whale, Distant horn sound). ### 4. PvSelf (Персонаж против Себя) **Суть:** Дилемма. Ситуация, требующая выбора между риском, совестью и выгодой. **Логика для Питона:** Обычно один NPC или слабое существо. **Хуки (Нейтральные к Реакции):** * **The Plea (Просьба о спасении):** Существо в беде (NPC in the water, Wounded scout, Beggar). Помощь сулит награду или проблемы. * **The Moral Crossroads (Моральный перекресток):** Ситуация несправедливости, свидетелями которой стали герои (Execution, Bullies vs Commoner, Unfair decree). * **The Temptation (Искушение):** Возможность получить что-то ценное, нарушив закон или обычаи (Found trinket, принадлежащий храму; брошенная повозка с золотом). --- ### Как это работает в Питоне (Пример логики): 1. **Скрипт выбирает Тип:** `PvP`. 2. **Скрипт выбирает Хук:** `The Task (Поручение)`. 3. **Скрипт выбирает Субъектов:** Из таблицы биома `Forest` выпадают `2d4 scouts`. 4. **Скрипт бросает ACKS II:** * *Reaction* = 3 (Hostile). * *Surprise* = Party is Attentive. 5. **Формирование вывода для Нейронки:** * **Вектор:** PvP / The Task. * **Объект:** Группа эльфов-разведчиков (Scouts). * **Состояние:** Реакция враждебная (Hostile). Разведчики выполняют патрулирование границ и воспринимают героев как нарушителей/шпионов. Благодаря Внимательности, герои видят, как разведчики готовят луки. --- ### Обобщение Hooks по биомам (Примеры для базы данных): * **Sea (PvX/Remnant):** «Среди волн покачиваются обломки судна и куски парусины (Floating debris). Что-то темное движется под водой...» * **Sylvan Forest (PvP/The Internal Conflict):** «Звуки стычки доносятся из-за вековых дубов. Группа лесных существ (Gnolls) что-то не поделила с местными обитателями...» * **Undersea (PvE/The Anomaly):** «Вода внезапно становится обжигающе горячей, вверх поднимаются пузыри пара (Steam vent). Видимость падает...» * **Urban (PvSelf/The Moral Crossroads):** «На площади стража готовит плаху для осужденного (Spectacle/Execution). Толпа замерла в ожидании...» Эта система полностью нейтральна: **The Task** может обернуться как дружеским приветствием патруля (Reaction 12), так и попыткой ареста (Reaction 2). Скрипт просто дает «сцену», а кубики — «драму».