Мокрый Тортл Мокрый Тортл Wet Tortle Таверна для героев A tavern for heroes
ТавернаTavern ГеймплейGameplay Как игратьHow to play ПутьJourney ВопросыFAQ Блог Роадмап Играть в TelegramPlay on Telegram

Паралич и недееспособность в ДнД 5e: как работают состояния - и почему ИИ-мастер их терял

· Владислав Новиков

Паралич и недееспособность в ДнД 5e: как работают состояния - и почему ИИ-мастер их терял

Нейросеть не удерживает состояния DnD 5e сама: она не хранит переменную «парализован», а каждый ход пересказывает историю, поэтому эффект либо висит вечно, либо тихо пропадает. Лечится выносом кондиции в базу — с источником, условием снятия (спасбросок, проверка) и предельным сроком в ходах, которые считает код, а не рассказчик.

Состояния - это та часть DnD, которая ломает нейросеть тише всего. Огненный шар она опишет красиво, монстра придумает, диалог с трактирщиком вытянет. А вот удержать в голове, что ты уже три хода как парализован, кем именно парализован и когда тебе положен спасбросок - не может. И самое обидное: она этого не заметит. Просто в какой-то момент перестанет упоминать твой паралич. Или наоборот - не перестанет никогда.

Расскажу, как это выглядело у меня в AI-Мастере, почему так вышло и что пришлось построить, чтобы состояния наконец жили по правилам, а не по настроению рассказчика.

Что такое состояния в DnD 5e

Состояние (кондиция) в DnD 5e - это временный статус существа, который меняет его возможности в бою и вне его. В базовом наборе правил SRD их пятнадцать: парализован, схвачен, обездвижен, недееспособен, сбит с ног, отравлен, ослеплён, оглушён и так далее. Само состояние описывает только эффект. Сколько оно длится и как снимается - задаёт то, что его наложило.

Вот это последнее - ключевое, и именно на нём спотыкаются все, кто пробует водить партию нейросетью. В книге правил у состояния нет срока годности. Срок живёт в заклинании, в способности монстра, в ловушке. “Удержание личности” держит паралич до минуты, пока заклинатель поддерживает концентрацию, и даёт цели спасбросок Мудрости в конце каждого её хода. Паралич от яда какой-нибудь твари - совсем по-другому. Одно и то же слово “парализован”, два разных механизма выхода.

Для человека за столом это нормально: ДМ помнит, кто и чем тебя приложил. Для языковой модели это два независимых факта, которые надо не забыть на протяжении всего боя. И она их забывает - почему нейросеть вообще теряет мир, я разбирал отдельно.

Почему нейросеть для DnD не удерживает состояния сама

Языковая модель не хранит состояние игры - она каждый ход заново перечитывает историю и пересказывает то, что выглядит правдоподобно. У неё нет переменной “парализован до конца хода Мурка”. Есть текст выше по диалогу, где паралич упоминался, и вероятность, что модель упомянет его снова. Чем длиннее бой, тем эта вероятность ниже.

Это не мой частный косяк, это известная штука. Есть работа про “разрыв устойчивости латентного состояния” (arXiv, май 2025), где авторы прогнали 17 передовых моделей и показали: модель не удерживает внутреннее состояние объекта устойчиво, и рассуждающие модели вроде o3-mini или R1 это не чинят. Отдельно есть замер на текстовых играх - TextQuests (arXiv, июль 2025): в сценариях, где контекст переваливает за 100 тысяч токенов, модели начинают галлюцинировать про уже случившееся. Верят, что подобрали предмет, который не подбирали. Ходят по кругу.

Разверни это на боёвку. У тебя длинная драка на десяток раундов, куча описаний, броски, реплики NPC. Где-то в середине была строчка “ты парализован”. Дальше модель либо тянет её по инерции вечно, либо роняет и делает вид, что ты в порядке. Оба варианта плохие, но второй хотя бы не бесит. А первый бесит очень.

Что было: паралич, который не кончался

До фикса состояния у меня жили в тексте. То есть буквально: ИИ-мастер писал “ты парализован”, и дальше эта фраза болталась в истории как единственный след того, что с персонажем что-то не так. Никакой записи “на персонаже висит эффект X от источника Y” в базе не было.

Что из этого получалось. Игрок ловил паралич - и застревал в нём. Не потому что не мог выкинуть спасбросок, а потому что спасбросок было некуда бросать: не существовало сущности, против которой бросают. Модель иногда сама милостиво решала “ладно, ты освободился”, иногда не решала. Состояние переставало быть механикой и становилось погодой.

