Перейти к основному содержимому

Мета-прогрессия MegaBlock Survivors

В MegaBlock Survivors есть слой прогрессии между забегами под названием Soul Echoes. Soul Echoes собираются во время матчей и тратятся в Soul Echo Shrine на перманентное улучшение стартового снаряжения игрока для всех будущих забегов.

Постоянное состояние хранится в plugins/MegaBlockSurvivors/meta_progression.yml, с ключом по UUID игрока. Сохранения синхронные, поэтому состояние на диске всегда отражает последнее изменение к моменту возврата вызова.

Как заработать Soul Echoes

Soul Echoes выпадают во время матча в виде предмета-носителя LAPIS_LAZULI с подписью Soul Echo. За забег они накапливаются в инвентаре игрока и переносятся в постоянный баланс при разборе матча.

ИсточникКоличество
Любое обычное (не боссовое) убийство моба1, с броском 1% за убийство
Скорпион у портала — Normal10-15, гарантированно
Скорпион у портала — Elite15-24, гарантированно
Скорпион у портала — Nightmare25-35, гарантированно
Финальный босс (режим Challenge)round(100 * 1.5^tributes) — 100 без трофеев, 150 / 225 / ~338 при 1 / 2 / 3 Boss Tribute
POI Soul Shard Cache50, зачисляется немедленно в постоянный баланс (минуя перенос по окончании матча)

У мобов армии призраков награды отключены, и они ничего не дропают.

Открытие святилища

/mbs meta

Открывает диалог Soul Echo Shrine. Диалог показывает:

  • Текущий баланс Soul Echo.
  • По каждому треку улучшений: текущий уровень, потолок, текущую эффективную характеристику, предпросмотр следующего уровня и стоимость следующего уровня.
  • Кнопку покупки по каждому треку (или индикатор MAXED).
/mbs meta upgrade <track>

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

Треки улучшений

ТрекКлюч командыПотолокЭффект
Starting HPhp4Ур. 0 = 10 HP (базовая линия), +2 HP за уровень. Макс.: 18 HP.
Starting Luckluck4Ур. 0 = 0 удачи, +2 удачи за уровень. Макс.: 8.
Starting Speedspeed4Множитель скорости ходьбы на BASE_WALK_SPEED. Ур. 0 = 1.00×, +0.05 за уровень. Макс.: 1.20×.
Weapon Slotsweaponslots1Ур. 0 = 1 слот, Ур. 1 = 2 слота.
Passive Slotspassiveslots3Ур. 0 = 2 слота, +1 за уровень. Макс.: 5 слотов.
Extra Livesextralives2Отложенные Second Wind-реанимации. Ур. 1 = 1 жизнь, Ур. 2 = 2 жизни.
Ban Tokensbantokens3Жетоны на забег, которые перманентно удаляют опцию награды из пула на оставшуюся часть забега.
Reroll Tokensrerolltokens3Жетоны на забег, которые перебрасывают текущую тройку наград.

Кривая стоимости

Большинство треков используют стандартную геометрическую кривую:

cost(targetLevel) = round(10 * 2.5^(targetLevel - 1))

Целевой уровеньСтоимость (Soul Echoes)
110
225
363
4156

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 по окончании матча и при отключении плагина).

Сброс прогресса

Внутриигровой команды для обнуления мета-прогрессии нет. Чтобы сбросить для игрока (или для всех), остановите сервер и отредактируйте / удалите соответствующий раздел в meta_progression.yml.