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

Пользовательская таблица лута

Общий формат задаёт пользовательские и ванильные предметы, валюту и команды для боссов, сундуков с сокровищами, квестов и арен. У каждой записи свой независимый бросок вероятности; таблица не выбирает только одну выигравшую запись.

Об автоматическом покрытии экипировки классов и сложностей см. автоматическую классовую добычу. Её отдельный базовый бросок может работать вместе с uniqueLootList. Сохраняйте здесь авторские реликвии, предметы со скриптами и другие особые награды. Записи с предметами itemType: CLASS_LOOT служат кандидатами классового выбора и пропускаются обычными бросками при смерти босса. Остальные записи сохраняют независимые броски.

Обратите внимание, что это новейший формат и тот, который рекомендуется использовать, но существуют некоторые альтернативные более старые форматы.

Примечание: поддержка устаревшего формата всё ещё доступна с использованием синтаксиса, разделённого двоеточиями: filename.yml:chance:permission. Однако для новых конфигураций рекомендуется современный формат, показанный ниже.

В этом устаревшем синтаксисе шанс и право необязательны, поэтому голый filename.yml роняет предмет со 100% вероятностью. Устаревшая запись, в которой больше трёх частей, разделённых двоеточиями, отклоняется.

Каждая запись проверяется при загрузке её файла. Неизвестный или повторяющийся ключ, ключ без значения, chance, не являющийся конечным числом, amount, currencyAmount, wave или itemLevel, не являющиеся целыми числами, или недопустимый материал отклоняют запись с предупреждением Failed to parse entry ... due to invalid: <reason>, а остальная таблица всё равно загружается. Ключи не чувствительны к регистру.

Используйте ключ соответствующей функции: uniqueLootList для боссов, lootList для сундуков, customRewards для квестов или rawArenaReward для арен. Квестовый customRewards принимает строки: используйте запись filename=...:chance=... с двоеточиями, а не YAML-карты.

Выдача по источнику добычи

Все четыре типа работают в добыче кастомного босса (uniqueLootList). Для обычных авторских записей выдача следует настройке putLootDirectlyIntoPlayerInventory:

Тип записиputLootDirectlyIntoPlayerInventory: false (по умолчанию)putLootDirectlyIntoPlayerInventory: true
Элитный предмет (filename)Личная добыча на земле или общее голосование за экипировкуЛичный инвентарь или общее голосование за экипировку
Ванильный предмет (material)На землюВ инвентарь; излишек выпадает рядом с игроком
Элитные монеты (currencyAmount)Дождь монет для сбораПрямое начисление валюты
Команда (command=)Выполняется консольюВыполняется консолью

Награды босса разыгрываются отдельно для каждого записанного участника, наносившего урон, кроме игроков с блокировкой наград этого инстансного босса. Этот путь авторской добычи не требует дополнительного порога в 10% урона. Близкие члены группы, получившие общий зачёт без нанесения урона, получают по этому пути только элитные предметы, не относящиеся к экипировке, а не ванильные предметы, валюту или команды. Срабатывание защиты от эксплойтов подавляет эту добычу при смерти.

Боссы, заспавненные в инстансе другого плагина через API инстансовых боссов EliteMobs, игнорируют putLootDirectlyIntoPlayerInventory и никогда не запускают голосование группы. Их добыча всегда выпадает на землю у босса, как в столбце false, а элитные предметы становятся личной добычей, поэтому всё остаётся в мире этого инстанса.

Сундуки используют тот же выбор земли/инвентаря; квесты и арены выдают награды напрямую. Все четыре источника поддерживают перечисленные типы; квесты принимают только строковые записи. Командная добыча босса выполняется за каждый успешный бросок участника. Отдельный синтаксис команд смерти босса описан в onDeathCommands.

Выпадение elite-предметов:​

КлючОписаниеЗначенияПо умолчанию
filenameЗадаёт имя файла используемого пользовательского предмета.Filenamenone
Пример
uniqueLootList:
- filename: magmaguys_toothpick.yml

Это заставит моба выбросить 1 предмет MagmaGuy's Toothpick со 100% шансом выпадения.

Общие настройки:​

