Всеми горячо любимый Cancel работает очень просто. Он проходит по списку баффов (на дебаффы не действует, как всем известно), и смотрит - удалить данный бафф, или оставить. Bane-скиллы тоже проходят по всему списку, но удаляют только определённые классы баффов. Действие Touch of Death (далее - ToD) аналогично Cancel.
Mage Bane и Mass Mage Bane удаляют баффы, имеющие abnormal_type, равный ma_up или casting_time_down.
Вот список основных таких баффов:
Empower
Acumen
Bright Servitor
Chant of Flame
Wisdom of Paagrio
Soul of Paagrio
L2day Scroll of Greater Acumen
L2day Scroll of Empower
Potion of Acumen
Warrior Bane и Mass Warrior Bane удаляют баффы, имеющие abnormal_type, равный attack_time_down или speed_up.
Вот основные из этих баффов:
Sprint
Fast Servitor
Wind Walk
Haste
Servitor Haste
Chant of Fury
Speed of Paagrio
Quick Step Potion
Swift Attack Potion
L2day Scroll of Haste
L2day Scroll of Wind Walk
Сперва считается предварительный шанс удаления текущего баффа:
prelim_chance = (2 * dml + cancel_chance_adder + buff_duration / 120) * cancel_res_multiplier
dml - это разница magic_level самого Кенсела/ToD/bane-скилла, и текущего баффа.
magic_level - это внутренняя характеристика скилла, загружается из skilldata.txt. Каждый уровень того или иного скилла имеет определённый magic_level. Более того, заточка скилла обычно увеличивает его magic_level, что сказывается на шансе удалить данный бафф. Для ряда скиллов заточка даже на +1 сильно уменьшает шанс этого баффа быть снятым. Таблицы magic_level я дам в конце топика.
cancel_chance_adder - параметр эффекта скилла Cancel/ToD/bane-скилла, загружается из skilldata.txt и стандартно равен:
Cancel: 25
Touch of Death: 25
Mage/Warrior Bane: 80
Mass Mage/Warrior Bane: 40
buff_duration - длительность работы баффа в секундах. То есть легче всего снимаются долговременные баффы, а быстрые - похуже. Тут стоит обратить внимание на то, что деление длительности на 120 - целочисленное (ох уж мне эти современные компиляторы, с их оптимизацией деления на константу...).
cancel_res_multiplier - произведение всех модификаторов-умножителей, влияющих на защиту от Кенсела/ToD/bane-скиллов. Если таковых нет, то равен 1.
Вот как влияют на эту характеристику разные скиллы:
Arcane Protection: 0.7
Touch of Life: 0.55
Arcane Chaos: 1.2
Chant of Spirit: 0.7
Хочу обратить внимание на тот факт, что во время самого удаления баффов параметры существа ещё не меняются, а значит если Кенсел вдруг удалит тот же Arcane Protection, то на шанс снятия оставшихся баффов это никак не повлияет. То есть защищающие от Кенсела баффы можно ставить в любое место в линейке - нет никакой разницы.
После этого считается реальный шанс удаления баффа (real_chance):
1) Для Cancel и Touch of Death:
Если prelim_chance < 25 то real_chance = 25
Если prelim_chance > 75 то real_chance = 75
Если 25 < prelim_chance < 75 то real_chance = prelim_chance
Иными словами, реальный шанс для Cancel/Touch of Death не может быть меньше 25 и больше 75.
2) Для Bane-скиллов:
Если prelim_chance < 40 то real_chance = 40
Если prelim_chance > 95 то real_chance = 95
Если 40 < prelim_chance < 95 то real_chance = prelim_chance
То есть реальный шанс для bane-скилла не может быть меньше 40 и больше 95.
Из этого правила есть исключения. Те баффы, у которых в skilldata.txt указан magic_level = -1, обычным Кенселом/ToD/bane-скилом не снимаются.
Однако если если задать cancel_chance_adder = 100, то такой Кенсел/ToD/bane снимет абсолютно все баффы (bane в этом случае удалит только "свои" баффы), даже те, у которых magic_level = -1.
Вот таблица magic_lvl Кенсела:
- Код: Выделить всё
lvl magic_lvl
1 48
2 52
3 56
4 58
5 60
6 62
7 64
8 66
9 68
10 70
11 72
12 74
Вот данные о magic_lvl для bane-скиллов:
Mage Bane: 77
Warrior Bane: 76
Mass Mage Bane: 78
Mass Warrior Bane: 77
Touch of Death имеет magic_lvl = 78.
А вот таблица magic_level баффов:
Click-Click
(Качать buffs.rar)
Она слишком велика, чтобы вставлять её тут в сообщение. Там есть данные по всем скиллам, в том числе и с разной заточкой. Таблица получена автоматически из skilldata.txt, скриптиком (руками лопатить почти 30 мегабайт - не очень весело :}).
Infinity Spear во время Critical Hit производит такой же эффект, как и Cancel, но с cancel_chance_adder = 10 и magic_level = 80.