Лучше не делать отдельную вторую систему миссий. У нас уже есть модуль миссий, темы, NPC, карта, локации и уведомления. Правильнее сделать “выдачу миссий внутри ролевой” как слой поверх текущих миссий.
Я бы делал так:
1. Миссия остаётся одной сущностью
В админке миссии создаётся обычная миссия: ранг, уровень, награда, описание, лимит символов, доступность. К ней добавляются новые поля: `кто может выдать`, `где можно получить`, `одноразовая/повторяемая`, `требуется ли NPC/Каге`.
2. Источник выдачи
У миссии может быть тип выдачи:
`доска миссий` - как сейчас.
`Каге` - миссию можно взять только у персонажа/роли Каге в нужной локации.
`NPC` - миссию выдаёт конкретный NPC.
`скрытая` - появляется после условия: разговор, предмет, уровень, знакомство, событие.
3. Привязка к локации
Например, миссия доступна только в теме “Кабинет Хокаге” или в разделе “Коноха”. Игрок заходит туда, видит блок “Доступные задания в локации” или NPC в посте предлагает задание.
4. NPC как выдающий
У NPC можно добавить список миссий, которые он может выдавать. В теме игрок пишет NPC, например “есть работа?”, NPC отвечает текстом и показывает кнопку `Принять задание`. Технически это будет просто создание `mission_run`, как сейчас при взятии с доски.
5. Выполнение там же
После принятия есть два варианта:
Можно создавать отдельную тему выполнения, как сейчас.
Или лучше для атмосферности: миссия выполняется прямо в текущей теме, если она локационная. Тогда `mission_run` хранит `thread_id`, где игрок выполняет задание, и считает символы/посты там.
6. Каге и админы
Для Каге можно сделать отдельную кнопку в локации “Выдать миссию персонажу”. Каге выбирает миссию из доступных для своей деревни, персонажа-получателя и отправляет ему уведомление/заявку. Игрок принимает, и миссия появляется в его активных.
7. Условия получения
У миссии можно добавить простые условия: деревня, ранг, уровень, локация, знакомство с NPC, наличие предмета, выполненная другая миссия. Это сильно оживит систему, но лучше добавлять постепенно.
Самый нормальный путь: не ломать текущие миссии, а расширить их полями `source_type`, `source_id`, `location_thread_id/location_subsection_id`, `giver_npc_id`, `giver_character_id`. Тогда доска миссий останется, но появятся “живые” миссии от NPC, Каге и конкретных мест.
Я бы начал с минимальной версии: миссия получает поля `тип выдачи`, `локация`, `NPC-выдающий`; в теме появляется блок “Доступные задания здесь”; кнопка “Принять” создаёт выполнение в этой же теме или отдельной теме по настройке миссии.
общедоступный
Комментарии
Чтобы оставить комментарий, войдите в аккаунт.
Комментариев пока нет
Можно начать обсуждение первым.