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

Система навыков

EliteMobs использует систему прогрессии на основе навыков, в которой игроки повышают уровень, сражаясь с элитными мобами. Вместо единого глобального уровня игроки развивают отдельные навыки оружия и навык брони, которые вместе определяют их общую силу.

Всего существует 11 типов навыков:

НавыкОружиеПримечания
МечиЛюбой _SWORD
ТопорыЛюбой _AXE
ЛукиBOW
АрбалетыCROSSBOW
ТрезубцыTRIDENT
Мотыги (Косы)Любой _HOE
БулавыMACEТребуется Minecraft 1.21+
КопьяЛюбой _SPEARТребуется Minecraft 1.21.11+ (с ресурс-паком)
ПосохиКорректное оружие STAFF, определённое в FMMТребуется совместимый FreeMinecraftModels
ЖезлыКорректное оружие WAND, определённое в FMMТребуется совместимый FreeMinecraftModels
БроняШлемы, нагрудники, поножи, ботинкиПрокачивается пассивно

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

Как повышаются навыки​

Когда вы убиваете элитного моба, вы получаете опыт на основе уровня моба. Опыт распределяется следующим образом:

  • Опыт оружия распределяется по вкладу в урон между навыками, записанными при ударе или запуске снаряда. Смена оружия в момент смерти моба не перенаправляет опыт.
  • Опыт брони начисляется автоматически с множителем 1/3 от вашей доли опыта. При использовании разных типов оружия броня может обогнать отдельный оружейный навык.
  • Групповые бои: Когда несколько игроков наносят урон одной элите, опыт делится пропорционально вкладу каждого игрока в урон. Если вы нанесли 60% урона, вы получаете 60% базового опыта.

Базовый опыт с мобов​

Базовый опыт, получаемый за убийство моба:

mob_xp = mob_level ^ 2
Уровень мобаПолучено опыта
11
10100
25625
502,500
10010,000

Множитель опыта за боссов​

Более сильные мобы стоят дороже. Базовый опыт выше умножается на коэффициент, выводимый из healthMultiplier и damageMultiplier моба:

bossXPMultiplier = healthMultiplier^0.6 * (1 + (damageMultiplier - 1) * 0.15)

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

healthMultiplierdamageMultiplierМножитель опыта
1.01.01.00x
3.0 (минибосс)1.21.99x
7.0 (босс)1.43.41x
40.0 (мировой босс)1.59.83x

Полный порядок операций при убийстве: эффективный уровень моба (после антиэксплойт-ограничений ниже) → базовый опыт → множитель босса → деление по вкладу в урон → опыт оружия и опыт брони.

Защита от эксплойтов​

Все три настраиваются в AntiExploit.yml и полностью пропускаются, когда enableFarmingProtection равен false. Полную таблицу конфигурации см. в разделе Защита от фарма.

  • Низкоуровневые мобы (по навыкам): Каждый навык оружия или брони получает опыт, только если моб ниже уровня этого конкретного навыка не более чем на farmingProtectionLevelDifference уровней (по умолчанию 15). Проверка использует уровень отдельного навыка, а не боевой уровень, и полностью пропускается при масштабируемом бое, где моб нормализуется под игрока и понятие слишком низкого уровня не имеет смысла.
  • Высокоуровневые мобы: Опыт навыков использует эффективный уровень награды не выше combat_level + farmingProtectionLevelDifference (по умолчанию 15). Такое же ограничение применяется к луту естественных элитных мобов; лут кастомных боссов не использует этот предел уровня защиты от фарма. Остальные условия получения опыта продолжают действовать.
  • Лимит фарма естественных элит: Убийства естественных элит, не являющихся кастомными боссами, учитываются в скользящем окне длительностью farmingProtectionMinutes (по умолчанию 30). Превышение farmingProtectionKills убийств (по умолчанию 20) в этом окне блокирует награды за естественных элит на одно полное окно. О начале и окончании блокировки сообщается в чате. Кастомные боссы не подпадают под это ограничение.