Ровно та же беда была с захватом. Игрок пишет “вырываюсь”, мастер отвечает что-нибудь одобрительное - и всё, ты свободен, без проверки, без противодействия. Или наоборот, вырваться нельзя было в принципе, потому что рассказчик увлёкся описанием и забыл, что у захвата вообще есть правило выхода.

Ребят, кто это ловил в бете и писал мне - спасибо. Половина фиксов ниже родилась из ваших сообщений в чате.

Как устроен источник состояния и спасбросок

Починка свелась к одной мысли: состояние - это не текст, а запись со своим паспортом. Нейросеть не имеет права накладывать статус словами - ровно так же, как не имеет права выдавать предметы по одной фразе игрока.

Теперь, когда на персонажа падает эффект, в базу пишется объект, у которого есть:

Последний пункт - страховка. Даже если механика выхода где-то дала сбой, эффект не может висеть бесконечно: у него есть предел по ходам. Это неканонично для некоторых источников, зато лечит главный симптом - бесконечный дебаф.

Дальше движок сам, без участия рассказчика, на нужном моменте хода кидает спасбросок и решает, снялось или нет. Модель узнаёт результат уже готовым и только описывает его: “пальцы снова слушаются, ты выдыхаешь”. Ровно та же схема, что у меня в боёвке с кубиками - числа считает код, красоту наводит нейросеть.

Как выйти из захвата и паралича по правилам 5e

По правилам 5e выход зависит от того, что тебя держит. Из захвата выбираются действием: проверка Силы (Атлетика) или Ловкости (Акробатика) против проверки Силы (Атлетика) того, кто схватил. Из паралича по “Удержанию личности” - спасброском Мудрости в конце каждого своего хода, плюс эффект спадает, если заклинатель потерял концентрацию. Из паралича от яда - так, как написано у конкретного монстра.

Захват вообще отдельная радость: у схваченного скорость становится нулевой, но состояние само заканчивается, если тот, кто держит, стал недееспособен или его оттащили за пределы досягаемости. То есть союзник может тебя вытащить, не трогая тебя.

Что из этого теперь работает в боте. Попытка вырваться - это действие с честной проверкой, а не разрешение от рассказчика. Паралич с источником-заклинанием даёт спасбросок в конце твоего хода, и если ты его прошёл - состояние снимается на месте. Эффект без явного механизма выхода упирается в потолок по ходам и спадает сам.

И да, парализованный по-прежнему автоматически проваливает спасброски Силы и Ловкости, атаки по нему идут с преимуществом, а удар в упор - критический. Это, кстати, та часть, которую модель раньше обожала “смягчать”: описывала героический уворот у персонажа, который физически не может двигаться. Больше не описывает - потому что теперь не она решает.

Что стало и что дальше

Коротко, что изменилось после патча от 12 июля: состояния получили источник и условие снятия, спасбросок стал реальным броском движка, попытки вырваться пошли через проверку, а бесконечных дебафов не осталось.

Не буду делать вид, что теперь всё идеально. Состояний в 5e пятнадцать, взаимодействий между ними больше, чем хочется, и часть редких комбинаций я наверняка ещё не покрыл. Это активная стройка. Но принцип, по которому она строится, теперь один и понятный: всё, что можно посчитать - считает код, всё, что можно рассказать - рассказывает нейросеть. И никаких пересечений.

Если хочешь потыкать, как это работает сейчас - заходи в бота, накидай персонажа и полезь в драку с чем-нибудь кусачим. А если найдёшь состояние, которое ведёт себя странно, - напиши в “Таверну Мокрый Тортл”, разберу. Именно так предыдущие баги и чинились.

Частые вопросы

Сколько состояний в DnD 5e?

В базовом наборе правил (SRD) пятнадцать состояний: парализован, схвачен, обездвижен, недееспособен, сбит с ног, отравлен, ослеплён, оглушён и другие. Само состояние описывает только эффект — длительность и способ снятия задаёт то, что его наложило: заклинание, способность монстра или ловушка.

Что делает парализованный персонаж в DnD 5e?

Ничего: парализованный недееспособен, не может двигаться и говорить, то есть не совершает действий и реакций. Он автоматически проваливает спасброски Силы и Ловкости, атаки по нему идут с преимуществом, а любое попадание с расстояния до 5 футов — критическое.

Можно ли играть в DnD с нейросетью, если она путает правила?

Можно, если числа и статусы считает не она. Рабочая схема — гибрид: код держит состояния, броски и проверки, а языковая модель отвечает только за описания и отыгрыш. Тогда ошибки модели остаются в тексте и не ломают механику боя.

Как готовился материал: черновик собирает мой ИИ-конвейер по темам из практики таверны, факты сверяются с первоисточниками и правилами, финальную версию я читаю и правлю руками перед публикацией. Обложку тоже рисует нейросеть. Про кухню — на странице о проекте.