Rubick

Rubick
Герой, натерпвевшийся многого, особенно на этапе бета-тестов. Чего он только не воровал! Сейчас список запрещенных спеллов вроде завершен, и я не вижу в нем каких-то изъянов. Можно сказать, последний герой, которого фрог действительно пофиксил.

Изначально рубику выдается 3 пустых спелла, которые можно заметить, если навести мышку на те ячейки, где появятся Telekinesis  Null Field и Fade Bolt . Это черные иконки для будущих способностей, чтобы сворованные заклинания не болтались по всем ячейкам.

При пике рубика создает три триггера.
Первый следит, когда используется Spell Steal , и описан ниже.
Второй следит за всеми заклинаниями, которые используют любые герои на карте, и записывает, какое заклинание и какого уровня было использовано, если оно не входит в число запрещенных.
Третий следит за изучением остальных скилов рубика, чтобы убирать черные квадраты.

Telekinesis Telekinesis

ID: A27F
Основан на Channel, что обеспечивает прицел и картинку.
Если цель не имеет бафа линки, то создается дамми (владелец — цель), которому выдают болт нужного уровня и приказывают кинуть его в цель. Это обеспечивает дизейбл, пока юнит летает. Затем у Рубика забирается сам телекинез и выдается "Telekinesis Landing", который позволяет указать точку приземления. У поднятного юнита включается фейз, что позволяет передвигать его по любым поверхностям. Затем к герою приделываются эффекты и создается триггер, следящий за использованием «приземления» и смертью цели. Вместе с ним работает периодический таймер на 0.02с.

Поднятие
Если триггер срабатывает, потому что цель умерла, то возвращают стандартный телекинез, «роняют» труп (см. ниже) и закрывает триггер.

Если на момент срабатывания таймера цель не была в дизейбле (стане, хексе, паузе и пр.), то юнита тоже «роняют» и закрывают триггер. Такое может произойти, например, если абадон кинет щит на юнита.

Если триггер сработал из-за использования заклинания «приземлить», то сохраняются координаты, куда был отдан приказ, но не дальше, чем 375 от самой цели.

Если триггер сработал из-за таймера, то включить фейз на цели и выполнить некоторое количество еботни с высотой полета, чтобы симулировать красивый полет. За 0.5 секунд до окончания стана — выдать обратно нормальный телекинез и уронить цель.

Падение
Создается отдельный таймер, тикающий каждые 0.02с. Сохраняются координаты, куда падать — но не дальше, чем на 375 от текущей позиции поднятого юнита. Сохраняются координаты юнита — он будет двигаться относительно них, а не относительно реальной позиции. Поэтому, например, Force Staff на юните, который приземляется, не возымеет эффекта — падение будет передвигать его по старым координатам.

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

Ну а в конце собирает юнитов врагов в радиусе 325 + 25 вокруг позиции юнита и бросает в них оглушающие молотки при помощи специальных дамми.

Fade Bolt Fade Bolt

ID: A27G
Основан на Channel, что обеспечивает прицел и картинку.
Если цель не находится под бафом линки, то создается дамми, которому выдается молния и приказывается кинуть эту молнию в цель. Молния работает сама по себе, нанося 70/140/210/280 урона и поражая до 26 целей. Также создается периодический таймер с интервалом 0.25 с.

Когда таймер срабатывает, триггер ищет в радиусе 465 ближайшего юнита, подходящего под условия:
Живой, видимый, враг, без маркера, без иммунитета к магии, не здание, не эншент, но включая медведя, и не входящего в группу «уже пораженные»
Если нашла, то записывает юнита в очередь на получение дебафа атаки.
Если не нашла, или таймер тикнул 27й раз, то разрушает триггер.

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

Дебаф выдается в виде абилки на отрицательный урон и длится 10 секунд, после чего снимается. Если по юниту пройтись молнией дважды, то дебаф будет снят тогда, когда закончится срок действия первой молнии.

Например: в 6:00 по юниту №1 кидают Fade Bolt, а в юнита №10 прилетает дебаф через 0.25*10 = 2.5 секунды. Дебаф будет висеть до 6:12.5. В 6:10 молнию кидают прямо в бывшего №10, который стал №1, и ему снова выдают дебаф. Но в 6:12.5 дебаф будет снят предыдущей молнией.

Null Field Null Field

ID: A27V
Основан на ауре выносливости, что обеспечивает подсветку и иконку.
При изучении первого уровня создается таймер, который тикает каждые 0.3 секунды, и он же запоминает реального рубика.
Когда таймер тикнул: если рубик не существует или не является рубиком, то снимается эффект ауры со всех, на кого она действовала, и триггер разрушается.
Если рубик жив, то собрать всех юнитов, подходящих под условия:
Герой, союзник, без маркера, не здание, живой, не эншент, но включая медведя
Если рубик мертв, то эта группа будет пустой.
Из группы №1 (уже под действием ауры) вычитаются все юниты группы №2 (новая группа), после чего в первой группе остаются только те юниты, на кого аура уже не должна действовать. И с каждого юнита этой группы снимают бонусное сопротивление.
Затем вторую группу, если рубик жив, награждают бонусным сопротивлением.