Бонусы опыта по правам доступа​

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

elitemobs.perks.xp.<perk>.<skill>

Используйте английские названия навыков в нижнем регистре (swords, armor, wands и т. д.) либо all для всех навыков.

БонусМножитель
10percentboost1.10
25percentboost1.25
50percentboost1.50
double2.00
150percentboost2.50
triple3.00
quadruple4.00
customboostcustomXpPerkMultiplier в skills.yml, по умолчанию 1.0

Обычные бонусы не складываются: применяется наибольший подходящий множитель. customboost заменяет этот выбор, даже если заданный множитель равен 1.0 или меньше. Явные запреты прав для отдельных навыков учитываются. Пользовательский множитель должен быть конечным и неотрицательным; некорректные значения заменяются на 1.0.

Перед публичным событием опыта навыка результат округляется вниз до целого числа. Например, elitemobs.perks.xp.double.swords удваивает допустимый опыт мечей, но не удваивает опыт брони.

Прогрессия опыта​

Опыт, необходимый для перехода с текущего уровня на следующий, рассчитывается по формуле:

Уровни 1–100:

xp_to_next_level = 8.5 * current_level ^ 3

Уровни выше 100 (мягкий потолок):

xp_to_next_level = 8.5 * current_level ^ 3 * (1 + ((current_level - 100) ^ 2 / 100))

Множитель мягкого потолка равен 1.0 на 100 уровне (без дополнительного штрафа) и растёт квадратично. К 150 уровню множитель достигает 26x, делая дальнейший прогресс крайне трудным.

Таблица опыта на уровень​

В таблице ниже показан опыт, необходимый для перехода с данного уровня на следующий, и примерно сколько убийств мобов того же уровня для этого требуется (навык оружия, не брони):

УровеньОпыт до следующего уровняУбийств мобов того же уровня
108,50085
25132,812213
501,062,500425
753,585,937638
1008,500,000850
Броня прокачивается дольше

Броня получает опыт со скоростью 1/3 от скорости оружия, поэтому для прокачки брони требуется примерно в 3 раза больше убийств по сравнению с числами выше. На 50 уровне это означает около 1,275 убийств мобов того же уровня только ради брони.

Боевой уровень​

Ваш Боевой уровень — это общая мера вашей силы. Он рассчитывается как:

combat_level = (highest_weapon_skill + second_highest_weapon_skill + armor_skill) / 3

Результат округляется вниз (целочисленное деление).

Боевой уровень определяет:

  • Уровень элитных мобов, спавнящихся вокруг вас
  • К каким подземельям и инстанс-контенту вы можете получить доступ
  • Верхний предел уровня награды для опыта навыков и лута естественных элитных мобов; допустимость опыта за низкоуровневые цели проверяется по каждому навыку отдельно

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

Отображение боевого уровня​

Боевой уровень отображается парящим числом над головой, видимым вам и другим игрокам с учётом правил видимости именных меток. Отображение использует пакетные текстовые сущности и автоматически обновляется при изменении навыков. Формат настраивается (по умолчанию: Combat Lv. X). Если [Alpha] Advanced Combat System даёт вам активный класс, метка вместо этого показывает этот класс и его уровень. Во время боя над меткой появляется строка здоровья ❤ current/max. В мирах из списка classLabelWorldExclusions метка класса скрыта; игроки без класса сохраняют там метку боевого уровня.

usePassengerCombatLevelDisplay в config.yml по умолчанию равен true, поэтому метка едет на игроке как пассажир, существующий только в пакетах, и никогда не отстаёт, пока игрок идёт пешком. Другие игроки по-прежнему видят имя игрока. Значение false включает следующий за игроком текст, который телепортируется вслед за игроком с небольшим скольжением. Пока на игроке находится другая сущность, режим пассажира автоматически переключается на следующий за ним текст. Пока игрок едет на транспорте, который посадил бы метку на место самого игрока, метка едет на этом транспорте. См. Combat Feedback.