КлючОписаниеЗначенияПо умолчанию
chanceОдин независимый бросок записи; 1.0 означает 100%. Используйте значения от 0.0 до 1.0.Double1.0
amountЧисло копий предмета или выполнений команды после успешного броска. Не умножает валюту; сумму задаёт currencyAmount.Integer1
permissionЗадаёт право (permission node), необходимое игрокам для получения этого лута. Поддерживается записями elite-предметов, валюты и команд. Записи ванильных предметов его никогда не читают, ни в одном из форматов.Stringnone

При amount <= 0 или chance <= 0 бросок не выполняется; нечисловой или неконечный chance отклоняет запись при загрузке файла. chance выше 1.0 всегда проходит; это не процентное число вроде 50. После успеха выдача не делает повторных бросков для каждой копии. Предпросмотр квеста делает собственные броски и не резервирует итоговые награды.

Пример
uniqueLootList:
- filename: magmaguys_toothpick.yml
chance: 0.5
amount: 10
permission: elitemobs.loot.rare

Это заставит моба выбросить 10 предметов MagmaGuy's Toothpick с 50% шансом выпадения, но только для игроков с правом elitemobs.loot.rare.

Выпадение elite-монет:​

КлючОписаниеЗначенияПо умолчанию
currencyAmountЗадаёт количество монет, которое выпадет.Integernone

currencyAmount должен быть целым числом, а для выдачи валюты — ещё и положительным. Положительный amount не умножает сумму, но amount <= 0 отключает запись. Нулевой или отрицательный currencyAmount загружается в любом формате, но ничего не выдаёт.

Прямые денежные награды проходят через обработчик экономики и сначала гасят игорный долг. Выдача на землю создаёт дождь собираемых монет и может получить бонус Harvester; прямая выдача валютной записи этот бонус не применяет. Монеты дождя зачисляются при сборе, а не в момент успешного броска.

Пример
uniqueLootList:
- currencyAmount: 344
chance: 0.5

Каждый подходящий участник боя с боссом получает шанс 50% на базовую награду в 344 Elite-монеты. Для той же записи в сундуке с сокровищами используйте lootList.

Выпадение ванильных предметов:​

КлючОписаниеЗначенияПо умолчанию
materialМатериал предмета. Названия материалов не чувствительны к регистру в обоих форматах. type принимается как псевдоним; если заданы и material, и type, запись отклоняется.Materialnone
Пример
uniqueLootList:
- material: APPLE
chance: 0.3
amount: 5

Это заставит моба выбросить 5 яблок с 30% шансом выпадения.

И выдача на землю, и выдача в инвентарь используют один бросок записи. Здесь успех выдаёт все 5 яблок. Прямая выдача поддерживает боссов, сундуки, квесты и арены, а не поместившийся в инвентарь остаток выпадает у игрока. Материалы AIR и неположительные количества ничего не выдают. Ванильные записи не проверяют permission.

Выполнение команд при выпадении лута:​

Вы можете выполнять консольные команды при выпадении лута. Это полезно для интеграции с другими плагинами или предоставления пользовательских наград. Записи команд принимают строковый формат, разделённый двоеточиями, а также YAML-карты (кроме квестового customRewards).

КлючОписаниеЗначенияПо умолчанию
commandЗадаёт консольную команду для выполнения. Используйте %player% как плейсхолдер для имени игрока.Stringnone

В строковом формате команда не должна содержать :, потому что запись разбивается по этому символу. Знак = внутри команды допустим. Если команде нужно двоеточие, используйте YAML-карту.

Вероятность и повторение команд

Командные записи проверяют chance один раз, как и остальные. После успешного броска команда выполняется amount раз. Второго или инвертированного броска нет:

  • chance=1.0 (по умолчанию) всегда проходит.
  • chance=0.5 проходит в 50% случаев.
  • amount=3 выполняет команду три раза при успехе этого единственного броска.

Игрок должен иметь permission, а команда не должна быть пустой. Собственные требования команды продолжают действовать. Она запускается от консоли; укажите получателя награды через %player%.

Пример
customRewards:
- command=give %player% diamond 1:chance=0.5:amount=1:permission=elitemobs.loot.command

