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