GC Wiki Массовые умения: сколько целей бьют и кого задевают | AoE Skills

TalosTalos is verified member.

Технический Руководитель
Staff member
Supervisor
Melcosoft Family
aoe_guide_banner.webp


Массовые умения: сколько целей они бьют (affect_scope и affect_limit)​


Почему «Туча Стрел» иногда задевает шесть монстров, а иногда восемнадцать? Почему массовое умение по монстру не трогает белых игроков рядом, а по игроку во флаге — бьёт всех вокруг? Всё это решают два параметра умения: форма зоны (affect_scope) и лимит целей (affect_limit). Разберём, как они работают, на примере умений лучника и мага.

Механика сбора целей перенесена с кода официального сервера и проверена на оффе: лимит, «+1 монстр», правила для игроков и форма веера совпадают.

Лимит целей: что значат два числа​


У массовых умений лимит записан двумя числами, например affect_limit = 5;12:
  • Первое число — гарантированная часть лимита.
  • Второе число — случайная добавка от 0 до этого числа включительно. Бросается заново при каждом применении.

Для 5;12 лимит каждый раз получается от 5 до 17.

Монстров умение задевает на одного больше лимита — так устроено на официальном сервере. Для 5;12 это от 6 до 18 монстров за применение. Если умение бьёт вокруг цели, веером или полосой, сама цель добавляется сверх этого числа.

Игроков и их питомцев лимит не ограничивает. Умение задевает всех подходящих игроков в зоне, сколько бы их ни было. Исключение — редкие умения с третьим числом (например 8;0;1): у них игроки тоже идут в счёт лимита.


affect_limitЛимитМонстров в зонеИгроков в зоне
5;125–176–18все
5;55–106–11все
10;01011все
8;0;189 вместе с игрокамив счёт лимита

Если лимита у умения нет совсем, оно бьёт всех в зоне.

Форма зоны: где именно бьёт умение​


ФормаГде бьётОсновная цель
singleТолько цель—
rangeКруг вокруг цели (или выбранной точки на земле)Сверх лимита
point_blankКруг вокруг себя (или вокруг цели)Не задевается
fanВеер перед собой в сторону целиСверх лимита
fan_pbВеер перед собойНе задевается
squareПрямоугольник (полоса) перед собой в сторону целиСверх лимита
square_pbПрямоугольник перед собойНе задевается
ring_rangeКольцо вокруг точки: внутри кольца не бьёт—
range_sort_by_hpКруг вокруг цели, цели отбираются по HPСверх лимита
range_sort_by_distБлижайшие к цели, ровно столько, сколько лимитВходит в лимит
party, pledgeГруппа / клан в радиусе (баффы, лечение)—

Размеры зоны задают ещё два параметра:
  • affect_range — радиус круга (range, point_blank, party, pledge).
  • fan_range — для веера и прямоугольника: поворот, дальность и угол веера (для прямоугольника — ширина полосы).

Умения на группу и клан (party, pledge) работают иначе: у них нет лимита, им не мешают стены, и они задевают только своих.

Умения по земле (target_type = ground)​


Некоторые массовые умения применяются не на цель, а на точку на земле: зажмите Shift и кликните по месту, куда хотите ударить.
  • Основной цели нет — зона строится вокруг выбранной точки.
  • Все монстры в зоне идут в счёт лимита: никто не добавляется «сверх» него. Для 5;12 это от 6 до 18 монстров.
  • Из игроков задеваются все, кого можно атаковать. Если вы PK — только другие PK.
  • Видимость проверяется от выбранной точки, а не от персонажа (подробнее — в разделе про стены ниже).

Примеры: умения лучника​


Туча Стрел (Multiple Arrow) — веер от лучника в сторону цели: дальность 900, угол 90°, affect_limit = 5;12.
  • Бьёт всех в секторе перед лучником — по 45° влево и вправо от направления на цель, на 900 вперёд.
  • Цель задевается в любом случае, сверх лимита; монстров в секторе — от 6 до 18.
  • Цель, стоящую выше вашей головы (на уступе, на возвышении), веер не заденет.
  • Удобно, когда монстры бегут на вас: они собираются перед лучником, и веер накрывает всех сразу.

Проливной Дождь Стрел (Heavy Arrow Rain) — круг радиусом 200 вокруг цели, affect_limit = 5;12.
  • Задевает саму цель и от 6 до 18 монстров вокруг неё — каждый выстрел по-разному.
  • Центр круга — цель, а не лучник: монстры дальше 200 от цели не попадут, даже если стоят рядом с вами.
  • Лучше всего работает по плотной пачке: выбирайте целью монстра в середине толпы.

Примеры: умения мага​