Выдача сопротивления
Сопротивление основано на Elune's Grace, которая позволяет настроить бонус урона аналогично стандартным сопротивлениям, но при этом работает вместе с другими модификаторами сопротивления.

Бонус добавлен в скрытые спелбуки, что позволяет не отображать иконку на панели управления юнитом. Однако содержимое спелбука не записывается в юнита, которому он добавлен. Другими словами, бонус будет утерян, если юнит использует какой-либо морф. Чтобы снова получить бонус, придется выйти из АоЕ ауры и снова войти в него.

Абилка снижает магический урон по владельцу на 5/10/15/20%.

Снятие сопротивление
Просто снимает все спелбуки, которые мог выдать скил.

Spell Steal Spell Steal

ID: A27H / A2V9
Основан на Channel, что обеспечивает прицел и картинку.
Если цель не имеет бафа линки, то продолжаем.
Создается эффект над целью. Если воруемый спел имеет улучшение, а рубик использует аганим, то заменяется ID воруемого спелла на новый, улучшенный.
Затем создается дамми, обеспечивающий визуальный эффект перелета заклинания до рубика, со скорость перемещения 900.
Когда дамми долетает до рубика, последнему выдается абилка нужного уровня на 60*Lvl секунд. Если у хозяина спелла есть сохраненные уровни Quas/Wex/Exort, то записать текущие уровни их в Рубика. Если у хозяина спелла есть счетчик душ (для ульта SF ), то записать текущий счетчик в рубика.

Создается триггер, который ждет 60*Lvl секунд, смерть рубика или повторного использование воровста. Также здесь отслеживается 20 секунд до конца таймер.

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

Снятие дополнительных кнопок
Некоторые абилки, вроде Illusory Orb пака, имеют вторую абилку. Эта функция избавляется от таких «наследованных» способностей.

Скрытие абилки
Когда абилка скрыта, её нельзя использовать (в обычных условиях), но у неё сохраняется кулдаун. Если абилка удаляется, её кулдаун для юнита тоже сбрасывается. Поэтому используется утилизация, чтобы нельзя было своровать ульт тайда, использовать его, снова своровать, снова использовать и т.д.

Утилизация
Запускается приодический таймер с таймаутом в 1 секунду. Он запоминает разницу между текущим временем и последним временем использования сворованной абилки. Назовем эту разницу буквой d.

Каждый тик он следит — не своровал ли рубик еще раз это же заклинание. Если так, то утилизация прекращается и таймер уничтожается.

Если же рубик своровал другое заклинание, при этом жив, а таймер тикает уже более, чем 15-d раз, то убрать у юнита старую абилку и уничтожить триггер.

С учетом аганима, который дает 5 секунд на кд, рубик может воровать и использовать заклинания очень быстро. Зная, что утилизация сбросит таймер кулдауна на убранном спелле, можно воспользоваться этим.

Например, мы воруем Ravage у Tide в 5:00 и используем в 6:00. Игра запоминает, что мы использовали его на 6*60 = 360 секунде.
Затем мы воруем что-нибудь еще раз, но не Ravage. Это происходит на 365-й секунде. Утилизация записывает разницу в d: 365-360 = 5.
15 — d = 10, а значит, через 10 секунд пройдет утилизация и мы можем своровать ульт тайда, причем он будет без кулдауна.
Так можно использовать любые заклинания, где кулдаун выше 15 секунд, несколько раз подряд, просто меняя заклинания и возвращая желаемое через 15 секунд после использования.

Заклинания, которые нельзя своровать