Полоса опыта​

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

  • Плавную анимацию, ползущую вверх по мере набора опыта
  • Разный цвет для каждого типа навыка (например, красный для Мечей, зелёный для Луков, синий для Брони)
  • Особые эффекты частиц и звука при повышении уровня
  • Автоматическое скрытие через 5 секунд бездействия

Ограничения экипировки​

Экипировка EliteMobs имеет требования к уровню, привязанные к системе навыков. Чтобы надеть элитный предмет, ваш уровень навыка для этого типа оружия или брони должен быть равен или выше уровня предмета.

Исключение: Предметы 20 уровня и ниже могут надеть все, независимо от уровня навыка. Это гарантирует, что новые игроки могут свободно использовать раннюю экипировку, не оказываясь заблокированными.

Если вы попытаетесь надеть предмет выше своего уровня навыка, вы получите предупреждающее сообщение, и предмет не будет давать элитных бонусов.

Бонусы навыков​

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

УровеньОткрывается на
1Уровень 10
2Уровень 25
3Уровень 50
4Уровень 75

Открытие уровня не даёт слота. Вы можете иметь до 3 активных бонусов на каждый тип оружия или брони одновременно, выбирая из всего, что открыли. Бонусы навыков управляются через меню /em или посещением NPC бонуса навыков в Гильдии искателей приключений.

Что настраивают файлы skillbonuses