Вихревое Разрушение (Updraft Destruction) — круг радиусом 200 вокруг цели, affect_limit = 5;12.
  • Работает так же, как Проливной Дождь Стрел: цель плюс от 6 до 18 монстров в радиусе 200 от неё.
  • Если монстры стоят дальше 200 от цели, они не попадут, даже если стоят рядом с вами.

Тайный Удар Кометы (Arcane Comet Strike) — прямоугольник от мага в сторону цели: длина 1100, ширина 100, affect_limit = 5;12.
  • Бьёт полосой: все, кто стоит на линии от мага в сторону цели на 1100 вперёд и не дальше 50 в стороны от неё.
  • Цель задевается в любом случае, сверх лимита; монстров на линии — от 6 до 18.
  • Выгодно, когда монстры тянутся за вами «паровозом»: развернитесь к ним, и полоса заденет всю цепочку.

УмениеФормаРазмерМонстров
Туча СтрелВеер от лучника900, угол 90°цель + 6–18
Проливной Дождь СтрелКруг вокруг целирадиус 200цель + 6–18
Вихревое РазрушениеКруг вокруг целирадиус 200цель + 6–18
Тайный Удар КометыПолоса от мага1100 × 100цель + 6–18

Кого из игроков задевает массовое умение​


Здесь решает основная цель, а не только форма. Правила действуют вне поля битвы:

  1. Бьёте монстра — из игроков в зоне задеваются только PK. Белые игроки и игроки во флаге рядом с монстром не пострадают.
  2. Бьёте PK — из игроков задеваются тоже только PK.
  3. Бьёте игрока во флаге или белого игрока — задеваются все игроки в зоне, которых умение может атаковать.
  4. Массовое умение вокруг себя в мирной зоне — игроков не задевает вообще.
  5. На поле битвы этих ограничений нет.

Кого именно умение считает целью — врагов, союзников, мёртвых — задаёт отдельный параметр (affect_object). Атакующее умение не бьёт членов своей группы и клана, лечащее не лечит врагов.

Пример: Проливной Дождь Стрел по игроку во флаге посреди толпы заденет всех атакуемых игроков в радиусе 200 от него — лимит на игроков не распространяется. То же умение по монстру в той же толпе заденет из игроков только PK.



Что ещё мешает попасть: стены и видимость​


Умение задевает только тех, кого видно из центра зоны. Цель за стеной, скалой или колонной не попадёт, даже если она внутри круга или веера.

Важно, откуда проверяется видимость — не всегда от вас:


ФормаВидимость проверяется от
Круг вокруг цели (range)основной цели
Круг вокруг себя (point_blank)персонажа
Веер, полоса (fan, square)персонажа
Умение по земле (ground)выбранной точки

Что это значит на практике:
  • Проливной Дождь Стрел или Вихревое Разрушение по монстру у угла заденут тех, кого видно от этого монстра — даже если вам из-за угла их не видно. И наоборот: монстр за колонной рядом с целью не попадёт, хотя вы его прекрасно видите.
  • Туча Стрел и Тайный Удар Кометы бьют только тех, кого видно от вас: в узком коридоре или за дверным проёмом часть монстров останется вне удара.
  • Высота тоже важна: цель, которая стоит намного выше или ниже (на уступе, на лестнице), может не попасть в зону. Например, цель выше вашей головы веер не задевает.
  • Если в зоне больше монстров, чем лимит, умение задевает первых найденных, а не ближайших и не самых раненых (кроме форм с сортировкой).

Цели собирает функция CSkillAction2::GatherSkillTarget. Упрощённо:

Code:
лимит = первое + целое(случайное[0..1) × (второе + 1))

обход существ в форме зоны (основная цель и сам персонаж пропускаются):
    игрок / питомец:
        вне поля битвы — фильтр по основной цели:
            цель монстр или PK            → только PK
            AoE вокруг себя в мирной зоне → никого
        в счёт лимита не идёт (если нет третьего числа)
    монстр:
        добавляется, пока счётчик <= лимит   → до лимит + 1
    проверка стен (CGeoData::CanSee)
        видимость — от центра зоны: цель (range), персонаж (point_blank, fan, square), точка (ground)

range, fan, square, range_sort_by_hp → основная цель добавляется в конец, вне лимита
range_sort_by_hp   → сортировка по HP, обрезка до лимит + 1
range_sort_by_dist → сортировка по дистанции, обрезка ровно до лимита

Фильтр игроков — AreaBasedRule::RangeTargetOfSkill, добавление с проверкой лимита и стен — CCreature::PushCreatureAfterCheckRangeAndCanSee.

У нас механика сверена с кодом официального сервера и работает так же. Единственное отличие — порядок обхода зоны: когда монстров больше лимита, у нас и на оффе могут быть задеты разные монстры из толпы, но их количество одинаковое.
 
Last edited:
Back
Top Bottom