Заклинания, которые нельзя воровать, можно разделить на несколько категорий. Те, которые превращают юнита. Те, которые используют тот же хоткей. Те, которые настолько ужасно сделаны в плане триггеров, что не могут быть переданы другому юниту. Те, которые используются предметами или вспомогательными способностями.
'A1WH' — God's Strength
'ANcr' — Chemical Rage
'A03G' — Elder Dragon Form
'A093' — Shapeshift
'A15J' — Flesh Golem
'A0AG' — True Form
'A0BE' — Berserker Rage
'A1TX' — Flak Cannon
'A229' — Flak Cannon
'A1RI' — Metamorphosis
'A1C0' — Splitshot
'A11T' — Spirit Form
'A19Z' — Firefly
'A2NE' — Arctic Siege
'A13D' — X Marks The Spot Secondary
'A2NI' — Ancestral Spirit Secondary
'A1QV' — Sentinel Secondary (Old Treant)
'A1TU' — End Tether
'A24A' — Oscillate In
'A24B' — Oscillate Out
'A1NH' — Unstable Concoction Secondary
'A20N' — Icarus Dive S
'A1Z2' — Target Fire Spirits S
'A1Z3' — Sun Ray S
'A205' — Sun Ray Movement
'A1VU' — End Charge
'A0GC' — Morph Replicate S
'A24E' — End Song of the Siren
'A0RT' — Psionic Trap S
'A1RA' — Soulsteal End
'A0HA' — Reality S
'A0SA' — Ethereal Jaunt
'A121' — Illuminate End
'A1WF' — Focused Detonate
'A02T' — Detonate all remote mines
'A1S9' — Release Poison
'A21H' — Deactivate Pulse Nova
'A1MN' — Ice Blast Helper
'A0KX' — Morph
'A0KW' — Morph
'A0A5' — Summon Spirit Bear
'A0BG' — Spin Web
'A21W' — Quas
'A21X' — Wex
'A21V' — Exort
'A21Y' — Invoke
'A1GU' — Invoke upgrade
'A1VH' — War Club
'A1VG' — War Club
'A2M0' — Tempest Double
'A2MB' — Deactivate the casting of Dark Rift
'A2O2' — Trueshot Aura
'A2O9' — End Nightmare
'A0QN' — Burning Spear
'A026' — Frost Arrows
'AHfa' — Morph
'A09V' — Poison Attack
'A0DY' — Impetus
'A1WB' — Impetus
'A0LZ' — Glaives of Wisdom
'A0OI' — Arcane Orb
'A2UM' — Liquid Fire
'A1NA' — Soul Assumption
'A1EA' — Refraction
'A0NS' — Borrowed Time
'A1DA' — Borrowed Time
'A28Q' — Overcharge
'A0WQ' — Insatiable Hunger
'A1T8' — Spirits
'A10R' — Devour
'A11N' — X Marks The Spot
'A0EY' — Shadowraze Z
'A0FH' — Shadowraze X
'A0VK' — Tornado
'A0VQ' — Alacrity
'A073' — Exorcism
'A03J' — Exorcism
'A04J' — Exorcism
'A04M' — Exorcism
'A04N' — Exorcism
'A27F' — Telekinesis
'A27X' — Telekinesis Land
'A27G' — Fade Bolt
'A27H' — Spell Steal
'A0Q5' — Assault Cuirass
'A0TK' — Aghanims Spell Book
'AIbk' — Dagger's Blink
'A0JY' — Magic Stick
'A1AC' — Ghost Potion
'AIpl' — Clarity
'AIpr' — Healing salve
'Aeat' — Tango
'A0K0' — Cheese
'A0H7' — Bottle Rune
'A0H6' — Bottle Empty
'A0FO' — Bottle Regen
'A02X' — Observer Ward
'AIsw' — Sentry Ward
'AItb' — Dust of Appearance
'A0B6' — Item Summon Courier
'A1R5' — Scroll of Teleporation (fixed)
'A206' — Smoke of Deceit
'A1FD' — Tree Chop
'A1FO' — MKBSwap
'A1FQ' — MKB Spell Book
'A1IO' — RadSwap
'A0B8' — Manta Image
'A1WE' — Manta Image (ranged)
'A0T8' — Armlet
'A0T7' — Armlet
'A017' — Lothar
'A1QD' — Ether Blast
'A1FP' — Satanic
'A0JL' — Urn
'ACch' — Helm of the Dominator
'AIxk' — Mask of Madness
'AIpg' — Purge
'A11F' — Avatar
'A11E' — Avatar
'A0S3' — Avatar
'A11D' — Avatar
'A11G' — Avatar
'A11H' — Avatar
'A0T9' — Shiva
'A15W' — Blademail
'AChx' — Hex
'A0FD' — Orchid
'A0TE' — Orchid
'A1T7' — Eul
'A19M' — Force Staff
'A02O' — Dagon
'A08Y' — Dagon
'A08Z' — Dagon
'A090' — Dagon
'A092' — Dagon
'A0HB' — Necro
'A0D3' — Necro
'A0DF' — Necro
'A02W' — Refresher
'A0CK' — Mekansm
'A0K7' — Arcane Ring
'A0JT' — Item Summon Flying Courier
'AIda' — Natherim Buckler
'A269' — Ring of Basilius
'A1WO' — Ring of Basilius
'A1EW' — Khadgar's Pipe of Insight
'A1MO' — Urna
'A1ZI' — Medallion of Courage
'A1ZH' — Medallion of Courage
'A1ZW' — Ancient Jangoo
'A231' — Boots of Travel
'A12W' — Phase Boots
'A14A' — Power Treads
'A1Q8' — Soul Ring
'A28Y' — Hand of Midas
'A28D' — Veil of Discord
'A28F' — Veil of Discord
'A2N1' — Shadow Amulet
'A2VE' — Linken
'A2WH' — Observer Ward
'A2WI' — Sentry Ward
'A2JO' — Fire Remnant
'A2JQ' — Fire Remnant
'A2JP' — Fire Remnant
'A2JR' — Fire Remnant
'A2JL' — Fire Remnant
'A2FX' — Chakram End
'A2K1' — Tranquil Boots
'A2K4' — Prudence
'A2K7' — Annihilator Stun (Abyssal blade)
'A2KG' — Ring of Aquila
'A2KE' — Ring of Aquila
'A2KH' — Refresher
'A2K9' — Linken
'A2EA' — Crippling Staff (Atos)
'A2TH' — Stone Remnant
'A2TJ' — Rolling Boulder
'A2TK' — Bloodstone
'A2LI' — Avatar

13 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.