Эта награда квеста выполняет give <player> diamond 1 из консоли при сдаче в 50% случаев. %player% заменяется именем игрока, которому требуется elitemobs.loot.command. Та же строка работает в uniqueLootList босса с отдельным броском для каждого подходящего участника.

Награды арен:​

При создании таблиц лута арен, пожалуйста, убедитесь, что вы начинаете свою таблицу лута с rawArenaReward: вместо uniqueLootList:.

КлючОписаниеЗначенияПо умолчанию
waveЗавершённая волна арены, выдающая эту запись. Все типы записей принимают его в любом формате.Integer-1
itemLevelЗадаёт уровень выпадающего лута. Используется только аренами и имеет смысл только для записей elite-предметов (filename). Принимается в любом формате.Integer1
У обоих есть подвохи
  • Как награды за волну регистрируются только записи с wave равным 1 или выше. Запись награды арены без wave разбирается и принимается, но её никогда не выдаст ни одна волна.
  • itemLevel по умолчанию равен 1, а не уровню арены или игрока. Поэтому элитный предмет со scalable, выдаваемый ареной без явного itemLevel, выпадает как предмет 1 уровня.
Пример
rawArenaReward:
- material: BREAD
wave: 1
amount: 10
chance: 0.5
- filename=magmaguys_toothpick.yml:wave=1:itemLevel=2

После волны 1 запись хлеба делает один бросок с шансом 50%. При успехе игрок получает 10 единиц хлеба, а излишек падает на землю. Пользовательская запись имеет шанс 100% и запрашивает один MagmaGuy's Toothpick уровня 2; правила масштабирования самого предмета по-прежнему определяют созданный уровень. Арена проверяет право игрока на награду и разницу уровней до выдачи этих записей.

Две записи используют разные форматы только для того, чтобы показать оба; wave и itemLevel работают в любом формате.

Инстансные подземелья:​

КлючОписаниеЗначенияПо умолчанию
difficultyIDФильтрует элитный предмет по текущей сложности подземелья получателя; YAML-карты также принимают список ID.Строка, число или списокnone

difficultyID читается для элитных предметов (filename) как в YAML-картах, так и в строках с двоеточиями. Карты принимают списки, например difficultyID: [normal, hard]. Ванильные предметы, валюта и команды отклоняют его как неизвестный ключ. ID и названия следуют правилам определения сложности: 0/1/2, Normal/Hard/Mythic либо соглашению пакета Easy/Medium/Hard. Неизвестные ID сохраняют точное сопоставление. Пустой список или пустой ID отклоняет запись при загрузке файла.

Фильтр проверяется для элитных наград боссов, сундуков, квестов и арен. Он ограничивает только игрока, который сейчас находится в инстансе подземелья; вне него игнорируется. Босс, заспавненный в инстансе другого плагина через API инстансовых боссов, фильтруется по сложности, которую ему назначил этот плагин. Обычная арена не является инстансом подземелья. Награды сундуков, квестов и арен остаются личными, без общего голосования за экипировку.

При выдаче от босса запись ведёт себя так:

  • Сложность совпадает с difficultyID: экипировка попадает в общую групповую таблицу лута босса. Остальные награды выдаются лично. Подходящие участники боя могут претендовать на общее снаряжение; игроки с блокировкой этого босса исключаются до голосования.
  • Сложность подземелья не совпадает: запись пропускается.
  • Игрок не в инстансе подземелья: difficultyID игнорируется. Экипировка использует групповой розыгрыш «Нужно / Не откажусь», если рядом хотя бы два подходящих члена группы; иначе выдаётся лично. Остальные награды остаются личными.

Без фильтра difficultyID экипировка всё ещё может попасть в групповую добычу, но отдельная ветка общей таблицы подземелья, включаемая этим полем, не выполняется. Кандидаты классовой добычи используют описанные выше собственные правила выбора и сложности.

Пример
uniqueLootList:
- filename: magmaguys_toothpick.yml
chance: 0.5
difficultyID: 1

Это заставит моба выбросить 1 предмет MagmaGuy's Toothpick с 50% шансом выпадения, если игроки победили босса на сложности 1.