05 · Задания
Задания — три горизонта целей: день, неделя и вся игра. В каждой награде есть 1 💎 Эйрон, поэтому даже рутинное задание двигает игрока к настоящей платной цели (воскрешение, риск-ковка, сундук, автобой, респек).
| Вид | Сколько | Когда сбрасывается | На что рассчитан |
|---|---|---|---|
| Ежедневные | 5 | каждый день в 00:00 UTC | зайти и поиграть 15–30 минут |
| Еженедельные | 15 | каждый понедельник в 00:00 UTC | большая цель на 3–4 вечера |
| Разовые | 100 | никогда — один раз за всю игру | лестница целей на месяцы |
Экран заданий открывается кнопкой 📋 «Задания» на экране героя (в «Меню» раздела заданий больше нет). Точка на кнопке значит, что есть незабранная награда; в шапке героя рядом с золотом виден счётчик готовых наград. Внутри — три вкладки со счётчиком «готово N из M», карточки с полосой прогресса («412 / 500»), кнопка «Забрать» на выполненном и «Забрать всё» — она собирает все готовые награды разом.
Как выглядит экран
Оформление читается по состояниям, а не по строкам: три состояния видно боковым зрением, вчитываться не нужно.
| Состояние | Как выглядит |
|---|---|
| Готово к награде | золотая карточка со свечением, кнопка «Забрать награду» на всю ширину |
| В работе | обычная карточка, полоса прогресса с числом внутри, кнопка погашена |
| Получено | приглушённая карточка с галочкой ✅, полоса полная и серая, кнопки нет |
- Вкладки — с подчёркиванием активной (не рамкой), с иконкой и пилюлей-счётчиком «3/5». У вкладки, где есть готовые награды, рядом с названием горит золотое число.
- Награда — рядом пилюль с нарисованными иконками: Эйрон, золото, ключ подземелья, свитки заточки. Раньше это была строка из эмодзи, а иконка ключа вообще лежала в проекте без дела. У ресурсов профессии иконки нет намеренно — их набор зависит от профессии героя, поэтому там эмодзи по редкости.
- Категория задания — маленький значок слева от имени (⚔️ охота, ⚒️ ремесло, 🏰 клан и так далее): считается на клиенте по id, сервер не трогали.
- Описание — не длиннее двух строк с многоточием, чтобы карточки были одной высоты и список не «рвался».
- «Забрать всё» закреплена внизу и не уезжает при прокрутке: прокручивается только список. На длинном списке кнопку иначе приходилось искать.
- Скелетон вместо строки «Задания загружаются…» — три серые карточки.
- Появление карточек — лёгкая анимация, и она выключается при системной
настройке «меньше движения» (
prefers-reduced-motion).
Цепочки разовых
Разовых заданий сто пять, и они собраны в 19 цепочек. Цепочка показывает:
- полосу из сегментов — по одному на шаг: видно, сколько пройдено и сколько осталось, а не только «3 из 18»;
- свёрнутое пройденное — строка «✅ Пройдено: 3», разворачивается списком с названиями и наградами (раньше пройденного не было видно вовсе);
- активный шаг — карточкой с золотым акцентом;
- следующие шаги — приглушёнными карточками с 🔒: видно, что они закрыты, а не «сломаны». Показываем два шага и строку «и ещё N» — цепочка до 18 шагов иначе раздувала бы экран.
Бонус за день
За все пять ежедневных сверху идёт 1 🔑 Ключ Подземелья. Обычно он приходит сам вместе с пятой ежедневной, но у карточки бонуса есть и отдельная кнопка «Забрать» — она нужна тем, у кого пять задач уже закрыты, а бонус ещё ждёт (например, профиль забрал их до появления бонуса). Получение ключа показывает тост «Бонус за полный день: +1 🔑».
Ежедневные — 5
| Название | Цель | Дополнительно к 1 Эйрону |
|---|---|---|
| Вход в игру | зайти в игру | 1 000 золота |
| Охотник | убить 40 мобов на охоте | 2 000 золота |
| Дуэлянт | провести 3 боя на арене | 2 500 золота |
| Ремесленник | выполнить 1 работу по профессии | 2 обычных ресурса профессии (нет профессии — 1 500 золота) |
| Улучшение | вставить камень, руну или наложить чару | свиток заточки снаряжения |
Бонус за полный день: забрал все пять — сверху 1 🔑 Ключ Подземелья. Это доплата за дисциплину, а не отдельное задание.
Еженедельные — 15
Сброс — понедельник 00:00 UTC, поэтому недельные не требуют заходить каждый день: их реально закрыть за три-четыре вечера.
| Название | Цель | Дополнительно к 1 Эйрону |
|---|---|---|
| Большая охота | 500 мобов на охоте | 15 000 золота |
| Неутомимый | начать 8 вылазок | 10 000 золота |
| Гладиатор | 20 боёв на арене | 20 000 золота |
| Победитель арены | 10 побед на арене | 25 000 золота |
| Проходчик | пройти 3 подземелья | 30 000 золота + ключ |
| Рейдер | пройти 2 рейда | 40 000 золота |
| Гроза боссов | убить 5 боссов | 35 000 золота + ключ |
| Мастерская неделя | 15 работ по профессии | 3 редких ресурса профессии |
| Заточник | 10 успешных заточек | 2 свитка снаряжения + 1 свиток оружия |
| Гранильщик | вставить 5 камней или рун | 2 редких ресурса профессии |
| Торговец | продать 3 лота на аукционе | 25 000 золота |
| Покупатель | купить 2 лота на аукционе | 15 000 золота |
| Золотая неделя | заработать 300 000 золота | 50 000 золота |
| Сундучник | открыть 3 сундука | 30 000 золота |
| Дисциплина | забрать 5 ежедневных наград | 20 000 золота + ключ |
Разовые — 105 и 19 цепочек
Разовые показываются цепочками: каждая начинается с «первого раза» и растёт
(обычно в 2–5 раз за шаг). Пройденное свёрнуто в строку («Путь героя · 4 из 6»),
активный шаг раскрыт, следующие видны серым — игрок всегда видит, что впереди.
Забранное уходит в done навсегда.
С подземельями и ареной 3×3 добавились пять разовых и одна цепочка: ступени (героическая и мифическая) в «Проходчика» и «Тройка» для арены 3×3.
| Цепочка | Шагов | О чём | Финал |
|---|---|---|---|
| Путь героя | 6 | уровни 10 → 60 | фон «Фон героя» |
| Лестница Славы | 9 | ранги после 60: Скиталец → Воплощение Эйрона | рамка «Рамка Предвечного» |
| Охотник | 5 | 100 → 50 000 убийств | рамка «Рамка охотника» |
| Неутомимый | 4 | 10 → 2 000 вылазок | — |
| Гроза боссов | 5 | 1 → 500 боссов | — |
| Проходчик | 4 | 1 → 100 подземелий | — |
| Рейдер | 4 | 1 → 150 рейдов | аватар «Аватар легенды» |
| Арена | 7 | бои, победы и рейтинг 1 500 → 2 500 | — |
| Профессия | 10 | профессия, рецепты, ранги линий, работы | рамка «Рамка мастера» |
| Заточка | 8 | +1 → +16 и 25/100 удач | — |
| Камни, руны и чары | 10 | камни, руна D, чары, мастерская чара | — |
| Кузня: гнёзда | 3 | 1 → 3 гнезда в предмете | — |
| Сундуки | 3 | 1 → 50 сундуков | — |
| Аукцион | 6 | лоты, продажи, покупки, оборот 500 000 | — |
| Богатство | 3 | 100 000 → 10 000 000 золота на руках | — |
| Клан | 9 | клан, CP, клановые охоты | рамка «Рамка чемпиона» |
| Сторона | 1 | выбрать сторону | — |
| Снаряжение | 3 | 4 части сета, все слоты, надетый +16 | — |
Шкала награды (к 1 Эйрону в каждом задании):
| Вес | Золото | Ключи | Ресурсы профессии | Свитки заточки |
|---|---|---|---|---|
| 1 | 5 000 | — | 1 обычный | — |
| 2 | 15 000 | 1 | 2 обычных | — |
| 3 | 40 000 | 1 | 1 редкий + 1 обычный | 1 × снаряжение |
| 4 | 100 000 | 2 | 2 редких | 1 × снаряжение + 1 × оружие |
| 5 | 250 000 | 3 | 1 эпический + 1 редкий | 2 × снаряжение + 1 × оружие |
Без профессии ресурсы заменяются золотом по курсу: обычный 1 000, редкий 5 000, эпический 20 000. Шесть косметик за финалы цепочек нельзя купить — в магазине косметики они не появляются, их выдают только заданиями, и VIP для использования не нужен.
Счётчики и сбросы
Один помощник bump(p, metric, amount) растит счётчик сразу в трёх слоях:
p.stats // за всю игру — для разовых заданий
p.quests.daily // сбрасывается в 00:00 UTC
p.quests.weekly // сбрасывается в понедельник 00:00 UTC
Часть целей — не счётчики, а состояние (уровень, ранг, рейтинг арены, золото на руках, части сета, занятые слоты, максимальный +N, рецепты и ранги линий, CP). Оно считается в момент получения награды: например «1 000 000 золота» засчитывается, а дальше золото можно тратить.
Сбросы проверяются при любом обращении к заданиям и при входе в игру — без
таймеров и фоновых задач. Профиль хранит quests: { day, week, daily, weekly, claimed, done } и stats; три старых счётчика (kills, arena, raids)
переносятся в stats при первой загрузке, поэтому прогресс живых игроков не
сгорает. Дневные и недельные id уходят из claimed при сбросе, разовые лежат в
done и не сбрасываются никогда.
Что в коде
| Файл | Что там |
|---|---|
game/server/src/game/quests.ts |
5 + 15 + 100 заданий, bump, questProgress, claimQuest, claimAll, normalizeQuests, сбросы, вью для клиента |
game/server/src/game/player.ts |
поля quests и stats, сериализация и перенос старых счётчиков |
game/server/src/index.ts |
bump в точках событий, сокеты quests:get, quest:claim, quest:claimAll, questsReady в профиле |
game/server/src/game/data.ts |
свитки заточки снаряжения и оружия, шесть косметик с rewardOnly |
game/client/src/components/QuestsModal.tsx, QuestsPanel.tsx |
три вкладки, цепочки, «Забрать всё» |
game/server/test/quests.js |
сбросы, «1 Эйрон» по всем 120 заданиям, награды, косметика, счётчики, перенос, «Забрать всё» |
Эйронов в неделю выходит около 50 (5 ежедневных × 7 + 15 недельных): этого хватает на автобой на неделю и ещё остаётся на воскрешения, но на автобой на 30 дней (500) или на десяток респеков — нет. Это осознанный размен: Эйроны перестают быть только донат-валютой и становятся наградой за активность.