Квесты и мобы (CS)

Описания квестов должны быть структурированы таким образом, чтобы по одному описанию можно было определить и то, что требуется от игрока, и то, что должен сделать моб для выполнения данного квеста.

При появлении какой-либо работы, на нее объявляется квест. Если в течение определенного срока ни один игрок не берется за этот квест, то тогда за нее берется моб (либо тот, кто уже делал это, либо новый из числа свободных). По описанию квеста для моба формируется очередь действий.

Это очень оживит мир, поскольку даст дел не только игрокам, но и мобам. А принцип установки новых мобов на необходимые работы с успехом замещает собой «репоп». Ведь если что-то случится с предыдущим мобом, выполняющим эту работу, то на его место встанет новый.
Предположительно это выглядит так: существует город, в котором есть некоторое макс.число жителей и некоторое число работ. Если жителей меньше максимума, то раз в некоторый промежуток времени создается новый моб со сгенерированными именем и характеристиками. При появлении работы и отсутствии заявок на нее со стороны игроков, на нее запрашивается моб. Поначалу берется один из свободных, ему дается нужная по работе профессия (навыки и прочее), и отправляется по квесту на действия. По завершению работы моб возвращается домой (или куда еще) и ждет следующего случая. На второй раз на эту же работу берется тот же моб, а если он занят, то принятие работы к действию откладывается до его освобождения (или берется снова один из свободных). Если прежнего моба нет (убит, умер сам, или что-либо еще), то после некоторого перерыва опять же берется свободный.

Едва ли не основным условием успеха этой системы оживления мобов является алгоритм поиска пути. Ни в коем случае в описаниях действий нельзя прописывать прямые перемещения типа «север, север, восток, север». Должно быть действие «дойти туда-то», которое, когда до него доходит очередь, запускает поиск пути и по найденному пути вставляет в очередь действия конкретных переходов.

В случае, если выполнение очереди действий прерывает что-то серьезное, например битва, то вся очередь очищается, а управление переходит к боевой модели. После окончания боя моб «вспоминает» свой квест, и пытается выполнить его снова. Если квеста нет, то отправляется на свое обычное место (например, дом).
Боевая модель описана отдельно.