Справка!
Механика хила — одна из самых замороченных систем в игре: формулы, скрытые множители, магические криты, бонусы цели, бонусы хилера, ограничения и защита от абузов. Мы разобрали весь этот хаос по строчке кода — красиво, понятно и очень глубоко.
Механика лечения в Lineage 2: полный разбор
Сегодня хочу разобрать одну из самых недооценённых и неправильно понимаемых систем — механика лечения в Lineage 2. Это сложная математическая конструкция из множителей, ограничений и скрытой логики движка.
В этой статье ты узнаешь:
- почему хил не зависит от Маг. Атаки так сильно, как все думают
- откуда берётся тот самый крит-хил ×3 и почему он НЕ связан с пассивкой 78 уровня
- как шоты влияют на лечение (и почему без BSS ты лечишь почти в два раза хуже)
- почему одни персонажи лечатся «как губки», а других почти невозможно залить
- что такое Heal Power и Heal Effectiveness, и кто кому что должен
- почему в игре есть ограничение HP_LIMIT — и какие адские баги оно предотвращает
Механика лечения в Lineage 2: базовый принцип лечения в L2
Когда я нажимаю скилл хила, сервер запускает метод:
useSkill(Creature activeChar, List<Creature> targets)
Внутри — целая цепочка расчётов:
- берётся Power скилла из XML
- добавляется бонус от маг. атаки
- усиливается с помощью Spiritshot / Blessed Spiritshot
- возможный ×3 крит-хил
- учитывается Heal Effectiveness цели
- учитывается Heal Power хилера
- применяется HP_LIMIT, чтобы не перелить
- накладываются эффекты, отправляется системное сообщение
То есть как вы уже поняли хил — это многоступенчатая формула, а не одно число.
Формула базового хила
hp = Power + 0.1 * Power * sqrt(M.Atk / 333)
При этом если скилл НЕ статический (_staticPower = false), он скалируется от маг. атаки. Почему через квадратный корень? Чтобы магическая атака давала эффект с убывающей отдачей — при росте M.Atk хил растёт, но не улетает в космос.
Шоты: обязательный множитель
if (BSS) hp *= 1.5;else if (SS) hp *= 1.3;
И это множитель на уже посчитанное значение. Итоговая логика на этом этапе:
Хил = (Power + бонус от M.Atk) × 1.3/1.5
Критический хил = Skill Mastery (внутренний флаг)
Вот здесь важный момент, который 95% игроков трактуют неправильно.
В игре есть два понятия с одинаковым названием:
- Пассивка “Skill Mastery” (появляется на 78 уровне)
- Истинный крит-хил — это другой “Skill Mastery = 3” внутри движка
if (activeChar.getSkillMastery(getId()) == 3)hp *= 3;
То есть: Крит-хил = магический крит, применённый к эффекту HEAL.
Это не пассивка. Это часть механики магических критов и срабатывает не зависимо от уровня и умений. Рассчитывается по той самой формуле как и шанс магического крита.
Heal Effectiveness и Heal Power
После всех прошлых множителей сервер начинает считать индивидуально для цели:
- Heal Effectiveness (для цели: пассивки, баффы, сет, татуировки и т.д)
- Heal Power (хилер: пассивки, баффы, сет, татуировки)
Итоговая логика лечения:
Heal = База → M.Atk → Шоты → × Heal Effectiveness → × Heal Power
Ну и конечно же есть защита от оверхила, не знаю насколько вам важно знать эту инфу, но все таки.
maxHealLimit = (HP_LIMIT% × MaxHP) – CurrentHPhp = min(hp, maxHealLimit)
Странная с одной стороны механика, но как я понимаю если цель может иметь например максимум 120% HP (баффы/пассивки), то хил заливает только до этой границы.
Нафига это надо? Это защищает от абузов, багов и бесконечного оверхила на корявых сборках. Надеемся, что у нас получилось подробно обьяснить как работает механика лечения в Lineage 2.
Больше интересных статей вы можете найди в нашем блоге посвященному Lineage 2.
Вы можете поддержать проект подпиской на наш телеграм-канал, в котором мы регулярно проводим розыгрыши для наших подписчиков.