Мета-прогрессия MegaBlock Survivors
В MegaBlock Survivors Soul Echoes позволяют сохранять прогресс между забегами. Их собирают во время матчей и тратят в Soul Echo Shrine, чтобы навсегда улучшить стартовые условия следующих забегов.
Данные хранятся в plugins/MegaBlockSurvivors/meta_progression.yml по UUID игрока. Сохранение синхронное и атомарно заменяет файл. Если сохранение покупки завершается ошибкой, списание валюты и улучшение отменяются. Полученные Soul Echoes остаются в памяти после ошибки записи, но могут потеряться при перезапуске, пока последующее сохранение не завершится успешно. Ошибка загрузки сохраняет прежнее состояние в памяти и блокирует запись и покупки до успешной перезагрузки данных. Проверяйте журнал сервера на ошибки сохранения и загрузки.
Как заработать Soul Echoes
Soul Echoes выпадают во время матча как LAPIS_LAZULI с названием Soul Echo. Они накапливаются в инвентаре и зачисляются на постоянный баланс при завершении матча. Подсчёт проверяет только материал, поэтому расходует и засчитывает весь лазурит в инвентаре, включая обычный лазурит, принесённый извне. Используйте отдельный инвентарь для мини-игры.
| Источник | Количество |
|---|---|
| Любое обычное (не боссовое) убийство моба | 1, с броском 1% за убийство |
| Скорпион у портала — Normal | 10-15, гарантированно |
| Скорпион у портала — Elite | 15-24, гарантированно |
| Скорпион у портала — Nightmare | 25-35, гарантированно |
| Финальный босс (режим Challenge) | round(100 * 1.5^tributes) — 100 без трофеев, 150 / 225 / ~338 при 1 / 2 / 3 Boss Tribute |
| POI Soul Shard Cache | 50, зачисляется немедленно в постоянный баланс (минуя перенос по окончании матча) |
У мобов армии призраков награды отключены, и они ничего не дропают.
Открытие святилища
/mbs meta
Открывает диалог Soul Echo Shrine. Диалог показывает:
- Текущий баланс Soul Echo.
- По каждому треку улучшений: текущий уровень, потолок, текущую эффективную характеристику, предпросмотр следующего уровня и стоимость следующего уровня.
- Кнопку покупки по каждому треку (или индикатор
MAXED).
/mbs meta upgrade <track>
Покупает один уровень на указанном треке и заново открывает диалог, чтобы можно было покупать несколько апгрейдов подряд.
Покупки разрешены и во время матча. Лимиты слотов оружия и пассивных предметов читают текущую запись прогресса и могут измениться в этом же забеге. Стартовые HP, удача, скорость, жизни, жетоны Ban и Reroll копируются при инициализации игрока. Покупка этих улучшений не пополняет их и не меняет их стартовые значения в уже начатом забеге.
Треки улучшений
| Трек | Ключ команды | Потолок | Эффект |
|---|---|---|---|
| Starting HP | hp | 4 | Ур. 0 = 10 HP (базовая линия), +2 HP за уровень. Макс.: 18 HP. |
| Starting Luck | luck | 4 | Ур. 0 = 0 удачи, +2 удачи за уровень. Макс.: 8. |
| Starting Speed | speed | 4 | Множитель скорости ходьбы на BASE_WALK_SPEED. Ур. 0 = 1.00×, +0.05 за уровень. Макс.: 1.20×. |
| Weapon Slots | weaponslots | 1 | Ур. 0 = 1 слот, Ур. 1 = 2 слота. |
| Passive Slots | passiveslots | 3 | Ур. 0 = 2 слота, +1 за уровень. Макс.: 5 слотов. |
| Extra Lives | extralives | 2 | Отложенные Second Wind-реанимации. Ур. 1 = 1 жизнь, Ур. 2 = 2 жизни. |
| Ban Tokens | bantokens | 3 | Жетоны на забег, исключающие тип снаряжения из следующих розыгрышей, с оговоркой о резервном выборе при исчерпанном пуле ниже. |
| Reroll Tokens | rerolltokens | 3 | Жетоны на забег, которые перебрасывают текущую тройку наград. |
Кривая стоимости
Большинство треков используют стандартную геометрическую кривую:
cost(targetLevel) = round(10 * 2.5^(targetLevel - 1))
| Целевой уровень | Стоимость (Soul Echoes) |
|---|---|
| 1 | 10 |
| 2 | 25 |
| 3 | 63 |
| 4 | 156 |
Extra Lives настроен вручную и использует фиксированный график: 100 за первую жизнь, 200 — за вторую.
Механика Ban / Reroll
Треки Ban и Reroll выдают жетоны на забег, которые игрок может тратить на любом экране наград — повышения уровня, сундука или песочных часов. Экран запоминает собственный тип пула, прежде чем предложить кнопки, поэтому реролл на экране сундука перебрасывает пассивки, а реролл на экране песочных часов — полный пул.
- Ban расходует один жетон и добавляет выбранный тип снаряжения в список запрещённых на этот забег. Он исключается из следующих розыгрышей и первого резервного выбора. Если запрещены все типы резервного пула, последний запасной вариант возвращает пул без фильтра. Поэтому при исчерпанных вариантах запрещённый тип может появиться снова. Это помогает убрать пассивный предмет, который вы не хотите улучшать, и получать другие предложения.
- Reroll — расходует один жетон реролла и заново разыгрывает текущую тройку наград из пула (после применения банов). Никаких перманентных изменений пула не происходит.
Оставшиеся счётчики отображаются в строке заголовка экрана наград (Pick your reward! | X bans X rerolls). Ban — это кнопка на каждый слот, то есть один элемент управления "Ban <name>" под каждым из трёх вариантов, тогда как Reroll — одна кнопка на весь экран. Каждый элемент полностью скрывается, как только счётчик его жетонов достигает нуля, а при полном отсутствии жетонов заголовок возвращается к простому «Pick your reward!».
Балансы жетонов сбрасываются к значениям, определяемым треком мета-прогрессии, в начале каждого матча — они не переносятся.
Формат хранения
Схема meta_progression.yml:
players:
<player-uuid>:
soulEchoes: 0
tracks:
startingHp: 0
startingLuck: 0
startingSpeed: 0
weaponSlots: 0
passiveSlots: 0
extraLives: 0
banTokens: 0
rerollTokens: 0
Кэш конкурентный и сбрасывается на диск каждый раз, когда выполняется MetaProgressionManager.save() (при покупке, при сбросе echo по окончании матча, при подборе Soul Shard Cache и при отключении плагина).
Сброс прогресса
Внутриигровой команды для обнуления мета-прогрессии нет. Чтобы сбросить для игрока (или для всех), остановите сервер и отредактируйте / удалите соответствующий раздел в meta_progression.yml.