Файлы skillbonuses/*.yml управляют оформлением (отображаемым именем, описанием, уровнем разблокировки, типом бонуса, значком меню и шаблонами lore), а также частью баланса. Плагин читает baseValue, scalingPerLevel, procChance, cooldownSeconds, maxStacks и stackBonus, если конкретный бонус обращается к своей конфигурации. Бонусы, не читающие эти ключи, используют константы из кода. Какие значения каждый бонус получает из конфигурации, указано в разделе Бонусы навыков.

См. Бонусы навыков для полного списка всех 104 бонусов и того, что они делают.

Уведомления и интерфейс​

Система навыков предоставляет несколько форм обратной связи:

  • Повышение уровня: Сообщение-заголовок, звук завершения испытания и всплеск частиц тотема бессмертия при каждом повышении уровня.
  • Вехи: Общесерверное оповещение отправляется только когда игрок достигает уровня-вехи (каждый 5-й уровень: 5, 10, 15, ...). Обычные повышения уровня не оповещаются. Оповещение можно отключить в dungeons.yml.
  • Отображение боевого уровня: Парящее число над головой, видимое вам и другим игрокам с учётом правил видимости именных меток. Автоматически обновляется при повышении уровня.
  • Полоса опыта: Анимированная полоса босса, показывающая прогресс опыта навыка во время боя.
  • Сообщения о получении опыта: Опциональные сообщения об опыте за каждое убийство (отключены по умолчанию, так как могут быть спамными).

Большинство вышеперечисленного настраивается в skills.yml; оповещение о повышении уровня-вехи и его сообщение находятся в dungeons.yml.

Админские команды​

КомандаРазрешениеОписание
/em skill check <player>elitemobs.skill.checkПросмотр уровней навыков, прогресса опыта и процентов игрока
/em skill set <player> <skillType> <level>elitemobs.skill.adminУстановить конкретный навык на заданный уровень
/em skill setAll <player> <level>elitemobs.skill.adminУстановить все навыки на одинаковый уровень
/em debug combat startelitemobs.adminЗапустить автоматическое тестирование боевой системы
/em debug combat test <type>elitemobs.adminПротестировать конкретный тип оружия (например, мечи, луки)
/em debug combat resultselitemobs.adminПросмотр результатов последнего боевого теста
/em debug combat cancelelitemobs.adminОтменить активный боевой тест
примечание

Аргумент skillType для /em skill set принимает: ARMOR, SWORDS, AXES, BOWS, CROSSBOWS, TRIDENTS, HOES, MACES, SPEARS, STAVES, WANDS.

Конфигурация сервера​

Система навыков настраивается в skills.yml. Основные параметры:

НастройкаПо умолчаниюОписание
skillSystemEnabledtrueВключает или отключает всю систему навыков
armorSkillHealthBonusEnabledtrueДаёт ли навык Брони бонусное максимальное здоровье (+1 сердце за каждый уровень выше 1)
scalePlayerHealthDisplayToVanillafalseСохраняет максимальное HP EliteMobs, но визуально масштабирует HUD игрока обратно к ванильным 10 сердцам
forceDefaultHealthWhenArmorSkillHealthBonusDisabledfalseКогда бонус здоровья от брони отключён, принудительно устанавливает игрокам ванильное максимальное здоровье 20 при входе
skillWorldExclusions(пусто)Список названий миров, где система навыков неактивна. Игроки в этих мирах не получают опыта навыков, бонуса здоровья от брони, полос опыта и отображения боевого уровня. Полезно для ивент-миров, где все должны быть равны. Совпадение регистронезависимо
classLabelWorldExclusions(пусто)Список названий миров, где скрыта только метка класса над игроками. Имена игроков, отображение здоровья в бою, навыки и опыт не меняются, а игроки без класса сохраняют метку боевого уровня. Совпадение регистронезависимо
skillsMenuTitle&5&lYour SkillsЗаголовок меню навыков
showCombatLevelDisplaytrueПоказывать метку класса или боевого уровня над игроками
showXPBartrueПоказывать анимированную полосу прогресса опыта во время боя
skillBarTitleFormat&6$skillName &7Lv.$level$xpTextФормат заголовка полосы опыта
skillLevelUpTitleFormat&e&l✦ $skillName LEVEL UP! &7→ &eLv.$level &e&l✦Формат заголовка полосы босса при повышении уровня
combatLevelFormat&6&lCombat Lv. $levelФормат отображения боевого уровня

Полный справочник по конфигурации см. на странице Настройки конфигурации EliteMobs.

[Alpha] Advanced Combat System​

Полный процесс, включая Adventurer, испытания тренеров, базовые требования и клавиши Java, описан в руководстве по развитию классов, обучению и управлению.

[Alpha] Advanced Combat System добавляет классы и способности в боевую систему EliteMobs. Отправляйте отзывы об альфа-версии разработчику. В plugins/EliteMobs/AdvancedCombatSystem.yml параметр enabled по умолчанию равен true. Установите false и перезагрузите EliteMobs, чтобы отключить модуль. Определения классов и баланс фиксированы на время альфа-стадии. Настройки старых сборок не переносятся автоматически; настройте этот файл перед запуском обновлённого сервера.

/em class открывает профиль, /em class info <class> описывает форму, а /em class select <class> выбирает разблокированную форму. Нужно право elitemobs.command. Базовые классы: paladin, berserker, ranger, cleric, spellcaster. Spellcaster требует совместимый FreeMinecraftModels со встроенными посохом и жезлом; без них он заблокирован. Посохи и жезлы используют зарегистрированные идентификаторы предметов: обычные палка, копьё и огненный стержень не становятся магическим оружием автоматически.

В Java нажмите F, затем 1/2/3 для Mobility, Signature или Utility. Повторное F выбирает Mobility; пока окно выбора открыто, левая кнопка мыши выбирает Signature, правая — Utility. В боевом контенте EliteMobs управление активно. allowClassAbilitiesOutsideEliteMobsWorlds по умолчанию равно true: вне этого контента его можно включить на текущую сессию двойным нажатием F при приседании.

NPC GUILD_GREETER открывает выбор бонусов оружейных навыков независимо от того, включён ли классовый бой. Для обучения классу посетите отдельных NPC CLASS_TRAINER. Прогресс классов отделён от оружия и брони; урон классовых способностей без идентификатора оружия не даёт опыта оружия.