Мета-прогрессия MegaBlock Survivors
В MegaBlock Survivors есть слой прогрессии между забегами под названием Soul Echoes. Soul Echoes собираются во время матчей и тратятся в Soul Echo Shrine на перманентное улучшение стартового снаряжения игрока для всех будущих забегов.
Постоянное состояние хранится в plugins/MegaBlockSurvivors/meta_progression.yml, с ключом по UUID игрока. Сохранения синхронные, поэтому состояние на диске всегда отражает последнее изменение к моменту возврата вызова.
Как заработать Soul Echoes
Основной внутриматчевый источник — награда POI Soul Shard Cache. Каждый тайник добавляет Soul Echoes напрямую к балансу мета-прогрессии игрока и выводит подтверждение в чат. Любой невыгруженный внутри-забеговый баланс также добавляется при разборе матча.
Открытие святилища
/mbs meta
Открывает диалог Soul Echo Shrine. Диалог показывает:
- Текущий баланс Soul Echo.
- По каждому треку улучшений: текущий уровень, потолок, текущую эффективную характеристику, предпросмотр следующего уровня и стоимость следующего уровня.
- Кнопку покупки по каждому треку (или индикатор
MAXED).
/mbs meta upgrade <track>
Покупает один уровень на указанном треке и заново открывает диалог, чтобы можно было покупать несколько апгрейдов подряд.
Треки улучшений
| Трек | Ключ команды | Потолок | Эффект |
|---|---|---|---|
| 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 — расходует один жетон реролла и заново розыгрывает текущую тройку наград из пула (после применения банов). Никаких перманентных изменений пула не происходит.
Обе кнопки появляются в строке заголовка экрана наград рядом с оставшимися счётчиками жетонов (X bans X rerolls). Если ни один из треков не разблокирован, вместо этого показывается более простой заголовок «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.