Пользовательская таблица лута
Общий формат задаёт пользовательские и ванильные предметы, валюту и команды для боссов, сундуков с сокровищами, квестов и арен. У каждой записи свой независимый бросок вероятности; таблица не выбирает только одну выигравшую запись.
Об автоматическом покрытии экипировки классов и сложностей см. автоматическую классовую добычу. Её отдельный базовый бросок может работать вместе с 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 | Задаёт имя файла используемого пользовательского предмета. | Filename | none |
Пример
uniqueLootList:
- filename: magmaguys_toothpick.yml
Это заставит моба выбросить 1 предмет MagmaGuy's Toothpick со 100% шансом выпадения.
Общие настройки:
| Ключ | Описание | Значения | По умолчанию |
|---|---|---|---|
chance | Один независимый бросок записи; 1.0 означает 100%. Используйте значения от 0.0 до 1.0. | Double | 1.0 |
amount | Число копий предмета или выполнений команды после успешного броска. Не умножает валюту; сумму задаёт currencyAmount. | Integer | 1 |
permission | Задаёт право (permission node), необходимое игрокам для получения этого лута. Поддерживается записями elite-предметов, валюты и команд. Записи ванильных предметов его никогда не читают, ни в одном из форматов. | String | none |
При 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 | Задаёт количество монет, которое выпадет. | Integer | none |
currencyAmount должен быть целым числом, а для выдачи валюты — ещё и положительным. Положительный amount не умножает сумму, но amount <= 0 отключает запись. Нулевой или отрицательный currencyAmount загружается в любом формате, но ничего не выдаёт.
Прямые денежные награды проходят через обработчик экономики и сначала гасят игорный долг. Выдача на землю создаёт дождь собираемых монет и может получить бонус Harvester; прямая выдача валютной записи этот бонус не применяет. Монеты дождя зачисляются при сборе, а не в момент успешного броска.
Пример
uniqueLootList:
- currencyAmount: 344
chance: 0.5
Каждый подходящий участник боя с боссом получает шанс 50% на базовую награду в 344 Elite-монеты. Для той же записи в сундуке с сокровищами используйте lootList.
Выпадение ванильных предметов:
| Ключ | Описание | Значения | По умолчанию |
|---|---|---|---|
material | Материал предмета. Названия материалов не чувствительны к регистру в обоих форматах. type принимается как псевдоним; если заданы и material, и type, запись отклоняется. | Material | none |
Пример
uniqueLootList:
- material: APPLE
chance: 0.3
amount: 5
Это заставит моба выбросить 5 яблок с 30% шансом выпадения.
И выдача на землю, и выдача в инвентарь используют один бросок записи. Здесь успех выдаёт все 5 яблок. Прямая выдача поддерживает боссов, сундуки, квесты и арены, а не поместившийся в инвентарь остаток выпадает у игрока. Материалы AIR и неположительные количества ничего не выдают. Ванильные записи не проверяют permission.
Выполнение команд при выпадении лута:
Вы можете выполнять консольные команды при выпадении лута. Это полезно для интеграции с другими плагинами или предоставления пользовательских наград. Записи команд принимают строковый формат, разделённый двоеточиями, а также YAML-карты (кроме квестового customRewards).
| Ключ | Описание | Значения | По умолчанию |
|---|---|---|---|
command | Задаёт консольную команду для выполнения. Используйте %player% как плейсхолдер для имени игрока. | String | none |
В строковом формате команда не должна содержать :, потому что запись разбивается по этому символу. Знак = внутри команды допустим. Если команде нужно двоеточие, используйте 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). Принимается в любом формате. | Integer | 1 |
- Как награды за волну регистрируются только записи с
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.